)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9797d69d31e582abc6b6f4439894e60c4ea2580d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Actually pass the migration data object down to the virt drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This makes the compute manager actually pass the objects down to the"},{"line_number":10,"context_line":"virt drivers and makes the virt drivers use objects natively."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related to blueprint objectify-live-migrate-data"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"7a740942_d5666050","line":10,"updated":"2015-12-11 16:09:09.000000000","message":"If we\u0027re changing the contract of the virt API, I\u0027d expect to see nova/virt/driver.py changed with updated docs for the API parameters of the appropriate methods. I\u0027m not entirely clear from the code just which APIs we\u0027re affecting in this change","commit_id":"89913f8eb7853522be6745d195566fa9a05b58c8"}],"nova/compute/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5fae332a99968373f96fdff95b1aea1e9dffa47f","unresolved":false,"context_lines":[{"line_number":5089,"context_line":"    def _get_migrate_data_obj(self):"},{"line_number":5090,"context_line":"        # FIXME(danms): A couple patches from now, we\u0027ll be able to"},{"line_number":5091,"context_line":"        # avoid this failure _if_ we get a new-style call with the"},{"line_number":5092,"context_line":"        # object."},{"line_number":5093,"context_line":"        if CONF.compute_driver.startswith(\u0027libvirt\u0027):"},{"line_number":5094,"context_line":"            return objects.LibvirtLiveMigrateData()"},{"line_number":5095,"context_line":"        elif CONF.compute_driver.startswith(\u0027xenapi\u0027):"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a740942_791725a3","line":5092,"updated":"2015-12-14 11:33:36.000000000","message":"its tempting to wait to see this being removed.","commit_id":"5d3e52b7768221aed1e52300b48dbde1259b6aec"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"6f88209c7a7203f6024fd899fce89e7ad6d67e7a","unresolved":false,"context_lines":[{"line_number":5111,"context_line":"        if CONF.compute_driver.startswith(\u0027libvirt\u0027):"},{"line_number":5112,"context_line":"            return objects.LibvirtLiveMigrateData()"},{"line_number":5113,"context_line":"        elif CONF.compute_driver.startswith(\u0027xenapi\u0027):"},{"line_number":5114,"context_line":"            return objects.XenapiLiveMigrateData()"},{"line_number":5115,"context_line":"        else:"},{"line_number":5116,"context_line":"            LOG.error(_(\u0027Older RPC caller and unsupported virt driver in \u0027"},{"line_number":5117,"context_line":"                        \u0027use. Unable to handle this!\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_3967eb26","line":5114,"range":{"start_line":5114,"start_character":19,"end_line":5114,"end_character":26},"updated":"2015-12-17 15:27:04.000000000","message":"Wouldn\u0027t it be better object abstraction if we introduce a get_migrate_data() method in the drivers ?\n\nWe could then avoid these \"if\".","commit_id":"0d23994fc65a2f63d460372c6e5f8fbf28d07211"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"70cda7212284d45e74521d4758aa40fe41507f20","unresolved":false,"context_lines":[{"line_number":5111,"context_line":"        if CONF.compute_driver.startswith(\u0027libvirt\u0027):"},{"line_number":5112,"context_line":"            return objects.LibvirtLiveMigrateData()"},{"line_number":5113,"context_line":"        elif CONF.compute_driver.startswith(\u0027xenapi\u0027):"},{"line_number":5114,"context_line":"            return objects.XenapiLiveMigrateData()"},{"line_number":5115,"context_line":"        else:"},{"line_number":5116,"context_line":"            LOG.error(_(\u0027Older RPC caller and unsupported virt driver in \u0027"},{"line_number":5117,"context_line":"                        \u0027use. Unable to handle this!\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_76d9f682","line":5114,"range":{"start_line":5114,"start_character":19,"end_line":5114,"end_character":26},"in_reply_to":"3a7e1126_3967eb26","updated":"2015-12-17 16:39:05.000000000","message":"This is only temporary until we drop support for the current format. Once we\u0027re done with that, we won\u0027t need this detection method, nor a driver method to get the implementation class.","commit_id":"0d23994fc65a2f63d460372c6e5f8fbf28d07211"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1d779c71619a183a802478c52b65f147b622a38d","unresolved":false,"context_lines":[{"line_number":5185,"context_line":""},{"line_number":5186,"context_line":"        migrate_data_obj.migration \u003d migration"},{"line_number":5187,"context_line":"        try:"},{"line_number":5188,"context_line":"            self.driver.live_migration(context, instance, dest,"},{"line_number":5189,"context_line":"                                       self._post_live_migration,"},{"line_number":5190,"context_line":"                                       self._rollback_live_migration,"},{"line_number":5191,"context_line":"                                       block_migration, migrate_data_obj)"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa69d971_81d11a25","line":5188,"range":{"start_line":5188,"start_character":24,"end_line":5188,"end_character":38},"updated":"2016-01-07 05:45:08.000000000","message":"only saw the libvirt driver changes in this patch. Looks at the code, the xen driver still treat the migrate_data as dict. Like here https://github.com/openstack/nova/blob/master/nova/virt/xenapi/vmops.py#L2316\n\nAnd the \u0027kernel-file\u0027 and \u0027ramdisk-file\u0027 aren\u0027t in the xen migratedata object.","commit_id":"375b55f780acc72b38600a1a338fd3788b317e70"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0d51452ebac5416fba2fa200699de02a34e1f9c4","unresolved":false,"context_lines":[{"line_number":5185,"context_line":""},{"line_number":5186,"context_line":"        migrate_data_obj.migration \u003d migration"},{"line_number":5187,"context_line":"        try:"},{"line_number":5188,"context_line":"            self.driver.live_migration(context, instance, dest,"},{"line_number":5189,"context_line":"                                       self._post_live_migration,"},{"line_number":5190,"context_line":"                                       self._rollback_live_migration,"},{"line_number":5191,"context_line":"                                       block_migration, migrate_data_obj)"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa69d971_cd8087fa","line":5188,"range":{"start_line":5188,"start_character":24,"end_line":5188,"end_character":38},"in_reply_to":"fa69d971_81d11a25","updated":"2016-01-07 18:23:18.000000000","message":"Yep indeed, thanks.","commit_id":"375b55f780acc72b38600a1a338fd3788b317e70"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bf0ca01d14d1c7db4210530da2071cd2f4b5c8f5","unresolved":false,"context_lines":[{"line_number":5364,"context_line":"                 instance\u003dinstance)"},{"line_number":5365,"context_line":""},{"line_number":5366,"context_line":"        self._clean_instance_console_tokens(ctxt, instance)"},{"line_number":5367,"context_line":"        if migrate_data and migrate_data.obj_attr_is_set(\u0027migration\u0027):"},{"line_number":5368,"context_line":"            migrate_data.migration.status \u003d \u0027completed\u0027"},{"line_number":5369,"context_line":"            migrate_data.migration.save()"},{"line_number":5370,"context_line":""},{"line_number":5371,"context_line":"    def _consoles_enabled(self):"},{"line_number":5372,"context_line":"        \"\"\"Returns whether a console is enable.\"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa69d971_8a4c2743","line":5369,"range":{"start_line":5367,"start_character":8,"end_line":5369,"end_character":41},"updated":"2016-01-11 11:53:19.000000000","message":"https://review.openstack.org/#/c/248211/24/nova/virt/xenapi/vmops.py\nlooks like doesn\u0027t work for this.\n\nThe code will be failed at here, as the xen driver will pass the dict to the post method.","commit_id":"6f53cd7acfcee8871ad244998bf2fa26f485661d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"52d6478f77b14fc6bfc9411e3e7844a34b07cd24","unresolved":false,"context_lines":[{"line_number":5364,"context_line":"                 instance\u003dinstance)"},{"line_number":5365,"context_line":""},{"line_number":5366,"context_line":"        self._clean_instance_console_tokens(ctxt, instance)"},{"line_number":5367,"context_line":"        if migrate_data and migrate_data.obj_attr_is_set(\u0027migration\u0027):"},{"line_number":5368,"context_line":"            migrate_data.migration.status \u003d \u0027completed\u0027"},{"line_number":5369,"context_line":"            migrate_data.migration.save()"},{"line_number":5370,"context_line":""},{"line_number":5371,"context_line":"    def _consoles_enabled(self):"},{"line_number":5372,"context_line":"        \"\"\"Returns whether a console is enable.\"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa69d971_702e6b8d","line":5369,"range":{"start_line":5367,"start_character":8,"end_line":5369,"end_character":41},"in_reply_to":"fa69d971_8a4c2743","updated":"2016-01-11 19:26:20.000000000","message":"Yep, good call. I\u0027ll stash the original migrate_data I get and pass that back to the post function.\n\nToo bad we don\u0027t have any XenAPI live migration testing!","commit_id":"6f53cd7acfcee8871ad244998bf2fa26f485661d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5f63ac483e81bd390fb881266a947e1168ebba65","unresolved":false,"context_lines":[{"line_number":5491,"context_line":"                block_migration, migrate_data)"},{"line_number":5492,"context_line":""},{"line_number":5493,"context_line":"        if do_cleanup:"},{"line_number":5494,"context_line":"            self.compute_rpcapi.rollback_live_migration_at_destination("},{"line_number":5495,"context_line":"                    context, instance, dest, destroy_disks\u003ddestroy_disks,"},{"line_number":5496,"context_line":"                    migrate_data\u003dmigrate_data)"},{"line_number":5497,"context_line":""},{"line_number":5498,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":5499,"context_line":"                                          \"live_migration._rollback.end\")"}],"source_content_type":"text/x-python","patch_set":27,"id":"da6ed579_44bbdbe5","line":5496,"range":{"start_line":5494,"start_character":12,"end_line":5496,"end_character":46},"updated":"2016-01-13 05:16:27.000000000","message":"Sorry, I missed this from previous review. I found this problem after deep into the next patch.\n\nIn virt driver, we already use object, at here we should convert object back to dict. Otherwise we will pass object over the rpc at here. and the rpc client without any compatible code yet.","commit_id":"5b5df7269760a3473e4c5a0c511371dc42f77259"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"1c142d87727704165e08d07ac02f61e71f1011b1","unresolved":false,"context_lines":[{"line_number":5110,"context_line":"        if isinstance(pre_live_migration_data,"},{"line_number":5111,"context_line":"                      migrate_data_obj.LiveMigrateData):"},{"line_number":5112,"context_line":"            pre_live_migration_data \u003d pre_live_migration_data.to_legacy_dict("},{"line_number":5113,"context_line":"                pre_migration_result\u003dTrue)"},{"line_number":5114,"context_line":"            pre_live_migration_data \u003d pre_live_migration_data["},{"line_number":5115,"context_line":"                \u0027pre_live_migration_result\u0027]"},{"line_number":5116,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"da6ed579_607d8b6d","line":5113,"range":{"start_line":5113,"start_character":37,"end_line":5113,"end_character":41},"updated":"2016-01-13 15:54:24.000000000","message":"So this fixes an issue introduced in https://review.openstack.org/#/c/247719/10 where you forgot to add pre_migration_result\u003dTrue.\n\nBecause of this change is huge and it tries to fix multiple things could you please split it to another patch and add correct unit tests for that so we will be sure that we won\u0027t to the same thing again in the future?","commit_id":"69e01758076d0e89eddfe6945c8c7e423c862a49"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"79ee56b0d0e743ab6353aa3b791004f2b2e1345c","unresolved":false,"context_lines":[{"line_number":5110,"context_line":"        if isinstance(pre_live_migration_data,"},{"line_number":5111,"context_line":"                      migrate_data_obj.LiveMigrateData):"},{"line_number":5112,"context_line":"            pre_live_migration_data \u003d pre_live_migration_data.to_legacy_dict("},{"line_number":5113,"context_line":"                pre_migration_result\u003dTrue)"},{"line_number":5114,"context_line":"            pre_live_migration_data \u003d pre_live_migration_data["},{"line_number":5115,"context_line":"                \u0027pre_live_migration_result\u0027]"},{"line_number":5116,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"da6ed579_a2bdafb8","line":5113,"range":{"start_line":5113,"start_character":37,"end_line":5113,"end_character":41},"in_reply_to":"da6ed579_607d8b6d","updated":"2016-01-14 00:29:31.000000000","message":"This has been close to merge for days. I think it\u0027s fine to leave this in place assuming it\u0027ll make it in soon.","commit_id":"69e01758076d0e89eddfe6945c8c7e423c862a49"}],"nova/objects/migrate_data.py":[{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"6f88209c7a7203f6024fd899fce89e7ad6d67e7a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            info_dict[\u0027format\u0027] \u003d self.format"},{"line_number":87,"context_line":"        if self.obj_attr_is_set(\u0027boot_index\u0027) and self.format is not None:"},{"line_number":88,"context_line":"            info_dict[\u0027boot_index\u0027] \u003d str(self.boot_index)"},{"line_number":89,"context_line":"        return info_dict"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"@obj_base.NovaObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a7e1126_a16961c0","line":89,"range":{"start_line":89,"start_character":15,"end_line":89,"end_character":24},"updated":"2015-12-17 15:27:04.000000000","message":"Is this change related to this fix or should it be a separate patch ?","commit_id":"0d23994fc65a2f63d460372c6e5f8fbf28d07211"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0106b2133dac6488510041f9f46590524bcb79a3","unresolved":false,"context_lines":[{"line_number":2371,"context_line":""},{"line_number":2372,"context_line":"    def post_live_migration(self, context, instance, migrate_data\u003dNone):"},{"line_number":2373,"context_line":"        if migrate_data is not None:"},{"line_number":2374,"context_line":"            vm_utils.destroy_kernel_ramdisk(self._session, instance,"},{"line_number":2375,"context_line":"                                            migrate_data.get(\u0027kernel-file\u0027),"},{"line_number":2376,"context_line":"                                            migrate_data.get(\u0027ramdisk-file\u0027))"},{"line_number":2377,"context_line":""},{"line_number":2378,"context_line":"    def post_live_migration_at_destination(self, context, instance,"},{"line_number":2379,"context_line":"                                           network_info, block_migration,"}],"source_content_type":"text/x-python","patch_set":25,"id":"da6ed579_1e9339fc","line":2376,"range":{"start_line":2374,"start_character":12,"end_line":2376,"end_character":77},"updated":"2016-01-12 02:26:31.000000000","message":"bad news...Those keys are used as dict in post method ...\n\nI guess we have to change the object :)","commit_id":"941a7cb2b157c0dadea3e42ffeb3e75dabf675e7"}]}
