)]}'
{"etc/quantum/plugins/linuxbridge/linuxbridge_conf.ini":[{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"3e39267fe2741d021d4a6768c2fa2efcce98e6f0","unresolved":false,"context_lines":[{"line_number":12,"context_line":"name \u003d quantum_network"},{"line_number":13,"context_line":"user \u003d root"},{"line_number":14,"context_line":"pass \u003d c3l123"},{"line_number":15,"context_line":"host \u003d localhost"},{"line_number":16,"context_line":"# If you use a non-default port for the DB, change the following"},{"line_number":17,"context_line":"port \u003d 3306"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAAEH%2F%2F%2FHY%3D","line":15,"updated":"2012-01-24 19:56:59.000000000","message":"don\u0027t you prefer to have all these parameters with different default values such as user \u003d user_db, pass \u003d pass_db, etc?","commit_id":"13cc3a91db9bd0710e45ac48fc0c005bafd4390e"}],"quantum/plugins/linuxbridge/LinuxBridgePlugin.py":[{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"3e39267fe2741d021d4a6768c2fa2efcce98e6f0","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        return True"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def get_all_networks(self, tenant_id):"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        Returns a dictionary containing all"},{"line_number":69,"context_line":"        \u003cnetwork_uuid, network_name\u003e for"},{"line_number":70,"context_line":"        the specified tenant."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAEH%2F%2F8kk%3D","line":67,"updated":"2012-01-31 22:47:17.000000000","message":"Filter implementation is missing in this plugin, for instance:\nget_all_networks(self, tenant_id, **kwargs)","commit_id":"78a900f3c238d0ccc4678903f6fd1c434581f1a3"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":56,"context_line":"    def _get_vlan_name(self, net_id, vlan):"},{"line_number":57,"context_line":"        \"\"\"Getting the vlan name from the tenant and vlan\"\"\""},{"line_number":58,"context_line":"        vlan_name \u003d conf.VLAN_NAME_PREFIX + vlan"},{"line_number":59,"context_line":"        return vlan_name"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _validate_port_state(self, port_state):"},{"line_number":62,"context_line":"        if port_state.upper() not in (\u0027ACTIVE\u0027, \u0027DOWN\u0027):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F91M%3D","line":59,"updated":"2012-02-08 00:33:28.000000000","message":"parameter net_id is unused.\nIs this operation worth being in its own method?","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":56,"context_line":"    def _get_vlan_name(self, net_id, vlan):"},{"line_number":57,"context_line":"        \"\"\"Getting the vlan name from the tenant and vlan\"\"\""},{"line_number":58,"context_line":"        vlan_name \u003d conf.VLAN_NAME_PREFIX + vlan"},{"line_number":59,"context_line":"        return vlan_name"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _validate_port_state(self, port_state):"},{"line_number":62,"context_line":"        if port_state.upper() not in (\u0027ACTIVE\u0027, \u0027DOWN\u0027):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9fQ%3D","line":59,"in_reply_to":"AAAAEn%2F%2F91M%3D","updated":"2012-02-08 10:41:11.000000000","message":"This function has been removed, not dealing with the vlan name any more as per suggestion.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def _check_network_belongs_to_tenant(self, tenant_id, net_id):"},{"line_number":67,"context_line":"        \"\"\"Check if a particular network belongs to a tenant."},{"line_number":68,"context_line":"        This check would not be necessary once Quantum supports AuthZ\"\"\""},{"line_number":69,"context_line":"        networks_list \u003d db.network_list(tenant_id)"},{"line_number":70,"context_line":"        for network in networks_list:"},{"line_number":71,"context_line":"            if network[const.UUID] \u003d\u003d net_id:"},{"line_number":72,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F91A%3D","line":69,"updated":"2012-02-08 00:33:28.000000000","message":"This could be made more efficient by executing db.network_get and then checking the value of the tenant_id attribute.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def _check_network_belongs_to_tenant(self, tenant_id, net_id):"},{"line_number":67,"context_line":"        \"\"\"Check if a particular network belongs to a tenant."},{"line_number":68,"context_line":"        This check would not be necessary once Quantum supports AuthZ\"\"\""},{"line_number":69,"context_line":"        networks_list \u003d db.network_list(tenant_id)"},{"line_number":70,"context_line":"        for network in networks_list:"},{"line_number":71,"context_line":"            if network[const.UUID] \u003d\u003d net_id:"},{"line_number":72,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9fM%3D","line":69,"in_reply_to":"AAAAEn%2F%2F91A%3D","updated":"2012-02-08 10:41:11.000000000","message":"This function is also removed since it was not being called (this check will get automatically handled when AuthZ is implemented).","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":"        LOG.debug(\"LinuxBridgePlugin.create_network() called\")"},{"line_number":120,"context_line":"        new_network \u003d db.network_create(tenant_id, net_name,"},{"line_number":121,"context_line":"                                        op_status\u003dOperationalStatus.UP)"},{"line_number":122,"context_line":"        new_net_id \u003d new_network[const.UUID]"},{"line_number":123,"context_line":"        vlan_id \u003d self._get_vlan_for_tenant(tenant_id, net_name)"},{"line_number":124,"context_line":"        vlan_name \u003d self._get_vlan_name(new_net_id, str(vlan_id))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F90w%3D","line":121,"updated":"2012-02-08 00:33:28.000000000","message":"[Question] is it ok to initialize operational status to UP, or should we initialize it do DOWN and then bring it to up when the bridge agent has confirmed the bridge instance has been created? - Perhaps the agent itself could bring the state to UP","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":"        LOG.debug(\"LinuxBridgePlugin.create_network() called\")"},{"line_number":120,"context_line":"        new_network \u003d db.network_create(tenant_id, net_name,"},{"line_number":121,"context_line":"                                        op_status\u003dOperationalStatus.UP)"},{"line_number":122,"context_line":"        new_net_id \u003d new_network[const.UUID]"},{"line_number":123,"context_line":"        vlan_id \u003d self._get_vlan_for_tenant(tenant_id, net_name)"},{"line_number":124,"context_line":"        vlan_name \u003d self._get_vlan_name(new_net_id, str(vlan_id))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9eg%3D","line":121,"in_reply_to":"AAAAEn%2F%2F90w%3D","updated":"2012-02-08 10:41:11.000000000","message":"Good suggestion, however this cannot be done. The bridge instance might need to be created on more than one host.  Hence, the best option here is to set the status to UP when the logical model is successfully populated and is to be interpreted that the network is ready to be used.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":120,"context_line":"        new_network \u003d db.network_create(tenant_id, net_name,"},{"line_number":121,"context_line":"                                        op_status\u003dOperationalStatus.UP)"},{"line_number":122,"context_line":"        new_net_id \u003d new_network[const.UUID]"},{"line_number":123,"context_line":"        vlan_id \u003d self._get_vlan_for_tenant(tenant_id, net_name)"},{"line_number":124,"context_line":"        vlan_name \u003d self._get_vlan_name(new_net_id, str(vlan_id))"},{"line_number":125,"context_line":"        cdb.add_vlan_binding(vlan_id, vlan_name, new_net_id)"},{"line_number":126,"context_line":"        new_net_dict \u003d {const.NET_ID: new_net_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9xg%3D","line":123,"updated":"2012-02-08 00:33:28.000000000","message":"[Question] The above call raises a plugin-specific exception.\nAs it is, Quantum is likely to return a 500 error. Would that be ok?","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":120,"context_line":"        new_network \u003d db.network_create(tenant_id, net_name,"},{"line_number":121,"context_line":"                                        op_status\u003dOperationalStatus.UP)"},{"line_number":122,"context_line":"        new_net_id \u003d new_network[const.UUID]"},{"line_number":123,"context_line":"        vlan_id \u003d self._get_vlan_for_tenant(tenant_id, net_name)"},{"line_number":124,"context_line":"        vlan_name \u003d self._get_vlan_name(new_net_id, str(vlan_id))"},{"line_number":125,"context_line":"        cdb.add_vlan_binding(vlan_id, vlan_name, new_net_id)"},{"line_number":126,"context_line":"        new_net_dict \u003d {const.NET_ID: new_net_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9eo%3D","line":123,"in_reply_to":"AAAAEn%2F%2F9xg%3D","updated":"2012-02-08 10:41:11.000000000","message":"The plugin specific exception is now handled elsewhere, and an Exception is thrown.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":141,"context_line":"            if len(ports_on_net) \u003e 0:"},{"line_number":142,"context_line":"                for port in ports_on_net:"},{"line_number":143,"context_line":"                    if port[const.INTERFACEID]:"},{"line_number":144,"context_line":"                        raise exc.NetworkInUse(net_id\u003dnet_id)"},{"line_number":145,"context_line":"                for port in ports_on_net:"},{"line_number":146,"context_line":"                    self.delete_port(tenant_id, net_id, port[const.UUID])"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F90s%3D","line":144,"updated":"2012-02-08 00:33:28.000000000","message":"[Optional] Consider shortening the syntax using any.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":152,"context_line":"                self._release_vlan_for_tenant(tenant_id, net_id)"},{"line_number":153,"context_line":"                cdb.remove_vlan_binding(net_id)"},{"line_number":154,"context_line":"            except Exception as excp:"},{"line_number":155,"context_line":"                LOG.warning(\"Excpetion: %s\" % excp)"},{"line_number":156,"context_line":"            db.network_destroy(net_id)"},{"line_number":157,"context_line":"            return net_dict"},{"line_number":158,"context_line":"        # Network not found"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F90c%3D","line":155,"updated":"2012-02-08 00:33:28.000000000","message":"1) Typo: \"Exception\"\n2) This is a case when operational status should be set to DOWN, imho","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":152,"context_line":"                self._release_vlan_for_tenant(tenant_id, net_id)"},{"line_number":153,"context_line":"                cdb.remove_vlan_binding(net_id)"},{"line_number":154,"context_line":"            except Exception as excp:"},{"line_number":155,"context_line":"                LOG.warning(\"Excpetion: %s\" % excp)"},{"line_number":156,"context_line":"            db.network_destroy(net_id)"},{"line_number":157,"context_line":"            return net_dict"},{"line_number":158,"context_line":"        # Network not found"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9es%3D","line":155,"in_reply_to":"AAAAEn%2F%2F90c%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":177,"context_line":"        LOG.debug(\"LinuxBridgePlugin.get_all_ports() called\")"},{"line_number":178,"context_line":"        # Disabling this check since it turns out that the call"},{"line_number":179,"context_line":"        # could be made as a different tenant"},{"line_number":180,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":181,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":182,"context_line":"        ports_list \u003d db.port_list(net_id)"},{"line_number":183,"context_line":"        ports_on_net \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F90Q%3D","line":180,"updated":"2012-02-08 00:33:28.000000000","message":"Can you provide an use case for a call to get_all_ports for a network performed by a tenant different from the network owners? I\u0027m sure it is quite obvious...\n\naccording to Openstack HACKING rules commented code lines should be removed","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":177,"context_line":"        LOG.debug(\"LinuxBridgePlugin.get_all_ports() called\")"},{"line_number":178,"context_line":"        # Disabling this check since it turns out that the call"},{"line_number":179,"context_line":"        # could be made as a different tenant"},{"line_number":180,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":181,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":182,"context_line":"        ports_list \u003d db.port_list(net_id)"},{"line_number":183,"context_line":"        ports_on_net \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9ew%3D","line":180,"in_reply_to":"AAAAEn%2F%2F90Q%3D","updated":"2012-02-08 10:41:11.000000000","message":"This check has been removed since it\u0027s not required as explained earlier.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":194,"context_line":"        that is attached to this particular port."},{"line_number":195,"context_line":"        \"\"\""},{"line_number":196,"context_line":"        LOG.debug(\"LinuxBridgePlugin.get_port_details() called\")"},{"line_number":197,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":198,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":199,"context_line":"        port \u003d db.port_get(port_id, net_id)"},{"line_number":200,"context_line":"        new_port_dict \u003d cutil.make_port_dict(port)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F90Y%3D","line":197,"updated":"2012-02-08 00:33:28.000000000","message":"Same as comment to line #180","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":194,"context_line":"        that is attached to this particular port."},{"line_number":195,"context_line":"        \"\"\""},{"line_number":196,"context_line":"        LOG.debug(\"LinuxBridgePlugin.get_port_details() called\")"},{"line_number":197,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":198,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":199,"context_line":"        port \u003d db.port_get(port_id, net_id)"},{"line_number":200,"context_line":"        new_port_dict \u003d cutil.make_port_dict(port)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9e0%3D","line":197,"in_reply_to":"AAAAEn%2F%2F90Y%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":205,"context_line":"        Creates a port on the specified Virtual Network."},{"line_number":206,"context_line":"        \"\"\""},{"line_number":207,"context_line":"        LOG.debug(\"LinuxBridgePlugin.create_port() called\")"},{"line_number":208,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":209,"context_line":"        port \u003d db.port_create(net_id, port_state,"},{"line_number":210,"context_line":"                                op_status\u003dOperationalStatus.DOWN)"},{"line_number":211,"context_line":"        unique_port_id_string \u003d port[const.UUID]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F90M%3D","line":208,"updated":"2012-02-08 00:33:28.000000000","message":"See comment to Line #180","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":205,"context_line":"        Creates a port on the specified Virtual Network."},{"line_number":206,"context_line":"        \"\"\""},{"line_number":207,"context_line":"        LOG.debug(\"LinuxBridgePlugin.create_port() called\")"},{"line_number":208,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":209,"context_line":"        port \u003d db.port_create(net_id, port_state,"},{"line_number":210,"context_line":"                                op_status\u003dOperationalStatus.DOWN)"},{"line_number":211,"context_line":"        unique_port_id_string \u003d port[const.UUID]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9e4%3D","line":208,"in_reply_to":"AAAAEn%2F%2F90M%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":217,"context_line":"        Updates the attributes of a port on the specified Virtual Network."},{"line_number":218,"context_line":"        \"\"\""},{"line_number":219,"context_line":"        LOG.debug(\"LinuxBridgePlugin.update_port() called\")"},{"line_number":220,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":221,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":222,"context_line":"        self._validate_port_state(kwargs[\"state\"])"},{"line_number":223,"context_line":"        port \u003d db.port_update(port_id, net_id, **kwargs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F90I%3D","line":220,"updated":"2012-02-08 00:33:28.000000000","message":"See comment to Line #180","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":217,"context_line":"        Updates the attributes of a port on the specified Virtual Network."},{"line_number":218,"context_line":"        \"\"\""},{"line_number":219,"context_line":"        LOG.debug(\"LinuxBridgePlugin.update_port() called\")"},{"line_number":220,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":221,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":222,"context_line":"        self._validate_port_state(kwargs[\"state\"])"},{"line_number":223,"context_line":"        port \u003d db.port_update(port_id, net_id, **kwargs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9e8%3D","line":220,"in_reply_to":"AAAAEn%2F%2F90I%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":233,"context_line":"        is deleted."},{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        LOG.debug(\"LinuxBridgePlugin.delete_port() called\")"},{"line_number":236,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":237,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":238,"context_line":"        port \u003d db.port_get(port_id, net_id)"},{"line_number":239,"context_line":"        attachment_id \u003d port[const.INTERFACEID]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F90E%3D","line":236,"updated":"2012-02-08 00:33:28.000000000","message":"See comment to Line #180","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":233,"context_line":"        is deleted."},{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        LOG.debug(\"LinuxBridgePlugin.delete_port() called\")"},{"line_number":236,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":237,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":238,"context_line":"        port \u003d db.port_get(port_id, net_id)"},{"line_number":239,"context_line":"        attachment_id \u003d port[const.INTERFACEID]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9fA%3D","line":236,"in_reply_to":"AAAAEn%2F%2F90E%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":251,"context_line":"        specified Virtual Network."},{"line_number":252,"context_line":"        \"\"\""},{"line_number":253,"context_line":"        LOG.debug(\"LinuxBridgePlugin.plug_interface() called\")"},{"line_number":254,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":255,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":256,"context_line":"        port \u003d db.port_get(port_id, net_id)"},{"line_number":257,"context_line":"        attachment_id \u003d port[const.INTERFACEID]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F90A%3D","line":254,"updated":"2012-02-08 00:33:28.000000000","message":"See comment to Line #180","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":251,"context_line":"        specified Virtual Network."},{"line_number":252,"context_line":"        \"\"\""},{"line_number":253,"context_line":"        LOG.debug(\"LinuxBridgePlugin.plug_interface() called\")"},{"line_number":254,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":255,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":256,"context_line":"        port \u003d db.port_get(port_id, net_id)"},{"line_number":257,"context_line":"        attachment_id \u003d port[const.INTERFACEID]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9fE%3D","line":254,"in_reply_to":"AAAAEn%2F%2F90A%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":266,"context_line":"        specified Virtual Network."},{"line_number":267,"context_line":"        \"\"\""},{"line_number":268,"context_line":"        LOG.debug(\"LinuxBridgePlugin.unplug_interface() called\")"},{"line_number":269,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":270,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":271,"context_line":"        port \u003d db.port_get(port_id, net_id)"},{"line_number":272,"context_line":"        attachment_id \u003d port[const.INTERFACEID]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9z8%3D","line":269,"updated":"2012-02-08 00:33:28.000000000","message":"See comment to Line #180","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":266,"context_line":"        specified Virtual Network."},{"line_number":267,"context_line":"        \"\"\""},{"line_number":268,"context_line":"        LOG.debug(\"LinuxBridgePlugin.unplug_interface() called\")"},{"line_number":269,"context_line":"        #self._check_network_belongs_to_tenant(tenant_id, net_id)"},{"line_number":270,"context_line":"        network \u003d db.network_get(net_id)"},{"line_number":271,"context_line":"        port \u003d db.port_get(port_id, net_id)"},{"line_number":272,"context_line":"        attachment_id \u003d port[const.INTERFACEID]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9fI%3D","line":269,"in_reply_to":"AAAAEn%2F%2F9z8%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"}],"quantum/plugins/linuxbridge/README":[{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"3e39267fe2741d021d4a6768c2fa2efcce98e6f0","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"# -- Running Tests"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"- To run tests related to Plugin and the VLAN management (run the "},{"line_number":134,"context_line":"  following from the top level Quantum directory):"},{"line_number":135,"context_line":"  PLUGIN_DIR\u003dquantum/plugins/linuxbridge ./run_tests.sh -N"},{"line_number":136,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAEH%2F%2F%2BoQ%3D","line":133,"updated":"2012-01-24 22:21:46.000000000","message":"could you remove that space?","commit_id":"c825e48e95a7fae9bba2c5e143bd456cf5c01cfa"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"3e39267fe2741d021d4a6768c2fa2efcce98e6f0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"# -- Nova configuration (compute node(s))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"1) Configure the vif driver, and libvirt/vif type"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"--libvirt_type\u003dqemu"},{"line_number":42,"context_line":"--libvirt_vif_type\u003dethernet"},{"line_number":43,"context_line":"--libvirt_vif_driver\u003dnova.virt.libvirt.vif_linuxbridge_quantum.QuantumLibvirtLinuxBridgeDriver"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAEH%2F%2F9Pc%3D","line":40,"updated":"2012-01-28 01:00:29.000000000","message":"Testing against nova essex-3 i found that the follwoing flag will be required as well if it is not already presented in nova.conf:\n--connection_type\u003dlibvirt","commit_id":"722d83b5c5bae364acb64e3b8a80e8a52df8cb65"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":9,"context_line":"   now) to store configuration and mappings that are used by the"},{"line_number":10,"context_line":"   agent.  The mysql server runs on a central server (often the same"},{"line_number":11,"context_line":"   host as nova itself)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"2) The quantum service host which will be running quantum.  This can"},{"line_number":14,"context_line":"   be run on the server running nova."},{"line_number":15,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAEn%2F%2F93g%3D","line":12,"updated":"2012-02-08 00:33:28.000000000","message":"[Optional] comment: Consider using sqlalchemy. Transition from python-mysql to sqlalchemy was quite easy for the OVS plugin","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":9,"context_line":"   now) to store configuration and mappings that are used by the"},{"line_number":10,"context_line":"   agent.  The mysql server runs on a central server (often the same"},{"line_number":11,"context_line":"   host as nova itself)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"2) The quantum service host which will be running quantum.  This can"},{"line_number":14,"context_line":"   be run on the server running nova."},{"line_number":15,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAEn%2F%2F9ec%3D","line":12,"in_reply_to":"AAAAEn%2F%2F93g%3D","updated":"2012-02-08 10:41:11.000000000","message":"Good suggestion. Would like to propose it as an enhancement.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"   Make sure you have the following package(s) installed:"},{"line_number":26,"context_line":"   python-configobj"},{"line_number":27,"context_line":"   bridge-utils (is required on every host in the deployment)"},{"line_number":28,"context_line":"   sqlite3 (to run the tests)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# -- Nova configuration (controller node)"},{"line_number":31,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAEn%2F%2F9vM%3D","line":28,"updated":"2012-02-08 00:33:28.000000000","message":"What about MySQLdb for the agent?","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"   Make sure you have the following package(s) installed:"},{"line_number":26,"context_line":"   python-configobj"},{"line_number":27,"context_line":"   bridge-utils (is required on every host in the deployment)"},{"line_number":28,"context_line":"   sqlite3 (to run the tests)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# -- Nova configuration (controller node)"},{"line_number":31,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAEn%2F%2F9eY%3D","line":28,"in_reply_to":"AAAAEn%2F%2F9vM%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":42,"context_line":"--libvirt_type\u003dqemu"},{"line_number":43,"context_line":"--libvirt_vif_type\u003dethernet"},{"line_number":44,"context_line":"--libvirt_vif_driver\u003dnova.virt.libvirt.vif_linuxbridge_quantum.QuantumLibvirtLinuxBridgeDriver"},{"line_number":45,"context_line":"--linuxnet_interface_driver\u003dnova.network.quantum.linux_net_linux_bridge.QuantumLibvirtLinuxBridgeDriver"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The above two drivers are packaged with Quantum in the location:"},{"line_number":48,"context_line":"quantum/plugins/linuxbridge/nova"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAEn%2F%2F9wQ%3D","line":45,"updated":"2012-02-08 00:33:28.000000000","message":"Looking at the current merge proposal the interface and vif driver modules are not in the paths reported in the readme by default, unless I\u0027m missing something that has been or is about to be merged in nova.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":42,"context_line":"--libvirt_type\u003dqemu"},{"line_number":43,"context_line":"--libvirt_vif_type\u003dethernet"},{"line_number":44,"context_line":"--libvirt_vif_driver\u003dnova.virt.libvirt.vif_linuxbridge_quantum.QuantumLibvirtLinuxBridgeDriver"},{"line_number":45,"context_line":"--linuxnet_interface_driver\u003dnova.network.quantum.linux_net_linux_bridge.QuantumLibvirtLinuxBridgeDriver"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The above two drivers are packaged with Quantum in the location:"},{"line_number":48,"context_line":"quantum/plugins/linuxbridge/nova"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAEn%2F%2F9eU%3D","line":45,"in_reply_to":"AAAAEn%2F%2F9wQ%3D","updated":"2012-02-08 10:41:11.000000000","message":"The subsequent lines will probably explain this.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"To prep mysql, run:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"$ mysql -u root -p -e \"create database quantum_network\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# log in to mysql service"},{"line_number":95,"context_line":"$ mysql -u root -p"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAEn%2F%2F93Q%3D","line":92,"updated":"2012-02-08 00:33:28.000000000","message":"[Minor] It is probably better is the database name recalls somehow the plugin itself; example: \"quantum_linux_bridge\"","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"To prep mysql, run:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"$ mysql -u root -p -e \"create database quantum_network\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# log in to mysql service"},{"line_number":95,"context_line":"$ mysql -u root -p"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAEn%2F%2F9eQ%3D","line":92,"in_reply_to":"AAAAEn%2F%2F93Q%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"}],"quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":39,"context_line":"BRIDGE_NAME_PREFIX \u003d \"brq\""},{"line_number":40,"context_line":"GATEWAY_INTERFACE_PREFIX \u003d \"gw-\""},{"line_number":41,"context_line":"TAP_INTERFACE_PREFIX \u003d \"tap\""},{"line_number":42,"context_line":"BRIDGE_FS \u003d \"/sys/devices/virtual/net/\""},{"line_number":43,"context_line":"BRIDGE_NAME_PLACEHOLDER \u003d \"bridge_name\""},{"line_number":44,"context_line":"BRIDGE_INTERFACES_FS \u003d BRIDGE_FS + BRIDGE_NAME_PLACEHOLDER + \"/brif/\""},{"line_number":45,"context_line":"PORT_OPSTATUS_UPDATESQL \u003d \"UPDATE ports SET op_status \u003d \u0027%s\u0027 WHERE uuid \u003d \u0027%s\u0027\""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9vI%3D","line":42,"updated":"2012-02-08 00:33:28.000000000","message":"[Question]: is this path the same for every linux distro?","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":39,"context_line":"BRIDGE_NAME_PREFIX \u003d \"brq\""},{"line_number":40,"context_line":"GATEWAY_INTERFACE_PREFIX \u003d \"gw-\""},{"line_number":41,"context_line":"TAP_INTERFACE_PREFIX \u003d \"tap\""},{"line_number":42,"context_line":"BRIDGE_FS \u003d \"/sys/devices/virtual/net/\""},{"line_number":43,"context_line":"BRIDGE_NAME_PLACEHOLDER \u003d \"bridge_name\""},{"line_number":44,"context_line":"BRIDGE_INTERFACES_FS \u003d BRIDGE_FS + BRIDGE_NAME_PLACEHOLDER + \"/brif/\""},{"line_number":45,"context_line":"PORT_OPSTATUS_UPDATESQL \u003d \"UPDATE ports SET op_status \u003d \u0027%s\u0027 WHERE uuid \u003d \u0027%s\u0027\""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9eM%3D","line":42,"in_reply_to":"AAAAEn%2F%2F9vI%3D","updated":"2012-02-08 10:41:11.000000000","message":"This is defined in the Filesystem Hierarchy Standard (FHS) and to the best of my knowledge all the major distros seem to be following this.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def get_subinterface_name(self, vlan_id):"},{"line_number":86,"context_line":"        if not vlan_id:"},{"line_number":87,"context_line":"            LOG.error(\"Invalid VLAN ID, will lead to incorrect subinterface\" \\"},{"line_number":88,"context_line":"                      \"name\")"},{"line_number":89,"context_line":"        subinterface_name \u003d \u0027%s.%s\u0027 % (self.physical_interface, vlan_id)"},{"line_number":90,"context_line":"        return subinterface_name"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9u0%3D","line":87,"updated":"2012-02-08 00:33:28.000000000","message":"If we allow the routine to continue execution we should probably LOG a warning rather than an error.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def get_subinterface_name(self, vlan_id):"},{"line_number":86,"context_line":"        if not vlan_id:"},{"line_number":87,"context_line":"            LOG.error(\"Invalid VLAN ID, will lead to incorrect subinterface\" \\"},{"line_number":88,"context_line":"                      \"name\")"},{"line_number":89,"context_line":"        subinterface_name \u003d \u0027%s.%s\u0027 % (self.physical_interface, vlan_id)"},{"line_number":90,"context_line":"        return subinterface_name"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9eI%3D","line":87,"in_reply_to":"AAAAEn%2F%2F9u0%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def get_tap_device_name(self, interface_id):"},{"line_number":93,"context_line":"        if not interface_id:"},{"line_number":94,"context_line":"            LOG.error(\"Invalid Interface ID, will lead to incorrect \" \\"},{"line_number":95,"context_line":"                      \"tap device name\")"},{"line_number":96,"context_line":"        tap_device_name \u003d TAP_INTERFACE_PREFIX + interface_id[0:11]"},{"line_number":97,"context_line":"        return tap_device_name"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9uw%3D","line":95,"updated":"2012-02-08 00:33:28.000000000","message":"same as line #87","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def get_tap_device_name(self, interface_id):"},{"line_number":93,"context_line":"        if not interface_id:"},{"line_number":94,"context_line":"            LOG.error(\"Invalid Interface ID, will lead to incorrect \" \\"},{"line_number":95,"context_line":"                      \"tap device name\")"},{"line_number":96,"context_line":"        tap_device_name \u003d TAP_INTERFACE_PREFIX + interface_id[0:11]"},{"line_number":97,"context_line":"        return tap_device_name"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9eE%3D","line":95,"in_reply_to":"AAAAEn%2F%2F9uw%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":182,"context_line":"            LOG.debug(\"Starting bridge %s for subinterface %s\" % (bridge_name,"},{"line_number":183,"context_line":"                                                                interface))"},{"line_number":184,"context_line":"            if self.run_cmd([\u0027brctl\u0027, \u0027addbr\u0027, bridge_name]):"},{"line_number":185,"context_line":"                return"},{"line_number":186,"context_line":"            if self.run_cmd([\u0027brctl\u0027, \u0027setfd\u0027, bridge_name, str(0)]):"},{"line_number":187,"context_line":"                return"},{"line_number":188,"context_line":"            if self.run_cmd([\u0027brctl\u0027, \u0027stp\u0027, bridge_name, \u0027off\u0027]):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9ug%3D","line":185,"updated":"2012-02-08 00:33:28.000000000","message":"This is maybe just me getting tired:\n1) Is the intended behaviour to interrupt the command sequence if something goes wrong?\n2) Does run_cmd return None or 0 when everything goes fine?\n\nAlso, on point #1, would it be possible to just raise an exception in run_cmd?","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":182,"context_line":"            LOG.debug(\"Starting bridge %s for subinterface %s\" % (bridge_name,"},{"line_number":183,"context_line":"                                                                interface))"},{"line_number":184,"context_line":"            if self.run_cmd([\u0027brctl\u0027, \u0027addbr\u0027, bridge_name]):"},{"line_number":185,"context_line":"                return"},{"line_number":186,"context_line":"            if self.run_cmd([\u0027brctl\u0027, \u0027setfd\u0027, bridge_name, str(0)]):"},{"line_number":187,"context_line":"                return"},{"line_number":188,"context_line":"            if self.run_cmd([\u0027brctl\u0027, \u0027stp\u0027, bridge_name, \u0027off\u0027]):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9eA%3D","line":185,"in_reply_to":"AAAAEn%2F%2F9ug%3D","updated":"2012-02-08 10:41:11.000000000","message":"1) Yes\n2) Yes\n\nI prefer not to raise exception in run_cmd since this function is called from different places, and we might not necessarily want to abort processing in each instance.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"}],"quantum/plugins/linuxbridge/db/l2network_db.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2011, Cisco Systems, Inc."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9zo%3D","line":3,"updated":"2012-02-08 00:33:28.000000000","message":"[Super-minor] The code has been proposed for merge in 2012 - applies also to other files","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2011, Cisco Systems, Inc."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9d8%3D","line":3,"in_reply_to":"AAAAEn%2F%2F9zo%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":52,"context_line":"        vlanid \u003d session.query(l2network_models.VlanID).\\"},{"line_number":53,"context_line":"          one()"},{"line_number":54,"context_line":"    except exc.MultipleResultsFound:"},{"line_number":55,"context_line":"        pass"},{"line_number":56,"context_line":"    except exc.NoResultFound:"},{"line_number":57,"context_line":"        start \u003d int(conf.VLAN_START)"},{"line_number":58,"context_line":"        end \u003d int(conf.VLAN_END)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9zU%3D","line":55,"updated":"2012-02-08 00:33:28.000000000","message":"This does not appear to manage consistently the VLAN ID Space across Quantum reboots.\nIf the VLAN range is changed and then Quantum is rebooted, the IDs recorded in the database will not be updated. \nI understand that keeping the VLAN range in the DB in sync might be tedious and error-prone; we should however at least document this.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":52,"context_line":"        vlanid \u003d session.query(l2network_models.VlanID).\\"},{"line_number":53,"context_line":"          one()"},{"line_number":54,"context_line":"    except exc.MultipleResultsFound:"},{"line_number":55,"context_line":"        pass"},{"line_number":56,"context_line":"    except exc.NoResultFound:"},{"line_number":57,"context_line":"        start \u003d int(conf.VLAN_START)"},{"line_number":58,"context_line":"        end \u003d int(conf.VLAN_END)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9d4%3D","line":55,"in_reply_to":"AAAAEn%2F%2F9zU%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":117,"context_line":"        session.delete(vlanid)"},{"line_number":118,"context_line":"        session.flush()"},{"line_number":119,"context_line":"        return vlanid"},{"line_number":120,"context_line":"    except exc.NoResultFound:"},{"line_number":121,"context_line":"        pass"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9y4%3D","line":120,"updated":"2012-02-08 00:33:28.000000000","message":"[Minor] I was expecting more something like c_exc.VlanIDNotFound","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":117,"context_line":"        session.delete(vlanid)"},{"line_number":118,"context_line":"        session.flush()"},{"line_number":119,"context_line":"        return vlanid"},{"line_number":120,"context_line":"    except exc.NoResultFound:"},{"line_number":121,"context_line":"        pass"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9d0%3D","line":120,"in_reply_to":"AAAAEn%2F%2F9y4%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":129,"context_line":"        rvlan \u003d session.query(l2network_models.VlanID).\\"},{"line_number":130,"context_line":"          first()"},{"line_number":131,"context_line":"        if not rvlan:"},{"line_number":132,"context_line":"            create_vlanids()"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        rvlan \u003d session.query(l2network_models.VlanID).\\"},{"line_number":135,"context_line":"         filter_by(vlan_used\u003dFalse).\\"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9y8%3D","line":132,"updated":"2012-02-08 00:33:28.000000000","message":"I don\u0027t understand the above check. Isn\u0027t the initialize method supposed to create records for the whole VLAN range?","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":129,"context_line":"        rvlan \u003d session.query(l2network_models.VlanID).\\"},{"line_number":130,"context_line":"          first()"},{"line_number":131,"context_line":"        if not rvlan:"},{"line_number":132,"context_line":"            create_vlanids()"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        rvlan \u003d session.query(l2network_models.VlanID).\\"},{"line_number":135,"context_line":"         filter_by(vlan_used\u003dFalse).\\"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9dw%3D","line":132,"in_reply_to":"AAAAEn%2F%2F9y8%3D","updated":"2012-02-08 10:41:11.000000000","message":"This condition will not be hit in normal processing (when the quantum server is run), however it is needed when running the tests to initialize the VLAN IDs for each test.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":145,"context_line":"        session.flush()"},{"line_number":146,"context_line":"        return rvlan[\"vlan_id\"]"},{"line_number":147,"context_line":"    except exc.NoResultFound:"},{"line_number":148,"context_line":"        raise c_exc.VlanIDNotAvailable()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def get_all_vlanids_used():"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9yo%3D","line":148,"updated":"2012-02-08 00:33:28.000000000","message":"Why don\u0027t raise directly this exception at line #138?","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":145,"context_line":"        session.flush()"},{"line_number":146,"context_line":"        return rvlan[\"vlan_id\"]"},{"line_number":147,"context_line":"    except exc.NoResultFound:"},{"line_number":148,"context_line":"        raise c_exc.VlanIDNotAvailable()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def get_all_vlanids_used():"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9ds%3D","line":148,"in_reply_to":"AAAAEn%2F%2F9yo%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":183,"context_line":"          one()"},{"line_number":184,"context_line":"        return binding"},{"line_number":185,"context_line":"    except exc.NoResultFound:"},{"line_number":186,"context_line":"        raise q_exc.NetworkNotFound(net_id\u003dnetid)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"def add_vlan_binding(vlanid, vlanname, netid):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9yM%3D","line":186,"updated":"2012-02-08 00:33:28.000000000","message":"[Minor] Consider defining a NetworkVlanBindingNotFound exception","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":183,"context_line":"          one()"},{"line_number":184,"context_line":"        return binding"},{"line_number":185,"context_line":"    except exc.NoResultFound:"},{"line_number":186,"context_line":"        raise q_exc.NetworkNotFound(net_id\u003dnetid)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"def add_vlan_binding(vlanid, vlanname, netid):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9do%3D","line":186,"in_reply_to":"AAAAEn%2F%2F9yM%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":57,"context_line":"        change in VLAN ID range across server reboots. This is currently not"},{"line_number":58,"context_line":"        a supported feature. This logic will need to change if this feature"},{"line_number":59,"context_line":"        has to be supported."},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        pass"},{"line_number":62,"context_line":"    except exc.NoResultFound:"},{"line_number":63,"context_line":"        start \u003d int(conf.VLAN_START)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEn%2F%2F9Ws%3D","line":60,"updated":"2012-02-08 18:04:45.000000000","message":"I think that is an OK limitation.  Would be good to put in logic that prints out an pretty severe error if someone tries to do this though.  We wouldn\u0027t want them thinking that the change succeeded, when in fact we ignored it.","commit_id":"358f0c0897bb578b5d957d8619b151a979d7ae9e"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":57,"context_line":"        change in VLAN ID range across server reboots. This is currently not"},{"line_number":58,"context_line":"        a supported feature. This logic will need to change if this feature"},{"line_number":59,"context_line":"        has to be supported."},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        pass"},{"line_number":62,"context_line":"    except exc.NoResultFound:"},{"line_number":63,"context_line":"        start \u003d int(conf.VLAN_START)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEn%2F%2F9CY%3D","line":60,"in_reply_to":"AAAAEn%2F%2F9Ws%3D","updated":"2012-02-08 22:15:00.000000000","message":"Good suggestion, should have done it before. Have added a check which throws an exception if the range changes.","commit_id":"358f0c0897bb578b5d957d8619b151a979d7ae9e"}],"quantum/plugins/linuxbridge/db/l2network_models.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":24,"context_line":"from quantum.db import models"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class L2NetworkBase(object):"},{"line_number":28,"context_line":"    \"\"\"Base class for L2Network Models.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __setitem__(self, key, value):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9xE%3D","line":27,"updated":"2012-02-08 00:33:28.000000000","message":"This appears to be a duplicate of quantum.db.models.QuantumBase\nConsider removing it, and have the other model classes derive from QuantumBase","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":24,"context_line":"from quantum.db import models"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class L2NetworkBase(object):"},{"line_number":28,"context_line":"    \"\"\"Base class for L2Network Models.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def __setitem__(self, key, value):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9dk%3D","line":27,"in_reply_to":"AAAAEn%2F%2F9xE%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":85,"context_line":"    __tablename__ \u003d \u0027vlan_bindings\u0027"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    vlan_id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":88,"context_line":"    vlan_name \u003d Column(String(255))"},{"line_number":89,"context_line":"    network_id \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def __init__(self, vlan_id, vlan_name, network_id):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9w8%3D","line":88,"updated":"2012-02-08 00:33:28.000000000","message":"[Question] Do we need to store vlan_name in the db? It appear to be calculated from vlan_id in other parts of the code","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":85,"context_line":"    __tablename__ \u003d \u0027vlan_bindings\u0027"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    vlan_id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":88,"context_line":"    vlan_name \u003d Column(String(255))"},{"line_number":89,"context_line":"    network_id \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def __init__(self, vlan_id, vlan_name, network_id):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9dg%3D","line":88,"in_reply_to":"AAAAEn%2F%2F9w8%3D","updated":"2012-02-08 10:41:11.000000000","message":"Good suggestion. No longer using vlan_name, removed.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"}],"quantum/plugins/linuxbridge/nova/linux_net_linux_bridge.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2011 Cisco Systems, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9w0%3D","line":1,"updated":"2012-02-08 00:33:28.000000000","message":"General comment.\nThis module should be probably proposed for merge in nova; however I have no problems with merging it in Quantum for Essex.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2011 Cisco Systems, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9dc%3D","line":1,"in_reply_to":"AAAAEn%2F%2F9w0%3D","updated":"2012-02-08 10:41:11.000000000","message":"Agree.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \"\"\"Check if ethernet device exists.\"\"\""},{"line_number":43,"context_line":"    (_out, err) \u003d utils.execute(\u0027ip\u0027, \u0027link\u0027, \u0027show\u0027, \u0027dev\u0027, device,"},{"line_number":44,"context_line":"                           check_exit_code\u003dFalse)"},{"line_number":45,"context_line":"    return not err"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# plugs interfaces using Linux Bridge when using QuantumManager"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEn%2F%2F9U0%3D","line":45,"updated":"2012-02-08 18:04:45.000000000","message":"linux_net already has a device_exists so this is a bit redundant (it appears to be a copy?).  I\u0027m going to guess that you added this so that you could run tests independent of Nova?  If so, that sounds like a reasonable approach.","commit_id":"358f0c0897bb578b5d957d8619b151a979d7ae9e"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \"\"\"Check if ethernet device exists.\"\"\""},{"line_number":43,"context_line":"    (_out, err) \u003d utils.execute(\u0027ip\u0027, \u0027link\u0027, \u0027show\u0027, \u0027dev\u0027, device,"},{"line_number":44,"context_line":"                           check_exit_code\u003dFalse)"},{"line_number":45,"context_line":"    return not err"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# plugs interfaces using Linux Bridge when using QuantumManager"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEn%2F%2F9CQ%3D","line":45,"in_reply_to":"AAAAEn%2F%2F9U0%3D","updated":"2012-02-08 22:15:00.000000000","message":"Yes.","commit_id":"358f0c0897bb578b5d957d8619b151a979d7ae9e"}],"quantum/plugins/linuxbridge/nova/vif_linuxbridge_quantum.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2011 Midokura KK"},{"line_number":4,"context_line":"# Copyright (C) 2011 Nicira, Inc"},{"line_number":5,"context_line":"# Copyright (C) 2011 Cisco Systems, Inc"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9ws%3D","line":2,"updated":"2012-02-08 00:33:28.000000000","message":"General comment. This module should be probably proposed for merge in nova; however I have no problems with merging it in Quantum for Essex.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright (C) 2011 Midokura KK"},{"line_number":4,"context_line":"# Copyright (C) 2011 Nicira, Inc"},{"line_number":5,"context_line":"# Copyright (C) 2011 Cisco Systems, Inc"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9dY%3D","line":2,"in_reply_to":"AAAAEn%2F%2F9ws%3D","updated":"2012-02-08 10:41:11.000000000","message":"Agree.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"}],"quantum/plugins/linuxbridge/plugin_configuration.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"from quantum.common.config import find_config_file"},{"line_number":24,"context_line":"from quantum.plugins.linuxbridge.common import configparser as confp"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF_FILE \u003d find_config_file({\u0027plugin\u0027: \u0027linuxbridge\u0027}, None,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9vs%3D","line":23,"updated":"2012-02-08 00:33:28.000000000","message":"For Openstack HACKING rules a blank line should be inserted between library and local imports. Sorry for being pedant.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"from quantum.common.config import find_config_file"},{"line_number":24,"context_line":"from quantum.plugins.linuxbridge.common import configparser as confp"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF_FILE \u003d find_config_file({\u0027plugin\u0027: \u0027linuxbridge\u0027}, None,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9dU%3D","line":23,"in_reply_to":"AAAAEn%2F%2F9vs%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"}],"quantum/plugins/linuxbridge/tests/unit/_test_linuxbridgeAgent.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":"from quantum.plugins.linuxbridge import LinuxBridgePlugin"},{"line_number":32,"context_line":"from quantum.plugins.linuxbridge.db import l2network_db as cdb"},{"line_number":33,"context_line":"import quantum.db.api as db"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEn%2F%2F9Uk%3D","line":34,"updated":"2012-02-08 18:04:45.000000000","message":"Its good that we have these tests, but usually unit tests should not modify the system in any way, rather, the call that would modify the underlying system would be stubbed out.  For example, with nova, the fake_network mechanism prevents network changes from happening.  Its good to have tests that actually change the infrastructure to, they just probably shouldn\u0027t be run as part of the standard unit tests.  Since these are unit tests in a plugin (and hence aren\u0027t run by default for Quantum), I\u0027m less concerned about this, but I wanted to let you know that in general this seems to run against the grain of how at least openstack views as proper for unit testing.","commit_id":"358f0c0897bb578b5d957d8619b151a979d7ae9e"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":31,"context_line":"from quantum.plugins.linuxbridge import LinuxBridgePlugin"},{"line_number":32,"context_line":"from quantum.plugins.linuxbridge.db import l2network_db as cdb"},{"line_number":33,"context_line":"import quantum.db.api as db"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"LOG.getLogger(__name__)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEn%2F%2F9CA%3D","line":34,"in_reply_to":"AAAAEn%2F%2F9Uk%3D","updated":"2012-02-08 22:15:00.000000000","message":"Thanks for this note. Yes, we do realize that the standard practice is to not have tests which change the infra in any way. As you point out, this is a plugin-specific test, and in addition, we have named it starting with an \"_\" to ensure that it doesn\u0027t get picked automatically even when the plugin tests are run. We do want to provide these tests though in the cases where one wants to test it on the infra.","commit_id":"358f0c0897bb578b5d957d8619b151a979d7ae9e"}],"quantum/plugins/linuxbridge/tests/unit/test_database.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class L2networkDB(object):"},{"line_number":37,"context_line":"    \"\"\"Class conisting of methods to call L2network db methods\"\"\""},{"line_number":38,"context_line":"    def get_all_vlan_bindings(self):"},{"line_number":39,"context_line":"        \"\"\"Get all vlan binding into a list of dict\"\"\""},{"line_number":40,"context_line":"        vlans \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9wE%3D","line":37,"updated":"2012-02-08 00:33:28.000000000","message":"[Optional] A blank line before the docstring would be nice.","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class L2networkDB(object):"},{"line_number":37,"context_line":"    \"\"\"Class conisting of methods to call L2network db methods\"\"\""},{"line_number":38,"context_line":"    def get_all_vlan_bindings(self):"},{"line_number":39,"context_line":"        \"\"\"Get all vlan binding into a list of dict\"\"\""},{"line_number":40,"context_line":"        vlans \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9dQ%3D","line":37,"in_reply_to":"AAAAEn%2F%2F9wE%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":346,"context_line":"        self.teardown_vlanbinding()"},{"line_number":347,"context_line":"        self.teardown_network()"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def testm_test_vlanids(self):"},{"line_number":350,"context_line":"        \"\"\"test vlanid methods\"\"\""},{"line_number":351,"context_line":"        l2network_db.create_vlanids()"},{"line_number":352,"context_line":"        vlanids \u003d l2network_db.get_all_vlanids()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9vw%3D","line":349,"updated":"2012-02-08 00:33:28.000000000","message":"[Optional and ultra-minor] shouldn\u0027t this be teste_test_vlanids?","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":346,"context_line":"        self.teardown_vlanbinding()"},{"line_number":347,"context_line":"        self.teardown_network()"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def testm_test_vlanids(self):"},{"line_number":350,"context_line":"        \"\"\"test vlanid methods\"\"\""},{"line_number":351,"context_line":"        l2network_db.create_vlanids()"},{"line_number":352,"context_line":"        vlanids \u003d l2network_db.get_all_vlanids()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAEn%2F%2F9dM%3D","line":349,"in_reply_to":"AAAAEn%2F%2F9vw%3D","updated":"2012-02-08 10:41:11.000000000","message":"Done","commit_id":"5fc5d63fde1b3e6e2088101dd003d1104b36bbb4"}],"setup_linuxbridge_plugin.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"try:"},{"line_number":2,"context_line":"    from setuptools import setup, find_packages"},{"line_number":3,"context_line":"except ImportError:"},{"line_number":4,"context_line":"    from ez_setup import use_setuptools"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEn%2F%2F9UM%3D","line":1,"updated":"2012-02-08 18:04:45.000000000","message":"Based on discussions at the last meeting, Bob Kukura is working on removing the setup_* files, as they are not used by any packaging anymore now that we have a main setup.py file.  (the scripts for creating individual packages for different plugins are going to be distro specific).  Hence, I don\u0027t think we need this file at all.\n\nThis means we should find some other place to document the specific dependencies, so that packaging people can be aware.  Perhaps just in the README.","commit_id":"358f0c0897bb578b5d957d8619b151a979d7ae9e"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"try:"},{"line_number":2,"context_line":"    from setuptools import setup, find_packages"},{"line_number":3,"context_line":"except ImportError:"},{"line_number":4,"context_line":"    from ez_setup import use_setuptools"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAEn%2F%2F9B4%3D","line":1,"in_reply_to":"AAAAEn%2F%2F9UM%3D","updated":"2012-02-08 22:15:00.000000000","message":"Done","commit_id":"358f0c0897bb578b5d957d8619b151a979d7ae9e"}]}
