)]}'
{"nova/network/api.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6ab8a8f0bddbdb2d19dcc8ab2f19afab4bfdb8c6","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        args \u003d dict("},{"line_number":510,"context_line":"            instance_uuid\u003dinstance.uuid,"},{"line_number":511,"context_line":"            rxtx_factor\u003dflavor[\u0027rxtx_factor\u0027],"},{"line_number":512,"context_line":"            project_id\u003dinstance.project_id,"},{"line_number":513,"context_line":"            source_compute\u003dmigration.source_compute,"},{"line_number":514,"context_line":"            dest_compute\u003dmigration.dest_compute,"},{"line_number":515,"context_line":"            floating_addresses\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_816e30fe","line":512,"updated":"2019-10-22 20:38:57.000000000","message":"tbc this file\u0027s deltas weren\u0027t strictly necessary because the mixin lets you keep talking to the object as if it were a dict - right?","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fa555a497baa7564333b8c227903ea5ef7551c2e","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        args \u003d dict("},{"line_number":510,"context_line":"            instance_uuid\u003dinstance.uuid,"},{"line_number":511,"context_line":"            rxtx_factor\u003dflavor[\u0027rxtx_factor\u0027],"},{"line_number":512,"context_line":"            project_id\u003dinstance.project_id,"},{"line_number":513,"context_line":"            source_compute\u003dmigration.source_compute,"},{"line_number":514,"context_line":"            dest_compute\u003dmigration.dest_compute,"},{"line_number":515,"context_line":"            floating_addresses\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_bb1fc6b5","line":512,"in_reply_to":"3fa7e38b_816e30fe","updated":"2019-10-23 18:59:50.000000000","message":"yup","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6ab8a8f0bddbdb2d19dcc8ab2f19afab4bfdb8c6","unresolved":false,"context_lines":[{"line_number":2830,"context_line":"        :param instance: Instance object being migrated"},{"line_number":2831,"context_line":"        :param migration: Migration object for the operation; used to determine"},{"line_number":2832,"context_line":"            the phase of the migration which dictates what to do with claimed"},{"line_number":2833,"context_line":"            PCI devices for SR-IOV ports"},{"line_number":2834,"context_line":"        \"\"\""},{"line_number":2835,"context_line":"        self._update_port_binding_for_instance("},{"line_number":2836,"context_line":"            context, instance, migration.dest_compute, migration\u003dmigration,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e17e04ae","line":2833,"updated":"2019-10-22 20:38:57.000000000","message":"went through the trouble to document the other three params, but not provider_mappings?","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10b8e914c6b66445fa783b27e9b4935b3c04f9df","unresolved":false,"context_lines":[{"line_number":2830,"context_line":"        :param instance: Instance object being migrated"},{"line_number":2831,"context_line":"        :param migration: Migration object for the operation; used to determine"},{"line_number":2832,"context_line":"            the phase of the migration which dictates what to do with claimed"},{"line_number":2833,"context_line":"            PCI devices for SR-IOV ports"},{"line_number":2834,"context_line":"        \"\"\""},{"line_number":2835,"context_line":"        self._update_port_binding_for_instance("},{"line_number":2836,"context_line":"            context, instance, migration.dest_compute, migration\u003dmigration,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_f9a0e693","line":2833,"in_reply_to":"3fa7e38b_768175c3","updated":"2019-10-23 20:57:25.000000000","message":"Done","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"db3e9e1905ab37cee6ee0eaf09c73af22f53cef7","unresolved":false,"context_lines":[{"line_number":2830,"context_line":"        :param instance: Instance object being migrated"},{"line_number":2831,"context_line":"        :param migration: Migration object for the operation; used to determine"},{"line_number":2832,"context_line":"            the phase of the migration which dictates what to do with claimed"},{"line_number":2833,"context_line":"            PCI devices for SR-IOV ports"},{"line_number":2834,"context_line":"        \"\"\""},{"line_number":2835,"context_line":"        self._update_port_binding_for_instance("},{"line_number":2836,"context_line":"            context, instance, migration.dest_compute, migration\u003dmigration,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_768175c3","line":2833,"in_reply_to":"3fa7e38b_e17e04ae","updated":"2019-10-22 22:20:16.000000000","message":"Ah, rebase fail from another change that was doing this. I can follow up.","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7ad703aca9f3b4ea32659243b8553d205a501e92","unresolved":false,"context_lines":[{"line_number":2831,"context_line":"        :param migration: Migration object for the operation; used to determine"},{"line_number":2832,"context_line":"            the phase of the migration which dictates what to do with claimed"},{"line_number":2833,"context_line":"            PCI devices for SR-IOV ports"},{"line_number":2834,"context_line":"        :param provider_mappings: a dict of list of resource provider uuids"},{"line_number":2835,"context_line":"            keyed by port uuid"},{"line_number":2836,"context_line":"        \"\"\""},{"line_number":2837,"context_line":"        self._update_port_binding_for_instance("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_79615611","line":2834,"range":{"start_line":2834,"start_character":44,"end_line":2834,"end_character":48},"updated":"2019-10-23 21:15:34.000000000","message":"lists?","commit_id":"2db294965ec1d0ff9636b4bf7f977e4742788b2d"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6ab8a8f0bddbdb2d19dcc8ab2f19afab4bfdb8c6","unresolved":false,"context_lines":[{"line_number":6074,"context_line":"        # NOTE(hanrong): Prove that we pass the right value to the"},{"line_number":6075,"context_line":"        # \"self.network_api.migrate_instance_finish\"."},{"line_number":6076,"context_line":"        def fake_migrate_instance_finish(cls, context, instance, migration):"},{"line_number":6077,"context_line":"            self.assertEqual(source_compute, migration.dest_compute)"},{"line_number":6078,"context_line":"        self.stub_out(\u0027nova.network.api.API.migrate_instance_finish\u0027,"},{"line_number":6079,"context_line":"                      fake_migrate_instance_finish)"},{"line_number":6080,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_41591859","line":6077,"updated":"2019-10-22 20:38:57.000000000","message":"also not technically necessary?","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6ab8a8f0bddbdb2d19dcc8ab2f19afab4bfdb8c6","unresolved":false,"context_lines":[{"line_number":9040,"context_line":"                {\u0027source_compute\u0027: cn_old,"},{"line_number":9041,"context_line":"                 \u0027dest_compute\u0027: self.compute.host,"},{"line_number":9042,"context_line":"                 \u0027migration_type\u0027: \u0027live-migration\u0027},"},{"line_number":9043,"context_line":"                mig.obj_to_primitive()[\u0027nova_object.data\u0027])"},{"line_number":9044,"context_line":"            _get_instance_block_device_info.assert_called_once_with("},{"line_number":9045,"context_line":"                self.context, self.instance"},{"line_number":9046,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6139b4f0","line":9043,"range":{"start_line":9043,"start_character":16,"end_line":9043,"end_character":38},"updated":"2019-10-22 20:38:57.000000000","message":":(","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bf0c0aa8b19b3051ee7ad2fd874c7f4553adc59","unresolved":false,"context_lines":[{"line_number":9040,"context_line":"                {\u0027source_compute\u0027: cn_old,"},{"line_number":9041,"context_line":"                 \u0027dest_compute\u0027: self.compute.host,"},{"line_number":9042,"context_line":"                 \u0027migration_type\u0027: \u0027live-migration\u0027},"},{"line_number":9043,"context_line":"                mig.obj_to_primitive()[\u0027nova_object.data\u0027])"},{"line_number":9044,"context_line":"            _get_instance_block_device_info.assert_called_once_with("},{"line_number":9045,"context_line":"                self.context, self.instance"},{"line_number":9046,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_69075a1a","line":9043,"range":{"start_line":9043,"start_character":16,"end_line":9043,"end_character":38},"in_reply_to":"3fa7e38b_366bfd1f","updated":"2019-10-22 22:43:38.000000000","message":"Yeah, I recognized that, and this is (barely? maybe?) better than asserting the fields individually.","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"526aa76bb6e48fc19222072ecb52b755bfdd0995","unresolved":false,"context_lines":[{"line_number":9040,"context_line":"                {\u0027source_compute\u0027: cn_old,"},{"line_number":9041,"context_line":"                 \u0027dest_compute\u0027: self.compute.host,"},{"line_number":9042,"context_line":"                 \u0027migration_type\u0027: \u0027live-migration\u0027},"},{"line_number":9043,"context_line":"                mig.obj_to_primitive()[\u0027nova_object.data\u0027])"},{"line_number":9044,"context_line":"            _get_instance_block_device_info.assert_called_once_with("},{"line_number":9045,"context_line":"                self.context, self.instance"},{"line_number":9046,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_798dd628","line":9043,"range":{"start_line":9043,"start_character":16,"end_line":9043,"end_character":38},"in_reply_to":"3fa7e38b_5e100001","updated":"2019-10-23 20:53:18.000000000","message":"No, obj_to_primitive has to stick around since it\u0027s used when serializing objects to pass over rpc.","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"db3e9e1905ab37cee6ee0eaf09c73af22f53cef7","unresolved":false,"context_lines":[{"line_number":9040,"context_line":"                {\u0027source_compute\u0027: cn_old,"},{"line_number":9041,"context_line":"                 \u0027dest_compute\u0027: self.compute.host,"},{"line_number":9042,"context_line":"                 \u0027migration_type\u0027: \u0027live-migration\u0027},"},{"line_number":9043,"context_line":"                mig.obj_to_primitive()[\u0027nova_object.data\u0027])"},{"line_number":9044,"context_line":"            _get_instance_block_device_info.assert_called_once_with("},{"line_number":9045,"context_line":"                self.context, self.instance"},{"line_number":9046,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_366bfd1f","line":9043,"range":{"start_line":9043,"start_character":16,"end_line":9043,"end_character":38},"in_reply_to":"3fa7e38b_6139b4f0","updated":"2019-10-22 22:20:16.000000000","message":"assertEqual works on dicts but not objects, so that\u0027s why I\u0027m doing this here.","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fa555a497baa7564333b8c227903ea5ef7551c2e","unresolved":false,"context_lines":[{"line_number":9040,"context_line":"                {\u0027source_compute\u0027: cn_old,"},{"line_number":9041,"context_line":"                 \u0027dest_compute\u0027: self.compute.host,"},{"line_number":9042,"context_line":"                 \u0027migration_type\u0027: \u0027live-migration\u0027},"},{"line_number":9043,"context_line":"                mig.obj_to_primitive()[\u0027nova_object.data\u0027])"},{"line_number":9044,"context_line":"            _get_instance_block_device_info.assert_called_once_with("},{"line_number":9045,"context_line":"                self.context, self.instance"},{"line_number":9046,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_fb253e0b","line":9043,"range":{"start_line":9043,"start_character":16,"end_line":9043,"end_character":38},"in_reply_to":"3fa7e38b_69075a1a","updated":"2019-10-23 18:59:50.000000000","message":"Looks like I could change to use nova.objects.base.obj_equal_prims here if you prefer that.","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10b8e914c6b66445fa783b27e9b4935b3c04f9df","unresolved":false,"context_lines":[{"line_number":9040,"context_line":"                {\u0027source_compute\u0027: cn_old,"},{"line_number":9041,"context_line":"                 \u0027dest_compute\u0027: self.compute.host,"},{"line_number":9042,"context_line":"                 \u0027migration_type\u0027: \u0027live-migration\u0027},"},{"line_number":9043,"context_line":"                mig.obj_to_primitive()[\u0027nova_object.data\u0027])"},{"line_number":9044,"context_line":"            _get_instance_block_device_info.assert_called_once_with("},{"line_number":9045,"context_line":"                self.context, self.instance"},{"line_number":9046,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_f9c9c659","line":9043,"range":{"start_line":9043,"start_character":16,"end_line":9043,"end_character":38},"in_reply_to":"3fa7e38b_798dd628","updated":"2019-10-23 20:57:25.000000000","message":"I\u0027m just going to respin to update this to use obj_equal_prims and fix that docstring.","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"42e2caa1fefae7d15de538858f2aa5d994873d39","unresolved":false,"context_lines":[{"line_number":9040,"context_line":"                {\u0027source_compute\u0027: cn_old,"},{"line_number":9041,"context_line":"                 \u0027dest_compute\u0027: self.compute.host,"},{"line_number":9042,"context_line":"                 \u0027migration_type\u0027: \u0027live-migration\u0027},"},{"line_number":9043,"context_line":"                mig.obj_to_primitive()[\u0027nova_object.data\u0027])"},{"line_number":9044,"context_line":"            _get_instance_block_device_info.assert_called_once_with("},{"line_number":9045,"context_line":"                self.context, self.instance"},{"line_number":9046,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_199ce259","line":9043,"range":{"start_line":9043,"start_character":16,"end_line":9043,"end_character":38},"in_reply_to":"3fa7e38b_798dd628","updated":"2019-10-23 20:55:17.000000000","message":"okay then","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2ac7f1b8f9e395dd2baeb3a9bacb0eeab5b4106e","unresolved":false,"context_lines":[{"line_number":9040,"context_line":"                {\u0027source_compute\u0027: cn_old,"},{"line_number":9041,"context_line":"                 \u0027dest_compute\u0027: self.compute.host,"},{"line_number":9042,"context_line":"                 \u0027migration_type\u0027: \u0027live-migration\u0027},"},{"line_number":9043,"context_line":"                mig.obj_to_primitive()[\u0027nova_object.data\u0027])"},{"line_number":9044,"context_line":"            _get_instance_block_device_info.assert_called_once_with("},{"line_number":9045,"context_line":"                self.context, self.instance"},{"line_number":9046,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_5e100001","line":9043,"range":{"start_line":9043,"start_character":16,"end_line":9043,"end_character":38},"in_reply_to":"3fa7e38b_fb253e0b","updated":"2019-10-23 19:39:01.000000000","message":"Is the objective to get rid of Migration\u0027s obj_to_primitive() method entirely? If so, then yeah, that would be better, but not worth a respin.","commit_id":"254abcc2e67bfb528000cf19abc47166f729e603"}]}
