)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d13c44a8a93be19aede998b5afd41f96be1c18c4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"attributes. It could cause problems in other drivers, because"},{"line_number":12,"context_line":"they doesn\u0027t invoke drivers cleanup method properly."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-bug: #1487477"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ie0843fbd2edfcb77bb6036697adc297997a9af4f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da20952f_6ce9cd7e","line":14,"updated":"2015-09-11 11:41:25.000000000","message":"Is there any particular behaviour that you are trying to fix in this patch?\n\nCan you please give a reason why you remove this logic for all the other hypervisors.\n\nIt seems very late in the cycle to do that kind of thing. The risk of this breaking other hypervisors seems very high.","commit_id":"cc9a80ed1e76b624a935c59f79ea034289ea33cc"}],"nova/compute/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"df1ed2b04cc0ae402ce93f68fedfbd9e8990eac3","unresolved":false,"context_lines":[{"line_number":5311,"context_line":"        self.compute_rpcapi.post_live_migration_at_destination(ctxt,"},{"line_number":5312,"context_line":"                instance, block_migration, dest)"},{"line_number":5313,"context_line":"        do_cleanup, destroy_disks \u003d self.driver.live_migration_cleanup_flags("},{"line_number":5314,"context_line":"                block_migration, migrate_data)"},{"line_number":5315,"context_line":""},{"line_number":5316,"context_line":"        if do_cleanup:"},{"line_number":5317,"context_line":"            LOG.debug(\u0027Calling driver.cleanup from _post_live_migration\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a5ae5dd_aeea920d","line":5314,"updated":"2016-02-04 16:46:49.000000000","message":"I concerns me that \"block_migration\" has made it into our manager APIs. I think that\u0027s mostly a libvirt notion, at least at this point, right?\n\nSeems like that should be completely encapsulated in LibvirtLiveMigrateData, or in the base LiveMigrateData class if not, right?\n\nI know it permeates far up the call stack, but maybe it\u0027s worth unwinding that?","commit_id":"94ccabc695118e05d0293065117d8a66f204115d"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b6f1cdfeeb207cc47d001a572bbadef7190d4402","unresolved":false,"context_lines":[{"line_number":5545,"context_line":"                                                                mock_save):"},{"line_number":5546,"context_line":"        self._live_migration_exception_rolls_back(mock_save,"},{"line_number":5547,"context_line":"                                                  cleanup\u003dTrue,"},{"line_number":5548,"context_line":"                                                  destroy_disks\u003dFalse)"},{"line_number":5549,"context_line":""},{"line_number":5550,"context_line":"    def _live_migration_exception_rolls_back(self, mock_save, cleanup,"},{"line_number":5551,"context_line":"                                             destroy_disks):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_d723acbb","line":5548,"updated":"2015-08-26 10:20:30.000000000","message":"I think here should be \u0027destroy_disks\u003dTrue\u0027","commit_id":"5904a38e30d40cb5e5c55d36f1c3a97e670033e0"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"2578bdff650460ee0d784910d39b2cf75d7738bf","unresolved":false,"context_lines":[{"line_number":5545,"context_line":"                                                                mock_save):"},{"line_number":5546,"context_line":"        self._live_migration_exception_rolls_back(mock_save,"},{"line_number":5547,"context_line":"                                                  cleanup\u003dTrue,"},{"line_number":5548,"context_line":"                                                  destroy_disks\u003dFalse)"},{"line_number":5549,"context_line":""},{"line_number":5550,"context_line":"    def _live_migration_exception_rolls_back(self, mock_save, cleanup,"},{"line_number":5551,"context_line":"                                             destroy_disks):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_43311a59","line":5548,"in_reply_to":"fa1b9901_d723acbb","updated":"2015-08-26 11:39:40.000000000","message":"Done","commit_id":"5904a38e30d40cb5e5c55d36f1c3a97e670033e0"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b6f1cdfeeb207cc47d001a572bbadef7190d4402","unresolved":false,"context_lines":[{"line_number":5546,"context_line":"        self._live_migration_exception_rolls_back(mock_save,"},{"line_number":5547,"context_line":"                                                  cleanup\u003dTrue,"},{"line_number":5548,"context_line":"                                                  destroy_disks\u003dFalse)"},{"line_number":5549,"context_line":""},{"line_number":5550,"context_line":"    def _live_migration_exception_rolls_back(self, mock_save, cleanup,"},{"line_number":5551,"context_line":"                                             destroy_disks):"},{"line_number":5552,"context_line":"        # Confirm exception when pre_live_migration fails."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_3a276fb7","line":5549,"updated":"2015-08-26 10:20:30.000000000","message":"Also a question, should we add test with (cleanup\u003dFalse, destroy_disks\u003dTrue)?","commit_id":"5904a38e30d40cb5e5c55d36f1c3a97e670033e0"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"2578bdff650460ee0d784910d39b2cf75d7738bf","unresolved":false,"context_lines":[{"line_number":5546,"context_line":"        self._live_migration_exception_rolls_back(mock_save,"},{"line_number":5547,"context_line":"                                                  cleanup\u003dTrue,"},{"line_number":5548,"context_line":"                                                  destroy_disks\u003dFalse)"},{"line_number":5549,"context_line":""},{"line_number":5550,"context_line":"    def _live_migration_exception_rolls_back(self, mock_save, cleanup,"},{"line_number":5551,"context_line":"                                             destroy_disks):"},{"line_number":5552,"context_line":"        # Confirm exception when pre_live_migration fails."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_e39b8e15","line":5549,"in_reply_to":"fa1b9901_3a276fb7","updated":"2015-08-26 11:39:40.000000000","message":"I think, no. No cleanup means not to destroy disks:\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L5310\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L5160","commit_id":"5904a38e30d40cb5e5c55d36f1c3a97e670033e0"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b6f1cdfeeb207cc47d001a572bbadef7190d4402","unresolved":false,"context_lines":[{"line_number":5603,"context_line":"                c, instance, \u0027vol1-id\u0027, dest_host)"},{"line_number":5604,"context_line":"        self.compute.compute_rpcapi.remove_volume_connection("},{"line_number":5605,"context_line":"                c, instance, \u0027vol2-id\u0027, dest_host)"},{"line_number":5606,"context_line":"        self.compute.driver.live_migration_cleanup_flags(True, {}).\\"},{"line_number":5607,"context_line":"            AndReturn((cleanup, destroy_disks))"},{"line_number":5608,"context_line":"        if cleanup:"},{"line_number":5609,"context_line":"            self.compute.compute_rpcapi.rollback_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_fa533714","line":5606,"updated":"2015-08-26 10:20:30.000000000","message":"It would be better to avoid backslash (\u0027\\\u0027)","commit_id":"5904a38e30d40cb5e5c55d36f1c3a97e670033e0"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"2578bdff650460ee0d784910d39b2cf75d7738bf","unresolved":false,"context_lines":[{"line_number":5603,"context_line":"                c, instance, \u0027vol1-id\u0027, dest_host)"},{"line_number":5604,"context_line":"        self.compute.compute_rpcapi.remove_volume_connection("},{"line_number":5605,"context_line":"                c, instance, \u0027vol2-id\u0027, dest_host)"},{"line_number":5606,"context_line":"        self.compute.driver.live_migration_cleanup_flags(True, {}).\\"},{"line_number":5607,"context_line":"            AndReturn((cleanup, destroy_disks))"},{"line_number":5608,"context_line":"        if cleanup:"},{"line_number":5609,"context_line":"            self.compute.compute_rpcapi.rollback_live_migration_at_destination("}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_a3f91682","line":5606,"in_reply_to":"fa1b9901_fa533714","updated":"2015-08-26 11:39:40.000000000","message":"Done","commit_id":"5904a38e30d40cb5e5c55d36f1c3a97e670033e0"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":17043,"name":"Timothy Symanczyk","email":"tim@symanczyk.com","username":"timothy_symanczyk"},"change_message_id":"b344374b60715abce8551e7bd551b8d3b6638e4a","unresolved":false,"context_lines":[{"line_number":5477,"context_line":"                    \u0027is_shared_instance_path\u0027, is_shared_instance_path)"},{"line_number":5478,"context_line":""},{"line_number":5479,"context_line":"        # No instance booting at source host, but instance dir"},{"line_number":5480,"context_line":"        # must be deleted for preparing next block migration"},{"line_number":5481,"context_line":"        # must be deleted for preparing next live migration w/o shared storage"},{"line_number":5482,"context_line":"        do_cleanup \u003d block_migration or not is_shared_instance_path"},{"line_number":5483,"context_line":"        destroy_disks \u003d not is_shared_block_storage"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_24bed0ff","line":5480,"updated":"2015-08-24 18:05:41.000000000","message":"Is this comment block a typo?","commit_id":"5904a38e30d40cb5e5c55d36f1c3a97e670033e0"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"b5fa88c536a14712e5fbe5edb46c2c8ea5ac2af3","unresolved":false,"context_lines":[{"line_number":5477,"context_line":"                    \u0027is_shared_instance_path\u0027, is_shared_instance_path)"},{"line_number":5478,"context_line":""},{"line_number":5479,"context_line":"        # No instance booting at source host, but instance dir"},{"line_number":5480,"context_line":"        # must be deleted for preparing next block migration"},{"line_number":5481,"context_line":"        # must be deleted for preparing next live migration w/o shared storage"},{"line_number":5482,"context_line":"        do_cleanup \u003d block_migration or not is_shared_instance_path"},{"line_number":5483,"context_line":"        destroy_disks \u003d not is_shared_block_storage"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_8ad80581","line":5480,"in_reply_to":"fa1b9901_24bed0ff","updated":"2015-08-24 18:50:19.000000000","message":"em, no:)  this comment seems to be ok","commit_id":"5904a38e30d40cb5e5c55d36f1c3a97e670033e0"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"449ffefd2a412c9285121587d682788ee12472ce","unresolved":false,"context_lines":[{"line_number":5736,"context_line":"        #                 block storage or instance path were shared"},{"line_number":5737,"context_line":"        if isinstance(migrate_data, migrate_data_obj.LibvirtLiveMigrateData):"},{"line_number":5738,"context_line":"            block_migration \u003d migrate_data.block_migration"},{"line_number":5739,"context_line":"            is_shared_block_storage \u003d not block_migration"},{"line_number":5740,"context_line":"            is_shared_instance_path \u003d not block_migration"},{"line_number":5741,"context_line":""},{"line_number":5742,"context_line":"            is_shared_block_storage \u003d migrate_data.is_shared_block_storage"},{"line_number":5743,"context_line":"            is_shared_instance_path \u003d migrate_data.is_shared_instance_path"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_3751c863","line":5740,"range":{"start_line":5739,"start_character":0,"end_line":5740,"end_character":57},"updated":"2016-03-07 09:37:05.000000000","message":"these two seems is not necessary. \n\nfor is_shared_block_storage is always migrate_data.is_shared_block_storage\n\nseem with is_shared_instance_path.","commit_id":"4895d9505a4f236e5f73d6b8778d896e2614027a"}],"nova/virt/xenapi/driver.py":[{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"449ffefd2a412c9285121587d682788ee12472ce","unresolved":false,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":"    def live_migration_cleanup_flags(self, migrate_data):"},{"line_number":522,"context_line":"        if not isinstance(migrate_data, objects.XenapiLiveMigrateData):"},{"line_number":523,"context_line":"            raise ValueError(\"Wrong migrate_data type provided\")"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        block_migration \u003d migrate_data.block_migration"},{"line_number":526,"context_line":"        do_cleanup \u003d block_migration"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_d7e86419","line":523,"range":{"start_line":523,"start_character":18,"end_line":523,"end_character":28},"updated":"2016-03-07 09:37:05.000000000","message":"Why not TypeError??\n\nIn [1]: TypeError??\nDocstring: Inappropriate argument type.\nType:      type\n\nIn [2]: ValueError??\nDocstring: Inappropriate argument value (of correct type).\nType:      type","commit_id":"4895d9505a4f236e5f73d6b8778d896e2614027a"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"449ffefd2a412c9285121587d682788ee12472ce","unresolved":false,"context_lines":[{"line_number":522,"context_line":"        if not isinstance(migrate_data, objects.XenapiLiveMigrateData):"},{"line_number":523,"context_line":"            raise ValueError(\"Wrong migrate_data type provided\")"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        block_migration \u003d migrate_data.block_migration"},{"line_number":526,"context_line":"        do_cleanup \u003d block_migration"},{"line_number":527,"context_line":"        destroy_disks \u003d block_migration"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        return (do_cleanup, destroy_disks)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def live_migration(self, context, instance, dest,"},{"line_number":532,"context_line":"                       post_method, recover_method, block_migration\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_77c5105a","line":529,"range":{"start_line":525,"start_character":0,"end_line":529,"end_character":42},"updated":"2016-03-07 09:37:05.000000000","message":"just: \nreturn (migrate_data.block_migration, migrate_data.block_migration)\n\n??\n\nYour code is clean to seen the return value intention.","commit_id":"4895d9505a4f236e5f73d6b8778d896e2614027a"}]}
