)]}'
{"nova/tests/fixtures.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":1313,"context_line":"    def list_floatingips(self, retrieve_all\u003dTrue, **_params):"},{"line_number":1314,"context_line":"        return copy.deepcopy({\u0027floatingips\u0027: self._floatingips})"},{"line_number":1315,"context_line":""},{"line_number":1316,"context_line":"    def create_port(self, body\u003dNone):"},{"line_number":1317,"context_line":"        self._ports.append(copy.deepcopy(NeutronFixture.port_2))"},{"line_number":1318,"context_line":"        return copy.deepcopy({\u0027port\u0027: NeutronFixture.port_2})"},{"line_number":1319,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_d286eeb7","line":1316,"updated":"2018-07-30 09:00:04.000000000","message":"This is not a must have for this patch but make sense.","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"}],"nova/tests/functional/libvirt/test_numa_servers.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8dcd9e36c807d25abebdccf64ec708f80e4a4ef","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        self.assertTrue(filter_mock.called)"},{"line_number":357,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, status)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    def test_resize_server_no_network_changes(self):"},{"line_number":360,"context_line":"        extra_spec \u003d {\u0027hw:numa_nodes\u0027: \u00271\u0027}"},{"line_number":361,"context_line":"        flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":362,"context_line":"        networks \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_70fc1fb6","line":359,"range":{"start_line":359,"start_character":13,"end_line":359,"end_character":19},"updated":"2018-07-24 16:29:49.000000000","message":"rebuild?","commit_id":"bfcbcb233e5fe9c2c1aae2c4c6427b7f6f70b8f4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"78a54efb19a0dd3a378f88a9ddedef94fe67ff0b","unresolved":false,"context_lines":[{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, server[\u0027status\u0027])"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        # TODO(stephenfin): Figure out what calls _should_ be setting this"},{"line_number":441,"context_line":"        self.neutron_fixture._ports[0][\u0027device_id\u0027] \u003d server[\u0027id\u0027]"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        # attach an interface from a **different** network"},{"line_number":444,"context_line":"        post \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_abc9d0ab","line":441,"range":{"start_line":440,"start_character":8,"end_line":441,"end_character":66},"updated":"2018-07-25 12:12:12.000000000","message":"this is set as part of _create_port_minimal in neutronv2/api\nhttps://github.com/openstack/nova/blob/bf497cc47497d3a5603bf60de652054ac5ae1993/nova/network/neutronv2/api.py#L477","commit_id":"1e8a811218c0c9dbcfb6c4e7d30bbea21b9de6fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        self._networks \u003d [self.network_1, self.network_2, self.network_3]"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def create_port(self, body\u003dNone):"},{"line_number":281,"context_line":"        if not body:"},{"line_number":282,"context_line":"            # even though \u0027body\u0027 is apparently nullable, body will always be"},{"line_number":283,"context_line":"            # set here"},{"line_number":284,"context_line":"            raise Exception()"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        network_id \u003d body[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":287,"context_line":"        if network_id \u003d\u003d self.network_1[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_43b017fe","line":284,"range":{"start_line":281,"start_character":8,"end_line":284,"end_character":29},"updated":"2018-07-25 22:44:11.000000000","message":"nit: add an exception message and/or change to an assert","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            port \u003d self.network_2_port_1"},{"line_number":291,"context_line":"        else:"},{"line_number":292,"context_line":"            # This is a limited fake"},{"line_number":293,"context_line":"            raise Exception()"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        port \u003d port.copy()"},{"line_number":296,"context_line":"        port.update(body[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_03ca1f6e","line":293,"updated":"2018-07-25 22:44:11.000000000","message":"Add an error message?","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        # attach an interface from the **same** network"},{"line_number":443,"context_line":"        post \u003d {"},{"line_number":444,"context_line":"            \u0027interfaceAttachment\u0027: {"},{"line_number":445,"context_line":"                \u0027net_id\u0027: NUMAAffinityNeutronFixture.network_1[\u0027id\u0027],"},{"line_number":446,"context_line":"            }"},{"line_number":447,"context_line":"        }"},{"line_number":448,"context_line":"        self.api.attach_interface(server[\u0027id\u0027], post)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_e3a12394","line":445,"updated":"2018-07-25 22:44:11.000000000","message":"Would this fail if we attached a port from network_2? And if it would fail, where would it fail? It wouldn\u0027t be during scheduling because if the image doesn\u0027t change on rebuild, it won\u0027t go through the scheduler again.","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93d64fa197073050b7b87c96740414af93e20502","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        # attach an interface from the **same** network"},{"line_number":443,"context_line":"        post \u003d {"},{"line_number":444,"context_line":"            \u0027interfaceAttachment\u0027: {"},{"line_number":445,"context_line":"                \u0027net_id\u0027: NUMAAffinityNeutronFixture.network_1[\u0027id\u0027],"},{"line_number":446,"context_line":"            }"},{"line_number":447,"context_line":"        }"},{"line_number":448,"context_line":"        self.api.attach_interface(server[\u0027id\u0027], post)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_c353c739","line":445,"in_reply_to":"5f7c97a3_03677f54","updated":"2018-07-25 23:05:09.000000000","message":"The reason it didn\u0027t fail is because there was nothing in the info cache. Fixed that and now my changes make it fail:\n\ndiff --git a/nova/tests/functional/libvirt/test_numa_servers.py b/nova/tests/functional/libvirt/test_numa_servers.py\nindex fd62aa1..005bdc3 100644\n--- a/nova/tests/functional/libvirt/test_numa_servers.py\n+++ b/nova/tests/functional/libvirt/test_numa_servers.py\n@@ -429,6 +429,10 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):\n         self.assertEqual(\u0027ACTIVE\u0027, status)\n \n     def test_rebuild_server_no_network_changes(self):\n+        # NOTE(mriedem): Unset the stub methods so we actually run our\n+        # neutronv2/api code and populate the net attributes on the\n+        # network model.\n+        fake_network.unset_stub_network_methods(self)\n         extra_spec \u003d {\u0027hw:numa_nodes\u0027: \u00271\u0027}\n         flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)\n         networks \u003d [\n@@ -442,7 +446,7 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):\n         # attach an interface from the **same** network\n         post \u003d {\n             \u0027interfaceAttachment\u0027: {\n-                \u0027net_id\u0027: NUMAAffinityNeutronFixture.network_1[\u0027id\u0027],\n+                \u0027net_id\u0027: NUMAAffinityNeutronFixture.network_2[\u0027id\u0027],\n             }\n         }\n         self.api.attach_interface(server[\u0027id\u0027], post)\n@@ -450,7 +454,9 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):\n         # now rebuild to the same image. This should work because no new NUMA\n         # constraints were added by attaching another port from the same\n         # network\n-        post \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: server[\u0027image\u0027][\u0027id\u0027]}}\n+        image_id \u003d self.api.get_images()[1][\u0027id\u0027]\n+        self.assertNotEqual(server[\u0027image\u0027][\u0027id\u0027], image_id)\n+        post \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: image_id}}\n         self.api.post_server_action(server[\u0027id\u0027], post)\n         found_server \u003d self._wait_for_state_change(server, \u0027BUILD\u0027)\n         self.assertEqual(\u0027ACTIVE\u0027, found_server[\u0027status\u0027])\nosboxes@osboxes:~/git/nova$ \n\n\nSo what I\u0027d suggest is we add the negative wrinkle to this such that rebuild with no new attachments works, then attach a port from network 2 and rebuild with a new image and it should fail with no valid host.","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"63d9aab5e0dfe7b8c11036f0b0f649ea1af15e0d","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        # attach an interface from the **same** network"},{"line_number":443,"context_line":"        post \u003d {"},{"line_number":444,"context_line":"            \u0027interfaceAttachment\u0027: {"},{"line_number":445,"context_line":"                \u0027net_id\u0027: NUMAAffinityNeutronFixture.network_1[\u0027id\u0027],"},{"line_number":446,"context_line":"            }"},{"line_number":447,"context_line":"        }"},{"line_number":448,"context_line":"        self.api.attach_interface(server[\u0027id\u0027], post)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_03677f54","line":445,"in_reply_to":"5f7c97a3_e3a12394","updated":"2018-07-25 23:01:16.000000000","message":"I changed this to network_2 and it didn\u0027t fail, so this isn\u0027t really testing anything. If you meant for this to go through the scheduler, you\u0027d have to rebuild with a different image.\n\nEven if I change the network *and* the image the rebuild doesn\u0027t fail:\n\ndiff --git a/nova/tests/functional/libvirt/test_numa_servers.py b/nova/tests/functional/libvirt/test_numa_servers.py\nindex fd62aa1..6c6708f 100644\n--- a/nova/tests/functional/libvirt/test_numa_servers.py\n+++ b/nova/tests/functional/libvirt/test_numa_servers.py\n@@ -442,7 +442,7 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):\n         # attach an interface from the **same** network\n         post \u003d {\n             \u0027interfaceAttachment\u0027: {\n-                \u0027net_id\u0027: NUMAAffinityNeutronFixture.network_1[\u0027id\u0027],\n+                \u0027net_id\u0027: NUMAAffinityNeutronFixture.network_2[\u0027id\u0027],\n             }\n         }\n         self.api.attach_interface(server[\u0027id\u0027], post)\n@@ -450,7 +450,9 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):\n         # now rebuild to the same image. This should work because no new NUMA\n         # constraints were added by attaching another port from the same\n         # network\n-        post \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: server[\u0027image\u0027][\u0027id\u0027]}}\n+        image_id \u003d self.api.get_images()[1][\u0027id\u0027]\n+        self.assertNotEqual(server[\u0027image\u0027][\u0027id\u0027], image_id)\n+        post \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: image_id}}\n         self.api.post_server_action(server[\u0027id\u0027], post)\n         found_server \u003d self._wait_for_state_change(server, \u0027BUILD\u0027)\n         self.assertEqual(\u0027ACTIVE\u0027, found_server[\u0027status\u0027])\nosboxes@osboxes:~/git/nova$ \n\n\nSo -1 on this test since it really doesn\u0027t do anything useful as far as I can tell, which also means the changes to the fake libvirt fixture can be removed.","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":473,"context_line":""},{"line_number":474,"context_line":"            # This is fun. Firstly we need to do a global\u0027ish mock so we can"},{"line_number":475,"context_line":"            # actually start the service."},{"line_number":476,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.host.Host.get_connection\u0027,"},{"line_number":477,"context_line":"                            return_value\u003dfake_connection):"},{"line_number":478,"context_line":"                compute \u003d self.start_service(\u0027compute\u0027, host\u003dhost)"},{"line_number":479,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_43ac9787","line":476,"updated":"2018-07-25 22:44:11.000000000","message":"Can\u0027t we re-use self.mock_conn here?","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"441544a6e390149dada2ca1a1138daaf217ec79d","unresolved":false,"context_lines":[{"line_number":473,"context_line":""},{"line_number":474,"context_line":"            # This is fun. Firstly we need to do a global\u0027ish mock so we can"},{"line_number":475,"context_line":"            # actually start the service."},{"line_number":476,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.host.Host.get_connection\u0027,"},{"line_number":477,"context_line":"                            return_value\u003dfake_connection):"},{"line_number":478,"context_line":"                compute \u003d self.start_service(\u0027compute\u0027, host\u003dhost)"},{"line_number":479,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_23b624dd","line":476,"in_reply_to":"5f7c97a3_43ac9787","updated":"2018-07-26 17:10:20.000000000","message":"I dunno, the connection will have different names (L472) right?","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":483,"context_line":"            self.computes[host] \u003d compute"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        # Create server"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"        extra_spec \u003d {\u0027hw:numa_nodes\u0027: \u00271\u0027}"},{"line_number":488,"context_line":"        flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":489,"context_line":"        networks \u003d ["}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_03c69f4b","line":486,"updated":"2018-07-25 22:44:11.000000000","message":"nit: remove blank space","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":495,"context_line":"        post \u003d {\u0027server\u0027: good_server}"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        created_server \u003d self.api.post_server(post)"},{"line_number":498,"context_line":"        found_server \u003d self.api.get_server(created_server[\u0027id\u0027])"},{"line_number":499,"context_line":"        server \u003d self._wait_for_state_change(found_server, \u0027BUILD\u0027)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, server[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_e3ba83b8","line":498,"range":{"start_line":498,"start_character":8,"end_line":498,"end_character":64},"updated":"2018-07-25 22:44:11.000000000","message":"nit: don\u0027t really need this line, just pass created_server since _wait_for_state_change only looks at the id.","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"            # This is fun. Firstly we need to do a global\u0027ish mock so we can"},{"line_number":555,"context_line":"            # actually start the service."},{"line_number":556,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.host.Host.get_connection\u0027,"},{"line_number":557,"context_line":"                            return_value\u003dfake_connection):"},{"line_number":558,"context_line":"                compute \u003d self.start_service(\u0027compute\u0027, host\u003dhost)"},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_23c63b43","line":556,"updated":"2018-07-25 22:44:11.000000000","message":"same","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"441544a6e390149dada2ca1a1138daaf217ec79d","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"            # This is fun. Firstly we need to do a global\u0027ish mock so we can"},{"line_number":555,"context_line":"            # actually start the service."},{"line_number":556,"context_line":"            with mock.patch(\u0027nova.virt.libvirt.host.Host.get_connection\u0027,"},{"line_number":557,"context_line":"                            return_value\u003dfake_connection):"},{"line_number":558,"context_line":"                compute \u003d self.start_service(\u0027compute\u0027, host\u003dhost)"},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_839db859","line":556,"in_reply_to":"5f7c97a3_23c63b43","updated":"2018-07-26 17:10:20.000000000","message":"We can\u0027t here because we need different host infos.","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":563,"context_line":"            self.computes[host] \u003d compute"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        # Create server"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        extra_spec \u003d {\u0027hw:numa_nodes\u0027: \u00271\u0027}"},{"line_number":568,"context_line":"        flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":569,"context_line":"        networks \u003d ["}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_43fa5777","line":566,"updated":"2018-07-25 22:44:11.000000000","message":"same","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":575,"context_line":"        post \u003d {\u0027server\u0027: good_server}"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"        created_server \u003d self.api.post_server(post)"},{"line_number":578,"context_line":"        found_server \u003d self.api.get_server(created_server[\u0027id\u0027])"},{"line_number":579,"context_line":"        server \u003d self._wait_for_state_change(found_server, \u0027BUILD\u0027)"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, server[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_63fd136c","line":578,"updated":"2018-07-25 22:44:11.000000000","message":"same","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                                   self.api.post_server_action,"},{"line_number":589,"context_line":"                                   server[\u0027id\u0027], {\u0027migrate\u0027: None})"},{"line_number":590,"context_line":"            self.assertEqual(400, ex.response.status_code)"},{"line_number":591,"context_line":"            self.assertIn(\u0027No valid host\u0027, ex.response._content)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_e3e843a8","line":591,"updated":"2018-07-25 22:44:11.000000000","message":"nit: I think you can just do this:\n\nself.assertIn(\u0027No valid host\u0027, six.text_type(ex))","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf01e34fcd3b1b2bbada394388afc3030258d4ba","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \u0027binding:vif_type\u0027: \u0027ovs\u0027,"},{"line_number":275,"context_line":"        \u0027binding:vnic_type\u0027: \u0027normal\u0027,"},{"line_number":276,"context_line":"    }"},{"line_number":277,"context_line":"    network_1_port_3 \u003d {"},{"line_number":278,"context_line":"        \u0027id\u0027: \u00279c7580a0-8b01-41f3-ba07-a114709a4b74\u0027,"},{"line_number":279,"context_line":"        \u0027network_id\u0027: network_1[\u0027id\u0027],"},{"line_number":280,"context_line":"        \u0027status\u0027: \u0027ACTIVE\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_298da328","line":277,"updated":"2018-07-26 18:31:43.000000000","message":"nit: put this right after network_1_port_2 is defined.","commit_id":"048492fdc6816e44b3ad26631676d4045c9b5244"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"220fa40d1d444853494070e9a0c71aec5aa91f67","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \u0027binding:vif_type\u0027: \u0027ovs\u0027,"},{"line_number":275,"context_line":"        \u0027binding:vnic_type\u0027: \u0027normal\u0027,"},{"line_number":276,"context_line":"    }"},{"line_number":277,"context_line":"    network_1_port_3 \u003d {"},{"line_number":278,"context_line":"        \u0027id\u0027: \u00279c7580a0-8b01-41f3-ba07-a114709a4b74\u0027,"},{"line_number":279,"context_line":"        \u0027network_id\u0027: network_1[\u0027id\u0027],"},{"line_number":280,"context_line":"        \u0027status\u0027: \u0027ACTIVE\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_64dc2271","line":277,"in_reply_to":"5f7c97a3_298da328","updated":"2018-07-26 19:01:59.000000000","message":"I put this here because the above ordering was so backwards I thought that this was the best I could do. But, okay.","commit_id":"048492fdc6816e44b3ad26631676d4045c9b5244"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf01e34fcd3b1b2bbada394388afc3030258d4ba","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            port \u003d self.network_2_port_1"},{"line_number":308,"context_line":"        else:"},{"line_number":309,"context_line":"            # This is a limited fake"},{"line_number":310,"context_line":"            assert(\u0027There is a bug in your test, sir\u0027)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        port \u003d port.copy()"},{"line_number":313,"context_line":"        port.update(body[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_69a2bb99","line":310,"range":{"start_line":310,"start_character":49,"end_line":310,"end_character":52},"updated":"2018-07-26 18:31:43.000000000","message":"whoa whoa whoa...better watch your ass on the twitters","commit_id":"048492fdc6816e44b3ad26631676d4045c9b5244"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf01e34fcd3b1b2bbada394388afc3030258d4ba","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        self.api.attach_interface(server[\u0027id\u0027], post)"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        post \u003d {\u0027rebuild\u0027: {"},{"line_number":473,"context_line":"            \u0027imageRef\u0027: \u002776fa36fc-c930-4bf3-8c8a-ea2a2420deb6\u0027,"},{"line_number":474,"context_line":"        }}"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        # This should succeed since we haven\u0027t changed the NUMA affinity"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_292923f0","line":473,"range":{"start_line":473,"start_character":25,"end_line":473,"end_character":61},"updated":"2018-07-26 18:31:43.000000000","message":"I\u0027m not totally sure how safe this is. I know the image used to create the server was the [0] entry in the self.api.get_images() response, so it seems we should use [1] here. I might be over-thinking this.","commit_id":"048492fdc6816e44b3ad26631676d4045c9b5244"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"990e5d4b0fc459332a14e0bf361e2a630dbf80ee","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        self.api.attach_interface(server[\u0027id\u0027], post)"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        post \u003d {\u0027rebuild\u0027: {"},{"line_number":473,"context_line":"            \u0027imageRef\u0027: \u002776fa36fc-c930-4bf3-8c8a-ea2a2420deb6\u0027,"},{"line_number":474,"context_line":"        }}"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        # This should succeed since we haven\u0027t changed the NUMA affinity"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_a4dc7a43","line":473,"range":{"start_line":473,"start_character":25,"end_line":473,"end_character":61},"in_reply_to":"5f7c97a3_292923f0","updated":"2018-07-26 19:40:18.000000000","message":"I think it\u0027s reasonably safe: \n\n % grep 76fa36fc-c930-4bf3-8c8a-ea2a2420deb6 -r nova/tests | wc -l\n 99","commit_id":"048492fdc6816e44b3ad26631676d4045c9b5244"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf01e34fcd3b1b2bbada394388afc3030258d4ba","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        # is a cast, but since we are using CastAsCall this will bubble to the"},{"line_number":498,"context_line":"        # API."},{"line_number":499,"context_line":"        self.assertEqual(500, ex.response.status_code)"},{"line_number":500,"context_line":"        self.assertIn(\u0027NoValidHost\u0027, ex.response._content)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_cold_migrate_with_physnet(self):"},{"line_number":503,"context_line":"        # NOTE(mriedem): Unset the stub methods so we actually run our"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_693e3b27","line":500,"range":{"start_line":500,"start_character":37,"end_line":500,"end_character":57},"updated":"2018-07-26 18:31:43.000000000","message":"six.text_type(ex)","commit_id":"048492fdc6816e44b3ad26631676d4045c9b5244"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ca188eb776703df9e85431231827b2a0088d28d0","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            port \u003d self.network_2_port_1"},{"line_number":308,"context_line":"        else:"},{"line_number":309,"context_line":"            # This is a limited fake"},{"line_number":310,"context_line":"            assert(\u0027There is a bug in your test, $gender_neutral_pronoun\u0027)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        port \u003d port.copy()"},{"line_number":313,"context_line":"        port.update(body[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_5b40e432","line":310,"updated":"2018-07-26 20:29:50.000000000","message":"your joke failed pep8","commit_id":"21940a26e302b561f318863b6ef8992d643c32d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    subnet_1 \u003d nova_fixtures.NeutronFixture.subnet_1.copy()"},{"line_number":230,"context_line":"    subnet_1.update({"},{"line_number":231,"context_line":"        \u0027name\u0027: \u0027physical-subnet-foo\u0027,"},{"line_number":232,"context_line":"    })"},{"line_number":233,"context_line":"    subnet_2 \u003d nova_fixtures.NeutronFixture.subnet_1.copy()"},{"line_number":234,"context_line":"    subnet_2.update({"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_b277b2d2","line":231,"updated":"2018-07-30 09:00:04.000000000","message":"Here we don\u0027t need to specify \u0027network_id\u0027 key as NeutronFixture.network_1 has the same id as NUMAAffinityNeutronFixture.network_1. This is a bit more implicit for my taste but I won\u0027t block on this.","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        self._net1_ports \u003d [self.network_1_port_2, self.network_1_port_3]"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def create_port(self, body\u003dNone):"},{"line_number":298,"context_line":"        if not body:"},{"line_number":299,"context_line":"            # even though \u0027body\u0027 is apparently nullable, body will always be"},{"line_number":300,"context_line":"            # set here"},{"line_number":301,"context_line":"            assert(\u0027Body should not be None\u0027)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        network_id \u003d body[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":304,"context_line":"        if network_id \u003d\u003d self.network_1[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_9231560d","line":301,"range":{"start_line":298,"start_character":0,"end_line":301,"end_character":45},"updated":"2018-07-30 09:00:04.000000000","message":"I think you are free to change the signature in the derived class to require body not to be None.","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        network_id \u003d body[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":304,"context_line":"        if network_id \u003d\u003d self.network_1[\u0027id\u0027]:"},{"line_number":305,"context_line":"            port \u003d self._net1_ports.pop(0)"},{"line_number":306,"context_line":"        elif network_id \u003d\u003d self.network_2[\u0027id\u0027]:"},{"line_number":307,"context_line":"            port \u003d self.network_2_port_1"},{"line_number":308,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_9dff27ff","line":305,"range":{"start_line":305,"start_character":12,"end_line":305,"end_character":42},"updated":"2018-07-30 09:00:04.000000000","message":"This could fail a bit strange way, \"pop from empty list\" but I guess that is acceptable for a fixture.","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            port \u003d self.network_2_port_1"},{"line_number":308,"context_line":"        else:"},{"line_number":309,"context_line":"            # This is a limited fake"},{"line_number":310,"context_line":"            assert(\u0027There is a bug in your test, $gender_neutral_pronoun\u0027)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        port \u003d port.copy()"},{"line_number":313,"context_line":"        port.update(body[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_dd103f4f","line":310,"range":{"start_line":310,"start_character":20,"end_line":310,"end_character":47},"updated":"2018-07-30 09:00:04.000000000","message":"If you are trying to help then you can be a lot more helpful.\n\n\"Your test tried to create a port in network %s but the this fixture only allows creating ports in networks [%s, %s]\" % (network_id, self.network_1, self_network_2)","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":309,"context_line":"            # This is a limited fake"},{"line_number":310,"context_line":"            assert(\u0027There is a bug in your test, $gender_neutral_pronoun\u0027)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        port \u003d port.copy()"},{"line_number":313,"context_line":"        port.update(body[\u0027port\u0027])"},{"line_number":314,"context_line":"        self._ports.append(port)"},{"line_number":315,"context_line":"        return {\u0027port\u0027: port}"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_dd57dff4","line":314,"range":{"start_line":312,"start_character":1,"end_line":314,"end_character":32},"updated":"2018-07-30 09:00:04.000000000","message":"I guess this could create two ports with the same id that self.network_2_port_1 has. But it is just a fixture so meh.","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, status)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"    def test_rebuild_server_with_network_affinity(self):"},{"line_number":449,"context_line":"        # NOTE(mriedem): Unset the stub methods so we actually run our"},{"line_number":450,"context_line":"        # neutronv2/api code and populate the net attributes on the"},{"line_number":451,"context_line":"        # network model."},{"line_number":452,"context_line":"        fake_network.unset_stub_network_methods(self)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        extra_spec \u003d {\u0027hw:numa_nodes\u0027: \u00271\u0027}"},{"line_number":455,"context_line":"        flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_387aa1ee","line":452,"range":{"start_line":449,"start_character":8,"end_line":452,"end_character":53},"updated":"2018-07-30 09:00:04.000000000","message":"We can simply remove the global stubbing from L96. Almost all the tests passing without it and our goal here is to test neutronv2/api code.","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        # This should succeed since we haven\u0027t changed the NUMA affinity"},{"line_number":477,"context_line":"        # requirements"},{"line_number":478,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":479,"context_line":"        found_server \u003d self._wait_for_state_change(server, \u0027BUILD\u0027)"},{"line_number":480,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, found_server[\u0027status\u0027])"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        # attach an interface from a **different** network"},{"line_number":483,"context_line":"        post \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_5842fd68","line":480,"range":{"start_line":479,"start_character":0,"end_line":480,"end_character":58},"updated":"2018-07-30 09:00:04.000000000","message":"Ohh this is really confused me. The nova.tests.functional.integrated_helpers.InstanceHelperMixin#_wait_for_state_change() uses an expected state while this calls needs to pass the from_state. :/","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":499,"context_line":"        self.assertEqual(500, ex.response.status_code)"},{"line_number":500,"context_line":"        self.assertIn(\u0027NoValidHost\u0027, six.text_type(ex))"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def test_cold_migrate_with_physnet(self):"},{"line_number":503,"context_line":"        # NOTE(mriedem): Unset the stub methods so we actually run our"},{"line_number":504,"context_line":"        # neutronv2/api code and populate the net attributes on the"},{"line_number":505,"context_line":"        # network model."},{"line_number":506,"context_line":"        fake_network.unset_stub_network_methods(self)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        host_info \u003d fakelibvirt.NUMAHostInfo(cpu_nodes\u003d2, cpu_sockets\u003d1,"},{"line_number":509,"context_line":"                                             cpu_cores\u003d2, cpu_threads\u003d2,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_18fc853d","line":506,"range":{"start_line":502,"start_character":0,"end_line":506,"end_character":53},"updated":"2018-07-30 09:00:04.000000000","message":"Interestingly if I remove all the stubbing and unstubbing then this is the only test that fails. So something is fishy as this test should run without stubbing but it only runs if I first let the setup stub it and then unstub it here.","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"799bfa9dadbdeae6294b0fd08d22ede583a7dfa0","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        self.assertEqual({}, kwargs)"},{"line_number":566,"context_line":"        network_metadata \u003d args[1].network_metadata"},{"line_number":567,"context_line":"        self.assertIsNotNone(network_metadata)"},{"line_number":568,"context_line":"        self.assertEqual(set([\u0027foo\u0027]), network_metadata.physnets)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def test_cold_migrate_with_physnet_fails(self):"},{"line_number":571,"context_line":"        # NOTE(mriedem): Unset the stub methods so we actually run our"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_83fa660e","line":568,"range":{"start_line":568,"start_character":8,"end_line":568,"end_character":65},"updated":"2018-07-30 09:00:04.000000000","message":"This fails[1] if I don\u0027t do the stubbing - unstubbing dance\n\n[1] http://paste.openstack.org/show/726811/","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7fb907efe21c7a23e6fe953609dbd18d944eb0b1","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        self.assertEqual({}, kwargs)"},{"line_number":566,"context_line":"        network_metadata \u003d args[1].network_metadata"},{"line_number":567,"context_line":"        self.assertIsNotNone(network_metadata)"},{"line_number":568,"context_line":"        self.assertEqual(set([\u0027foo\u0027]), network_metadata.physnets)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def test_cold_migrate_with_physnet_fails(self):"},{"line_number":571,"context_line":"        # NOTE(mriedem): Unset the stub methods so we actually run our"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_c12291b7","line":568,"range":{"start_line":568,"start_character":8,"end_line":568,"end_character":65},"in_reply_to":"5f7c97a3_2bfc846f","updated":"2018-07-30 15:16:28.000000000","message":"I tried to remove stub from L96 as I thought that is a base class of this test to make the unstub here unnecessary. But it is not the base class. This caused the test failure I saw. We talked about it on IRC [1] with Dan.\n\n[1] http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2018-07-30.log.html#t2018-07-30T13:52:17","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3209e19f414001e3bdca3c0752df1ddb57a04dcc","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        self.assertEqual({}, kwargs)"},{"line_number":566,"context_line":"        network_metadata \u003d args[1].network_metadata"},{"line_number":567,"context_line":"        self.assertIsNotNone(network_metadata)"},{"line_number":568,"context_line":"        self.assertEqual(set([\u0027foo\u0027]), network_metadata.physnets)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def test_cold_migrate_with_physnet_fails(self):"},{"line_number":571,"context_line":"        # NOTE(mriedem): Unset the stub methods so we actually run our"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_2bfc846f","line":568,"range":{"start_line":568,"start_character":8,"end_line":568,"end_character":65},"in_reply_to":"5f7c97a3_83fa660e","updated":"2018-07-30 13:45:49.000000000","message":"Are you talking about if you remove the fake_network.unset_stub_network_methods()? If so, that\u0027s expected as without that we will never run the new code that sets the physnet attribute in the info_cache, and thus we\u0027ll always fall back to the \"nothing requested or reported so schedule as usual\" case. This was the realization we had and discussed on IRC when initially trying to debug why these wouldn\u0027t fail if we chose the wrong network.\n\nSee Matt\u0027s comments on PS7","commit_id":"5b4141d9c71c944e6f5a9c58d50b7916c7a308af"}],"nova/tests/unit/virt/libvirt/fakelibvirt.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d8f585fd9ca3b2d6f6af39bb9e0076402b448878","unresolved":false,"context_lines":[{"line_number":444,"context_line":"def _parse_nic_info(element):"},{"line_number":445,"context_line":"    nic_info \u003d {}"},{"line_number":446,"context_line":"    nic_info[\u0027type\u0027] \u003d element.get(\u0027type\u0027, \u0027bridge\u0027)"},{"line_number":447,"context_line":"    nic_info[\u0027device\u0027] \u003d element.get(\u0027device\u0027, \u0027disk\u0027)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    driver \u003d element.find(\u0027./mac\u0027)"},{"line_number":450,"context_line":"    if driver is not None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_83cdcf93","line":447,"range":{"start_line":447,"start_character":48,"end_line":447,"end_character":52},"updated":"2018-07-25 22:44:11.000000000","message":"uhh, copy/paste error?","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b413e6b0f4dc323b936653bd689c56ce10707bf6","unresolved":false,"context_lines":[{"line_number":444,"context_line":"def _parse_nic_info(element):"},{"line_number":445,"context_line":"    nic_info \u003d {}"},{"line_number":446,"context_line":"    nic_info[\u0027type\u0027] \u003d element.get(\u0027type\u0027, \u0027bridge\u0027)"},{"line_number":447,"context_line":"    nic_info[\u0027device\u0027] \u003d element.get(\u0027device\u0027, \u0027disk\u0027)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    driver \u003d element.find(\u0027./mac\u0027)"},{"line_number":450,"context_line":"    if driver is not None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_8978772c","line":447,"range":{"start_line":447,"start_character":48,"end_line":447,"end_character":52},"in_reply_to":"5f7c97a3_63bbbcbd","updated":"2018-07-26 18:26:05.000000000","message":"This line should just be removed because LibvirtConfigGuestInterface doesn\u0027t have a device element.","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5734176b522755ea7e7b2e0381871121b62abeba","unresolved":false,"context_lines":[{"line_number":444,"context_line":"def _parse_nic_info(element):"},{"line_number":445,"context_line":"    nic_info \u003d {}"},{"line_number":446,"context_line":"    nic_info[\u0027type\u0027] \u003d element.get(\u0027type\u0027, \u0027bridge\u0027)"},{"line_number":447,"context_line":"    nic_info[\u0027device\u0027] \u003d element.get(\u0027device\u0027, \u0027disk\u0027)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    driver \u003d element.find(\u0027./mac\u0027)"},{"line_number":450,"context_line":"    if driver is not None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_63bbbcbd","line":447,"range":{"start_line":447,"start_character":48,"end_line":447,"end_character":52},"in_reply_to":"5f7c97a3_83cdcf93","updated":"2018-07-26 17:12:21.000000000","message":"Probably, but this is just the name of a network device, which doesn\u0027t really matter, right?","commit_id":"023e417c36ad20fd67130a4de586d7c7a71fe0cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf01e34fcd3b1b2bbada394388afc3030258d4ba","unresolved":false,"context_lines":[{"line_number":444,"context_line":"def _parse_nic_info(element):"},{"line_number":445,"context_line":"    nic_info \u003d {}"},{"line_number":446,"context_line":"    nic_info[\u0027type\u0027] \u003d element.get(\u0027type\u0027, \u0027bridge\u0027)"},{"line_number":447,"context_line":"    nic_info[\u0027device\u0027] \u003d element.get(\u0027device\u0027, \u0027net\u0027)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    driver \u003d element.find(\u0027./mac\u0027)"},{"line_number":450,"context_line":"    if driver is not None:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_e90b2b79","line":447,"range":{"start_line":447,"start_character":4,"end_line":447,"end_character":53},"updated":"2018-07-26 18:31:43.000000000","message":"Just remove this line, LibvirtConfigGuestInterface doesn\u0027t have a device element.","commit_id":"048492fdc6816e44b3ad26631676d4045c9b5244"}]}
