)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"7b3a8678bfb766046e281742d91798c70c9ee8dc","unresolved":false,"context_lines":[{"line_number":10739,"context_line":"                self.context, inst_ref, block_device_info, [], None,"},{"line_number":10740,"context_line":"                migrate_data)"},{"line_number":10741,"context_line":""},{"line_number":10742,"context_line":"            expected_connect_volume_calls \u003d []"},{"line_number":10743,"context_line":"            for bdm in block_device_info[\u0027block_device_mapping\u0027]:"},{"line_number":10744,"context_line":"                expected_call \u003d mock.call(self.context, bdm[\u0027connection_info\u0027],"},{"line_number":10745,"context_line":"                                          inst_ref, allow_native_luks\u003dTrue)"},{"line_number":10746,"context_line":"                expected_connect_volume_calls.append(expected_call)"},{"line_number":10747,"context_line":"            mock_connect_volume.assert_has_calls(expected_connect_volume_calls)"},{"line_number":10748,"context_line":""},{"line_number":10749,"context_line":"            bdmi_vol1 \u003d migrate_data_obj.LibvirtLiveMigrateBDMInfo()"},{"line_number":10750,"context_line":"            bdmi_vol1.serial \u003d uuids.vol1"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_ed4baaad","line":10747,"range":{"start_line":10742,"start_character":0,"end_line":10747,"end_character":79},"updated":"2018-02-05 10:58:01.000000000","message":"Should also assert the calls to mock_find_secret below this to ensure the volume_id\u0027s are used.","commit_id":"a93d59e4ff4dd86bf80681ac79662ee022acd42e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"fe3bc5b3d1737204e7c29cebe5e75366d4d85f51","unresolved":false,"context_lines":[{"line_number":10779,"context_line":"            returned_dict \u003d returned_migrate_data.to_legacy_dict(True)"},{"line_number":10780,"context_line":"            returned_result \u003d returned_dict[\u0027pre_live_migration_result\u0027]"},{"line_number":10781,"context_line":""},{"line_number":10782,"context_line":"            # FIXME(lyarwood): Must be a better way to compare o.vo objects?"},{"line_number":10783,"context_line":"            self.assertEqual(expected_result, returned_result)"},{"line_number":10784,"context_line":""},{"line_number":10785,"context_line":"    def test_pre_live_migration_volume_backed(self):"},{"line_number":10786,"context_line":"        self._test_pre_live_migration_volume_backed()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_cdd90e23","line":10783,"range":{"start_line":10782,"start_character":0,"end_line":10783,"end_character":62},"updated":"2018-02-05 10:55:32.000000000","message":"Again, just to highlight, I\u0027m sure there\u0027s a better way of doing this with actual o.vo objects.","commit_id":"a93d59e4ff4dd86bf80681ac79662ee022acd42e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10675,"context_line":"        bdms \u003d objects.BlockDeviceMappingList(objects\u003d["},{"line_number":10676,"context_line":"                fake_block_device.fake_bdm_object(self.context, {"},{"line_number":10677,"context_line":"                    \u0027connection_info\u0027: jsonutils.dumps({"},{"line_number":10678,"context_line":"                        \u0027serial\u0027: uuids.vol1,"},{"line_number":10679,"context_line":"                        \u0027data\u0027: {"},{"line_number":10680,"context_line":"                            \u0027device_path\u0027: \u0027/dev/disk/path/lun-X\u0027"},{"line_number":10681,"context_line":"                        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_15a57404","line":10678,"range":{"start_line":10678,"start_character":34,"end_line":10678,"end_character":45},"updated":"2018-02-07 15:30:21.000000000","message":"So, to recap changes, we\u0027re using a proper UUID here now","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10677,"context_line":"                    \u0027connection_info\u0027: jsonutils.dumps({"},{"line_number":10678,"context_line":"                        \u0027serial\u0027: uuids.vol1,"},{"line_number":10679,"context_line":"                        \u0027data\u0027: {"},{"line_number":10680,"context_line":"                            \u0027device_path\u0027: \u0027/dev/disk/path/lun-X\u0027"},{"line_number":10681,"context_line":"                        }"},{"line_number":10682,"context_line":"                    }),"},{"line_number":10683,"context_line":"                    \u0027device_name\u0027: \u0027/dev/sda\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_35a8b0d9","line":10680,"range":{"start_line":10680,"start_character":44,"end_line":10680,"end_character":65},"updated":"2018-02-07 15:30:21.000000000","message":"a less crazy path","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10681,"context_line":"                        }"},{"line_number":10682,"context_line":"                    }),"},{"line_number":10683,"context_line":"                    \u0027device_name\u0027: \u0027/dev/sda\u0027,"},{"line_number":10684,"context_line":"                    \u0027volume_id\u0027: uuids.vol1,"},{"line_number":10685,"context_line":"                    \u0027source_type\u0027: \u0027volume\u0027,"},{"line_number":10686,"context_line":"                    \u0027destination_type\u0027: \u0027volume\u0027"},{"line_number":10687,"context_line":"                }),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_75871863","line":10684,"range":{"start_line":10684,"start_character":33,"end_line":10684,"end_character":44},"updated":"2018-02-07 15:30:21.000000000","message":"more uuids","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10685,"context_line":"                    \u0027source_type\u0027: \u0027volume\u0027,"},{"line_number":10686,"context_line":"                    \u0027destination_type\u0027: \u0027volume\u0027"},{"line_number":10687,"context_line":"                }),"},{"line_number":10688,"context_line":"                fake_block_device.fake_bdm_object(self.context, {"},{"line_number":10689,"context_line":"                    \u0027connection_info\u0027: jsonutils.dumps({"},{"line_number":10690,"context_line":"                        \u0027serial\u0027: uuids.vol2,"},{"line_number":10691,"context_line":"                        \u0027data\u0027: {"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_55e9bc17","line":10688,"range":{"start_line":10688,"start_character":50,"end_line":10688,"end_character":63},"updated":"2018-02-07 15:30:21.000000000","message":"an existing attribute, rather than reinventing the wheel (also above)","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10706,"context_line":""},{"line_number":10707,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":10708,"context_line":"        with test.nested("},{"line_number":10709,"context_line":"            mock.patch.object(drvr, \u0027_create_images_and_backing\u0027),"},{"line_number":10710,"context_line":"            mock.patch.object(drvr, \u0027_is_native_luks_available\u0027),"},{"line_number":10711,"context_line":"            mock.patch.object(drvr._host, \u0027find_secret\u0027),"},{"line_number":10712,"context_line":"            mock.patch.object(drvr, \u0027_connect_volume\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_3512f00a","line":10709,"range":{"start_line":10709,"start_character":12,"end_line":10709,"end_character":66},"updated":"2018-02-07 15:30:21.000000000","message":"Does it not matter that we\u0027re now returning a Mock instance, rather than None as before?","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5064b92ba946791dad88cfd9d398f911742214d3","unresolved":false,"context_lines":[{"line_number":10706,"context_line":""},{"line_number":10707,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":10708,"context_line":"        with test.nested("},{"line_number":10709,"context_line":"            mock.patch.object(drvr, \u0027_create_images_and_backing\u0027),"},{"line_number":10710,"context_line":"            mock.patch.object(drvr, \u0027_is_native_luks_available\u0027),"},{"line_number":10711,"context_line":"            mock.patch.object(drvr._host, \u0027find_secret\u0027),"},{"line_number":10712,"context_line":"            mock.patch.object(drvr, \u0027_connect_volume\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_d5270c12","line":10709,"range":{"start_line":10709,"start_character":12,"end_line":10709,"end_character":66},"in_reply_to":"3fa0c359_3512f00a","updated":"2018-02-07 15:37:32.000000000","message":"Nope, we don\u0027t do anything with the return anyway:\nhttps://github.com/openstack/nova/blob/3bb7c8dd61298088e253d6e95a7c26d12f802593/nova/virt/libvirt/driver.py#L7354","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10708,"context_line":"        with test.nested("},{"line_number":10709,"context_line":"            mock.patch.object(drvr, \u0027_create_images_and_backing\u0027),"},{"line_number":10710,"context_line":"            mock.patch.object(drvr, \u0027_is_native_luks_available\u0027),"},{"line_number":10711,"context_line":"            mock.patch.object(drvr._host, \u0027find_secret\u0027),"},{"line_number":10712,"context_line":"            mock.patch.object(drvr, \u0027_connect_volume\u0027),"},{"line_number":10713,"context_line":"            mock.patch.object(drvr, \u0027plug_vifs\u0027),"},{"line_number":10714,"context_line":"        ) as (mock_create_image, mock_is_luks_available, mock_find_secret,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_b5fda0b2","line":10711,"range":{"start_line":10711,"start_character":12,"end_line":10711,"end_character":57},"updated":"2018-02-07 15:30:21.000000000","message":"This is new, thanks to \u0027encrypted_volumes\u0027","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10710,"context_line":"            mock.patch.object(drvr, \u0027_is_native_luks_available\u0027),"},{"line_number":10711,"context_line":"            mock.patch.object(drvr._host, \u0027find_secret\u0027),"},{"line_number":10712,"context_line":"            mock.patch.object(drvr, \u0027_connect_volume\u0027),"},{"line_number":10713,"context_line":"            mock.patch.object(drvr, \u0027plug_vifs\u0027),"},{"line_number":10714,"context_line":"        ) as (mock_create_image, mock_is_luks_available, mock_find_secret,"},{"line_number":10715,"context_line":"              mock_connect_volume, mock_plug_vifs):"},{"line_number":10716,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_b51600f1","line":10713,"range":{"start_line":10713,"start_character":0,"end_line":10713,"end_character":49},"updated":"2018-02-07 15:30:21.000000000","message":"Seems we\u0027re happy to return Mock from here too","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"5064b92ba946791dad88cfd9d398f911742214d3","unresolved":false,"context_lines":[{"line_number":10710,"context_line":"            mock.patch.object(drvr, \u0027_is_native_luks_available\u0027),"},{"line_number":10711,"context_line":"            mock.patch.object(drvr._host, \u0027find_secret\u0027),"},{"line_number":10712,"context_line":"            mock.patch.object(drvr, \u0027_connect_volume\u0027),"},{"line_number":10713,"context_line":"            mock.patch.object(drvr, \u0027plug_vifs\u0027),"},{"line_number":10714,"context_line":"        ) as (mock_create_image, mock_is_luks_available, mock_find_secret,"},{"line_number":10715,"context_line":"              mock_connect_volume, mock_plug_vifs):"},{"line_number":10716,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_d56cec37","line":10713,"range":{"start_line":10713,"start_character":0,"end_line":10713,"end_character":49},"in_reply_to":"3fa0c359_b51600f1","updated":"2018-02-07 15:37:32.000000000","message":"Yup, again nothing is done with the returned mock instance:\nhttps://github.com/openstack/nova/blob/3bb7c8dd61298088e253d6e95a7c26d12f802593/nova/virt/libvirt/driver.py#L7414","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10735,"context_line":"                filename\u003d\u0027foo\u0027,"},{"line_number":10736,"context_line":"                src_supports_native_luks\u003dTrue,"},{"line_number":10737,"context_line":"            )"},{"line_number":10738,"context_line":"            expected_migrate_data \u003d migrate_data_obj.LibvirtLiveMigrateData("},{"line_number":10739,"context_line":"                is_shared_instance_path\u003dFalse,"},{"line_number":10740,"context_line":"                is_shared_block_storage\u003dFalse,"},{"line_number":10741,"context_line":"                is_volume_backed\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_f5e1e8fd","line":10738,"range":{"start_line":10738,"start_character":12,"end_line":10738,"end_character":76},"updated":"2018-02-07 15:30:21.000000000","message":"We\u0027re no longer converting to a dict, hence the use of an object here","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10751,"context_line":"                src_supports_native_luks\u003dTrue"},{"line_number":10752,"context_line":"            )"},{"line_number":10753,"context_line":""},{"line_number":10754,"context_line":"            bdmi_vol1 \u003d migrate_data_obj.LibvirtLiveMigrateBDMInfo()"},{"line_number":10755,"context_line":"            bdmi_vol1.boot_index \u003d None"},{"line_number":10756,"context_line":"            bdmi_vol1.format \u003d None"},{"line_number":10757,"context_line":"            bdmi_vol1.serial \u003d uuids.vol1"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_15b6d4fb","line":10754,"range":{"start_line":10754,"start_character":12,"end_line":10754,"end_character":68},"updated":"2018-02-07 15:30:21.000000000","message":"Sorry - object*s*","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10773,"context_line":"            bdmi_vol2.dev \u003d \u0027sdb\u0027"},{"line_number":10774,"context_line":"            bdmi_vol2.type \u003d \u0027disk\u0027"},{"line_number":10775,"context_line":""},{"line_number":10776,"context_line":"            if encrypted_volumes:"},{"line_number":10777,"context_line":"                bdmi_vol1.encryption_secret_uuid \u003d uuids.secret_vol1"},{"line_number":10778,"context_line":"                bdmi_vol2.encryption_secret_uuid \u003d uuids.secret_vol2"},{"line_number":10779,"context_line":""},{"line_number":10780,"context_line":"            expected_migrate_data.bdms \u003d [bdmi_vol1, bdmi_vol2]"},{"line_number":10781,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_d594ec46","line":10778,"range":{"start_line":10776,"start_character":0,"end_line":10778,"end_character":68},"updated":"2018-02-07 15:30:21.000000000","message":"Encryption specific new stuff","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10780,"context_line":"            expected_migrate_data.bdms \u003d [bdmi_vol1, bdmi_vol2]"},{"line_number":10781,"context_line":""},{"line_number":10782,"context_line":"            returned_migrate_data \u003d drvr.pre_live_migration("},{"line_number":10783,"context_line":"                self.context, inst_ref, block_device_info, [], None,"},{"line_number":10784,"context_line":"                migrate_data)"},{"line_number":10785,"context_line":""},{"line_number":10786,"context_line":"            expected_connect_volume_calls \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_f58fa82b","line":10783,"range":{"start_line":10783,"start_character":59,"end_line":10783,"end_character":61},"updated":"2018-02-07 15:30:21.000000000","message":"We didn\u0027t need nw_info here, because it\u0027s only used in the call to \u0027plug_vifs\u0027, which is mocked out anyway.","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4064aaff86d17d0aaa04802b875b1e0ce82ab9b8","unresolved":false,"context_lines":[{"line_number":10790,"context_line":"                expected_connect_volume_calls.append(expected_call)"},{"line_number":10791,"context_line":"            mock_connect_volume.assert_has_calls(expected_connect_volume_calls)"},{"line_number":10792,"context_line":""},{"line_number":10793,"context_line":"            if encrypted_volumes:"},{"line_number":10794,"context_line":"                mock_find_secret.assert_has_calls("},{"line_number":10795,"context_line":"                    [mock.call(\u0027volume\u0027, uuids.vol1),"},{"line_number":10796,"context_line":"                     mock.call(\u0027volume\u0027, uuids.vol2)])"},{"line_number":10797,"context_line":""},{"line_number":10798,"context_line":"            # FIXME(lyarwood): This is taken from test_os_vif_util.py and as"},{"line_number":10799,"context_line":"            # noted there should be removed if the ComparableVersionedObject"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_15ab3489","line":10796,"range":{"start_line":10793,"start_character":0,"end_line":10796,"end_character":54},"updated":"2018-02-07 15:30:21.000000000","message":"this is also new, thanks to encryption magic","commit_id":"3148ec33f047b7ebc59a0493091e5778c030aebe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"add71924cbd7a693a41c804064cf7ab587e3e3a6","unresolved":false,"context_lines":[{"line_number":11944,"context_line":"            # mix-in is ever used for these objects."},{"line_number":11945,"context_line":"            expected_migrate_data.obj_reset_changes(recursive\u003dTrue)"},{"line_number":11946,"context_line":"            returned_migrate_data.obj_reset_changes(recursive\u003dTrue)"},{"line_number":11947,"context_line":"            self.assertEqual(expected_migrate_data.obj_to_primitive(),"},{"line_number":11948,"context_line":"                             returned_migrate_data.obj_to_primitive())"},{"line_number":11949,"context_line":""},{"line_number":11950,"context_line":"    def test_pre_live_migration_volume_backed(self):"},{"line_number":11951,"context_line":"        self._test_pre_live_migration_volume_backed()"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_b9035c10","line":11948,"range":{"start_line":11947,"start_character":12,"end_line":11948,"end_character":70},"updated":"2018-07-02 15:36:55.000000000","message":"This isn\u0027t safe since the keys are going to be in a random order.","commit_id":"4c0fea8edcc00e88c216e02ea8afbff41f91e5eb"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"23e8a0e65544aa786925e63799dd26892e95a864","unresolved":false,"context_lines":[{"line_number":11944,"context_line":"            # mix-in is ever used for these objects."},{"line_number":11945,"context_line":"            expected_migrate_data.obj_reset_changes(recursive\u003dTrue)"},{"line_number":11946,"context_line":"            returned_migrate_data.obj_reset_changes(recursive\u003dTrue)"},{"line_number":11947,"context_line":"            self.assertEqual(expected_migrate_data.obj_to_primitive(),"},{"line_number":11948,"context_line":"                             returned_migrate_data.obj_to_primitive())"},{"line_number":11949,"context_line":""},{"line_number":11950,"context_line":"    def test_pre_live_migration_volume_backed(self):"},{"line_number":11951,"context_line":"        self._test_pre_live_migration_volume_backed()"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_e1c83a4e","line":11948,"range":{"start_line":11947,"start_character":12,"end_line":11948,"end_character":70},"in_reply_to":"5f7c97a3_b9035c10","updated":"2018-07-02 16:00:19.000000000","message":"ACK, FWIW this came from L32-L38 of nova/tests/unit/network/test_os_vif_util.py that also needs to change.","commit_id":"4c0fea8edcc00e88c216e02ea8afbff41f91e5eb"}]}
