)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":12,"context_line":"lot of fake_network.set_stub_network_methods() calls from the tests."},{"line_number":13,"context_line":"The remaining calls are not that trivial to remove so those are left it"},{"line_number":14,"context_line":"in for a later patch."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1dbccc2be6ba79bf267edac9208c80e187e6256a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_47be7a64","line":15,"updated":"2018-07-31 13:32:50.000000000","message":"If you plan on leaving that libvirt fixture change in, you should probably call it out.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"}],"nova/tests/fixtures.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":1317,"context_line":"        return copy.deepcopy({\u0027floatingips\u0027: self._floatingips})"},{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"    def create_port(self, body\u003dNone):"},{"line_number":1320,"context_line":"        if NeutronFixture.port_2 not in self._ports:"},{"line_number":1321,"context_line":"            new_port \u003d NeutronFixture.port_2"},{"line_number":1322,"context_line":"            self._ports.append(new_port)"},{"line_number":1323,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_e75226da","line":1320,"range":{"start_line":1320,"start_character":8,"end_line":1320,"end_character":52},"updated":"2018-07-31 13:32:50.000000000","message":"Seems a bit weird to be looking for a dict in a list rather than by the port id key if self._ports was a dict keyed by port id.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0025f8bb427d344943a853334bd6e9cfdc0fe9a8","unresolved":false,"context_lines":[{"line_number":1317,"context_line":"        return copy.deepcopy({\u0027floatingips\u0027: self._floatingips})"},{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"    def create_port(self, body\u003dNone):"},{"line_number":1320,"context_line":"        if NeutronFixture.port_2 not in self._ports:"},{"line_number":1321,"context_line":"            new_port \u003d NeutronFixture.port_2"},{"line_number":1322,"context_line":"            self._ports.append(new_port)"},{"line_number":1323,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_e2aa146b","line":1320,"range":{"start_line":1320,"start_character":8,"end_line":1320,"end_character":52},"in_reply_to":"5f7c97a3_e75226da","updated":"2018-07-31 14:16:12.000000000","message":"Yeah, I think the next step is to do a cleanup on the fixture code. The _ports list exists already before this patch so I think this refactor needs a separate patch.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"    def create_port(self, body\u003dNone):"},{"line_number":1320,"context_line":"        if NeutronFixture.port_2 not in self._ports:"},{"line_number":1321,"context_line":"            new_port \u003d NeutronFixture.port_2"},{"line_number":1322,"context_line":"            self._ports.append(new_port)"},{"line_number":1323,"context_line":"        else:"},{"line_number":1324,"context_line":"            new_port \u003d copy.deepcopy(NeutronFixture.port_2)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_87f6d2d4","line":1321,"range":{"start_line":1321,"start_character":12,"end_line":1321,"end_character":44},"updated":"2018-07-31 13:32:50.000000000","message":"Why not do the deepcopy here as well? I guess you do it on L1331 below.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6945530477f2748bae42f7b0133d5f063580f42b","unresolved":false,"context_lines":[{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"    def create_port(self, body\u003dNone):"},{"line_number":1320,"context_line":"        if NeutronFixture.port_2 not in self._ports:"},{"line_number":1321,"context_line":"            new_port \u003d NeutronFixture.port_2"},{"line_number":1322,"context_line":"            self._ports.append(new_port)"},{"line_number":1323,"context_line":"        else:"},{"line_number":1324,"context_line":"            new_port \u003d copy.deepcopy(NeutronFixture.port_2)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_e6fe8802","line":1321,"range":{"start_line":1321,"start_character":12,"end_line":1321,"end_character":44},"in_reply_to":"5f7c97a3_2287ac14","updated":"2018-08-01 15:29:40.000000000","message":"After I spent half a day to figure out why that single functional test fails now that the problem is here. We do have to return a copy to the caller but we also need to make sure that the port we store in the self._ports is also a copy as a show_port + update_port compo can modify the port in self._port. In this case that leads to the modification of a class variable that causes test case interference.\n\nThis also means that your above comment about the condition is also relevant as if we copy then we need to search by id. I will push a follow up that refactor the fixture to remove this uglyness.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0025f8bb427d344943a853334bd6e9cfdc0fe9a8","unresolved":false,"context_lines":[{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"    def create_port(self, body\u003dNone):"},{"line_number":1320,"context_line":"        if NeutronFixture.port_2 not in self._ports:"},{"line_number":1321,"context_line":"            new_port \u003d NeutronFixture.port_2"},{"line_number":1322,"context_line":"            self._ports.append(new_port)"},{"line_number":1323,"context_line":"        else:"},{"line_number":1324,"context_line":"            new_port \u003d copy.deepcopy(NeutronFixture.port_2)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_2287ac14","line":1321,"range":{"start_line":1321,"start_character":12,"end_line":1321,"end_character":44},"in_reply_to":"5f7c97a3_87f6d2d4","updated":"2018-07-31 14:16:12.000000000","message":"Yeah we need to copy what we return as nova tend to modified the returned dict.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":1321,"context_line":"            new_port \u003d NeutronFixture.port_2"},{"line_number":1322,"context_line":"            self._ports.append(new_port)"},{"line_number":1323,"context_line":"        else:"},{"line_number":1324,"context_line":"            new_port \u003d copy.deepcopy(NeutronFixture.port_2)"},{"line_number":1325,"context_line":"            # we need truly random uuids instead of named sentinels as some"},{"line_number":1326,"context_line":"            # tests needs more than 3 ports"},{"line_number":1327,"context_line":"            new_port[\u0027id\u0027] \u003d str(uuidutils.generate_uuid())"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a7cc2e8a","line":1324,"range":{"start_line":1324,"start_character":23,"end_line":1324,"end_character":36},"updated":"2018-07-31 13:32:50.000000000","message":"Is this necessary since it\u0027s done on L1331 below?","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0025f8bb427d344943a853334bd6e9cfdc0fe9a8","unresolved":false,"context_lines":[{"line_number":1321,"context_line":"            new_port \u003d NeutronFixture.port_2"},{"line_number":1322,"context_line":"            self._ports.append(new_port)"},{"line_number":1323,"context_line":"        else:"},{"line_number":1324,"context_line":"            new_port \u003d copy.deepcopy(NeutronFixture.port_2)"},{"line_number":1325,"context_line":"            # we need truly random uuids instead of named sentinels as some"},{"line_number":1326,"context_line":"            # tests needs more than 3 ports"},{"line_number":1327,"context_line":"            new_port[\u0027id\u0027] \u003d str(uuidutils.generate_uuid())"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_e291b446","line":1324,"range":{"start_line":1324,"start_character":23,"end_line":1324,"end_character":36},"in_reply_to":"5f7c97a3_a7cc2e8a","updated":"2018-07-31 14:16:12.000000000","message":"We need the double copy. First we don\u0027t want to modify port_2 below as that might be queried later with show_port. So we make a copy here and modify it to get a new port. Then we have to copy the new port again when it is returned to nova as we put the new port in the self._ports list of the fixture and we don\u0027t want Nova to modify the port in that list from the distance.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"171e2e3ea004ce45141657f52b5b21eda09078e3","unresolved":false,"context_lines":[{"line_number":1325,"context_line":"            self._ports.append(new_port)"},{"line_number":1326,"context_line":"        else:"},{"line_number":1327,"context_line":"            new_port \u003d copy.deepcopy(NeutronFixture.port_2)"},{"line_number":1328,"context_line":"            # we need truly random uuids instead of named sentinels as some"},{"line_number":1329,"context_line":"            # tests needs more than 3 ports"},{"line_number":1330,"context_line":"            new_port[\u0027id\u0027] \u003d str(uuidutils.generate_uuid())"},{"line_number":1331,"context_line":"            new_port[\u0027mac_address\u0027] \u003d \u002700:\u0027 + \u0027:\u0027.join("},{"line_number":1332,"context_line":"                [\u0027%02x\u0027 % random.randint(0, 255) for _ in range(5)])"},{"line_number":1333,"context_line":"            self._ports.append(new_port)"},{"line_number":1334,"context_line":"        return {\u0027port\u0027: copy.deepcopy(new_port)}"},{"line_number":1335,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_32cca731","line":1332,"range":{"start_line":1328,"start_character":0,"end_line":1332,"end_character":68},"updated":"2018-08-02 13:03:33.000000000","message":"nit: I\u0027d have found this slightly easier to read as\n\n  new_port.update({\n      \u0027id\u0027: str(uuidutils.generate_uuid()),\n      \u0027mac_address\u0027: \u002700:\u0027 + \u0027:\u0027.join(\n            [\u0027%02x\u0027 % random.randint(0, 255) for _ in range(5)]),\n  })\n\nBut that\u0027s purely stylistic","commit_id":"10ab506c75bfa59f3c836671edc1d97b8a02398c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6c70c6a018e7dd761bff1cc708f2d2afad41736","unresolved":false,"context_lines":[{"line_number":1325,"context_line":"            self._ports.append(new_port)"},{"line_number":1326,"context_line":"        else:"},{"line_number":1327,"context_line":"            new_port \u003d copy.deepcopy(NeutronFixture.port_2)"},{"line_number":1328,"context_line":"            # we need truly random uuids instead of named sentinels as some"},{"line_number":1329,"context_line":"            # tests needs more than 3 ports"},{"line_number":1330,"context_line":"            new_port[\u0027id\u0027] \u003d str(uuidutils.generate_uuid())"},{"line_number":1331,"context_line":"            new_port[\u0027mac_address\u0027] \u003d \u002700:\u0027 + \u0027:\u0027.join("},{"line_number":1332,"context_line":"                [\u0027%02x\u0027 % random.randint(0, 255) for _ in range(5)])"},{"line_number":1333,"context_line":"            self._ports.append(new_port)"},{"line_number":1334,"context_line":"        return {\u0027port\u0027: copy.deepcopy(new_port)}"},{"line_number":1335,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_8db0fa42","line":1332,"range":{"start_line":1328,"start_character":0,"end_line":1332,"end_character":68},"in_reply_to":"5f7c97a3_32cca731","updated":"2018-08-02 13:15:39.000000000","message":"Done","commit_id":"10ab506c75bfa59f3c836671edc1d97b8a02398c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"171e2e3ea004ce45141657f52b5b21eda09078e3","unresolved":false,"context_lines":[{"line_number":1331,"context_line":"            new_port[\u0027mac_address\u0027] \u003d \u002700:\u0027 + \u0027:\u0027.join("},{"line_number":1332,"context_line":"                [\u0027%02x\u0027 % random.randint(0, 255) for _ in range(5)])"},{"line_number":1333,"context_line":"            self._ports.append(new_port)"},{"line_number":1334,"context_line":"        return {\u0027port\u0027: copy.deepcopy(new_port)}"},{"line_number":1335,"context_line":""},{"line_number":1336,"context_line":"    def update_port(self, port_id, body\u003dNone):"},{"line_number":1337,"context_line":"        new_port \u003d self._get_first_id_match(port_id, self._ports)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_b2d757bd","line":1334,"range":{"start_line":1334,"start_character":24,"end_line":1334,"end_character":37},"updated":"2018-08-02 13:03:33.000000000","message":"nit: I wonder if necessary? It was present in the original but I\u0027m not sure why","commit_id":"10ab506c75bfa59f3c836671edc1d97b8a02398c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6c70c6a018e7dd761bff1cc708f2d2afad41736","unresolved":false,"context_lines":[{"line_number":1331,"context_line":"            new_port[\u0027mac_address\u0027] \u003d \u002700:\u0027 + \u0027:\u0027.join("},{"line_number":1332,"context_line":"                [\u0027%02x\u0027 % random.randint(0, 255) for _ in range(5)])"},{"line_number":1333,"context_line":"            self._ports.append(new_port)"},{"line_number":1334,"context_line":"        return {\u0027port\u0027: copy.deepcopy(new_port)}"},{"line_number":1335,"context_line":""},{"line_number":1336,"context_line":"    def update_port(self, port_id, body\u003dNone):"},{"line_number":1337,"context_line":"        new_port \u003d self._get_first_id_match(port_id, self._ports)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_ad84d657","line":1334,"range":{"start_line":1334,"start_character":24,"end_line":1334,"end_character":37},"in_reply_to":"5f7c97a3_b2d757bd","updated":"2018-08-02 13:15:39.000000000","message":"Yes it is. I learned it in the hard way: https://review.openstack.org/#/c/587412/1/nova/tests/fixtures.py@1321","commit_id":"10ab506c75bfa59f3c836671edc1d97b8a02398c"}],"nova/tests/functional/db/test_request_spec.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        instance_uuid\u003dinstance_uuid).delete()"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"class RequestSpecInstanceMigrationTestCase("},{"line_number":95,"context_line":"        integrated_helpers._IntegratedTestBase):"},{"line_number":96,"context_line":"    api_major_version \u003d \u0027v2.1\u0027"},{"line_number":97,"context_line":"    _image_ref_parameter \u003d \u0027imageRef\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_27b57ed0","line":94,"range":{"start_line":94,"start_character":6,"end_line":94,"end_character":42},"updated":"2018-07-31 13:32:50.000000000","message":"This isn\u0027t setting USE_NEUTRON\u003dTrue so it\u0027s not using the NeutronFixture.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0025f8bb427d344943a853334bd6e9cfdc0fe9a8","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        instance_uuid\u003dinstance_uuid).delete()"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"class RequestSpecInstanceMigrationTestCase("},{"line_number":95,"context_line":"        integrated_helpers._IntegratedTestBase):"},{"line_number":96,"context_line":"    api_major_version \u003d \u0027v2.1\u0027"},{"line_number":97,"context_line":"    _image_ref_parameter \u003d \u0027imageRef\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_42066887","line":94,"range":{"start_line":94,"start_character":6,"end_line":94,"end_character":42},"in_reply_to":"5f7c97a3_27b57ed0","updated":"2018-07-31 14:16:12.000000000","message":"It seems it doesn\u0027t depend on any networking code at all. But to be on the safe side I can add USE_NEUTRON \u003d True as the end goal is to have every test uses that.\n\nDone.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"}],"nova/tests/functional/libvirt/test_numa_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":58,"context_line":"           \u0027nova.virt.libvirt.guest.libvirt\u0027,"},{"line_number":59,"context_line":"           fakelibvirt))"},{"line_number":60,"context_line":"        self.useFixture(fakelibvirt.FakeLibvirtFixture())"},{"line_number":61,"context_line":"        self.useFixture(nova_fixtures.PlacementFixture())"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _setup_compute_service(self):"},{"line_number":64,"context_line":"        # we need to mock some libvirt stuff so we start this service in the"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_c7c36a38","side":"PARENT","line":61,"updated":"2018-07-31 13:32:50.000000000","message":"unrelated?","commit_id":"25b3e2d69be92efc243c814d8e459356ab0339a2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8f9506e6569d326a2376862a5bcf0c3d2da8a340","unresolved":false,"context_lines":[{"line_number":58,"context_line":"           \u0027nova.virt.libvirt.guest.libvirt\u0027,"},{"line_number":59,"context_line":"           fakelibvirt))"},{"line_number":60,"context_line":"        self.useFixture(fakelibvirt.FakeLibvirtFixture())"},{"line_number":61,"context_line":"        self.useFixture(nova_fixtures.PlacementFixture())"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _setup_compute_service(self):"},{"line_number":64,"context_line":"        # we need to mock some libvirt stuff so we start this service in the"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_d9c82e4e","side":"PARENT","line":61,"in_reply_to":"5f7c97a3_c264b84f","updated":"2018-07-31 14:35:10.000000000","message":"Separate patch for the PlacementFixture: https://review.openstack.org/587490","commit_id":"25b3e2d69be92efc243c814d8e459356ab0339a2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0025f8bb427d344943a853334bd6e9cfdc0fe9a8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"           \u0027nova.virt.libvirt.guest.libvirt\u0027,"},{"line_number":59,"context_line":"           fakelibvirt))"},{"line_number":60,"context_line":"        self.useFixture(fakelibvirt.FakeLibvirtFixture())"},{"line_number":61,"context_line":"        self.useFixture(nova_fixtures.PlacementFixture())"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _setup_compute_service(self):"},{"line_number":64,"context_line":"        # we need to mock some libvirt stuff so we start this service in the"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_c264b84f","side":"PARENT","line":61,"in_reply_to":"5f7c97a3_c7c36a38","updated":"2018-07-31 14:16:12.000000000","message":"Yes. I will pull this into a separate patch. Done.","commit_id":"25b3e2d69be92efc243c814d8e459356ab0339a2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"171e2e3ea004ce45141657f52b5b21eda09078e3","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"class NUMAServersWithNetworksTest(NUMAServersTestBase):"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    USE_NEUTRON \u003d True"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def setUp(self):"},{"line_number":337,"context_line":"        # We need to enable neutron in this one"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_1265eb1b","line":334,"range":{"start_line":333,"start_character":0,"end_line":334,"end_character":22},"updated":"2018-08-02 13:03:33.000000000","message":"nit: Guess we don\u0027t need this anymore since it\u0027s set in ServersTestBase","commit_id":"10ab506c75bfa59f3c836671edc1d97b8a02398c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6c70c6a018e7dd761bff1cc708f2d2afad41736","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"class NUMAServersWithNetworksTest(NUMAServersTestBase):"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    USE_NEUTRON \u003d True"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def setUp(self):"},{"line_number":337,"context_line":"        # We need to enable neutron in this one"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_cd3cb2c1","line":334,"range":{"start_line":333,"start_character":0,"end_line":334,"end_character":22},"in_reply_to":"5f7c97a3_1265eb1b","updated":"2018-08-02 13:15:39.000000000","message":"Done","commit_id":"10ab506c75bfa59f3c836671edc1d97b8a02398c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"171e2e3ea004ce45141657f52b5b21eda09078e3","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        _p \u003d mock.patch(\u0027nova.virt.libvirt.host.Host.get_connection\u0027)"},{"line_number":353,"context_line":"        self.mock_conn \u003d _p.start()"},{"line_number":354,"context_line":"        self.addCleanup(_p.stop)"},{"line_number":355,"context_line":"        os_vif.initialize()"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    def _test_create_server_with_networks(self, flavor_id, networks):"},{"line_number":358,"context_line":"        host_info \u003d fakelibvirt.NUMAHostInfo(cpu_nodes\u003d2, cpu_sockets\u003d1,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_522da3ab","line":355,"range":{"start_line":355,"start_character":0,"end_line":355,"end_character":27},"updated":"2018-08-02 13:03:33.000000000","message":"Should this be removed?","commit_id":"10ab506c75bfa59f3c836671edc1d97b8a02398c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6c70c6a018e7dd761bff1cc708f2d2afad41736","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        _p \u003d mock.patch(\u0027nova.virt.libvirt.host.Host.get_connection\u0027)"},{"line_number":353,"context_line":"        self.mock_conn \u003d _p.start()"},{"line_number":354,"context_line":"        self.addCleanup(_p.stop)"},{"line_number":355,"context_line":"        os_vif.initialize()"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    def _test_create_server_with_networks(self, flavor_id, networks):"},{"line_number":358,"context_line":"        host_info \u003d fakelibvirt.NUMAHostInfo(cpu_nodes\u003d2, cpu_sockets\u003d1,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_ad3db6b9","line":355,"range":{"start_line":355,"start_character":0,"end_line":355,"end_character":27},"in_reply_to":"5f7c97a3_522da3ab","updated":"2018-08-02 13:15:39.000000000","message":"Done","commit_id":"10ab506c75bfa59f3c836671edc1d97b8a02398c"}],"nova/tests/functional/test_multiattach.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.useFixture(nova_fixtures.AllServicesCurrent())"},{"line_number":37,"context_line":"        super(TestMultiattachVolumes, self).setUp()"},{"line_number":38,"context_line":"        self.useFixture(nova_fixtures.CinderFixtureNewAttachFlow(self))"},{"line_number":39,"context_line":"        self.useFixture(nova_fixtures.NeutronFixture(self))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_boot_from_volume_and_attach_to_second_server(self):"},{"line_number":42,"context_line":"        \"\"\"This scenario creates a server from the multiattach volume, waits"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_e706a674","side":"PARENT","line":39,"updated":"2018-07-31 13:32:50.000000000","message":"Yeah this is OK because of USE_NEUTRON\u003dTrue it happens in _IntegratedTestBase.","commit_id":"25b3e2d69be92efc243c814d8e459356ab0339a2"}],"nova/tests/functional/test_server_group.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.flags(report_interval\u003dself._report_interval)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        self.useFixture(policy_fixture.RealPolicyFixture())"},{"line_number":74,"context_line":"        self.useFixture(nova_fixtures.NeutronFixture(self))"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.useFixture(nova_fixtures.PlacementFixture())"},{"line_number":77,"context_line":"        api_fixture \u003d self.useFixture(nova_fixtures.OSAPIFixture("}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_87f1f266","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":59},"updated":"2018-07-31 13:32:50.000000000","message":"ack; neutron is setup here","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def setUp(self):"},{"line_number":75,"context_line":"        self.computes \u003d {}"},{"line_number":76,"context_line":"        super(ServersTestBase, self).setUp()"},{"line_number":77,"context_line":"        # The network service is called as part of server creates but no"},{"line_number":78,"context_line":"        # networks have been populated in the db, so stub the methods."},{"line_number":79,"context_line":"        # The networks aren\u0027t relevant to what is being tested."},{"line_number":80,"context_line":"        self.conductor \u003d self.start_service("},{"line_number":81,"context_line":"            \u0027conductor\u0027, manager\u003d\u0027nova.conductor.manager.ConductorManager\u0027)"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a752ee66","line":79,"range":{"start_line":77,"start_character":8,"end_line":79,"end_character":63},"updated":"2018-07-31 13:32:50.000000000","message":"This no longer applies.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0025f8bb427d344943a853334bd6e9cfdc0fe9a8","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def setUp(self):"},{"line_number":75,"context_line":"        self.computes \u003d {}"},{"line_number":76,"context_line":"        super(ServersTestBase, self).setUp()"},{"line_number":77,"context_line":"        # The network service is called as part of server creates but no"},{"line_number":78,"context_line":"        # networks have been populated in the db, so stub the methods."},{"line_number":79,"context_line":"        # The networks aren\u0027t relevant to what is being tested."},{"line_number":80,"context_line":"        self.conductor \u003d self.start_service("},{"line_number":81,"context_line":"            \u0027conductor\u0027, manager\u003d\u0027nova.conductor.manager.ConductorManager\u0027)"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_0242b067","line":79,"range":{"start_line":77,"start_character":8,"end_line":79,"end_character":63},"in_reply_to":"5f7c97a3_a752ee66","updated":"2018-07-31 14:16:12.000000000","message":"Done.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"}],"nova/tests/unit/test_notifications.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":59,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self.flags(network_manager\u003d\u0027nova.network.manager.FlatManager\u0027,"},{"line_number":62,"context_line":"                   host\u003d\u0027testhost\u0027)"},{"line_number":63,"context_line":"        self.flags(notify_on_state_change\u003d\"vm_and_task_state\","},{"line_number":64,"context_line":"                   group\u003d\u0027notifications\u0027)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a7d74ec0","line":62,"range":{"start_line":61,"start_character":8,"end_line":62,"end_character":35},"updated":"2018-07-31 13:32:50.000000000","message":"Hmm, clearly this think it\u0027s using nova-network.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0025f8bb427d344943a853334bd6e9cfdc0fe9a8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        fake_notifier.stub_notifier(self)"},{"line_number":59,"context_line":"        self.addCleanup(fake_notifier.reset)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self.flags(network_manager\u003d\u0027nova.network.manager.FlatManager\u0027,"},{"line_number":62,"context_line":"                   host\u003d\u0027testhost\u0027)"},{"line_number":63,"context_line":"        self.flags(notify_on_state_change\u003d\"vm_and_task_state\","},{"line_number":64,"context_line":"                   group\u003d\u0027notifications\u0027)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_56062d87","line":62,"range":{"start_line":61,"start_character":8,"end_line":62,"end_character":35},"in_reply_to":"5f7c97a3_a7d74ec0","updated":"2018-07-31 14:16:12.000000000","message":"I don\u0027t know why it thinks that but it doesn\u0027t need the FlatManager config at all. Removed.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"}],"nova/tests/unit/virt/libvirt/fakelibvirt.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbb9bb0d675879e9809412ae8ef17d20bab9362","unresolved":false,"context_lines":[{"line_number":1574,"context_line":"                \u0027nova.virt.libvirt.vif.LibvirtGenericVIFDriver._plug_os_vif\u0027,"},{"line_number":1575,"context_line":"                lambda *a, **kw: None))"},{"line_number":1576,"context_line":""},{"line_number":1577,"context_line":"        # os_vif.initialize is typically done in nova-compute startup"},{"line_number":1578,"context_line":"        # even if we are not planning to plug anything with os_vif in the test"},{"line_number":1579,"context_line":"        # we still need the object model initialized to be able to generate"},{"line_number":1580,"context_line":"        # guest config xml properly"},{"line_number":1581,"context_line":"        import os_vif"},{"line_number":1582,"context_line":"        os_vif.initialize()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_87d812ed","line":1582,"range":{"start_line":1577,"start_character":8,"end_line":1582,"end_character":27},"updated":"2018-07-31 13:32:50.000000000","message":"unrelated?","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0025f8bb427d344943a853334bd6e9cfdc0fe9a8","unresolved":false,"context_lines":[{"line_number":1574,"context_line":"                \u0027nova.virt.libvirt.vif.LibvirtGenericVIFDriver._plug_os_vif\u0027,"},{"line_number":1575,"context_line":"                lambda *a, **kw: None))"},{"line_number":1576,"context_line":""},{"line_number":1577,"context_line":"        # os_vif.initialize is typically done in nova-compute startup"},{"line_number":1578,"context_line":"        # even if we are not planning to plug anything with os_vif in the test"},{"line_number":1579,"context_line":"        # we still need the object model initialized to be able to generate"},{"line_number":1580,"context_line":"        # guest config xml properly"},{"line_number":1581,"context_line":"        import os_vif"},{"line_number":1582,"context_line":"        os_vif.initialize()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_16cd152e","line":1582,"range":{"start_line":1577,"start_character":8,"end_line":1582,"end_character":27},"in_reply_to":"5f7c97a3_87d812ed","updated":"2018-07-31 14:16:12.000000000","message":"No, it is related.\n\nThe numa functional tests that use the libvirt fixture actually runs the virt code that creates objects from os_vif. The os_vif.initialize() registers such ovos. So either we stub some extra functions in the libvirt fixture or simply initialize the os_vif lib here.","commit_id":"cea2d5c2207d9409cba6c4bbfa873770ec320c53"}]}
