)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d1f1a8a43a10eab5133336a57364548cee8576f4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Britt Houser \u003cbhouser@cisco.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-11 16:12:02 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Change nexus_dict values to be array"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When users configured a server to have two logical connections to a"},{"line_number":10,"context_line":"single switch, the nexus driver would never know about the second"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"baada198_758d8629","line":7,"updated":"2014-08-12 05:50:03.000000000","message":"array -\u003e list?","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"eb0e20b1230ee61dd4f44eb941660ab58212e418","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Britt Houser \u003cbhouser@cisco.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-11 16:12:02 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Change nexus_dict values to be array"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When users configured a server to have two logical connections to a"},{"line_number":10,"context_line":"single switch, the nexus driver would never know about the second"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1abeadc6_e248d8ce","line":7,"in_reply_to":"baada198_758d8629","updated":"2014-08-17 18:42:28.000000000","message":"Done","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8792f029b409165d7b4485b6fb783124fee2d209","unresolved":false,"context_lines":[{"line_number":10,"context_line":"single switch, the nexus driver would never know about the second"},{"line_number":11,"context_line":"connection because the nexus_dict stored the interface as a single"},{"line_number":12,"context_line":"value, which would just get overwritten.  This has been fixed by"},{"line_number":13,"context_line":"allowing the port value to be a comma seperated list.  All"},{"line_number":14,"context_line":"operations on ports have been update to loop over multiple ports"},{"line_number":15,"context_line":"per switch. New test added for host with dual connections to one"},{"line_number":16,"context_line":"switch."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1abeadc6_a4e259d3","line":13,"updated":"2014-08-18 12:22:26.000000000","message":"nit: seperated -\u003e separated","commit_id":"2b325fbd20e1ead8ec713c2fd69fd970dab0b405"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"ed5b23d00036fa6c530f16f9d634977f5aa8dc94","unresolved":false,"context_lines":[{"line_number":10,"context_line":"single switch, the nexus driver would never know about the second"},{"line_number":11,"context_line":"connection because the nexus_dict stored the interface as a single"},{"line_number":12,"context_line":"value, which would just get overwritten.  This has been fixed by"},{"line_number":13,"context_line":"allowing the port value to be a comma seperated list.  All"},{"line_number":14,"context_line":"operations on ports have been update to loop over multiple ports"},{"line_number":15,"context_line":"per switch. New test added for host with dual connections to one"},{"line_number":16,"context_line":"switch."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1abeadc6_a7cc1b37","line":13,"in_reply_to":"1abeadc6_a4e259d3","updated":"2014-08-18 13:00:45.000000000","message":"I really need to find a editor that spell-checks the commit messages and comments. \u003d)","commit_id":"2b325fbd20e1ead8ec713c2fd69fd970dab0b405"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"8792f029b409165d7b4485b6fb783124fee2d209","unresolved":false,"context_lines":[{"line_number":11,"context_line":"connection because the nexus_dict stored the interface as a single"},{"line_number":12,"context_line":"value, which would just get overwritten.  This has been fixed by"},{"line_number":13,"context_line":"allowing the port value to be a comma seperated list.  All"},{"line_number":14,"context_line":"operations on ports have been update to loop over multiple ports"},{"line_number":15,"context_line":"per switch. New test added for host with dual connections to one"},{"line_number":16,"context_line":"switch."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1abeadc6_04d14dfb","line":14,"updated":"2014-08-18 12:22:26.000000000","message":"update -\u003e updated","commit_id":"2b325fbd20e1ead8ec713c2fd69fd970dab0b405"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"ed5b23d00036fa6c530f16f9d634977f5aa8dc94","unresolved":false,"context_lines":[{"line_number":11,"context_line":"connection because the nexus_dict stored the interface as a single"},{"line_number":12,"context_line":"value, which would just get overwritten.  This has been fixed by"},{"line_number":13,"context_line":"allowing the port value to be a comma seperated list.  All"},{"line_number":14,"context_line":"operations on ports have been update to loop over multiple ports"},{"line_number":15,"context_line":"per switch. New test added for host with dual connections to one"},{"line_number":16,"context_line":"switch."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1abeadc6_a7f33b72","line":14,"in_reply_to":"1abeadc6_04d14dfb","updated":"2014-08-18 13:00:45.000000000","message":"Spelling and grammer checks. \u003d)","commit_id":"2b325fbd20e1ead8ec713c2fd69fd970dab0b405"}],"neutron/plugins/ml2/drivers/cisco/nexus/mech_cisco_nexus.py":[{"author":{"_account_id":11701,"name":"Divya ChanneGowda","email":"divya.hc@gmail.com","username":"divyahc"},"change_message_id":"37475b2e9a37517833f6a5a766d2780ad148ad42","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":140,"context_line":"        #nexus_port will be unique in each interation, but switch_ip"},{"line_number":141,"context_line":"        #might repeat if host has \u003e1 connection to same switch"},{"line_number":142,"context_line":"        #So track which switch_ips already have vlan removed"},{"line_number":143,"context_line":"        vlan_already_removed \u003d []"},{"line_number":144,"context_line":"        for switch_ip, intf_type, nexus_port in host_connections:"},{"line_number":145,"context_line":"            # if there are no remaining db entries using this vlan on this"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_5a9e3807","line":142,"updated":"2014-08-08 21:27:33.000000000","message":"nit: missing space after #","commit_id":"2a747f2f2d9defd46e2d8f8f4780a9814b2bbcff"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"dab47fc6a63bf39a3883f4fee9bbbe91960d841e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":140,"context_line":"        #nexus_port will be unique in each interation, but switch_ip"},{"line_number":141,"context_line":"        #might repeat if host has \u003e1 connection to same switch"},{"line_number":142,"context_line":"        #So track which switch_ips already have vlan removed"},{"line_number":143,"context_line":"        vlan_already_removed \u003d []"},{"line_number":144,"context_line":"        for switch_ip, intf_type, nexus_port in host_connections:"},{"line_number":145,"context_line":"            # if there are no remaining db entries using this vlan on this"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_1cdba37d","line":142,"in_reply_to":"baada198_5a9e3807","updated":"2014-08-11 20:32:46.000000000","message":"Done","commit_id":"2a747f2f2d9defd46e2d8f8f4780a9814b2bbcff"},{"author":{"_account_id":11701,"name":"Divya ChanneGowda","email":"divya.hc@gmail.com","username":"divyahc"},"change_message_id":"37475b2e9a37517833f6a5a766d2780ad148ad42","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                try:"},{"line_number":158,"context_line":"                    nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":159,"context_line":"                except excep.NexusPortBindingNotFound:"},{"line_number":160,"context_line":"                    #Do not perform a second time on same switch"},{"line_number":161,"context_line":"                    if switch_ip not in vlan_already_removed:"},{"line_number":162,"context_line":"                        self.driver.delete_vlan(switch_ip, vlan_id)"},{"line_number":163,"context_line":"                        vlan_already_removed.append(switch_ip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_9a8370a8","line":160,"updated":"2014-08-08 21:27:33.000000000","message":"same here","commit_id":"2a747f2f2d9defd46e2d8f8f4780a9814b2bbcff"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"dab47fc6a63bf39a3883f4fee9bbbe91960d841e","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                try:"},{"line_number":158,"context_line":"                    nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":159,"context_line":"                except excep.NexusPortBindingNotFound:"},{"line_number":160,"context_line":"                    #Do not perform a second time on same switch"},{"line_number":161,"context_line":"                    if switch_ip not in vlan_already_removed:"},{"line_number":162,"context_line":"                        self.driver.delete_vlan(switch_ip, vlan_id)"},{"line_number":163,"context_line":"                        vlan_already_removed.append(switch_ip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_3cd6a753","line":160,"in_reply_to":"baada198_9a8370a8","updated":"2014-08-11 20:32:46.000000000","message":"Done","commit_id":"2a747f2f2d9defd46e2d8f8f4780a9814b2bbcff"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"2420988d775ccb89253f5187720df3fce5acea5f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        host_connections \u003d []"},{"line_number":67,"context_line":"        for switch_ip, attr in self._nexus_switches:"},{"line_number":68,"context_line":"            if str(attr) \u003d\u003d str(host_id):"},{"line_number":69,"context_line":"                for port_id in \\"},{"line_number":70,"context_line":"                        self._nexus_switches[switch_ip, attr].split(\u0027,\u0027):"},{"line_number":71,"context_line":"                    if \u0027:\u0027 in port_id:"},{"line_number":72,"context_line":"                        intf_type, port \u003d port_id.split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_01c6e515","line":69,"updated":"2014-08-11 17:08:26.000000000","message":"i think the preferred way to continue a line in python is use nothing or \"( )\". Did you need the \"\\\". Check here for more info:\nhttp://legacy.python.org/dev/peps/pep-0008/\nNote \"\\\" is a valid continuation value.","commit_id":"2b63cfc3ff7a4cba8f8a186649011387b46e7f1c"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"25cd7d918b28e547a11ff727a819b07f7136de7f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        host_connections \u003d []"},{"line_number":67,"context_line":"        for switch_ip, attr in self._nexus_switches:"},{"line_number":68,"context_line":"            if str(attr) \u003d\u003d str(host_id):"},{"line_number":69,"context_line":"                for port_id in \\"},{"line_number":70,"context_line":"                        self._nexus_switches[switch_ip, attr].split(\u0027,\u0027):"},{"line_number":71,"context_line":"                    if \u0027:\u0027 in port_id:"},{"line_number":72,"context_line":"                        intf_type, port \u003d port_id.split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_d1a594b4","line":69,"in_reply_to":"baada198_01c6e515","updated":"2014-08-11 20:31:49.000000000","message":"Done","commit_id":"2b63cfc3ff7a4cba8f8a186649011387b46e7f1c"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"3f964fec9007a1ca3470d0bba79560457cbe64c0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        host_connections \u003d []"},{"line_number":67,"context_line":"        for switch_ip, attr in self._nexus_switches:"},{"line_number":68,"context_line":"            if str(attr) \u003d\u003d str(host_id):"},{"line_number":69,"context_line":"                for port_id in \\"},{"line_number":70,"context_line":"                        self._nexus_switches[switch_ip, attr].split(\u0027,\u0027):"},{"line_number":71,"context_line":"                    if \u0027:\u0027 in port_id:"},{"line_number":72,"context_line":"                        intf_type, port \u003d port_id.split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_0e6b62f0","line":69,"in_reply_to":"baada198_9735cca9","updated":"2014-08-12 02:36:47.000000000","message":"Yeah if I don\u0027t have the (), tox errors out before it even runs.","commit_id":"2b63cfc3ff7a4cba8f8a186649011387b46e7f1c"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"0e4f9ae7f9ba2514c78d1ed841c9c56fe7385ce8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        host_connections \u003d []"},{"line_number":67,"context_line":"        for switch_ip, attr in self._nexus_switches:"},{"line_number":68,"context_line":"            if str(attr) \u003d\u003d str(host_id):"},{"line_number":69,"context_line":"                for port_id in \\"},{"line_number":70,"context_line":"                        self._nexus_switches[switch_ip, attr].split(\u0027,\u0027):"},{"line_number":71,"context_line":"                    if \u0027:\u0027 in port_id:"},{"line_number":72,"context_line":"                        intf_type, port \u003d port_id.split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_9735cca9","line":69,"in_reply_to":"baada198_d1a594b4","updated":"2014-08-11 21:41:12.000000000","message":"Update used \"()\". Did you try using nothing? It\u0027s the python way. Assuming it didn\u0027t give you a syntax error or pep8 error.","commit_id":"2b63cfc3ff7a4cba8f8a186649011387b46e7f1c"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"2420988d775ccb89253f5187720df3fce5acea5f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # host and switch, then this VLAN will not have existed"},{"line_number":108,"context_line":"            # on the switch before, so configure both trunk and VLAN."},{"line_number":109,"context_line":"            bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":110,"context_line":"            if len(bindings) \u003d\u003d len(host_connections):"},{"line_number":111,"context_line":"                LOG.debug(_(\"Nexus: create \u0026 trunk vlan %s\"), vlan_name)"},{"line_number":112,"context_line":"                self.driver.create_and_trunk_vlan("},{"line_number":113,"context_line":"                    switch_ip, vlan_id, vlan_name, intf_type, nexus_port)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_3c522e12","line":110,"updated":"2014-08-11 17:08:26.000000000","message":"i need to think about this some more.\nThe \"1\" represents the first addition to the database. (done in update_port_precommit method) not the number of entries in our host table. Although it reads like you understand this.","commit_id":"2b63cfc3ff7a4cba8f8a186649011387b46e7f1c"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"25cd7d918b28e547a11ff727a819b07f7136de7f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # host and switch, then this VLAN will not have existed"},{"line_number":108,"context_line":"            # on the switch before, so configure both trunk and VLAN."},{"line_number":109,"context_line":"            bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":110,"context_line":"            if len(bindings) \u003d\u003d len(host_connections):"},{"line_number":111,"context_line":"                LOG.debug(_(\"Nexus: create \u0026 trunk vlan %s\"), vlan_name)"},{"line_number":112,"context_line":"                self.driver.create_and_trunk_vlan("},{"line_number":113,"context_line":"                    switch_ip, vlan_id, vlan_name, intf_type, nexus_port)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_dc684bbe","line":110,"in_reply_to":"baada198_3c522e12","updated":"2014-08-11 20:31:49.000000000","message":"I *think* this logic is right, but I defer to your further ruminating.  What I saw happen was all the bindings for a given instance were already in the database when this code was executed.  Initially I wanted to search through the bindings and see if there were any instance-id which didn\u0027t match the new instance-id.  However, I don\u0027t think this function actually knows the id of the new instance.  So instead I just went with an update to the previous logic.  If the number of bindings returned is the same as the number of ports I\u0027m going to configure on the switch, then this must be the first time this VLAN occurs on this switch.","commit_id":"2b63cfc3ff7a4cba8f8a186649011387b46e7f1c"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"90551c3f3b955de6e4c62ecd0924147b80d10783","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # host and switch, then this VLAN will not have existed"},{"line_number":108,"context_line":"            # on the switch before, so configure both trunk and VLAN."},{"line_number":109,"context_line":"            bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":110,"context_line":"            if len(bindings) \u003d\u003d len(host_connections):"},{"line_number":111,"context_line":"                LOG.debug(_(\"Nexus: create \u0026 trunk vlan %s\"), vlan_name)"},{"line_number":112,"context_line":"                self.driver.create_and_trunk_vlan("},{"line_number":113,"context_line":"                    switch_ip, vlan_id, vlan_name, intf_type, nexus_port)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_44ce08b8","line":110,"in_reply_to":"baada198_a24a8d21","updated":"2014-08-12 12:54:02.000000000","message":"Done","commit_id":"2b63cfc3ff7a4cba8f8a186649011387b46e7f1c"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"0e4f9ae7f9ba2514c78d1ed841c9c56fe7385ce8","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # host and switch, then this VLAN will not have existed"},{"line_number":108,"context_line":"            # on the switch before, so configure both trunk and VLAN."},{"line_number":109,"context_line":"            bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":110,"context_line":"            if len(bindings) \u003d\u003d len(host_connections):"},{"line_number":111,"context_line":"                LOG.debug(_(\"Nexus: create \u0026 trunk vlan %s\"), vlan_name)"},{"line_number":112,"context_line":"                self.driver.create_and_trunk_vlan("},{"line_number":113,"context_line":"                    switch_ip, vlan_id, vlan_name, intf_type, nexus_port)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_e99c70c1","line":110,"in_reply_to":"baada198_dc684bbe","updated":"2014-08-11 21:41:12.000000000","message":"The purpose of this conditional is to only send down the vlan create XML snippet (ex. \"vlan 100\") the first time. The reason why \"\u003d\u003d 1\" is being used is because of how ml2 drivers work. As you can see below, all the API method names end with either \"_precommit\" or \"_postcommit\". These names refer to pre/post commit to the database. So on update_port_precommit() we add the database entry and on update_port_postcommit() we program the switch. \n\nThis supports configuration like this:\ncaseA:\n[ml2_mech_cisco_nexus:1.2.3.4]\nmyhost1\u003d1/1\nmyhost2\u003d1/2\n\nand\n\ncaseB:\n[ml2_mech_cisco_nexus:1.2.3.4]\nmyhost1\u003d1/1\n\n[ml2_mech_cisco_nexus:5.6.7.8]\nmyhost1\u003d1/1\n\nIf we get an update port for myhost1 \"vlan 100\" would be created on the switch.\nThe update port event for myhost2 should not try and create \"vlan 100\" on the switch.\n\n_get_switch_info() (which populates host_connections) only contains the information for one host.\n\n\"len(bindings)\" returns the number of times \"100 + \u003cip address\u003e\" is found in the database. \n\"len(host_connections)\" returns the number of times a hostname is found in all the switches defined plus (now) number of ports defined per host.\n\nNeed to do more math in my head but something is off.","commit_id":"2b63cfc3ff7a4cba8f8a186649011387b46e7f1c"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"3f964fec9007a1ca3470d0bba79560457cbe64c0","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # host and switch, then this VLAN will not have existed"},{"line_number":108,"context_line":"            # on the switch before, so configure both trunk and VLAN."},{"line_number":109,"context_line":"            bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":110,"context_line":"            if len(bindings) \u003d\u003d len(host_connections):"},{"line_number":111,"context_line":"                LOG.debug(_(\"Nexus: create \u0026 trunk vlan %s\"), vlan_name)"},{"line_number":112,"context_line":"                self.driver.create_and_trunk_vlan("},{"line_number":113,"context_line":"                    switch_ip, vlan_id, vlan_name, intf_type, nexus_port)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_a24a8d21","line":110,"in_reply_to":"baada198_e99c70c1","updated":"2014-08-12 02:36:47.000000000","message":"Ok I see it now.  update_port_precommit programs all the bindings into the database, which explains why I saw all of them.  Then my logic only holds if the host has multiple connections to a single switch.  If it has multiple connections to multiple switches, then len(bindings) \u003c len(host_connections).  I am going back to my original logic to check the instance_ids.  I still won\u0027t know what the current instance_id is, but I can just check if they are all identical.  If identical, this is the first time this VLAN will have exited on the switch.  If not identical, we can assume it is already there.  Stand-by. \u003d)","commit_id":"2b63cfc3ff7a4cba8f8a186649011387b46e7f1c"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d1f1a8a43a10eab5133336a57364548cee8576f4","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        for switch_ip, intf_type, nexus_port in host_connections:"},{"line_number":105,"context_line":"            # If the number of bindings for this switch/vlan currently"},{"line_number":106,"context_line":"            # in the database match the number of connection between"},{"line_number":107,"context_line":"            # host and switch, then this VLAN will not have existed"},{"line_number":108,"context_line":"            # on the switch before, so configure both trunk and VLAN."},{"line_number":109,"context_line":"            bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_55fb2215","line":106,"updated":"2014-08-12 05:50:03.000000000","message":"connections","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"c49b74754ed55918fce7e0a02f970862c6841a66","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        for switch_ip, intf_type, nexus_port in host_connections:"},{"line_number":105,"context_line":"            # If the number of bindings for this switch/vlan currently"},{"line_number":106,"context_line":"            # in the database match the number of connection between"},{"line_number":107,"context_line":"            # host and switch, then this VLAN will not have existed"},{"line_number":108,"context_line":"            # on the switch before, so configure both trunk and VLAN."},{"line_number":109,"context_line":"            bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_62b048de","line":106,"in_reply_to":"baada198_55fb2215","updated":"2014-08-17 18:28:47.000000000","message":"Done","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d1f1a8a43a10eab5133336a57364548cee8576f4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # host and switch, then this VLAN will not have existed"},{"line_number":108,"context_line":"            # on the switch before, so configure both trunk and VLAN."},{"line_number":109,"context_line":"            bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":110,"context_line":"            if len(bindings) \u003d\u003d len(host_connections):"},{"line_number":111,"context_line":"                LOG.debug(_(\"Nexus: create \u0026 trunk vlan %s\"), vlan_name)"},{"line_number":112,"context_line":"                self.driver.create_and_trunk_vlan("},{"line_number":113,"context_line":"                    switch_ip, vlan_id, vlan_name, intf_type, nexus_port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_d5e572a3","line":110,"updated":"2014-08-12 05:50:03.000000000","message":"so it seems like nothing has changed from the last version here; based on the comments in the last patch it seemed that you intended to change this logic?\n\nRegardless, this seems like a new condition you are checking for now, does the existing UT cover this?","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"c49b74754ed55918fce7e0a02f970862c6841a66","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # host and switch, then this VLAN will not have existed"},{"line_number":108,"context_line":"            # on the switch before, so configure both trunk and VLAN."},{"line_number":109,"context_line":"            bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":110,"context_line":"            if len(bindings) \u003d\u003d len(host_connections):"},{"line_number":111,"context_line":"                LOG.debug(_(\"Nexus: create \u0026 trunk vlan %s\"), vlan_name)"},{"line_number":112,"context_line":"                self.driver.create_and_trunk_vlan("},{"line_number":113,"context_line":"                    switch_ip, vlan_id, vlan_name, intf_type, nexus_port)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_a2d0a0f8","line":110,"in_reply_to":"baada198_d5e572a3","updated":"2014-08-17 18:28:47.000000000","message":"You are correct in that this logic didn\u0027t change until patch-set 8, and then was simplified after that.  The test_create_delete_dual test should cover this case.","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d1f1a8a43a10eab5133336a57364548cee8576f4","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        Called during update postcommit port event."},{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":141,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":142,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":143,"context_line":"        # So track which switch_ips already have vlan removed"},{"line_number":144,"context_line":"        vlan_already_removed \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_151e0a74","line":141,"updated":"2014-08-12 05:50:03.000000000","message":"iteration","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"c49b74754ed55918fce7e0a02f970862c6841a66","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        Called during update postcommit port event."},{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":141,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":142,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":143,"context_line":"        # So track which switch_ips already have vlan removed"},{"line_number":144,"context_line":"        vlan_already_removed \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_6299286e","line":141,"in_reply_to":"baada198_151e0a74","updated":"2014-08-17 18:28:47.000000000","message":"Done","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d1f1a8a43a10eab5133336a57364548cee8576f4","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                    nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":160,"context_line":"                except excep.NexusPortBindingNotFound:"},{"line_number":161,"context_line":"                    # Do not perform a second time on same switch"},{"line_number":162,"context_line":"                    if switch_ip not in vlan_already_removed:"},{"line_number":163,"context_line":"                        self.driver.delete_vlan(switch_ip, vlan_id)"},{"line_number":164,"context_line":"                        vlan_already_removed.append(switch_ip)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_554de291","line":162,"updated":"2014-08-12 05:50:03.000000000","message":"I did not find a UT for this new condition, does the current one already test this?","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"c49b74754ed55918fce7e0a02f970862c6841a66","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                    nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)"},{"line_number":160,"context_line":"                except excep.NexusPortBindingNotFound:"},{"line_number":161,"context_line":"                    # Do not perform a second time on same switch"},{"line_number":162,"context_line":"                    if switch_ip not in vlan_already_removed:"},{"line_number":163,"context_line":"                        self.driver.delete_vlan(switch_ip, vlan_id)"},{"line_number":164,"context_line":"                        vlan_already_removed.append(switch_ip)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_c2cd9c5f","line":162,"in_reply_to":"baada198_554de291","updated":"2014-08-17 18:28:47.000000000","message":"The test_create_delete_dual should cover this case.","commit_id":"4cd644c8e490b349c78215a40585a5b846d5ff94"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"f366dcf158175b06d1bc475bf3f39e4c55c559a3","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            # switch_ip.  Otherwise, just trunk."},{"line_number":114,"context_line":"            for row in nxos_db.get_nexusvlan_binding(vlan_id, switch_ip):"},{"line_number":115,"context_line":"                if row.instance_id !\u003d device_id:"},{"line_number":116,"context_line":"                    LOG.debug(_(\"Nexus: trunk vlan %s\"), vlan_name)"},{"line_number":117,"context_line":"                    self.driver.enable_vlan_on_trunk_int(switch_ip, vlan_id,"},{"line_number":118,"context_line":"                                                         intf_type, nexus_port)"},{"line_number":119,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_bbb50cd1","line":116,"updated":"2014-08-13 11:54:09.000000000","message":"Remove i18n translation for debug logging messages.","commit_id":"f92671b908c29cdfa4af7978952ba7f2c23308de"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"fffd7211e4f8f5ff46280813bfc4342146448bf3","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            # switch_ip.  Otherwise, just trunk."},{"line_number":114,"context_line":"            for row in nxos_db.get_nexusvlan_binding(vlan_id, switch_ip):"},{"line_number":115,"context_line":"                if row.instance_id !\u003d device_id:"},{"line_number":116,"context_line":"                    LOG.debug(_(\"Nexus: trunk vlan %s\"), vlan_name)"},{"line_number":117,"context_line":"                    self.driver.enable_vlan_on_trunk_int(switch_ip, vlan_id,"},{"line_number":118,"context_line":"                                                         intf_type, nexus_port)"},{"line_number":119,"context_line":"                    break"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_b178cbf8","line":116,"in_reply_to":"baada198_bbb50cd1","updated":"2014-08-13 12:42:40.000000000","message":"Done","commit_id":"f92671b908c29cdfa4af7978952ba7f2c23308de"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"f366dcf158175b06d1bc475bf3f39e4c55c559a3","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                    break"},{"line_number":120,"context_line":"            else:"},{"line_number":121,"context_line":"                if switch_ip in vlan_already_created:"},{"line_number":122,"context_line":"                    LOG.debug(_(\"Nexus: trunk vlan %s\"), vlan_name)"},{"line_number":123,"context_line":"                    self.driver.enable_vlan_on_trunk_int(switch_ip, vlan_id,"},{"line_number":124,"context_line":"                                                         intf_type, nexus_port)"},{"line_number":125,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_5bd5d0e4","line":122,"updated":"2014-08-13 11:54:09.000000000","message":"ditto","commit_id":"f92671b908c29cdfa4af7978952ba7f2c23308de"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"fffd7211e4f8f5ff46280813bfc4342146448bf3","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                    break"},{"line_number":120,"context_line":"            else:"},{"line_number":121,"context_line":"                if switch_ip in vlan_already_created:"},{"line_number":122,"context_line":"                    LOG.debug(_(\"Nexus: trunk vlan %s\"), vlan_name)"},{"line_number":123,"context_line":"                    self.driver.enable_vlan_on_trunk_int(switch_ip, vlan_id,"},{"line_number":124,"context_line":"                                                         intf_type, nexus_port)"},{"line_number":125,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_f18243c6","line":122,"in_reply_to":"baada198_5bd5d0e4","updated":"2014-08-13 12:42:40.000000000","message":"Done","commit_id":"f92671b908c29cdfa4af7978952ba7f2c23308de"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"f366dcf158175b06d1bc475bf3f39e4c55c559a3","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                                         intf_type, nexus_port)"},{"line_number":125,"context_line":"                else:"},{"line_number":126,"context_line":"                    vlan_already_created.append(switch_ip)"},{"line_number":127,"context_line":"                    LOG.debug(_(\"Nexus: create \u0026 trunk vlan %s\"), vlan_name)"},{"line_number":128,"context_line":"                    self.driver.create_and_trunk_vlan("},{"line_number":129,"context_line":"                        switch_ip, vlan_id, vlan_name, intf_type, nexus_port)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_dbf80081","line":127,"updated":"2014-08-13 11:54:09.000000000","message":"ditto","commit_id":"f92671b908c29cdfa4af7978952ba7f2c23308de"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"fffd7211e4f8f5ff46280813bfc4342146448bf3","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                                         intf_type, nexus_port)"},{"line_number":125,"context_line":"                else:"},{"line_number":126,"context_line":"                    vlan_already_created.append(switch_ip)"},{"line_number":127,"context_line":"                    LOG.debug(_(\"Nexus: create \u0026 trunk vlan %s\"), vlan_name)"},{"line_number":128,"context_line":"                    self.driver.create_and_trunk_vlan("},{"line_number":129,"context_line":"                        switch_ip, vlan_id, vlan_name, intf_type, nexus_port)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_1167b753","line":127,"in_reply_to":"baada198_dbf80081","updated":"2014-08-13 12:42:40.000000000","message":"Done","commit_id":"f92671b908c29cdfa4af7978952ba7f2c23308de"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"db62d1a0800b36afd71674e4b8640d725edb2cbd","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        vlan_name \u003d cfg.CONF.ml2_cisco.vlan_name_prefix + str(vlan_id)"},{"line_number":102,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":103,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":104,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":105,"context_line":"        # So track which switch_ips already have vlan created by this loop"},{"line_number":106,"context_line":"        vlan_already_created \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_912bc79a","line":103,"updated":"2014-08-13 16:09:53.000000000","message":"blank line before comment please.","commit_id":"134cb2ba59f73dde635a725dbd2c407f3d412e8d"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"e6a0e4de83f7033353ea5294f3420125fc1995db","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        vlan_name \u003d cfg.CONF.ml2_cisco.vlan_name_prefix + str(vlan_id)"},{"line_number":102,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":103,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":104,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":105,"context_line":"        # So track which switch_ips already have vlan created by this loop"},{"line_number":106,"context_line":"        vlan_already_created \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_03dd9f13","line":103,"in_reply_to":"baada198_912bc79a","updated":"2014-08-13 18:11:48.000000000","message":"Done","commit_id":"134cb2ba59f73dde635a725dbd2c407f3d412e8d"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"db62d1a0800b36afd71674e4b8640d725edb2cbd","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":105,"context_line":"        # So track which switch_ips already have vlan created by this loop"},{"line_number":106,"context_line":"        vlan_already_created \u003d []"},{"line_number":107,"context_line":"        for switch_ip, intf_type, nexus_port in host_connections:"},{"line_number":108,"context_line":"            # The VLAN needs to be created on the switch if no other"},{"line_number":109,"context_line":"            # instance has been placed in this VLAN on a different host"},{"line_number":110,"context_line":"            # attached to this switch.  Search the existing bindings in the"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_8ffc7b42","line":107,"updated":"2014-08-13 16:09:53.000000000","message":"Consider: (dane helped out here.)\n\nvlan_already_created \u003d []\nfor switch_ip, intf_type, nexus_port in host_connections:\n    bindings \u003d nxos_db.get_nexusvlan_binding(vlan_id, switch_ip)\n    old_bindings \u003d [row for row in bindings if row.instance_id !\u003d device_id]\n    if old_bindings or switch_ip in vlan_already_created:\n       enable_vlan_on_trunk_int\n    else\n       create_and_trunk_vlan\n       vlan_already_created.append.(ip_switch)\n\nalso you\u0027ll need similar type of logic enable_vlan_on_trunk_int()\nmethod in nexus_network_driver.py","commit_id":"134cb2ba59f73dde635a725dbd2c407f3d412e8d"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"e6a0e4de83f7033353ea5294f3420125fc1995db","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":105,"context_line":"        # So track which switch_ips already have vlan created by this loop"},{"line_number":106,"context_line":"        vlan_already_created \u003d []"},{"line_number":107,"context_line":"        for switch_ip, intf_type, nexus_port in host_connections:"},{"line_number":108,"context_line":"            # The VLAN needs to be created on the switch if no other"},{"line_number":109,"context_line":"            # instance has been placed in this VLAN on a different host"},{"line_number":110,"context_line":"            # attached to this switch.  Search the existing bindings in the"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_06376db0","line":107,"in_reply_to":"baada198_8ffc7b42","updated":"2014-08-13 18:11:48.000000000","message":"Never done list comprehension before.  Thanks for the tip. \u003d) I will implement that way.  Also, after our discussion I don\u0027t think logic for enable_vlan_on_trunk_int() is required.  I tested with VMs in multiple networks against real N9k and it worked fine w/o it.","commit_id":"134cb2ba59f73dde635a725dbd2c407f3d412e8d"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"db62d1a0800b36afd71674e4b8640d725edb2cbd","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        Called during update postcommit port event."},{"line_number":151,"context_line":"        \"\"\""},{"line_number":152,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":153,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":154,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":155,"context_line":"        # So track which switch_ips already have vlan removed"},{"line_number":156,"context_line":"        vlan_already_removed \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_20829c51","line":153,"updated":"2014-08-13 16:09:53.000000000","message":"blank line above comment","commit_id":"134cb2ba59f73dde635a725dbd2c407f3d412e8d"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"e6a0e4de83f7033353ea5294f3420125fc1995db","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        Called during update postcommit port event."},{"line_number":151,"context_line":"        \"\"\""},{"line_number":152,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":153,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":154,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":155,"context_line":"        # So track which switch_ips already have vlan removed"},{"line_number":156,"context_line":"        vlan_already_removed \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_23e2a3d4","line":153,"in_reply_to":"baada198_20829c51","updated":"2014-08-13 18:11:48.000000000","message":"Done","commit_id":"134cb2ba59f73dde635a725dbd2c407f3d412e8d"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"923953b9d216964b0baf64ad679411e80c1f4cd2","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        vlan_name \u003d cfg.CONF.ml2_cisco.vlan_name_prefix + str(vlan_id)"},{"line_number":102,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":105,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":106,"context_line":"        # So track which switch_ips already have vlan created by this loop"},{"line_number":107,"context_line":"        vlan_already_created \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_cff49af4","line":104,"updated":"2014-08-15 13:00:41.000000000","message":"\"nexus_port will be unique in each iteration (sp) per switch ...\"","commit_id":"4d62eacd37b1317efcc657be76e261860dcb3447"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"d85db3878df909e229ef93cf698022ae1788ad97","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        vlan_name \u003d cfg.CONF.ml2_cisco.vlan_name_prefix + str(vlan_id)"},{"line_number":102,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":105,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":106,"context_line":"        # So track which switch_ips already have vlan created by this loop"},{"line_number":107,"context_line":"        vlan_already_created \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_f29f7a5d","line":104,"in_reply_to":"7ac7a964_cff49af4","updated":"2014-08-15 14:51:40.000000000","message":"Done","commit_id":"4d62eacd37b1317efcc657be76e261860dcb3447"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"923953b9d216964b0baf64ad679411e80c1f4cd2","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \"\"\""},{"line_number":150,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":153,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":154,"context_line":"        # So track which switch_ips already have vlan removed"},{"line_number":155,"context_line":"        vlan_already_removed \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_0f977291","line":152,"updated":"2014-08-15 13:00:41.000000000","message":"interation -\u003e iteration.\nplus add in \"per switch\" again.","commit_id":"4d62eacd37b1317efcc657be76e261860dcb3447"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"d85db3878df909e229ef93cf698022ae1788ad97","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \"\"\""},{"line_number":150,"context_line":"        host_connections \u003d self._get_switch_info(host_id)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        # Nexus_port will be unique in each interation, but switch_ip"},{"line_number":153,"context_line":"        # might repeat if host has \u003e1 connection to same switch"},{"line_number":154,"context_line":"        # So track which switch_ips already have vlan removed"},{"line_number":155,"context_line":"        vlan_already_removed \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_129b1673","line":152,"in_reply_to":"7ac7a964_0f977291","updated":"2014-08-15 14:51:40.000000000","message":"Done","commit_id":"4d62eacd37b1317efcc657be76e261860dcb3447"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d5102f73ed278d10edb1e21dd94cbff1e5a1f973","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                except excep.NexusPortBindingNotFound:"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"                    # Do not perform a second time on same switch"},{"line_number":175,"context_line":"                    if switch_ip not in vlan_already_removed:"},{"line_number":176,"context_line":"                        self.driver.delete_vlan(switch_ip, vlan_id)"},{"line_number":177,"context_line":"                        vlan_already_removed.append(switch_ip)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_13bc4c6c","line":175,"updated":"2014-08-17 04:03:20.000000000","message":"In patchset 7, I had asked:\nI did not find a UT for this new condition, does the current one already test this?","commit_id":"dcf586c7c907b650120208decd5eec2518be5286"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"4f15f934a998b6ec816868d67d9e018ce027ad81","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                except excep.NexusPortBindingNotFound:"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"                    # Do not perform a second time on same switch"},{"line_number":175,"context_line":"                    if switch_ip not in vlan_already_removed:"},{"line_number":176,"context_line":"                        self.driver.delete_vlan(switch_ip, vlan_id)"},{"line_number":177,"context_line":"                        vlan_already_removed.append(switch_ip)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_62fe886d","line":175,"in_reply_to":"1abeadc6_13bc4c6c","updated":"2014-08-17 18:29:59.000000000","message":"A thousand apologies Sumit.  I missed your comments in patchset 7 until now.  To answer your question, yes test_create_delete_dual should cover this additional logic.","commit_id":"dcf586c7c907b650120208decd5eec2518be5286"}],"neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus.py":[{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"923953b9d216964b0baf64ad679411e80c1f4cd2","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        for port_id in nexus_port.split(\u0027,\u0027):"},{"line_number":198,"context_line":"            with testtools.ExpectedException("},{"line_number":199,"context_line":"                    exceptions.NexusPortBindingNotFound):"},{"line_number":200,"context_line":"                nexus_db_v2.get_nexusport_binding(nexus_port,"},{"line_number":201,"context_line":"                                                  vlan_id,"},{"line_number":202,"context_line":"                                                  nexus_ip_addr,"},{"line_number":203,"context_line":"                                                  instance_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_8f00e202","line":200,"updated":"2014-08-15 13:00:41.000000000","message":"nexus_port -\u003e port_id","commit_id":"4d62eacd37b1317efcc657be76e261860dcb3447"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"76b92f72aeb9be05b596897df85e112359583cf3","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        for port_id in nexus_port.split(\u0027,\u0027):"},{"line_number":198,"context_line":"            with testtools.ExpectedException("},{"line_number":199,"context_line":"                    exceptions.NexusPortBindingNotFound):"},{"line_number":200,"context_line":"                nexus_db_v2.get_nexusport_binding(nexus_port,"},{"line_number":201,"context_line":"                                                  vlan_id,"},{"line_number":202,"context_line":"                                                  nexus_ip_addr,"},{"line_number":203,"context_line":"                                                  instance_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_1254f61f","line":200,"in_reply_to":"7ac7a964_8f00e202","updated":"2014-08-15 15:07:28.000000000","message":"Done","commit_id":"4d62eacd37b1317efcc657be76e261860dcb3447"}]}
