)]}'
{"etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# (ListOpt) Comma-separated list of \u003ckey_min\u003e:\u003ckey_max\u003e tuples"},{"line_number":22,"context_line":"# enumerating ranges of GRE tunnel keys that are available for"},{"line_number":23,"context_line":"# allocation."},{"line_number":24,"context_line":"# tunnel_key_ranges \u003d "},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Do not change this parameter unless you have a good reason to."},{"line_number":27,"context_line":"# This is the name of the OVS integration bridge. There is one per hypervisor."}],"source_content_type":"text/x-properties","patch_set":1,"id":"AAAALH%2F%2FvU0%3D","line":24,"updated":"2012-08-15 07:57:49.000000000","message":"Whitespace","commit_id":"1fc64ab7ceac9f4518c6675e9fe393ef690f1210"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"# (ListOpt) Comma-separated list of"},{"line_number":50,"context_line":"# \u003cphysical_network\u003e:\u003cphysical_interface\u003e tuples mapping physical"},{"line_number":51,"context_line":"# network names to agent\u0027s node-specific physical network"},{"line_number":52,"context_line":"# interfaces. "},{"line_number":53,"context_line":"# physical_interface_mappings \u003d default:eth1"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"#-----------------------------------------------------------------------------"}],"source_content_type":"text/x-properties","patch_set":1,"id":"AAAALH%2F%2FvUw%3D","line":52,"updated":"2012-08-15 07:57:49.000000000","message":"Whitespace","commit_id":"1fc64ab7ceac9f4518c6675e9fe393ef690f1210"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":61,"context_line":"# sql_connection \u003d mysql://root:nova@127.0.0.1:3306/ovs_quantum"},{"line_number":62,"context_line":"# [OVS]"},{"line_number":63,"context_line":"# network_vlan_ranges \u003d default:2000:3999"},{"line_number":64,"context_line":"# tunnel_key_ranges \u003d "},{"line_number":65,"context_line":"# integration_bridge \u003d br-int"},{"line_number":66,"context_line":"# [AGENT]"},{"line_number":67,"context_line":"# root_helper \u003d sudo"}],"source_content_type":"text/x-properties","patch_set":1,"id":"AAAALH%2F%2FvUs%3D","line":64,"updated":"2012-08-15 07:57:49.000000000","message":"Whitespace","commit_id":"1fc64ab7ceac9f4518c6675e9fe393ef690f1210"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":72,"context_line":"# [DATABASE]"},{"line_number":73,"context_line":"# sql_connection \u003d mysql://root:nova@127.0.0.1:3306/ovs_quantum"},{"line_number":74,"context_line":"# [OVS]"},{"line_number":75,"context_line":"# network_vlan_ranges \u003d "},{"line_number":76,"context_line":"# tunnel_key_ranges \u003d 1:1000"},{"line_number":77,"context_line":"# integration_bridge \u003d br-int"},{"line_number":78,"context_line":"# tunnel_bridge \u003d br-tun"}],"source_content_type":"text/x-properties","patch_set":1,"id":"AAAALH%2F%2FvUo%3D","line":75,"updated":"2012-08-15 07:57:49.000000000","message":"Whitespace","commit_id":"1fc64ab7ceac9f4518c6675e9fe393ef690f1210"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# (ListOpt) Comma-separated list of \u003cphysical_network\u003e:\u003cbridge\u003e tuples"},{"line_number":38,"context_line":"# mapping physical network names to agent\u0027s node-specific OVS bridge"},{"line_number":39,"context_line":"# names. Each bridges must exist, and should have physical network"},{"line_number":40,"context_line":"# interface configured as a port."},{"line_number":41,"context_line":"# bridge_mappings \u003d default:br-eth1"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-properties","patch_set":9,"id":"AAAALH%2F%2FkpA%3D","line":39,"updated":"2012-08-30 07:42:27.000000000","message":"bridges \u003d\u003e bridge","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# (ListOpt) Comma-separated list of \u003cphysical_network\u003e:\u003cbridge\u003e tuples"},{"line_number":38,"context_line":"# mapping physical network names to agent\u0027s node-specific OVS bridge"},{"line_number":39,"context_line":"# names. Each bridges must exist, and should have physical network"},{"line_number":40,"context_line":"# interface configured as a port."},{"line_number":41,"context_line":"# bridge_mappings \u003d default:br-eth1"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-properties","patch_set":9,"id":"AAAALH%2F%2FkQU%3D","line":39,"in_reply_to":"AAAALH%2F%2FkpA%3D","updated":"2012-08-30 19:51:30.000000000","message":"Done","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"}],"quantum/agent/linux/ovs_lib.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.run_vsctl([\"--\", \"--may-exist\", \"add-br\", self.br_name])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def add_port(self, port_name):"},{"line_number":78,"context_line":"        self.run_vsctl([\"--\", \"--if-exists\", \"del-port\", self.br_name,"},{"line_number":79,"context_line":"                        port_name])"},{"line_number":80,"context_line":"        self.run_vsctl([\"add-port\", self.br_name, port_name])"},{"line_number":81,"context_line":"        return self.get_port_ofport(port_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fnlk%3D","line":78,"updated":"2012-08-26 12:06:37.000000000","message":"Can you please clarify why you delete the port if it exists?","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.run_vsctl([\"--\", \"--may-exist\", \"add-br\", self.br_name])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def add_port(self, port_name):"},{"line_number":78,"context_line":"        self.run_vsctl([\"--\", \"--if-exists\", \"del-port\", self.br_name,"},{"line_number":79,"context_line":"                        port_name])"},{"line_number":80,"context_line":"        self.run_vsctl([\"add-port\", self.br_name, port_name])"},{"line_number":81,"context_line":"        return self.get_port_ofport(port_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fnko%3D","line":78,"in_reply_to":"AAAALH%2F%2Fnlk%3D","updated":"2012-08-26 14:38:55.000000000","message":"My intent was to make sure the port had a known clean state. But I do see that port numbers keep going up as the agent is restarted. Deleting them probably isn\u0027t necessary. I think it makes sense to change this to just use \"--may-exist\".","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"}],"quantum/plugins/openvswitch/agent/ovs_quantum_agent.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":180,"context_line":"                                                     consumers)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def port_bound(self, port, vlan_id):"},{"line_number":183,"context_line":"        self.int_br.set_db_attribute(\"Port\", port.port_name,"},{"line_number":184,"context_line":"                                     \"tag\", str(vlan_id))"},{"line_number":185,"context_line":"        self.int_br.delete_flows(in_port\u003dport.ofport)"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fuag%3D","line":183,"updated":"2012-08-15 22:59:10.000000000","message":"In case of tunnel agent, we will end up setting a tunnel_id here.\nI think the tag parameter is used strictly for vlan tagging and allows only values between 0 and 4095.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":180,"context_line":"                                                     consumers)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def port_bound(self, port, vlan_id):"},{"line_number":183,"context_line":"        self.int_br.set_db_attribute(\"Port\", port.port_name,"},{"line_number":184,"context_line":"                                     \"tag\", str(vlan_id))"},{"line_number":185,"context_line":"        self.int_br.delete_flows(in_port\u003dport.ofport)"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsGk%3D","line":183,"in_reply_to":"AAAALH%2F%2FsdQ%3D","updated":"2012-08-20 12:11:59.000000000","message":"I agree on merging the two agents.\n\nDoes this mean that the tunnel agent will now use \"local\" VLAN tags for isolation on intra-host traffic, and then distinct tunnels for isolation on inter-host traffic? Please correct me If I\u0027m wrong","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                                                     consumers)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def port_bound(self, port, vlan_id):"},{"line_number":183,"context_line":"        self.int_br.set_db_attribute(\"Port\", port.port_name,"},{"line_number":184,"context_line":"                                     \"tag\", str(vlan_id))"},{"line_number":185,"context_line":"        self.int_br.delete_flows(in_port\u003dport.ofport)"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsdQ%3D","line":183,"in_reply_to":"AAAALH%2F%2Fuag%3D","updated":"2012-08-19 01:59:25.000000000","message":"The plan is to combine the OVSQuantumAgent and OVSQuantumTunnelAgent classes into a single class that handles tunnels, VLANs, and flat networks. The VLAN IDs used on br-int will most likely all be local VLANs as is currently the case with OVSQuantumTunnelAgent.  For tunnels, the tunnel_key is handled by the flow created in provision_local_vlan() called by OVSQuantumTunnelAgent.port_bound(). This version of port_bound will likely go away, and VLANs and flat networks will be have appropriate flows created.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":840,"context_line":"    root_helper \u003d cfg.CONF.AGENT.root_helper"},{"line_number":841,"context_line":"    rpc \u003d cfg.CONF.AGENT.rpc"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"    # REVISIT(rkukura) condition on tunning being used?"},{"line_number":844,"context_line":"    # Get parameters for OVSQuantumTunnelAgent"},{"line_number":845,"context_line":"    tun_br \u003d cfg.CONF.OVS.tunnel_bridge"},{"line_number":846,"context_line":"    # Mandatory parameter."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fu58%3D","line":843,"updated":"2012-08-15 17:38:23.000000000","message":"typo in the comment","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":845,"context_line":"    tun_br \u003d cfg.CONF.OVS.tunnel_bridge"},{"line_number":846,"context_line":"    # Mandatory parameter."},{"line_number":847,"context_line":"    local_ip \u003d cfg.CONF.OVS.local_ip"},{"line_number":848,"context_line":"    plugin \u003d OVSQuantumTunnelAgent(integ_br, tun_br, local_ip, root_helper,"},{"line_number":849,"context_line":"                                   polling_interval, reconnect_interval,"},{"line_number":850,"context_line":"                                   rpc)"},{"line_number":851,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fu5o%3D","line":848,"updated":"2012-08-15 17:38:23.000000000","message":"Does the DB polling work in this case? I don\u0027t think so. It may be worth while stating this with a comment.\nHas the class OVSQuantumAgent been dropped? Or is this just not supported at this stage?","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":845,"context_line":"    tun_br \u003d cfg.CONF.OVS.tunnel_bridge"},{"line_number":846,"context_line":"    # Mandatory parameter."},{"line_number":847,"context_line":"    local_ip \u003d cfg.CONF.OVS.local_ip"},{"line_number":848,"context_line":"    plugin \u003d OVSQuantumTunnelAgent(integ_br, tun_br, local_ip, root_helper,"},{"line_number":849,"context_line":"                                   polling_interval, reconnect_interval,"},{"line_number":850,"context_line":"                                   rpc)"},{"line_number":851,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsdU%3D","line":848,"in_reply_to":"AAAALH%2F%2Fu5o%3D","updated":"2012-08-19 01:59:25.000000000","message":"In the current patch set, only RPC mode works. The DB polling code will be updated in the next patch set to use the new DB schema.\n\nThe plan is to drop the OVSQuantumAgent in order to make tunneling work in conjunction with VLAN and flat networks. Some of its code will likely be reused, so I don\u0027t want to delete the class yet. This should be done in the next patch set.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":299,"context_line":"            vif_ids) mapping.\u0027\u0027\u0027"},{"line_number":300,"context_line":"        LOG.info(\"reclaming vlan \u003d %s from net-id \u003d %s\" % (lvm.vlan, net_uuid))"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        if lvm.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":303,"context_line":"            self.tun_br.delete_flows(tun_id\u003dlvm.physical_id)"},{"line_number":304,"context_line":"            self.tun_br.delete_flows(dl_vlan\u003dlvm.vlan)"},{"line_number":305,"context_line":"        elif network_type \u003d\u003d \u0027flat\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fnlg%3D","line":302,"updated":"2012-08-26 12:06:37.000000000","message":"Would it be possible to have defines for the network types?","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            vif_ids) mapping.\u0027\u0027\u0027"},{"line_number":300,"context_line":"        LOG.info(\"reclaming vlan \u003d %s from net-id \u003d %s\" % (lvm.vlan, net_uuid))"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        if lvm.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":303,"context_line":"            self.tun_br.delete_flows(tun_id\u003dlvm.physical_id)"},{"line_number":304,"context_line":"            self.tun_br.delete_flows(dl_vlan\u003dlvm.vlan)"},{"line_number":305,"context_line":"        elif network_type \u003d\u003d \u0027flat\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FniY%3D","line":302,"in_reply_to":"AAAALH%2F%2Fnkk%3D","updated":"2012-08-27 01:38:21.000000000","message":"Done","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            vif_ids) mapping.\u0027\u0027\u0027"},{"line_number":300,"context_line":"        LOG.info(\"reclaming vlan \u003d %s from net-id \u003d %s\" % (lvm.vlan, net_uuid))"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        if lvm.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":303,"context_line":"            self.tun_br.delete_flows(tun_id\u003dlvm.physical_id)"},{"line_number":304,"context_line":"            self.tun_br.delete_flows(dl_vlan\u003dlvm.vlan)"},{"line_number":305,"context_line":"        elif network_type \u003d\u003d \u0027flat\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fnkk%3D","line":302,"in_reply_to":"AAAALH%2F%2Fnlg%3D","updated":"2012-08-26 14:38:55.000000000","message":"I was thinking of that as well. I\u0027ll put them in the openvswitch/common/constants.py file.","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":344,"context_line":"        lvm \u003d self.local_vlan_map[net_uuid]"},{"line_number":345,"context_line":"        lvm.vif_ids.append(port.vif_id)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        if network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":348,"context_line":"            # inbound unicast"},{"line_number":349,"context_line":"            self.tun_br.add_flow(priority\u003d3, tun_id\u003dphysical_id,"},{"line_number":350,"context_line":"                                 dl_dst\u003dport.vif_mac,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnlQ%3D","line":347,"updated":"2012-08-26 12:06:37.000000000","message":"Why do you not treat the flat and vlan flows here?","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        lvm \u003d self.local_vlan_map[net_uuid]"},{"line_number":345,"context_line":"        lvm.vif_ids.append(port.vif_id)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        if network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":348,"context_line":"            # inbound unicast"},{"line_number":349,"context_line":"            self.tun_br.add_flow(priority\u003d3, tun_id\u003dphysical_id,"},{"line_number":350,"context_line":"                                 dl_dst\u003dport.vif_mac,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnkY%3D","line":347,"in_reply_to":"AAAALH%2F%2FnlQ%3D","updated":"2012-08-26 14:38:55.000000000","message":"Because the br-\u003cphys_net\u003e bridges are in normal learning mode, they do not need explicit flows for the port\u0027s MAC addresses. The br-tun bridge is setup to drop packets by default, so it needs specific flows.","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":435,"context_line":"            self.phys_brs[physical_network] \u003d br"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":438,"context_line":"            int_name \u003d \u0027int-\u0027 + bridge"},{"line_number":439,"context_line":"            self.int_br.delete_port(int_name)"},{"line_number":440,"context_line":"            phys_name \u003d \u0027phy-\u0027 + bridge"},{"line_number":441,"context_line":"            br.delete_port(phys_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fnlc%3D","line":438,"updated":"2012-08-26 12:06:37.000000000","message":"Consider a define for this","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            self.phys_brs[physical_network] \u003d br"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":438,"context_line":"            int_name \u003d \u0027int-\u0027 + bridge"},{"line_number":439,"context_line":"            self.int_br.delete_port(int_name)"},{"line_number":440,"context_line":"            phys_name \u003d \u0027phy-\u0027 + bridge"},{"line_number":441,"context_line":"            br.delete_port(phys_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FniU%3D","line":438,"in_reply_to":"AAAALH%2F%2FnkU%3D","updated":"2012-08-27 01:38:21.000000000","message":"Done","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            self.phys_brs[physical_network] \u003d br"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":438,"context_line":"            int_name \u003d \u0027int-\u0027 + bridge"},{"line_number":439,"context_line":"            self.int_br.delete_port(int_name)"},{"line_number":440,"context_line":"            phys_name \u003d \u0027phy-\u0027 + bridge"},{"line_number":441,"context_line":"            br.delete_port(phys_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnkU%3D","line":438,"in_reply_to":"AAAALH%2F%2Fnlc%3D","updated":"2012-08-26 14:38:55.000000000","message":"OK","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":437,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":438,"context_line":"            int_name \u003d \u0027int-\u0027 + bridge"},{"line_number":439,"context_line":"            self.int_br.delete_port(int_name)"},{"line_number":440,"context_line":"            phys_name \u003d \u0027phy-\u0027 + bridge"},{"line_number":441,"context_line":"            br.delete_port(phys_name)"},{"line_number":442,"context_line":"            if ip_lib.device_exists(int_name, self.root_helper):"},{"line_number":443,"context_line":"                ip_lib.IPDevice(int_name, self.root_helper).link.delete()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnlY%3D","line":440,"updated":"2012-08-26 12:06:37.000000000","message":"Ditto.","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":437,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":438,"context_line":"            int_name \u003d \u0027int-\u0027 + bridge"},{"line_number":439,"context_line":"            self.int_br.delete_port(int_name)"},{"line_number":440,"context_line":"            phys_name \u003d \u0027phy-\u0027 + bridge"},{"line_number":441,"context_line":"            br.delete_port(phys_name)"},{"line_number":442,"context_line":"            if ip_lib.device_exists(int_name, self.root_helper):"},{"line_number":443,"context_line":"                ip_lib.IPDevice(int_name, self.root_helper).link.delete()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FniQ%3D","line":440,"in_reply_to":"AAAALH%2F%2FnkE%3D","updated":"2012-08-27 01:38:21.000000000","message":"Done","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":437,"context_line":"            # create veth to patch physical bridge with integration bridge"},{"line_number":438,"context_line":"            int_name \u003d \u0027int-\u0027 + bridge"},{"line_number":439,"context_line":"            self.int_br.delete_port(int_name)"},{"line_number":440,"context_line":"            phys_name \u003d \u0027phy-\u0027 + bridge"},{"line_number":441,"context_line":"            br.delete_port(phys_name)"},{"line_number":442,"context_line":"            if ip_lib.device_exists(int_name, self.root_helper):"},{"line_number":443,"context_line":"                ip_lib.IPDevice(int_name, self.root_helper).link.delete()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnkE%3D","line":440,"in_reply_to":"AAAALH%2F%2FnlY%3D","updated":"2012-08-26 14:38:55.000000000","message":"OK","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2f8ce33d60b3e72f7423f34ab0bf2eaa65408070","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            br.add_flow(priority\u003d4,"},{"line_number":282,"context_line":"                        in_port\u003dself.phys_ofports[physical_network],"},{"line_number":283,"context_line":"                        dl_vlan\u003dlvid,"},{"line_number":284,"context_line":"                        actions\u003d\"mod_vlan_vid:%s,normal\" % physical_id)"},{"line_number":285,"context_line":"            # inbound"},{"line_number":286,"context_line":"            self.int_br.add_flow(priority\u003d3,"},{"line_number":287,"context_line":"                                 in_port\u003dself.int_ofports[physical_network],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2Fmps%3D","line":284,"updated":"2012-08-28 07:53:15.000000000","message":"mod_vlan_vid doesn\u0027t need to be set here","commit_id":"5ec3a6eedf0a00e26a21c97ddb279872d5d0fc7f"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2f8ce33d60b3e72f7423f34ab0bf2eaa65408070","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            br.add_flow(priority\u003d4,"},{"line_number":282,"context_line":"                        in_port\u003dself.phys_ofports[physical_network],"},{"line_number":283,"context_line":"                        dl_vlan\u003dlvid,"},{"line_number":284,"context_line":"                        actions\u003d\"mod_vlan_vid:%s,normal\" % physical_id)"},{"line_number":285,"context_line":"            # inbound"},{"line_number":286,"context_line":"            self.int_br.add_flow(priority\u003d3,"},{"line_number":287,"context_line":"                                 in_port\u003dself.int_ofports[physical_network],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FmOI%3D","line":284,"in_reply_to":"AAAALH%2F%2Fmj8%3D","updated":"2012-08-28 18:12:01.000000000","message":"I was thinking that if a user wanted a specific VLAN we could avoid having to do the addition rewrite from local vlan_id to physical vlan_id. That said you are right, ignore my previous comment :)","commit_id":"5ec3a6eedf0a00e26a21c97ddb279872d5d0fc7f"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":281,"context_line":"            br.add_flow(priority\u003d4,"},{"line_number":282,"context_line":"                        in_port\u003dself.phys_ofports[physical_network],"},{"line_number":283,"context_line":"                        dl_vlan\u003dlvid,"},{"line_number":284,"context_line":"                        actions\u003d\"mod_vlan_vid:%s,normal\" % physical_id)"},{"line_number":285,"context_line":"            # inbound"},{"line_number":286,"context_line":"            self.int_br.add_flow(priority\u003d3,"},{"line_number":287,"context_line":"                                 in_port\u003dself.int_ofports[physical_network],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2Fmj8%3D","line":284,"in_reply_to":"AAAALH%2F%2Fmps%3D","updated":"2012-08-28 10:53:55.000000000","message":"Without the mod_vlan_vid, what would set the vlan to physical_id? Keep in mind that when the packet is on br-int, its vlan is the local vlan_id, just like with tunnels. The point of this flow is to replace the local vlan_id used on br-int with physical_id as the packet crosses the veth into the physical network\u0027s bridge.\n\nNote that each physical_network has a completely independent space of vlan ids, so the vlan_ids used on br-int cannot be the same values as on the physical network bridges.","commit_id":"5ec3a6eedf0a00e26a21c97ddb279872d5d0fc7f"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2f8ce33d60b3e72f7423f34ab0bf2eaa65408070","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            self.int_br.add_flow(priority\u003d3,"},{"line_number":287,"context_line":"                                 in_port\u003dself.int_ofports[physical_network],"},{"line_number":288,"context_line":"                                 dl_vlan\u003dphysical_id,"},{"line_number":289,"context_line":"                                 actions\u003d\"mod_vlan_vid:%s,normal\" % lvid)"},{"line_number":290,"context_line":"        else:"},{"line_number":291,"context_line":"            LOG.error(\"provisioning unknown network type %s for net-id\u003d%s\" %"},{"line_number":292,"context_line":"                      (network_type, net_uuid))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2Fmpg%3D","line":289,"updated":"2012-08-28 07:53:15.000000000","message":"mod_vlan_vid doesn\u0027t need to be set here\n\nfor example: br-int flow: priority\u003d3,in_port\u003d6,dl_vlan\u003d111 actions\u003dmod_vlan_vid:1,NORMAL\n\n\nbr-eth0: priority\u003d4,in_port\u003d3,dl_vlan\u003d1 actions\u003dmod_vlan_vid:111,NORMAL","commit_id":"5ec3a6eedf0a00e26a21c97ddb279872d5d0fc7f"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":286,"context_line":"            self.int_br.add_flow(priority\u003d3,"},{"line_number":287,"context_line":"                                 in_port\u003dself.int_ofports[physical_network],"},{"line_number":288,"context_line":"                                 dl_vlan\u003dphysical_id,"},{"line_number":289,"context_line":"                                 actions\u003d\"mod_vlan_vid:%s,normal\" % lvid)"},{"line_number":290,"context_line":"        else:"},{"line_number":291,"context_line":"            LOG.error(\"provisioning unknown network type %s for net-id\u003d%s\" %"},{"line_number":292,"context_line":"                      (network_type, net_uuid))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2Fmjw%3D","line":289,"in_reply_to":"AAAALH%2F%2Fmpg%3D","updated":"2012-08-28 10:53:55.000000000","message":"Again, the mod_vlan_vid action is needed to translate from the physical network\u0027s vlan to the local vlan_id used on the integration bridge.","commit_id":"5ec3a6eedf0a00e26a21c97ddb279872d5d0fc7f"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2f8ce33d60b3e72f7423f34ab0bf2eaa65408070","unresolved":false,"context_lines":[{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    bridge_mappings \u003d {}"},{"line_number":742,"context_line":"    for mapping in cfg.CONF.OVS.bridge_mappings:"},{"line_number":743,"context_line":"        if mapping !\u003d \u0027\u0027:"},{"line_number":744,"context_line":"            try:"},{"line_number":745,"context_line":"                physical_network, bridge \u003d mapping.split(\u0027:\u0027)"},{"line_number":746,"context_line":"                bridge_mappings[physical_network] \u003d bridge"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FmpQ%3D","line":743,"updated":"2012-08-28 07:53:15.000000000","message":"I wonder if we should add mapping.strip(\u0027 \u0027)?\n\nWhen I setting this up I had: bridge_mappings \u003d default:br-eth0, hostnet:br-eth2 (the space after the comma)","commit_id":"5ec3a6eedf0a00e26a21c97ddb279872d5d0fc7f"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    bridge_mappings \u003d {}"},{"line_number":742,"context_line":"    for mapping in cfg.CONF.OVS.bridge_mappings:"},{"line_number":743,"context_line":"        if mapping !\u003d \u0027\u0027:"},{"line_number":744,"context_line":"            try:"},{"line_number":745,"context_line":"                physical_network, bridge \u003d mapping.split(\u0027:\u0027)"},{"line_number":746,"context_line":"                bridge_mappings[physical_network] \u003d bridge"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2Fmjk%3D","line":743,"in_reply_to":"AAAALH%2F%2FmpQ%3D","updated":"2012-08-28 10:53:55.000000000","message":"That\u0027s a good idea.","commit_id":"5ec3a6eedf0a00e26a21c97ddb279872d5d0fc7f"}],"quantum/plugins/openvswitch/common/config.py":[{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"DEFAULT_BRIDGE_MAPPINGS \u003d [\u0027default:br-eth1\u0027]"},{"line_number":21,"context_line":"DEFAULT_VLAN_RANGES \u003d [\u0027default:2000:3999\u0027]"},{"line_number":22,"context_line":"DEFAULT_TUNNEL_RANGES \u003d []"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"database_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2Fks0%3D","line":21,"updated":"2012-08-30 05:20:21.000000000","message":"Why default starts from 2000?","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"DEFAULT_BRIDGE_MAPPINGS \u003d [\u0027default:br-eth1\u0027]"},{"line_number":21,"context_line":"DEFAULT_VLAN_RANGES \u003d [\u0027default:2000:3999\u0027]"},{"line_number":22,"context_line":"DEFAULT_TUNNEL_RANGES \u003d []"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"database_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FkP4%3D","line":21,"in_reply_to":"AAAALH%2F%2Fks0%3D","updated":"2012-08-30 19:51:30.000000000","message":"I changed this to 1000-2999 to match linuxbridge. This way anyone who has to configure a switch to trunk VLANs for testing can use the same for both.","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"agent_opts \u003d ["},{"line_number":47,"context_line":"    cfg.IntOpt(\u0027polling_interval\u0027, default\u003d2),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027root_helper\u0027, default\u003d\u0027sudo\u0027),"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027log_file\u0027, default\u003dNone),"},{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027rpc\u0027, default\u003dTrue),"},{"line_number":51,"context_line":"]"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2Fko4%3D","line":49,"updated":"2012-08-30 07:55:21.000000000","message":"If you do make another change to the code can you please delete this line - the log_file is no longer used.","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"agent_opts \u003d ["},{"line_number":47,"context_line":"    cfg.IntOpt(\u0027polling_interval\u0027, default\u003d2),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027root_helper\u0027, default\u003d\u0027sudo\u0027),"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027log_file\u0027, default\u003dNone),"},{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027rpc\u0027, default\u003dTrue),"},{"line_number":51,"context_line":"]"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FkPg%3D","line":49,"in_reply_to":"AAAALH%2F%2Fko4%3D","updated":"2012-08-30 19:51:30.000000000","message":"Done","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"}],"quantum/plugins/openvswitch/common/constants.py":[{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":"TYPE_FLAT \u003d \u0027flat\u0027"},{"line_number":24,"context_line":"TYPE_VLAN \u003d \u0027vlan\u0027"},{"line_number":25,"context_line":"TYPE_GRE \u003d \u0027gre\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Name prefixes for veth device pair linking the integration bridge"},{"line_number":28,"context_line":"# with the physical bridge for a physical network"},{"line_number":29,"context_line":"VETH_INTEGRATION_PREFIX \u003d \u0027int-\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2Fksw%3D","line":26,"updated":"2012-08-30 05:20:21.000000000","message":"attribute extension should use same variables","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":23,"context_line":"TYPE_FLAT \u003d \u0027flat\u0027"},{"line_number":24,"context_line":"TYPE_VLAN \u003d \u0027vlan\u0027"},{"line_number":25,"context_line":"TYPE_GRE \u003d \u0027gre\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Name prefixes for veth device pair linking the integration bridge"},{"line_number":28,"context_line":"# with the physical bridge for a physical network"},{"line_number":29,"context_line":"VETH_INTEGRATION_PREFIX \u003d \u0027int-\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FkPI%3D","line":26,"in_reply_to":"AAAALH%2F%2Fksw%3D","updated":"2012-08-30 19:51:30.000000000","message":"We shouldn\u0027t add extension-defined constants to a core file such as quantum/common/constants.py, and I don\u0027t want the agents to depend on quantum/extensions/providernet.py, so I\u0027m leaving these where they are.","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"}],"quantum/plugins/openvswitch/ovs_db_v2.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                 one())"},{"line_number":100,"context_line":"        return alloc"},{"line_number":101,"context_line":"    except exc.NoResultFound:"},{"line_number":102,"context_line":"        return None"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"def reserve_vlan(session):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FvUg%3D","line":102,"updated":"2012-08-15 07:57:49.000000000","message":"Can just return suffice?","commit_id":"1fc64ab7ceac9f4518c6675e9fe393ef690f1210"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from quantum.plugins.openvswitch import ovs_models_v2"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def initialize():"},{"line_number":34,"context_line":"    options \u003d {\"sql_connection\": \"%s\" % cfg.CONF.DATABASE.sql_connection}"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvDE%3D","line":31,"updated":"2012-08-15 15:56:40.000000000","message":"Why in some cases is the sub transaction set as True and in others it is not?","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from quantum.plugins.openvswitch import ovs_models_v2"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def initialize():"},{"line_number":34,"context_line":"    options \u003d {\"sql_connection\": \"%s\" % cfg.CONF.DATABASE.sql_connection}"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvB8%3D","line":31,"in_reply_to":"AAAALH%2F%2FvDE%3D","updated":"2012-08-15 16:33:09.000000000","message":"The sync operations are not intended to be called within a higher-level transaction, so they don\u0027t need it.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        for vlan_range in vlan_ranges:"},{"line_number":72,"context_line":"            vlan_ids |\u003d set(xrange(vlan_range[0], vlan_range[1] + 1))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        session \u003d db.get_session()"},{"line_number":75,"context_line":"        with session.begin():"},{"line_number":76,"context_line":"            # remove from table unallocated vlans not currently allocatable"},{"line_number":77,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvEA%3D","line":74,"updated":"2012-08-15 15:56:40.000000000","message":"Why not move the session creation out of the loop? That is, move it to line 64","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    \"\"\"Synchronize tunnel_allocations table with configured tunnel ranges\"\"\""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    # determine current configured allocatable tunnels"},{"line_number":177,"context_line":"    tunnel_keys \u003d set()"},{"line_number":178,"context_line":"    for tunnel_key_range in tunnel_key_ranges:"},{"line_number":179,"context_line":"        tunnel_keys |\u003d set(xrange(tunnel_key_range[0],"},{"line_number":180,"context_line":"                                  tunnel_key_range[1] + 1))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvDc%3D","line":177,"updated":"2012-08-15 15:56:40.000000000","message":"I have one concern here. How will the set and database behave if someone defines a range of tunnels from 1 to 0xffffffff.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    \"\"\"Synchronize tunnel_allocations table with configured tunnel ranges\"\"\""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    # determine current configured allocatable tunnels"},{"line_number":177,"context_line":"    tunnel_keys \u003d set()"},{"line_number":178,"context_line":"    for tunnel_key_range in tunnel_key_ranges:"},{"line_number":179,"context_line":"        tunnel_keys |\u003d set(xrange(tunnel_key_range[0],"},{"line_number":180,"context_line":"                                  tunnel_key_range[1] + 1))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvAU%3D","line":177,"in_reply_to":"AAAALH%2F%2FvDc%3D","updated":"2012-08-15 16:33:09.000000000","message":"I added code to log and error and skit it if the range is bigger than 1000000.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":59,"context_line":"        session.add(binding)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def sync_vlan_allocations(network_vlan_ranges):"},{"line_number":63,"context_line":"    \"\"\"Synchronize vlan_allocations table with configured VLAN ranges\"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    session \u003d db.get_session()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnjE%3D","line":62,"updated":"2012-08-26 23:46:40.000000000","message":"I think that in this routine you deal with discrepancies between the configuration file and what\u0027s stored in the ovs_quantum db, considering the configuration file as the authoritative source of information, but then \"saving\" allocated items outside of the pool.\n\nI think this approach is reasonable; the \"optimum\" IMHO would be an API extension with admin only access for manipulating ranges, But this is something we can work on in the next release.","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        session.add(binding)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def sync_vlan_allocations(network_vlan_ranges):"},{"line_number":63,"context_line":"    \"\"\"Synchronize vlan_allocations table with configured VLAN ranges\"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    session \u003d db.get_session()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FniM%3D","line":62,"in_reply_to":"AAAALH%2F%2FnjE%3D","updated":"2012-08-27 01:38:21.000000000","message":"Makes sense to me.","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":163,"context_line":"                          (vlan_id, physical_network))"},{"line_number":164,"context_line":"            else:"},{"line_number":165,"context_line":"                LOG.debug(\"releasing vlan %s on physical network %s outside \""},{"line_number":166,"context_line":"                          \"pool\" % (vlan_id, physical_network))"},{"line_number":167,"context_line":"                session.delete(alloc)"},{"line_number":168,"context_line":"        except exc.NoResultFound:"},{"line_number":169,"context_line":"            LOG.warning(\"vlan_id %s on physical network %s not found\" %"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnjA%3D","line":166,"updated":"2012-08-26 23:46:40.000000000","message":"Minor nit: the if/then/else statement can be shortened using a 3rd format variable whose expression should be:\n\"to\" and inside or \"outside\"","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                          (vlan_id, physical_network))"},{"line_number":164,"context_line":"            else:"},{"line_number":165,"context_line":"                LOG.debug(\"releasing vlan %s on physical network %s outside \""},{"line_number":166,"context_line":"                          \"pool\" % (vlan_id, physical_network))"},{"line_number":167,"context_line":"                session.delete(alloc)"},{"line_number":168,"context_line":"        except exc.NoResultFound:"},{"line_number":169,"context_line":"            LOG.warning(\"vlan_id %s on physical network %s not found\" %"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fnhs%3D","line":166,"in_reply_to":"AAAALH%2F%2FnjA%3D","updated":"2012-08-27 01:38:21.000000000","message":"Done","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"}],"quantum/plugins/openvswitch/ovs_models_v2.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self.allocated \u003d False"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __repr__(self):"},{"line_number":57,"context_line":"        return \"\u003cTunnelAllocation(%d,%s)\u003e\" % (self.tunnel_key, self.allocated)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class NetworkBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fucs%3D","line":57,"updated":"2012-08-15 22:59:10.000000000","message":"TunnelAllocation and VlanAllocation, bar the __repr__ method and __tablename__ atribute, are exactly the same.\n\nIt might be worth refactoring.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self.allocated \u003d False"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __repr__(self):"},{"line_number":57,"context_line":"        return \"\u003cTunnelAllocation(%d,%s)\u003e\" % (self.tunnel_key, self.allocated)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class NetworkBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsGs%3D","line":57,"in_reply_to":"AAAALH%2F%2FsdM%3D","updated":"2012-08-20 12:11:59.000000000","message":"Agreed. By \"refactoring\" I meant using derivation for factoring out common elements, but I still recognize the need for two distinct classes.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self.allocated \u003d False"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __repr__(self):"},{"line_number":57,"context_line":"        return \"\u003cTunnelAllocation(%d,%s)\u003e\" % (self.tunnel_key, self.allocated)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class NetworkBinding(model_base.BASEV2):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsdM%3D","line":57,"in_reply_to":"AAAALH%2F%2Fucs%3D","updated":"2012-08-19 01:59:25.000000000","message":"They are purposely two distinct tables now, managing different sets of IDs that potentially overlap. Also, VlanAllocations have the physical_network as an addtional primary key.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"}],"quantum/plugins/openvswitch/ovs_quantum_plugin.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                     \u0027network_id\u0027: port[\u0027network_id\u0027],"},{"line_number":74,"context_line":"                     \u0027port_id\u0027: port[\u0027id\u0027],"},{"line_number":75,"context_line":"                     \u0027admin_state_up\u0027: port[\u0027admin_state_up\u0027]}"},{"line_number":76,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":77,"context_line":"                entry[\u0027tunnel_key\u0027] \u003d binding.physical_id"},{"line_number":78,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":79,"context_line":"                entry[\u0027physical_network\u0027] \u003d binding.physical_network"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvCs%3D","line":76,"updated":"2012-08-15 15:56:40.000000000","message":"Why not use a constant for network type?","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                     \u0027network_id\u0027: port[\u0027network_id\u0027],"},{"line_number":74,"context_line":"                     \u0027port_id\u0027: port[\u0027id\u0027],"},{"line_number":75,"context_line":"                     \u0027admin_state_up\u0027: port[\u0027admin_state_up\u0027]}"},{"line_number":76,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":77,"context_line":"                entry[\u0027tunnel_key\u0027] \u003d binding.physical_id"},{"line_number":78,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":79,"context_line":"                entry[\u0027physical_network\u0027] \u003d binding.physical_network"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fu%2FY%3D","line":76,"in_reply_to":"AAAALH%2F%2FvCs%3D","updated":"2012-08-15 16:33:09.000000000","message":"So-called constants for short string literals are used very inconsistently throughout quantum. Its not clear to me whether they really provide any performance or size benefit. If there is evidence that they help, we should apply them consistently via a bug fix.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            binding \u003d ovs_db_v2.get_network_binding(context.session,"},{"line_number":269,"context_line":"                                                    network[\u0027id\u0027])"},{"line_number":270,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":271,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":272,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":273,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":274,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvCc%3D","line":271,"updated":"2012-08-15 16:06:49.000000000","message":"Maybe the provider network should also display the network type. It would be informative.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            binding \u003d ovs_db_v2.get_network_binding(context.session,"},{"line_number":269,"context_line":"                                                    network[\u0027id\u0027])"},{"line_number":270,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":271,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":272,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":273,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":274,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fu%2FI%3D","line":271,"in_reply_to":"AAAALH%2F%2FvCc%3D","updated":"2012-08-15 16:33:09.000000000","message":"It does. See line 270.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            ovs_db_v2.add_network_binding(session, net[\u0027id\u0027], network_type,"},{"line_number":365,"context_line":"                                          physical_network, physical_id)"},{"line_number":366,"context_line":"            self._extend_network_dict(context, net)"},{"line_number":367,"context_line":"            # note - exception will rollback entire transaction"},{"line_number":368,"context_line":"        LOG.debug(\"Created network: %s\" % net[\u0027id\u0027])"},{"line_number":369,"context_line":"        return net"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvCU%3D","line":367,"updated":"2012-08-15 16:06:49.000000000","message":"Do we need this note?","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            ovs_db_v2.add_network_binding(session, net[\u0027id\u0027], network_type,"},{"line_number":365,"context_line":"                                          physical_network, physical_id)"},{"line_number":366,"context_line":"            self._extend_network_dict(context, net)"},{"line_number":367,"context_line":"            # note - exception will rollback entire transaction"},{"line_number":368,"context_line":"        LOG.debug(\"Created network: %s\" % net[\u0027id\u0027])"},{"line_number":369,"context_line":"        return net"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fu%2B4%3D","line":367,"in_reply_to":"AAAALH%2F%2FvCU%3D","updated":"2012-08-15 16:33:09.000000000","message":"It was intended to prevent review comments about not cleaning up when something goes wrong.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":420,"context_line":"            if original_port[\u0027admin_state_up\u0027] !\u003d port[\u0027admin_state_up\u0027]:"},{"line_number":421,"context_line":"                binding \u003d ovs_db_v2.get_network_binding(None,"},{"line_number":422,"context_line":"                                                        port[\u0027network_id\u0027])"},{"line_number":423,"context_line":"                # REVISIT(rkukura): needs other binding data as well"},{"line_number":424,"context_line":"                self.notifier.port_update(self.rpc_context, port,"},{"line_number":425,"context_line":"                                          binding.physical_id)"},{"line_number":426,"context_line":"        return port"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvCQ%3D","line":423,"updated":"2012-08-15 16:06:49.000000000","message":"Why did you drop the tag? Or is this part of the next patch set?","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":420,"context_line":"            if original_port[\u0027admin_state_up\u0027] !\u003d port[\u0027admin_state_up\u0027]:"},{"line_number":421,"context_line":"                binding \u003d ovs_db_v2.get_network_binding(None,"},{"line_number":422,"context_line":"                                                        port[\u0027network_id\u0027])"},{"line_number":423,"context_line":"                # REVISIT(rkukura): needs other binding data as well"},{"line_number":424,"context_line":"                self.notifier.port_update(self.rpc_context, port,"},{"line_number":425,"context_line":"                                          binding.physical_id)"},{"line_number":426,"context_line":"        return port"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fu%2BY%3D","line":423,"in_reply_to":"AAAALH%2F%2FvCQ%3D","updated":"2012-08-15 16:33:09.000000000","message":"In line 425, binding.physical_id is the vlan_id for VLANs and the tunnel_key for GRE tunnels. The comment in line 423 is because the network_type and physical_network will also be needed by the agent when VLANs and flat networks are supported.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":270,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":271,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":272,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":273,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":274,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":275,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"},{"line_number":276,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FucY%3D","line":273,"updated":"2012-08-15 22:59:10.000000000","message":"It seems the tunnelId is used as an equivalente of the vlan_id in the GRE case.\nIn this case shouldn\u0027t we return a provider:tunnel_id attribute?","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":270,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":271,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":272,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":273,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":274,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":275,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"},{"line_number":276,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsGU%3D","line":273,"in_reply_to":"AAAALH%2F%2FsdI%3D","updated":"2012-08-20 12:11:59.000000000","message":"I am +/- 0 on name shortening. I am fine both ways, longer names are easier to understand, shorter names are easier to type. I don\u0027t know what to prefer.\n\nOn provider:physycal_id, I think maybe we want to expose whether this physical_id is a tunnel or VLAN; as this is something the provider might want to know.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":271,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":272,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":273,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":274,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":275,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"},{"line_number":276,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsdI%3D","line":273,"in_reply_to":"AAAALH%2F%2FucY%3D","updated":"2012-08-19 01:59:25.000000000","message":"I would like to expose the tunnel_key for GRE tunnels. But I think calling it \"vlan_id\" would be confusing. I\u0027m considering renaming the provider:vlan_id attribute to something like provider:physical_id, and using it for both VLAN ids and tunnel keys. Does that make sense? \n\nAt the same time, I\u0027m also considering shortening the attribute names to something like provider:phys_type, provider:phys_net, and provider:phys_id to reducing typing and so that the tables displayed by the CLI are less likely to line-wrap. Any thoughts?","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":306,"context_line":"            if not vlan_id_set:"},{"line_number":307,"context_line":"                msg \u003d _(\"provider:vlan_id required\")"},{"line_number":308,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":309,"context_line":"        else:"},{"line_number":310,"context_line":"            msg \u003d _(\"invalid provider:network_type %s\" % network_type)"},{"line_number":311,"context_line":"            raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fubo%3D","line":309,"updated":"2012-08-15 22:59:10.000000000","message":"It seems \"gre\" should be a valid value for network_type, but here we raise it network_type is not flat or vlan","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":306,"context_line":"            if not vlan_id_set:"},{"line_number":307,"context_line":"                msg \u003d _(\"provider:vlan_id required\")"},{"line_number":308,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":309,"context_line":"        else:"},{"line_number":310,"context_line":"            msg \u003d _(\"invalid provider:network_type %s\" % network_type)"},{"line_number":311,"context_line":"            raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsGQ%3D","line":309,"in_reply_to":"AAAALH%2F%2FsdE%3D","updated":"2012-08-20 12:11:59.000000000","message":"I agree provider tunnels are quite useless.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":306,"context_line":"            if not vlan_id_set:"},{"line_number":307,"context_line":"                msg \u003d _(\"provider:vlan_id required\")"},{"line_number":308,"context_line":"                raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":309,"context_line":"        else:"},{"line_number":310,"context_line":"            msg \u003d _(\"invalid provider:network_type %s\" % network_type)"},{"line_number":311,"context_line":"            raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsdE%3D","line":309,"in_reply_to":"AAAALH%2F%2Fubo%3D","updated":"2012-08-19 01:59:25.000000000","message":"I\u0027m not opposed to supporting creation of provider tunnels, especially if we change provider:vlan_id to something more generic. But I\u0027m not sure how useful this would be. If non-quantum nodes were using the tunnels, quantum would need to know the IP addresses of the non-quantum nodes, and vice-versa. I guess this could be done with custom tools accessing the DB.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":362,"context_line":"            net \u003d super(OVSQuantumPluginV2, self).create_network(context,"},{"line_number":363,"context_line":"                                                                 network)"},{"line_number":364,"context_line":"            ovs_db_v2.add_network_binding(session, net[\u0027id\u0027], network_type,"},{"line_number":365,"context_line":"                                          physical_network, physical_id)"},{"line_number":366,"context_line":"            self._extend_network_dict(context, net)"},{"line_number":367,"context_line":"            # note - exception will rollback entire transaction"},{"line_number":368,"context_line":"        LOG.debug(\"Created network: %s\" % net[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FubE%3D","line":365,"updated":"2012-08-15 22:59:10.000000000","message":"It seems we now bind a distinct tunnel_id to each network. Is that correct?","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":362,"context_line":"            net \u003d super(OVSQuantumPluginV2, self).create_network(context,"},{"line_number":363,"context_line":"                                                                 network)"},{"line_number":364,"context_line":"            ovs_db_v2.add_network_binding(session, net[\u0027id\u0027], network_type,"},{"line_number":365,"context_line":"                                          physical_network, physical_id)"},{"line_number":366,"context_line":"            self._extend_network_dict(context, net)"},{"line_number":367,"context_line":"            # note - exception will rollback entire transaction"},{"line_number":368,"context_line":"        LOG.debug(\"Created network: %s\" % net[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsGI%3D","line":365,"in_reply_to":"AAAALH%2F%2FsdA%3D","updated":"2012-08-20 12:11:59.000000000","message":"I see, but with the provider extension, we are then able to map any tenant network to a specific vlan id, even if we are using tunnels for isolation?","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            net \u003d super(OVSQuantumPluginV2, self).create_network(context,"},{"line_number":363,"context_line":"                                                                 network)"},{"line_number":364,"context_line":"            ovs_db_v2.add_network_binding(session, net[\u0027id\u0027], network_type,"},{"line_number":365,"context_line":"                                          physical_network, physical_id)"},{"line_number":366,"context_line":"            self._extend_network_dict(context, net)"},{"line_number":367,"context_line":"            # note - exception will rollback entire transaction"},{"line_number":368,"context_line":"        LOG.debug(\"Created network: %s\" % net[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FsdA%3D","line":365,"in_reply_to":"AAAALH%2F%2FubE%3D","updated":"2012-08-19 01:59:25.000000000","message":"That is correct when network_type is \"gre\". Previously, in tunnel mode, a distinct \"vlan_id\" was allocated for each network, and this was used as the tunnel\u0027s key.","commit_id":"c5baa355a4ea0b5df27a42ceaebcc3d352bc809b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":265,"context_line":"                                                    network[\u0027id\u0027])"},{"line_number":266,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":267,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":268,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":269,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":270,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":271,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnlI%3D","line":268,"updated":"2012-08-26 12:06:37.000000000","message":"Why do you need to set this value?","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                                                    network[\u0027id\u0027])"},{"line_number":266,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":267,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":268,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":269,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":270,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":271,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fnho%3D","line":268,"in_reply_to":"AAAALH%2F%2FnjY%3D","updated":"2012-08-27 01:38:21.000000000","message":"That is probably a good idea in the long run, but this seems harmless enough for now.","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":265,"context_line":"                                                    network[\u0027id\u0027])"},{"line_number":266,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":267,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":268,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":269,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":270,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":271,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnjY%3D","line":268,"in_reply_to":"AAAALH%2F%2FnkQ%3D","updated":"2012-08-26 23:46:40.000000000","message":"Do you reckon it might be worth filing a bug on python quantum client for this?","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                                                    network[\u0027id\u0027])"},{"line_number":266,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":267,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":268,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":269,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":270,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":271,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnkQ%3D","line":268,"in_reply_to":"AAAALH%2F%2FnlI%3D","updated":"2012-08-26 14:38:55.000000000","message":"The CLI doesn\u0027t like it when all the networks returned from one get_networks call don\u0027t have exactly the same set of fields.","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":266,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":267,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":268,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":269,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":270,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":271,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"},{"line_number":272,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnlM%3D","line":269,"updated":"2012-08-26 12:06:37.000000000","message":"Why do you need to set this value?","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":266,"context_line":"            network[\u0027provider:network_type\u0027] \u003d binding.network_type"},{"line_number":267,"context_line":"            if binding.network_type \u003d\u003d \u0027gre\u0027:"},{"line_number":268,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d None"},{"line_number":269,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":270,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":271,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"},{"line_number":272,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnkM%3D","line":269,"in_reply_to":"AAAALH%2F%2FnlM%3D","updated":"2012-08-26 14:38:55.000000000","message":"See above.","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":269,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":270,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":271,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"},{"line_number":272,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":273,"context_line":"            elif binding.network_type \u003d\u003d \u0027vlan\u0027:"},{"line_number":274,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"},{"line_number":275,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d binding.physical_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnlE%3D","line":272,"updated":"2012-08-26 12:06:37.000000000","message":"Why do you need to set this value?","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":270,"context_line":"            elif binding.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":271,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"},{"line_number":272,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d None"},{"line_number":273,"context_line":"            elif binding.network_type \u003d\u003d \u0027vlan\u0027:"},{"line_number":274,"context_line":"                network[\u0027provider:physical_network\u0027] \u003d binding.physical_network"},{"line_number":275,"context_line":"                network[\u0027provider:vlan_id\u0027] \u003d binding.physical_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnkI%3D","line":272,"in_reply_to":"AAAALH%2F%2FnlE%3D","updated":"2012-08-26 14:38:55.000000000","message":"See above.","commit_id":"3045191c5e1169943c5594158b7d8482e100fb9c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":245,"context_line":"            except ValueError as ex:"},{"line_number":246,"context_line":"                LOG.error(\"Invalid tunnel ID range: \\\u0027%s\\\u0027 - %s\" %"},{"line_number":247,"context_line":"                          (entry, ex))"},{"line_number":248,"context_line":"                sys.exit(1)"},{"line_number":249,"context_line":"        LOG.debug(\"tunnel ID ranges: %s\" % self.tunnel_id_ranges)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    # TODO(rkukura) Use core mechanism for attribute authorization"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FkTE%3D","line":248,"updated":"2012-08-30 18:04:30.000000000","message":"Syntax error: sys has not been imported","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":245,"context_line":"            except ValueError as ex:"},{"line_number":246,"context_line":"                LOG.error(\"Invalid tunnel ID range: \\\u0027%s\\\u0027 - %s\" %"},{"line_number":247,"context_line":"                          (entry, ex))"},{"line_number":248,"context_line":"                sys.exit(1)"},{"line_number":249,"context_line":"        LOG.debug(\"tunnel ID ranges: %s\" % self.tunnel_id_ranges)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    # TODO(rkukura) Use core mechanism for attribute authorization"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FkN8%3D","line":248,"in_reply_to":"AAAALH%2F%2FkTE%3D","updated":"2012-08-30 19:51:30.000000000","message":"Done","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"}],"quantum/plugins/openvswitch/tests/unit/test_ovs_db.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def test_add_network_binding(self):"},{"line_number":190,"context_line":"        self.assertIsNone(ovs_db_v2.get_network_binding(self.session,"},{"line_number":191,"context_line":"                                                    TEST_NETWORK_ID))"},{"line_number":192,"context_line":"        ovs_db_v2.add_network_binding(self.session, TEST_NETWORK_ID, \u0027vlan\u0027,"},{"line_number":193,"context_line":"                                      PHYS_NET, 1234)"},{"line_number":194,"context_line":"        binding \u003d ovs_db_v2.get_network_binding(self.session, TEST_NETWORK_ID)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FvI8%3D","line":191,"updated":"2012-08-15 14:20:02.000000000","message":"PEP failure","commit_id":"8b55b482c439d3db85c1b50868f1e764daff1227"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        ovs_db_v2.initialize()"},{"line_number":37,"context_line":"        ovs_db_v2.sync_vlan_allocations(VLAN_RANGES)"},{"line_number":38,"context_line":"        self.session \u003d db.get_session()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def tearDown(self):"},{"line_number":41,"context_line":"        db.clear_db()"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvBw%3D","line":39,"updated":"2012-08-15 16:06:49.000000000","message":"Do you test for intersecting ranges?","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        ovs_db_v2.initialize()"},{"line_number":37,"context_line":"        ovs_db_v2.sync_vlan_allocations(VLAN_RANGES)"},{"line_number":38,"context_line":"        self.session \u003d db.get_session()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def tearDown(self):"},{"line_number":41,"context_line":"        db.clear_db()"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fu%2BQ%3D","line":39,"in_reply_to":"AAAALH%2F%2FvBw%3D","updated":"2012-08-15 16:33:09.000000000","message":"They don\u0027t hurt anything, so I don\u0027t check for them.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"359d560cf7b0bd0c4a5026b7fad8641b2d368d8a","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                                                       VLAN_MAX).allocated)"},{"line_number":52,"context_line":"        self.assertIsNone(ovs_db_v2.get_vlan_allocation(PHYS_NET,"},{"line_number":53,"context_line":"                                                        VLAN_MAX + 1))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        ovs_db_v2.sync_vlan_allocations(UPDATED_VLAN_RANGES)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        self.assertIsNone(ovs_db_v2.get_vlan_allocation(PHYS_NET,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvBU%3D","line":54,"updated":"2012-08-15 16:06:49.000000000","message":"Think that you should also add a test case to see if the range is exhausted.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"7fb3070eb63d703f320e365cbb56bcf6a778052f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                                                       VLAN_MAX).allocated)"},{"line_number":52,"context_line":"        self.assertIsNone(ovs_db_v2.get_vlan_allocation(PHYS_NET,"},{"line_number":53,"context_line":"                                                        VLAN_MAX + 1))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        ovs_db_v2.sync_vlan_allocations(UPDATED_VLAN_RANGES)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        self.assertIsNone(ovs_db_v2.get_vlan_allocation(PHYS_NET,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fu%2BI%3D","line":54,"in_reply_to":"AAAALH%2F%2FvBU%3D","updated":"2012-08-15 16:33:09.000000000","message":"See line 78.","commit_id":"4ccc7019181be00c16f5e41bcc2a30aea3e7e4b7"}],"quantum/tests/unit/openvswitch/test_ovs_db.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                                       VLAN_MIN + 5).allocated)"},{"line_number":61,"context_line":"        self.assertFalse(ovs_db_v2.get_vlan_allocation(PHYS_NET,"},{"line_number":62,"context_line":"                                                       VLAN_MIN + 5 + 1)."},{"line_number":63,"context_line":"                         allocated)"},{"line_number":64,"context_line":"        self.assertFalse(ovs_db_v2.get_vlan_allocation(PHYS_NET,"},{"line_number":65,"context_line":"                                                       VLAN_MAX + 5).allocated)"},{"line_number":66,"context_line":"        self.assertIsNone(ovs_db_v2.get_vlan_allocation(PHYS_NET,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FkTY%3D","line":63,"updated":"2012-08-30 18:04:30.000000000","message":"Non-relevant comment (please do not address it if it takes more than 10 seconds: for simmetry we should test whether the upper bound -1 is allocated or not. However I reckon that tests for upper bound -1 and lower bound +1 are not necessary.","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                                       VLAN_MIN + 5).allocated)"},{"line_number":61,"context_line":"        self.assertFalse(ovs_db_v2.get_vlan_allocation(PHYS_NET,"},{"line_number":62,"context_line":"                                                       VLAN_MIN + 5 + 1)."},{"line_number":63,"context_line":"                         allocated)"},{"line_number":64,"context_line":"        self.assertFalse(ovs_db_v2.get_vlan_allocation(PHYS_NET,"},{"line_number":65,"context_line":"                                                       VLAN_MAX + 5).allocated)"},{"line_number":66,"context_line":"        self.assertIsNone(ovs_db_v2.get_vlan_allocation(PHYS_NET,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FkL8%3D","line":63,"in_reply_to":"AAAALH%2F%2FkTY%3D","updated":"2012-08-30 19:51:30.000000000","message":"Done","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        for vlan_id in vlan_ids:"},{"line_number":82,"context_line":"            ovs_db_v2.release_vlan(self.session, PHYS_NET, vlan_id,"},{"line_number":83,"context_line":"                                   VLAN_RANGES)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_specific_vlan_inside_pool(self):"},{"line_number":86,"context_line":"        vlan_id \u003d VLAN_MIN + 5"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FkTQ%3D","line":83,"updated":"2012-08-30 18:04:30.000000000","message":"as release_vlan is not explicitly checked, a test for checking that a vlan can be successfully allocated after the release might be useful","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        for vlan_id in vlan_ids:"},{"line_number":82,"context_line":"            ovs_db_v2.release_vlan(self.session, PHYS_NET, vlan_id,"},{"line_number":83,"context_line":"                                   VLAN_RANGES)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_specific_vlan_inside_pool(self):"},{"line_number":86,"context_line":"        vlan_id \u003d VLAN_MIN + 5"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FkKk%3D","line":83,"in_reply_to":"AAAALH%2F%2FkTQ%3D","updated":"2012-08-30 19:51:30.000000000","message":"Done","commit_id":"1d80dc6389fd7ba8a4f0cf36bc3b75c7c32f58dc"}]}
