)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bbed6aa95156117602e3e78545fce59a003e5749","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Cleanup for post/rollback of live-migrations"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Prior to this patch compute manager decided whether is it"},{"line_number":10,"context_line":"required to do cleanup after live migration or not."},{"line_number":11,"context_line":"This patch remove this check and forces cleanup to be done."},{"line_number":12,"context_line":"At the same time logic of what to be cleaned up or not is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3aaa91ec_1ebb0b74","line":9,"updated":"2016-06-21 20:50:38.000000000","message":"s/is it/it is/","commit_id":"cebc253a7798e1bfee45fe3ce91f55c714d3e830"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bbed6aa95156117602e3e78545fce59a003e5749","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Prior to this patch compute manager decided whether is it"},{"line_number":10,"context_line":"required to do cleanup after live migration or not."},{"line_number":11,"context_line":"This patch remove this check and forces cleanup to be done."},{"line_number":12,"context_line":"At the same time logic of what to be cleaned up or not is"},{"line_number":13,"context_line":"now implemented by drivers."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3aaa91ec_7eb04f8c","line":11,"updated":"2016-06-21 20:50:38.000000000","message":"s/remove this/removes this/","commit_id":"cebc253a7798e1bfee45fe3ce91f55c714d3e830"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bbed6aa95156117602e3e78545fce59a003e5749","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Prior to this patch compute manager decided whether is it"},{"line_number":10,"context_line":"required to do cleanup after live migration or not."},{"line_number":11,"context_line":"This patch remove this check and forces cleanup to be done."},{"line_number":12,"context_line":"At the same time logic of what to be cleaned up or not is"},{"line_number":13,"context_line":"now implemented by drivers."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-bug: #1487477"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3aaa91ec_5ead9330","line":12,"updated":"2016-06-21 20:50:38.000000000","message":"s/time logic/time, the logic/","commit_id":"cebc253a7798e1bfee45fe3ce91f55c714d3e830"}],"nova/compute/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bc8054d252f56b16d828ed9bc71102a6b04cae01","unresolved":false,"context_lines":[{"line_number":5552,"context_line":"    @wrap_instance_event"},{"line_number":5553,"context_line":"    @wrap_instance_fault"},{"line_number":5554,"context_line":"    def rollback_live_migration_at_destination(self, context, instance,"},{"line_number":5555,"context_line":"                                               destroy_disks,"},{"line_number":5556,"context_line":"                                               migrate_data):"},{"line_number":5557,"context_line":"        \"\"\"Cleaning up image directory that is created pre_live_migration."},{"line_number":5558,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bae84128_e794d1e9","side":"PARENT","line":5555,"updated":"2016-02-19 12:08:49.000000000","message":"We can\u0027t remove arguments like this, as it breaks our RPC version system.\n\nYou can only drop arguments on a major version bump. But you can make them optional / ignore them. Maybe just change the default to destroy_disks\u003dNone or something like that, and move it to the end of the signature, with a TODO about removing that argument when we bump the RPC major version.","commit_id":"11019fab7a2415cbca8b93e9346b21327e79688d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bc8054d252f56b16d828ed9bc71102a6b04cae01","unresolved":false,"context_lines":[{"line_number":5586,"context_line":"                        migrate_data)"},{"line_number":5587,"context_line":"            self.driver.rollback_live_migration_at_destination("},{"line_number":5588,"context_line":"                context, instance, network_info, block_device_info,"},{"line_number":5589,"context_line":"                destroy_disks\u003ddestroy_disks, migrate_data\u003dmigrate_data)"},{"line_number":5590,"context_line":""},{"line_number":5591,"context_line":"        self._notify_about_instance_usage("},{"line_number":5592,"context_line":"                        context, instance, \"live_migration.rollback.dest.end\","}],"source_content_type":"text/x-python","patch_set":6,"id":"bae84128_07bbb573","side":"PARENT","line":5589,"updated":"2016-02-19 12:08:49.000000000","message":"removing this is fine, assuming we fix up all the drivers.","commit_id":"11019fab7a2415cbca8b93e9346b21327e79688d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b0027916a01d463520b51e7cb72557bcaeacc03b","unresolved":false,"context_lines":[{"line_number":5552,"context_line":"    @wrap_instance_event"},{"line_number":5553,"context_line":"    @wrap_instance_fault"},{"line_number":5554,"context_line":"    def rollback_live_migration_at_destination(self, context, instance,"},{"line_number":5555,"context_line":"                                               destroy_disks,"},{"line_number":5556,"context_line":"                                               migrate_data):"},{"line_number":5557,"context_line":"        \"\"\"Cleaning up image directory that is created pre_live_migration."},{"line_number":5558,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_60542754","side":"PARENT","line":5555,"updated":"2016-02-19 12:10:14.000000000","message":"OK, my main worry from the previous patch is still here.","commit_id":"603e7db9a8091191ed2605c04c5b72593f0b0094"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"6721eb71a7e674d631049b8c7413a1b82741c184","unresolved":false,"context_lines":[{"line_number":5552,"context_line":"    @wrap_instance_event"},{"line_number":5553,"context_line":"    @wrap_instance_fault"},{"line_number":5554,"context_line":"    def rollback_live_migration_at_destination(self, context, instance,"},{"line_number":5555,"context_line":"                                               destroy_disks,"},{"line_number":5556,"context_line":"                                               migrate_data):"},{"line_number":5557,"context_line":"        \"\"\"Cleaning up image directory that is created pre_live_migration."},{"line_number":5558,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_32e26e04","side":"PARENT","line":5555,"in_reply_to":"bae84128_60542754","updated":"2016-02-19 13:28:14.000000000","message":"Yes, this param shouldn\u0027t be removed. Thanks!","commit_id":"603e7db9a8091191ed2605c04c5b72593f0b0094"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"e9efb2b62be70e702f3df983535d36cf41c36f3f","unresolved":false,"context_lines":[{"line_number":5409,"context_line":""},{"line_number":5410,"context_line":"        LOG.debug(\u0027Calling driver.cleanup from _post_live_migration\u0027,"},{"line_number":5411,"context_line":"                  instance\u003dinstance)"},{"line_number":5412,"context_line":"        self.driver.live_migration_cleanup(ctxt, instance, network_info,"},{"line_number":5413,"context_line":"                            migrate_data\u003dmigrate_data)"},{"line_number":5414,"context_line":""},{"line_number":5415,"context_line":"        self.instance_events.clear_events_for_instance(instance)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7af24918_a071270e","line":5412,"updated":"2016-03-07 11:50:34.000000000","message":"I just had a quick look, and I can\u0027t find any other callers of driver.cleanup(). You should check yourself, but assuming there are no other callers can you please fold this into cleanup? Given that there is only 1 caller, I\u0027m in favour of the name change, though, as I think it\u0027s clearer.\n\nYou shouldn\u0027t remove the last caller of a function without removing that function, though.","commit_id":"23cdbf4c40431ee92acc134fb43a704d6b2eacca"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bbed6aa95156117602e3e78545fce59a003e5749","unresolved":false,"context_lines":[{"line_number":5500,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":5501,"context_line":"                                          \"live_migration._rollback.start\")"},{"line_number":5502,"context_line":""},{"line_number":5503,"context_line":"        # TODO(tdurakov): this flags are calculated for backward compatibility"},{"line_number":5504,"context_line":"        # during rolling upgrades process and should be removed"},{"line_number":5505,"context_line":"        # once Liberty EOL"},{"line_number":5506,"context_line":"        do_cleanup, destroy_disks \u003d self._live_migration_cleanup_flags("}],"source_content_type":"text/x-python","patch_set":16,"id":"3aaa91ec_beaab717","line":5503,"updated":"2016-06-21 20:50:38.000000000","message":"s/this/these/","commit_id":"cebc253a7798e1bfee45fe3ce91f55c714d3e830"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bbed6aa95156117602e3e78545fce59a003e5749","unresolved":false,"context_lines":[{"line_number":5507,"context_line":"                migrate_data)"},{"line_number":5508,"context_line":"        self.compute_rpcapi.rollback_live_migration_at_destination("},{"line_number":5509,"context_line":"                    context, instance, dest, destroy_disks\u003ddestroy_disks,"},{"line_number":5510,"context_line":"                    do_cleanup\u003d do_cleanup, migrate_data\u003dmigrate_data)"},{"line_number":5511,"context_line":""},{"line_number":5512,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":5513,"context_line":"                                          \"live_migration._rollback.end\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"3aaa91ec_9ea7fb4e","line":5510,"updated":"2016-06-21 20:50:38.000000000","message":"nit: should be no space after do_cleanup\u003d","commit_id":"cebc253a7798e1bfee45fe3ce91f55c714d3e830"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bc8054d252f56b16d828ed9bc71102a6b04cae01","unresolved":false,"context_lines":[{"line_number":827,"context_line":"            extra[\u0027destroy_disks\u0027] \u003d destroy_disks"},{"line_number":828,"context_line":"            # NOTE(tdurakov): this check is moved from compute manager to"},{"line_number":829,"context_line":"            # make it compatible with previous versions"},{"line_number":830,"context_line":"            if not do_cleanup:"},{"line_number":831,"context_line":"                return"},{"line_number":832,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":833,"context_line":"            version \u003d \u00274.0\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"bae84128_2a99606f","line":830,"updated":"2016-02-19 12:08:49.000000000","message":"Not sure if I like this skip being here. But the alternative of moving this into the compute manager is maybe worse. I need to think about that a little more.","commit_id":"040efa579a4535f7500a5ee6e1d0eefaf28c6008"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bbed6aa95156117602e3e78545fce59a003e5749","unresolved":false,"context_lines":[{"line_number":856,"context_line":"        cell_client \u003d self.get_cell_client(ctxt)"},{"line_number":857,"context_line":"        extra \u003d {}"},{"line_number":858,"context_line":"        if not cell_client.can_send_version(version):"},{"line_number":859,"context_line":"            version \u003d \u00274.8\u0027"},{"line_number":860,"context_line":"            extra[\u0027destroy_disks\u0027] \u003d destroy_disks"},{"line_number":861,"context_line":"            # NOTE(tdurakov): this check is moved from compute manager to"},{"line_number":862,"context_line":"            # make it compatible with previous versions"}],"source_content_type":"text/x-python","patch_set":16,"id":"3aaa91ec_fe627f15","line":859,"updated":"2016-06-21 20:50:38.000000000","message":"shouldn\u0027t this be version \u003d \u00274.0\u0027 to match existing code?","commit_id":"cebc253a7798e1bfee45fe3ce91f55c714d3e830"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bbed6aa95156117602e3e78545fce59a003e5749","unresolved":false,"context_lines":[{"line_number":6992,"context_line":"        mock_get_instance_disk_info \u003d mock.Mock()"},{"line_number":6993,"context_line":"        data \u003d objects.LibvirtLiveMigrateData("},{"line_number":6994,"context_line":"            is_shared_instance_path\u003dTrue,"},{"line_number":6995,"context_line":"            is_volume_backed\u003dFalse,"},{"line_number":6996,"context_line":"            image_type\u003d\u0027foo\u0027)"},{"line_number":6997,"context_line":"        with mock.patch.object(drvr, \u0027get_instance_disk_info\u0027,"},{"line_number":6998,"context_line":"                               mock_get_instance_disk_info):"}],"source_content_type":"text/x-python","patch_set":16,"id":"3aaa91ec_3eb6c78a","line":6995,"updated":"2016-06-21 20:50:38.000000000","message":"What does this have to do with the code in this change?","commit_id":"cebc253a7798e1bfee45fe3ce91f55c714d3e830"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"983778bcfb5e6cd8fbefc4069efee279a939cffe","unresolved":false,"context_lines":[{"line_number":1132,"context_line":"            if CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027:"},{"line_number":1133,"context_line":"                self._cleanup_rbd(instance)"},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"        if destroy_disks:"},{"line_number":1136,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1137,"context_line":"                                                        \u00270\u0027))"},{"line_number":1138,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_efcbfb1c","line":1135,"updated":"2016-03-01 15:11:58.000000000","message":"Redundant.","commit_id":"1269c2c6503f6d6fb546c7d8b98b25cfc5c40ea7"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f1ad78d9bdd0cfed7e49b4661689f22b7dbbffcd","unresolved":false,"context_lines":[{"line_number":1132,"context_line":"            if CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027:"},{"line_number":1133,"context_line":"                self._cleanup_rbd(instance)"},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"        if destroy_disks:"},{"line_number":1136,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1137,"context_line":"                                                        \u00270\u0027))"},{"line_number":1138,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_16e2bbd5","line":1135,"in_reply_to":"7af24918_efcbfb1c","updated":"2016-03-01 16:27:26.000000000","message":"Could you please explain, why is it redundant?","commit_id":"1269c2c6503f6d6fb546c7d8b98b25cfc5c40ea7"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"e9efb2b62be70e702f3df983535d36cf41c36f3f","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"                                 instance\u003dinstance)"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"    def cleanup(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":1085,"context_line":"                destroy_disks\u003dTrue, destroy_vifs\u003dTrue):"},{"line_number":1086,"context_line":"        if destroy_vifs:"},{"line_number":1087,"context_line":"            self._unplug_vifs(instance, network_info, True)"},{"line_number":1088,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_356d3b05","line":1085,"updated":"2016-03-07 11:50:34.000000000","message":"I can\u0027t see where this code is being called, but you\u0027ve made changes to it. What\u0027s going on here? Have I missed a caller? If not, have you checked that everything going on in this function is now handled in live_migration_cleanup?","commit_id":"23cdbf4c40431ee92acc134fb43a704d6b2eacca"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"e9efb2b62be70e702f3df983535d36cf41c36f3f","unresolved":false,"context_lines":[{"line_number":6584,"context_line":"            self.live_migration_cleanup(context, instance, network_info,"},{"line_number":6585,"context_line":"                                        block_device_info, migrate_data)"},{"line_number":6586,"context_line":"            # self.destroy(context, instance, network_info, block_device_info,"},{"line_number":6587,"context_line":"            #              destroy_disks, migrate_data)"},{"line_number":6588,"context_line":"        finally:"},{"line_number":6589,"context_line":"            # NOTE(gcb): Failed block live migration may leave instance"},{"line_number":6590,"context_line":"            # directory at destination node, ensure it is always deleted."}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_d5085794","line":6587,"updated":"2016-03-07 11:50:34.000000000","message":"Looks like you forgot to delete these lines.","commit_id":"23cdbf4c40431ee92acc134fb43a704d6b2eacca"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"1635133636328aee4b8ec34e730a30e70b487335","unresolved":false,"context_lines":[{"line_number":5588,"context_line":"                CONF.libvirt.images_type \u003d\u003d dest_check_data.image_type and"},{"line_number":5589,"context_line":"                self.image_backend.backend().is_shared_block_storage()):"},{"line_number":5590,"context_line":"            # NOTE(dgenin): currently true only for RBD image backend"},{"line_number":5591,"context_line":"            return True"},{"line_number":5592,"context_line":""},{"line_number":5593,"context_line":"        if (dest_check_data.is_volume_backed and"},{"line_number":5594,"context_line":"                not bool(jsonutils.loads("}],"source_content_type":"text/x-python","patch_set":11,"id":"3afc51ec_d5ed7eb8","line":5591,"range":{"start_line":5591,"start_character":22,"end_line":5591,"end_character":23},"updated":"2016-03-16 05:29:06.000000000","message":"you remove the filed based block check.\n \n but you handle the filed based block check  in another patch.\n \n https://review.openstack.org/#/c/286745/3/nova/virt/libvirt/driver.py","commit_id":"f33e3178f1c507d8abdf78726f6ca1f9d4511fbe"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"1635133636328aee4b8ec34e730a30e70b487335","unresolved":false,"context_lines":[{"line_number":6554,"context_line":"            self._destroy(instance)"},{"line_number":6555,"context_line":"            self.live_migration_cleanup(context, instance, network_info,"},{"line_number":6556,"context_line":"                                        block_device_info, migrate_data)"},{"line_number":6557,"context_line":"            # self.destroy(context, instance, network_info, block_device_info,"},{"line_number":6558,"context_line":"            #              destroy_disks, migrate_data)"},{"line_number":6559,"context_line":"        finally:"},{"line_number":6560,"context_line":"            # NOTE(gcb): Failed block live migration may leave instance"},{"line_number":6561,"context_line":"            # directory at destination node, ensure it is always deleted."}],"source_content_type":"text/x-python","patch_set":11,"id":"3afc51ec_80973639","line":6558,"range":{"start_line":6557,"start_character":0,"end_line":6558,"end_character":55},"updated":"2016-03-16 05:29:06.000000000","message":"remove the annotation","commit_id":"f33e3178f1c507d8abdf78726f6ca1f9d4511fbe"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"1635133636328aee4b8ec34e730a30e70b487335","unresolved":false,"context_lines":[{"line_number":6571,"context_line":"    def live_migration_cleanup(self, context, instance, network_info,"},{"line_number":6572,"context_line":"                               block_device_info\u003dNone, migrate_data\u003dNone):"},{"line_number":6573,"context_line":"            self._unplug_vifs(instance, network_info, True)"},{"line_number":6574,"context_line":"            self.unfilter_instance(instance, network_info)"},{"line_number":6575,"context_line":"            self._disconnect_volume_during_cleanup(context, block_device_info,"},{"line_number":6576,"context_line":"                                                   instance)"},{"line_number":6577,"context_line":"            is_shared_block_storage \u003d False"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afc51ec_e0539a37","line":6574,"range":{"start_line":6574,"start_character":17,"end_line":6574,"end_character":34},"updated":"2016-03-16 05:29:06.000000000","message":"in the self.cleanup\n \n There are exception handler for unfilter_instance,\n why here missing them?","commit_id":"f33e3178f1c507d8abdf78726f6ca1f9d4511fbe"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"1635133636328aee4b8ec34e730a30e70b487335","unresolved":false,"context_lines":[{"line_number":6586,"context_line":"                    self._cleanup_lvm(instance, block_device_info)"},{"line_number":6587,"context_line":"                if CONF.libvirt.images_type \u003d\u003d \u0027rbd\u0027:"},{"line_number":6588,"context_line":"                    self._cleanup_rbd(instance)"},{"line_number":6589,"context_line":"            if not is_shared_instance_path:"},{"line_number":6590,"context_line":"                attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":6591,"context_line":"                                                            \u00270\u0027))"},{"line_number":6592,"context_line":"                success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afc51ec_a125140a","line":6589,"range":{"start_line":6589,"start_character":12,"end_line":6589,"end_character":43},"updated":"2016-03-16 05:29:06.000000000","message":"This live migration specific cleanup is the main difference with the general cleanup. \n\nBut the cold migration, can also be is_shared_instance_path.","commit_id":"f33e3178f1c507d8abdf78726f6ca1f9d4511fbe"}],"nova/virt/xenapi/driver.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bc8054d252f56b16d828ed9bc71102a6b04cae01","unresolved":false,"context_lines":[{"line_number":560,"context_line":"        # any volume that was attached to the destination during"},{"line_number":561,"context_line":"        # live migration. XAPI should take care of all other cleanup."},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        if not isinstance(migrate_data, objects.XenapiLiveMigrateData):"},{"line_number":564,"context_line":"            obj \u003d objects.XenapiLiveMigrateData()"},{"line_number":565,"context_line":"            obj.from_legacy_dict(migrate_data)"},{"line_number":566,"context_line":"            migrate_data \u003d obj"}],"source_content_type":"text/x-python","patch_set":6,"id":"bae84128_a020eff8","line":563,"updated":"2016-02-19 12:08:49.000000000","message":"Do we really need this here?","commit_id":"040efa579a4535f7500a5ee6e1d0eefaf28c6008"}]}
