)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5635ff442c20f8b76fdd01fda6872b816d970cb0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Baodong Li \u003cbaoli@cisco.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-10-08 16:08:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add migration support in Cisco Nexus plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes 1229217"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATH%2F%2F0y4%3D","line":7,"updated":"2013-10-09 11:01:50.000000000","message":"Add more description as to what specific support is being added?","commit_id":"b06e4a3997511f21403ae0da8afc797ef4d8c08b"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"ac3e565c7702c2c72ca2d6f2fcb2ff67343e54a6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Baodong Li \u003cbaoli@cisco.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-10-08 16:08:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add migration support in Cisco Nexus plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes 1229217"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATH%2F%2Fz8U%3D","line":7,"in_reply_to":"AAAATH%2F%2F0y4%3D","updated":"2013-10-09 14:27:12.000000000","message":"done. let me know if it\u0027s good enough","commit_id":"b06e4a3997511f21403ae0da8afc797ef4d8c08b"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"1a3e17e9bbad63a5db2c1963a5330bd052a81823","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Baodong Li \u003cbaoli@cisco.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-10-09 14:15:59 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"With Cisco/Nexus plugin, migration is not fully supported. Logic to detect"},{"line_number":8,"context_line":"port binding change needs to be added in update_port(), and provisioning of"},{"line_number":9,"context_line":"nexus switch(es) should be done accordingly"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATH%2F%2Fz5k%3D","line":7,"updated":"2013-10-09 14:37:09.000000000","message":"Before this summary you need to have a single line (less than 50 characters, NOT ending with a period, followed by a blank line) that becomes the title for the change. I suggest: \"Check for live-migration in update_port for cisco plugin\".","commit_id":"c5583cd85c532a7033f06cb20433a0f1534e65a6"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"15351bb9e479da6951226ae20d266c0c615b6d1b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Baodong Li \u003cbaoli@cisco.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-10-09 14:15:59 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"With Cisco/Nexus plugin, migration is not fully supported. Logic to detect"},{"line_number":8,"context_line":"port binding change needs to be added in update_port(), and provisioning of"},{"line_number":9,"context_line":"nexus switch(es) should be done accordingly"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATH%2F%2Fzmk%3D","line":7,"in_reply_to":"AAAATH%2F%2Fz5k%3D","updated":"2013-10-09 15:19:16.000000000","message":"done","commit_id":"c5583cd85c532a7033f06cb20433a0f1534e65a6"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"1a3e17e9bbad63a5db2c1963a5330bd052a81823","unresolved":false,"context_lines":[{"line_number":8,"context_line":"port binding change needs to be added in update_port(), and provisioning of"},{"line_number":9,"context_line":"nexus switch(es) should be done accordingly"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Fixes 1229217"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I2bd76030711c9d15462e91da9e4c0836a424834f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATH%2F%2Fz4E%3D","line":11,"updated":"2013-10-09 14:37:09.000000000","message":"The correct format is:\n\nCloses-bug: #1229217\n\nSee: https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_GIT_commit_message_structure","commit_id":"c5583cd85c532a7033f06cb20433a0f1534e65a6"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"15351bb9e479da6951226ae20d266c0c615b6d1b","unresolved":false,"context_lines":[{"line_number":8,"context_line":"port binding change needs to be added in update_port(), and provisioning of"},{"line_number":9,"context_line":"nexus switch(es) should be done accordingly"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Fixes 1229217"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I2bd76030711c9d15462e91da9e4c0836a424834f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATH%2F%2Fzmc%3D","line":11,"in_reply_to":"AAAATH%2F%2Fz4E%3D","updated":"2013-10-09 15:19:16.000000000","message":"done","commit_id":"c5583cd85c532a7033f06cb20433a0f1534e65a6"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"175f1cb31dcae5bffaf7ff3953bd2dac981000c6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"port binding change needs to be added in update_port(), and provisioning of"},{"line_number":11,"context_line":"nexus switch(es) should be done accordingly"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes: #1229217"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2bd76030711c9d15462e91da9e4c0836a424834f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATH%2F%2Fuk0%3D","line":13,"updated":"2013-10-10 16:07:18.000000000","message":"it looks like this misses the bug keyword","commit_id":"d360ca8884001833a6de91adc309777f304e9f8b"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"19821069bccd28a7ed7adb3eb2953ed75b950b41","unresolved":false,"context_lines":[{"line_number":10,"context_line":"port binding change needs to be added in update_port(), and provisioning of"},{"line_number":11,"context_line":"nexus switch(es) should be done accordingly"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes: #1229217"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2bd76030711c9d15462e91da9e4c0836a424834f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATH%2F%2FtdI%3D","line":13,"in_reply_to":"AAAATH%2F%2Fuk0%3D","updated":"2013-10-10 21:25:43.000000000","message":"done","commit_id":"d360ca8884001833a6de91adc309777f304e9f8b"}],"neutron/plugins/cisco/models/virt_phy_sw_v2.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"c8c88b2b58a8d7bee24e54e120cde4c076699cc0","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        \"\"\"For this model this method will be delegated to vswitch plugin.\"\"\""},{"line_number":345,"context_line":"        pass"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def _check_nexus_net_create_needed(self, new_port, old_port):"},{"line_number":348,"context_line":"        \"\"\"Check if nexus plugin should be invoked for net_create"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        in the following cases, the plugin should be invoked:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2F0yY%3D","line":347,"updated":"2013-10-09 11:03:37.000000000","message":"Is there any UT coverage for this change?","commit_id":"b06e4a3997511f21403ae0da8afc797ef4d8c08b"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"ac3e565c7702c2c72ca2d6f2fcb2ff67343e54a6","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        \"\"\"For this model this method will be delegated to vswitch plugin.\"\"\""},{"line_number":345,"context_line":"        pass"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def _check_nexus_net_create_needed(self, new_port, old_port):"},{"line_number":348,"context_line":"        \"\"\"Check if nexus plugin should be invoked for net_create"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        in the following cases, the plugin should be invoked:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2Fz7s%3D","line":347,"in_reply_to":"AAAATH%2F%2F0yY%3D","updated":"2013-10-09 14:27:12.000000000","message":"there is no existing UT for update_port(). It will be addressed in separate bug","commit_id":"b06e4a3997511f21403ae0da8afc797ef4d8c08b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5635ff442c20f8b76fdd01fda6872b816d970cb0","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        pass"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def _check_nexus_net_create_needed(self, new_port, old_port):"},{"line_number":348,"context_line":"        \"\"\"Check if nexus plugin should be invoked for net_create"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        in the following cases, the plugin should be invoked:"},{"line_number":351,"context_line":"           -- a port is attached to a VM instance. The old host id is None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2F0z8%3D","line":348,"updated":"2013-10-09 11:01:50.000000000","message":"Not: PEP 257 add a period at end of summary line.  Can capitalize In on L350.","commit_id":"b06e4a3997511f21403ae0da8afc797ef4d8c08b"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"ac3e565c7702c2c72ca2d6f2fcb2ff67343e54a6","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        pass"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def _check_nexus_net_create_needed(self, new_port, old_port):"},{"line_number":348,"context_line":"        \"\"\"Check if nexus plugin should be invoked for net_create"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        in the following cases, the plugin should be invoked:"},{"line_number":351,"context_line":"           -- a port is attached to a VM instance. The old host id is None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2Fz7o%3D","line":348,"in_reply_to":"AAAATH%2F%2F0z8%3D","updated":"2013-10-09 14:27:12.000000000","message":"done","commit_id":"b06e4a3997511f21403ae0da8afc797ef4d8c08b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"5635ff442c20f8b76fdd01fda6872b816d970cb0","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        # An instance is being migrated"},{"line_number":370,"context_line":"        old_host_id \u003d self._get_port_host_id_from_bindings(old_port)"},{"line_number":371,"context_line":"        if (old_device_id and old_host_id and new_host_id !\u003d old_host_id and"},{"line_number":372,"context_line":"            self._check_valid_port_device_owner(old_port)):"},{"line_number":373,"context_line":"            return old_host_id, [tenant_id, net_id, old_device_id, new_host_id]"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2F0zk%3D","line":371,"updated":"2013-10-09 11:01:50.000000000","message":"Do we need to ensure that there is a new_host_id, as is done for port attachment?","commit_id":"b06e4a3997511f21403ae0da8afc797ef4d8c08b"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"ac3e565c7702c2c72ca2d6f2fcb2ff67343e54a6","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        # An instance is being migrated"},{"line_number":370,"context_line":"        old_host_id \u003d self._get_port_host_id_from_bindings(old_port)"},{"line_number":371,"context_line":"        if (old_device_id and old_host_id and new_host_id !\u003d old_host_id and"},{"line_number":372,"context_line":"            self._check_valid_port_device_owner(old_port)):"},{"line_number":373,"context_line":"            return old_host_id, [tenant_id, net_id, old_device_id, new_host_id]"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2Fz6o%3D","line":371,"in_reply_to":"AAAATH%2F%2F0zk%3D","updated":"2013-10-09 14:27:12.000000000","message":"Not really. The check to old_host_id is to ensure this is a port binding change (meaning the port has already attached to a host earlier)","commit_id":"b06e4a3997511f21403ae0da8afc797ef4d8c08b"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"1a3e17e9bbad63a5db2c1963a5330bd052a81823","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        # An instance is being migrated"},{"line_number":370,"context_line":"        old_host_id \u003d self._get_port_host_id_from_bindings(old_port)"},{"line_number":371,"context_line":"        if (old_device_id and old_host_id and new_host_id !\u003d old_host_id and"},{"line_number":372,"context_line":"            self._check_valid_port_device_owner(old_port)):"},{"line_number":373,"context_line":"            return old_host_id, [tenant_id, net_id, old_device_id, new_host_id]"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"        # no need to invoke the plugin, return an empty list"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2Fz1s%3D","line":372,"updated":"2013-10-09 14:37:09.000000000","message":"Nit: it would be nice for human readers if you indented line 372 one more level (like line 366) to distinguish the test from the action.","commit_id":"c5583cd85c532a7033f06cb20433a0f1534e65a6"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"15351bb9e479da6951226ae20d266c0c615b6d1b","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        # An instance is being migrated"},{"line_number":370,"context_line":"        old_host_id \u003d self._get_port_host_id_from_bindings(old_port)"},{"line_number":371,"context_line":"        if (old_device_id and old_host_id and new_host_id !\u003d old_host_id and"},{"line_number":372,"context_line":"            self._check_valid_port_device_owner(old_port)):"},{"line_number":373,"context_line":"            return old_host_id, [tenant_id, net_id, old_device_id, new_host_id]"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"        # no need to invoke the plugin, return an empty list"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FzmA%3D","line":372,"in_reply_to":"AAAATH%2F%2Fz1s%3D","updated":"2013-10-09 15:19:16.000000000","message":"done","commit_id":"c5583cd85c532a7033f06cb20433a0f1534e65a6"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"49782ae71cb05976fddd123572ff8f84be87eab7","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        net_id \u003d old_port[\u0027network_id\u0027]"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        # A port is attached to an instance"},{"line_number":365,"context_line":"        if (new_device_id and not old_device_id and new_host_id and"},{"line_number":366,"context_line":"                self._check_valid_port_device_owner(new_port)):"},{"line_number":367,"context_line":"            return \u0027\u0027, [tenant_id, net_id, new_device_id, new_host_id]"},{"line_number":368,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATH%2F%2Ftfc%3D","line":365,"updated":"2013-10-10 21:16:20.000000000","message":"This is outside of your change set, but as we discussed, we might need to  open a new bug to handle the detach case (\"if (not new_device_id and old_device_id ...)\", in which case we\u0027d probably need to call delete_port on the nexus plugin). I don\u0027t think this should hold up this migration fix.","commit_id":"d360ca8884001833a6de91adc309777f304e9f8b"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"19821069bccd28a7ed7adb3eb2953ed75b950b41","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        net_id \u003d old_port[\u0027network_id\u0027]"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        # A port is attached to an instance"},{"line_number":365,"context_line":"        if (new_device_id and not old_device_id and new_host_id and"},{"line_number":366,"context_line":"                self._check_valid_port_device_owner(new_port)):"},{"line_number":367,"context_line":"            return \u0027\u0027, [tenant_id, net_id, new_device_id, new_host_id]"},{"line_number":368,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATH%2F%2Ftcs%3D","line":365,"in_reply_to":"AAAATH%2F%2Ftfc%3D","updated":"2013-10-10 21:25:43.000000000","message":"I agree.","commit_id":"d360ca8884001833a6de91adc309777f304e9f8b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"0efec4f7f4da59d896339935afdf780e9ededd6c","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        net_id \u003d old_port[\u0027network_id\u0027]"},{"line_number":363,"context_line":"        old_host_id \u003d self._get_port_host_id_from_bindings(old_port)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        LOG.debug(_(\"tenant_id: %s, net_id: %s, \""},{"line_number":366,"context_line":"                    \"old_device_id: %s, new_device_id: %s, \""},{"line_number":367,"context_line":"                    \"old_host_id: %s, new_host_id: %s, \""},{"line_number":368,"context_line":"                    \"old_device_owner: %s, new_device_owner: %s\" % (tenant_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fi1U%3D","line":365,"updated":"2013-10-14 18:31:02.000000000","message":"Usually when there is more than one argument to the formatting string, named format specifiers are used with a dict:\n\nLOG.debug(_(\"tenant_id %(tenant)s, ...\"), {\u0027tenant\u0027: tenant_id, ...})\n\nAs I understand it, the args are also passed in as a separate argument to the call (as shown).","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"201bcc3882ba7d47ba07e2c524415773603a0e94","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        net_id \u003d old_port[\u0027network_id\u0027]"},{"line_number":363,"context_line":"        old_host_id \u003d self._get_port_host_id_from_bindings(old_port)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        LOG.debug(_(\"tenant_id: %s, net_id: %s, \""},{"line_number":366,"context_line":"                    \"old_device_id: %s, new_device_id: %s, \""},{"line_number":367,"context_line":"                    \"old_host_id: %s, new_host_id: %s, \""},{"line_number":368,"context_line":"                    \"old_device_owner: %s, new_device_owner: %s\" % (tenant_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Feww%3D","line":365,"in_reply_to":"AAAATH%2F%2Fi1U%3D","updated":"2013-10-15 16:41:30.000000000","message":"done","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"}],"neutron/tests/unit/cisco/test_network_plugin.py":[{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"05f3a59385292f1e7675ba96a095ac7a3b7efc90","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import webob.exc as wexc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.api.v2 import base"},{"line_number":25,"context_line":"from neutron.api.v2 import attributes"},{"line_number":26,"context_line":"from neutron.common import exceptions as q_exc"},{"line_number":27,"context_line":"from neutron import context"},{"line_number":28,"context_line":"from neutron.db import db_base_plugin_v2 as base_plugin"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fis8%3D","line":25,"updated":"2013-10-14 19:47:20.000000000","message":"Imports not in alpha order (base vs. attributes)","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"201bcc3882ba7d47ba07e2c524415773603a0e94","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import webob.exc as wexc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.api.v2 import base"},{"line_number":25,"context_line":"from neutron.api.v2 import attributes"},{"line_number":26,"context_line":"from neutron.common import exceptions as q_exc"},{"line_number":27,"context_line":"from neutron import context"},{"line_number":28,"context_line":"from neutron.db import db_base_plugin_v2 as base_plugin"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fewg%3D","line":25,"in_reply_to":"AAAATH%2F%2Fis8%3D","updated":"2013-10-15 16:41:30.000000000","message":"done.","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"05f3a59385292f1e7675ba96a095ac7a3b7efc90","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                mock.patch.object(virt_phy_sw_v2.VirtualPhysicalSwitchModelV2,"},{"line_number":541,"context_line":"                                  \u0027_invoke_nexus_for_net_create\u0027)"},{"line_number":542,"context_line":"               ) as (port, invoke_plugin_per_device,"},{"line_number":543,"context_line":"                           invoke_nexus_for_net_create):"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"            data \u003d {\u0027port\u0027:{portbindings.HOST_ID: \u0027testhost\u0027,"},{"line_number":546,"context_line":"                           \u0027device_id\u0027: \u0027test_device\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fisg%3D","line":543,"updated":"2013-10-14 19:47:20.000000000","message":"Indent messed up?","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"201bcc3882ba7d47ba07e2c524415773603a0e94","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                mock.patch.object(virt_phy_sw_v2.VirtualPhysicalSwitchModelV2,"},{"line_number":541,"context_line":"                                  \u0027_invoke_nexus_for_net_create\u0027)"},{"line_number":542,"context_line":"               ) as (port, invoke_plugin_per_device,"},{"line_number":543,"context_line":"                           invoke_nexus_for_net_create):"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"            data \u003d {\u0027port\u0027:{portbindings.HOST_ID: \u0027testhost\u0027,"},{"line_number":546,"context_line":"                           \u0027device_id\u0027: \u0027test_device\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fewc%3D","line":543,"in_reply_to":"AAAATH%2F%2Fisg%3D","updated":"2013-10-15 16:41:30.000000000","message":"done","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"05f3a59385292f1e7675ba96a095ac7a3b7efc90","unresolved":false,"context_lines":[{"line_number":546,"context_line":"                           \u0027device_id\u0027: \u0027test_device\u0027,"},{"line_number":547,"context_line":"                           \u0027device_owner\u0027: \u0027compute:None\u0027}}"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"            req \u003d self.new_update_request(\u0027ports\u0027, data, port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":550,"context_line":"            # Note, due to mocking out the two model routines, response won\u0027t"},{"line_number":551,"context_line":"            # contain any useful data"},{"line_number":552,"context_line":"            req.get_response(self.api)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fimo%3D","line":549,"updated":"2013-10-14 19:47:20.000000000","message":"In the first 3 test cases you\u0027re adding, it looks like there\u0027s a similar block of\ncode, whereby you\u0027re sending and update request and then asserting on\nexpected arguments in your mocks.  Would it be possible to consolidate\nthese 3 blocks into a helper function?\n\nFor example, for test_model_update_port_attach(), the call to a helper\nfunction could look like:\n     _send_update_and_check_args(port, data, [\u0027update_port\u0027,], True)\nWhere the arguments passed in this case signify:\n    port: Original port\n    data: Updated port data\n    [\u0027update_port\u0027,]: List of func names passed to invoke_plugin_per_device\n    True: invoke_nexus_for_net_create should have been called\n                  (call_count \u003d\u003d 1)\n\nFor test_model_update_port_migrate, the call could look like:\n     _send_update_and_check_args(port, data,\n                                                    [\u0027update_port\u0027, \u0027delete_port], True)\n\nAnd for test_model_update_port_net_create_not_needed:\n    _send_update_and_check_args(port, data, [\u0027update_port\u0027,], False)","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"201bcc3882ba7d47ba07e2c524415773603a0e94","unresolved":false,"context_lines":[{"line_number":546,"context_line":"                           \u0027device_id\u0027: \u0027test_device\u0027,"},{"line_number":547,"context_line":"                           \u0027device_owner\u0027: \u0027compute:None\u0027}}"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"            req \u003d self.new_update_request(\u0027ports\u0027, data, port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":550,"context_line":"            # Note, due to mocking out the two model routines, response won\u0027t"},{"line_number":551,"context_line":"            # contain any useful data"},{"line_number":552,"context_line":"            req.get_response(self.api)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fevs%3D","line":549,"in_reply_to":"AAAATH%2F%2Fimo%3D","updated":"2013-10-15 16:41:30.000000000","message":"well, thought about that. But I intend to keep it straightforward.","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"0efec4f7f4da59d896339935afdf780e9ededd6c","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                      data[\u0027port\u0027][portbindings.HOST_ID],))"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    def test_model_update_port_net_create_not_needed(self):"},{"line_number":607,"context_line":"        \"\"\"Test the model for update_port when no action is needed"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        Mock the routines that call into the plugin code, and make sure that"},{"line_number":610,"context_line":"        VSWITCH plugin is called with correct arguments, while NEXUS plugin is"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fi0c%3D","line":607,"updated":"2013-10-14 18:31:02.000000000","message":"NIT: Add period at end of docstring summary line. Same for next few summary lines for functions.","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"201bcc3882ba7d47ba07e2c524415773603a0e94","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                      data[\u0027port\u0027][portbindings.HOST_ID],))"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    def test_model_update_port_net_create_not_needed(self):"},{"line_number":607,"context_line":"        \"\"\"Test the model for update_port when no action is needed"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        Mock the routines that call into the plugin code, and make sure that"},{"line_number":610,"context_line":"        VSWITCH plugin is called with correct arguments, while NEXUS plugin is"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fevo%3D","line":607,"in_reply_to":"AAAATH%2F%2Fi0c%3D","updated":"2013-10-15 16:41:30.000000000","message":"done","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"05f3a59385292f1e7675ba96a095ac7a3b7efc90","unresolved":false,"context_lines":[{"line_number":659,"context_line":"                            net.get(provider.SEGMENTATION_ID)))"},{"line_number":660,"context_line":"            vlan \u003d net[provider.SEGMENTATION_ID]"},{"line_number":661,"context_line":"            self.assertEqual(vlan, self.vlan_start)"},{"line_number":662,"context_line":"            pb \u003d nexus_db_v2.get_nexusvm_bindings(vlan,"},{"line_number":663,"context_line":"                                                  data[\u0027port\u0027][\u0027device_id\u0027])"},{"line_number":664,"context_line":"            print pb"},{"line_number":665,"context_line":"            self.assertEqual(res[\u0027port\u0027][portbindings.HOST_ID],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fiis%3D","line":662,"updated":"2013-10-14 19:47:20.000000000","message":"Would it make sense to consolidate the following lines into a function (slight variation of these lines appears 3 times):\n    pb \u003d nexus_db_v2.get_nexusvm_bindings(vlan,\n                                              data[\u0027port\u0027][\u0027device_id\u0027])\n          self.assertEqual(res[\u0027port\u0027][portbindings.HOST_ID],\n                             data[\u0027port\u0027][portbindings.HOST_ID])\n          self.assertEqual(len(pb), 1)\n          self.assertEqual(pb[0].port_id, \u0027ethernet:1/1\u0027)\n          self.assertEqual(pb[0].switch_ip, \u00271.1.1.1\u0027)","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"201bcc3882ba7d47ba07e2c524415773603a0e94","unresolved":false,"context_lines":[{"line_number":659,"context_line":"                            net.get(provider.SEGMENTATION_ID)))"},{"line_number":660,"context_line":"            vlan \u003d net[provider.SEGMENTATION_ID]"},{"line_number":661,"context_line":"            self.assertEqual(vlan, self.vlan_start)"},{"line_number":662,"context_line":"            pb \u003d nexus_db_v2.get_nexusvm_bindings(vlan,"},{"line_number":663,"context_line":"                                                  data[\u0027port\u0027][\u0027device_id\u0027])"},{"line_number":664,"context_line":"            print pb"},{"line_number":665,"context_line":"            self.assertEqual(res[\u0027port\u0027][portbindings.HOST_ID],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2FevY%3D","line":662,"in_reply_to":"AAAATH%2F%2Fiis%3D","updated":"2013-10-15 16:41:30.000000000","message":"this makes sense, and I made the change accordingly to your suggestion. It looks better and still straightforward.","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"0efec4f7f4da59d896339935afdf780e9ededd6c","unresolved":false,"context_lines":[{"line_number":661,"context_line":"            self.assertEqual(vlan, self.vlan_start)"},{"line_number":662,"context_line":"            pb \u003d nexus_db_v2.get_nexusvm_bindings(vlan,"},{"line_number":663,"context_line":"                                                  data[\u0027port\u0027][\u0027device_id\u0027])"},{"line_number":664,"context_line":"            print pb"},{"line_number":665,"context_line":"            self.assertEqual(res[\u0027port\u0027][portbindings.HOST_ID],"},{"line_number":666,"context_line":"                             data[\u0027port\u0027][portbindings.HOST_ID])"},{"line_number":667,"context_line":"            self.assertEqual(len(pb), 1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2Fiz8%3D","line":664,"updated":"2013-10-14 18:31:02.000000000","message":"Remove","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"201bcc3882ba7d47ba07e2c524415773603a0e94","unresolved":false,"context_lines":[{"line_number":661,"context_line":"            self.assertEqual(vlan, self.vlan_start)"},{"line_number":662,"context_line":"            pb \u003d nexus_db_v2.get_nexusvm_bindings(vlan,"},{"line_number":663,"context_line":"                                                  data[\u0027port\u0027][\u0027device_id\u0027])"},{"line_number":664,"context_line":"            print pb"},{"line_number":665,"context_line":"            self.assertEqual(res[\u0027port\u0027][portbindings.HOST_ID],"},{"line_number":666,"context_line":"                             data[\u0027port\u0027][portbindings.HOST_ID])"},{"line_number":667,"context_line":"            self.assertEqual(len(pb), 1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATH%2F%2FevU%3D","line":664,"in_reply_to":"AAAATH%2F%2Fiz8%3D","updated":"2013-10-15 16:41:30.000000000","message":"done","commit_id":"b6e3ccd5aefe773fd486cd84ae21bab85f54a7ee"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b1ac0043b1300b4b3846db5f48afc3a9a25b6d19","unresolved":false,"context_lines":[{"line_number":578,"context_line":"            self.assertEqual(invoke_plugin_per_device.call_count, 1)"},{"line_number":579,"context_line":"            self.assertEqual("},{"line_number":580,"context_line":"                invoke_plugin_per_device.call_args_list[0][0][0:2],"},{"line_number":581,"context_line":"                (const.VSWITCH_PLUGIN, \u0027update_port\u0027))"},{"line_number":582,"context_line":"            self.assertEqual(invoke_nexus_for_net_create.call_count, 1)"},{"line_number":583,"context_line":"            self.assertEqual("},{"line_number":584,"context_line":"                invoke_nexus_for_net_create.call_args_list[0][0][1:],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FZww%3D","line":581,"updated":"2013-10-16 16:44:35.000000000","message":"Condier using assert_called_once_with.\n\n  invoke_plugin_per_device.assert_called_once_with(const.VSWITCH_PLUGIN, \u0027update_port\u0027)","commit_id":"49238bf0a2e3954397f89d6483cd512356d5c5e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f2f55b54b01fddad7dbc930e08bd8d87361d3f62","unresolved":false,"context_lines":[{"line_number":578,"context_line":"            self.assertEqual(invoke_plugin_per_device.call_count, 1)"},{"line_number":579,"context_line":"            self.assertEqual("},{"line_number":580,"context_line":"                invoke_plugin_per_device.call_args_list[0][0][0:2],"},{"line_number":581,"context_line":"                (const.VSWITCH_PLUGIN, \u0027update_port\u0027))"},{"line_number":582,"context_line":"            self.assertEqual(invoke_nexus_for_net_create.call_count, 1)"},{"line_number":583,"context_line":"            self.assertEqual("},{"line_number":584,"context_line":"                invoke_nexus_for_net_create.call_args_list[0][0][1:],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FWEk%3D","line":581,"in_reply_to":"AAAATH%2F%2FWHI%3D","updated":"2013-10-17 13:53:43.000000000","message":"I see. As far as I understand, invoke_plugin_per_device takes variable arguments, so there is no easy way to check additional arguments.\n\nLet me suggest to add a comment why you don\u0027t use assert_called_once_with as you describe above. I believe it helps reviewers (and other developers)  leave similar comments like me because assert_called_* is a common practice.","commit_id":"49238bf0a2e3954397f89d6483cd512356d5c5e1"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"7feb9cb9c834993e2709c52b715a9f77a50d135f","unresolved":false,"context_lines":[{"line_number":578,"context_line":"            self.assertEqual(invoke_plugin_per_device.call_count, 1)"},{"line_number":579,"context_line":"            self.assertEqual("},{"line_number":580,"context_line":"                invoke_plugin_per_device.call_args_list[0][0][0:2],"},{"line_number":581,"context_line":"                (const.VSWITCH_PLUGIN, \u0027update_port\u0027))"},{"line_number":582,"context_line":"            self.assertEqual(invoke_nexus_for_net_create.call_count, 1)"},{"line_number":583,"context_line":"            self.assertEqual("},{"line_number":584,"context_line":"                invoke_nexus_for_net_create.call_args_list[0][0][1:],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FWHI%3D","line":581,"in_reply_to":"AAAATH%2F%2FZww%3D","updated":"2013-10-17 13:40:33.000000000","message":"It\u0027s a good suggestion. \n\nI think that the reason I didn\u0027t do that is assert_called_once_with requires exact match of calling arguments. But here I only cares about the first two arguments. It would be difficult, if not possible, to construct the full list of arguments. \n\nThe same holds true with other cases which you have commented on.","commit_id":"49238bf0a2e3954397f89d6483cd512356d5c5e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b1ac0043b1300b4b3846db5f48afc3a9a25b6d19","unresolved":false,"context_lines":[{"line_number":584,"context_line":"                invoke_nexus_for_net_create.call_args_list[0][0][1:],"},{"line_number":585,"context_line":"                (port[\u0027port\u0027][\u0027tenant_id\u0027], port[\u0027port\u0027][\u0027network_id\u0027],"},{"line_number":586,"context_line":"                 data[\u0027port\u0027][\u0027device_id\u0027],"},{"line_number":587,"context_line":"                 data[\u0027port\u0027][portbindings.HOST_ID],))"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"    def test_model_update_port_migrate(self):"},{"line_number":590,"context_line":"        \"\"\"Test the model for update_port in migrating an instance."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FZwQ%3D","line":587,"updated":"2013-10-16 16:44:35.000000000","message":"Same as the above.\n\n  invoke_nexus_for_net_create.assert_called_once_with(mock.ANY, port[\u0027port\u0027][\u0027tenant_id\u0027], ....)","commit_id":"49238bf0a2e3954397f89d6483cd512356d5c5e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b1ac0043b1300b4b3846db5f48afc3a9a25b6d19","unresolved":false,"context_lines":[{"line_number":617,"context_line":"                (const.VSWITCH_PLUGIN, \u0027update_port\u0027))"},{"line_number":618,"context_line":"            self.assertEqual("},{"line_number":619,"context_line":"                invoke_plugin_per_device.call_args_list[1][0][0:2],"},{"line_number":620,"context_line":"                (const.NEXUS_PLUGIN, \u0027delete_port\u0027))"},{"line_number":621,"context_line":"            self.assertEqual(invoke_nexus_for_net_create.call_count, 1)"},{"line_number":622,"context_line":"            self.assertEqual("},{"line_number":623,"context_line":"                invoke_nexus_for_net_create.call_args_list[0][0][1:],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FZvk%3D","line":620,"updated":"2013-10-16 16:44:35.000000000","message":"Consider replacing L.615-620 with:\n\n  invoke_plugin_per_device.assert_has_calls([\n    mock.call(const.VSWITCH_PLUGIN, \u0027update_port\u0027),\n    mock.call(const.NEXUS_PLUGIN, \u0027delete_port\u0027)\n  ])","commit_id":"49238bf0a2e3954397f89d6483cd512356d5c5e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b1ac0043b1300b4b3846db5f48afc3a9a25b6d19","unresolved":false,"context_lines":[{"line_number":623,"context_line":"                invoke_nexus_for_net_create.call_args_list[0][0][1:],"},{"line_number":624,"context_line":"                (port[\u0027port\u0027][\u0027tenant_id\u0027], port[\u0027port\u0027][\u0027network_id\u0027],"},{"line_number":625,"context_line":"                 port[\u0027port\u0027][\u0027device_id\u0027],"},{"line_number":626,"context_line":"                 data[\u0027port\u0027][portbindings.HOST_ID],))"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"    def test_model_update_port_net_create_not_needed(self):"},{"line_number":629,"context_line":"        \"\"\"Test the model for update_port when no action is needed."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FZwA%3D","line":626,"updated":"2013-10-16 16:44:35.000000000","message":"please consider using assert_called_once_with replacing L.621-626.","commit_id":"49238bf0a2e3954397f89d6483cd512356d5c5e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b1ac0043b1300b4b3846db5f48afc3a9a25b6d19","unresolved":false,"context_lines":[{"line_number":657,"context_line":"            self.assertEqual("},{"line_number":658,"context_line":"                invoke_plugin_per_device.call_args_list[0][0][0:2],"},{"line_number":659,"context_line":"                (const.VSWITCH_PLUGIN, \u0027update_port\u0027))"},{"line_number":660,"context_line":"            self.assertEqual(invoke_nexus_for_net_create.called, False)"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def verify_portbinding(self, host_id1, host_id2,"},{"line_number":663,"context_line":"                           vlan, device_id, binding_port):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FZvU%3D","line":660,"updated":"2013-10-16 16:44:35.000000000","message":"ditto","commit_id":"49238bf0a2e3954397f89d6483cd512356d5c5e1"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"55acc9c9a83aeaa64e0032ca878bf89cb1ea30df","unresolved":false,"context_lines":[{"line_number":669,"context_line":"            self.assertEqual("},{"line_number":670,"context_line":"                invoke_plugin_per_device.call_args_list[0][0][0:2],"},{"line_number":671,"context_line":"                (const.VSWITCH_PLUGIN, \u0027update_port\u0027))"},{"line_number":672,"context_line":"            self.assertEqual(invoke_nexus_for_net_create.called, False)"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    def verify_portbinding(self, host_id1, host_id2,"},{"line_number":675,"context_line":"                           vlan, device_id, binding_port):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2FVtQ%3D","line":672,"updated":"2013-10-17 15:08:43.000000000","message":"assertFalse","commit_id":"76ae1fd7bf48839b5a09882c9027ad6284b1059b"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"7000edc3bea07a4be65366a2aa5f4f0e421f75c2","unresolved":false,"context_lines":[{"line_number":669,"context_line":"            self.assertEqual("},{"line_number":670,"context_line":"                invoke_plugin_per_device.call_args_list[0][0][0:2],"},{"line_number":671,"context_line":"                (const.VSWITCH_PLUGIN, \u0027update_port\u0027))"},{"line_number":672,"context_line":"            self.assertEqual(invoke_nexus_for_net_create.called, False)"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    def verify_portbinding(self, host_id1, host_id2,"},{"line_number":675,"context_line":"                           vlan, device_id, binding_port):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2FU9g%3D","line":672,"in_reply_to":"AAAATH%2F%2FVtQ%3D","updated":"2013-10-17 17:19:34.000000000","message":"yea. good catch. done","commit_id":"76ae1fd7bf48839b5a09882c9027ad6284b1059b"}]}
