)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"606e14b76237076ecacd31ec4b7275fbef403461","unresolved":false,"context_lines":[{"line_number":5203,"context_line":"        #                  plug_vifs"},{"line_number":5204,"context_line":"        self.network_api.setup_networks_on_host(context, instance,"},{"line_number":5205,"context_line":"                                                         self.host)"},{"line_number":5206,"context_line":"        migration \u003d {\u0027source_compute\u0027: instance[\u0027host\u0027],"},{"line_number":5207,"context_line":"                     \u0027dest_compute\u0027: self.host, }"},{"line_number":5208,"context_line":"        self.network_api.migrate_instance_finish(context,"},{"line_number":5209,"context_line":"                                                 instance,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa7fdbe_23a1a647","line":5206,"updated":"2014-10-22 10:36:56.000000000","message":"arg.","commit_id":"3184b29c40265b72a9a34102cdd724d97c9eb014"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d7842b862b28b0603447c8116cf5379babc6d1c5","unresolved":false,"context_lines":[{"line_number":5157,"context_line":"                                            block_migration, block_device_info)"},{"line_number":5158,"context_line":"        # Restore instance state"},{"line_number":5159,"context_line":"        current_power_state \u003d self._get_power_state(context, instance)"},{"line_number":5160,"context_line":"        node_name \u003d None"},{"line_number":5161,"context_line":"        try:"},{"line_number":5162,"context_line":"            compute_node \u003d self._get_compute_info(context, self.host)"},{"line_number":5163,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_e4e04998","side":"PARENT","line":5160,"updated":"2014-10-24 08:48:50.000000000","message":"same as here","commit_id":"9fd059b938a2acca8bf5d58989c78d834fbb0ad8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"19ef182cd075dfe68c0fc40fabf723c4a9995d83","unresolved":false,"context_lines":[{"line_number":5040,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5041,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5042,"context_line":"        except exception.NotFound:"},{"line_number":5043,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5044,"context_line":"        finally:"},{"line_number":5045,"context_line":"            instance.host \u003d dest"},{"line_number":5046,"context_line":"            instance.node \u003d node_name"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_1a668fc1","line":5043,"updated":"2014-10-23 19:22:43.000000000","message":"Shouldn\u0027t we bail here? Does it make sense to go ahead and try the post_live_migration bit?","commit_id":"cf03e602c60b7d40b0ae612bc754adfb9d53ec2b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d7842b862b28b0603447c8116cf5379babc6d1c5","unresolved":false,"context_lines":[{"line_number":5040,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5041,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5042,"context_line":"        except exception.NotFound:"},{"line_number":5043,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5044,"context_line":"        finally:"},{"line_number":5045,"context_line":"            instance.host \u003d dest"},{"line_number":5046,"context_line":"            instance.node \u003d node_name"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_c4fa6542","line":5043,"in_reply_to":"9aa7fdbe_1a668fc1","updated":"2014-10-24 08:48:50.000000000","message":"So this is actually so we keep the same behaviour as line 5160 in the original.\n\nThinking about it, I quite like this idea.\n\nThe post live migrate stuff is basically a tidy up step, the live-migrate has already happened at this point, so I am actually keen we keep going where possible.\n\nBut maybe I am missing something?","commit_id":"cf03e602c60b7d40b0ae612bc754adfb9d53ec2b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"19ef182cd075dfe68c0fc40fabf723c4a9995d83","unresolved":false,"context_lines":[{"line_number":5221,"context_line":"        self.driver.post_live_migration_at_destination(context, instance,"},{"line_number":5222,"context_line":"                                            network_info,"},{"line_number":5223,"context_line":"                                            block_migration, block_device_info)"},{"line_number":5224,"context_line":""},{"line_number":5225,"context_line":"        # Restore instance state"},{"line_number":5226,"context_line":"        current_power_state \u003d self._get_power_state(context, instance)"},{"line_number":5227,"context_line":"        instance.power_state \u003d current_power_state"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_da67a7b5","line":5224,"updated":"2014-10-23 19:22:43.000000000","message":"Added random extra whitespace?","commit_id":"cf03e602c60b7d40b0ae612bc754adfb9d53ec2b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9a7d68f0efcda1a4fcef338459b499ccc35dea9","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    return decorated_function"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"@utils.expects_func_args(\u0027instance\u0027)"},{"line_number":273,"context_line":"def reverts_task_state(function):"},{"line_number":274,"context_line":"    \"\"\"Decorator to revert task_state on failure.\"\"\""},{"line_number":275,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_531a0fc7","line":272,"updated":"2014-12-01 07:42:21.000000000","message":"the method has this decorator - do we still need this with your change?","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ce58c486c4a83d65a11f572515a60939da93de08","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    return decorated_function"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"@utils.expects_func_args(\u0027instance\u0027)"},{"line_number":273,"context_line":"def reverts_task_state(function):"},{"line_number":274,"context_line":"    \"\"\"Decorator to revert task_state on failure.\"\"\""},{"line_number":275,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_39eee68b","line":272,"in_reply_to":"5a890539_531a0fc7","updated":"2014-12-03 13:54:49.000000000","message":"yes, it just allows them to be found when its given as a positional arg, not just when its a keyword arg.","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9a7d68f0efcda1a4fcef338459b499ccc35dea9","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        except Exception:"},{"line_number":288,"context_line":"            wrapped_func \u003d utils.get_wrapped_function(function)"},{"line_number":289,"context_line":"            keyed_args \u003d safe_utils.getcallargs(wrapped_func, context, *args,"},{"line_number":290,"context_line":"                                       **kwargs)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":293,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_132087f7","line":290,"updated":"2014-12-01 07:42:21.000000000","message":"indentation","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9a7d68f0efcda1a4fcef338459b499ccc35dea9","unresolved":false,"context_lines":[{"line_number":5024,"context_line":""},{"line_number":5025,"context_line":"        return (do_cleanup, destroy_disks)"},{"line_number":5026,"context_line":""},{"line_number":5027,"context_line":"    @object_compat"},{"line_number":5028,"context_line":"    @wrap_exception()"},{"line_number":5029,"context_line":"    @reverts_task_state"},{"line_number":5030,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_f324db0f","line":5027,"updated":"2014-12-01 07:42:21.000000000","message":"we should consider the object compat to be a separate patch set. but maybe that is really nitpicking","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ce58c486c4a83d65a11f572515a60939da93de08","unresolved":false,"context_lines":[{"line_number":5024,"context_line":""},{"line_number":5025,"context_line":"        return (do_cleanup, destroy_disks)"},{"line_number":5026,"context_line":""},{"line_number":5027,"context_line":"    @object_compat"},{"line_number":5028,"context_line":"    @wrap_exception()"},{"line_number":5029,"context_line":"    @reverts_task_state"},{"line_number":5030,"context_line":"    @wrap_instance_event"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_b4401d36","line":5027,"in_reply_to":"5a890539_f324db0f","updated":"2014-12-03 13:54:49.000000000","message":"thats a bad cut and paste, and should be removed.","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9a7d68f0efcda1a4fcef338459b499ccc35dea9","unresolved":false,"context_lines":[{"line_number":5047,"context_line":"        LOG.info(_LI(\u0027_post_live_migration() is started..\u0027),"},{"line_number":5048,"context_line":"                 instance\u003dinstance)"},{"line_number":5049,"context_line":""},{"line_number":5050,"context_line":"        # NOTE(johngarbutt) update node and host now, so we know"},{"line_number":5051,"context_line":"        # the instance is here, even if something fails during this last stage"},{"line_number":5052,"context_line":"        node_name \u003d None"},{"line_number":5053,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_d30eff8b","line":5050,"updated":"2014-12-01 07:42:21.000000000","message":"lines 5050-5061 are duplicating the code https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2750\nThis should maybe be moved to a utility method and then reused.","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ce58c486c4a83d65a11f572515a60939da93de08","unresolved":false,"context_lines":[{"line_number":5047,"context_line":"        LOG.info(_LI(\u0027_post_live_migration() is started..\u0027),"},{"line_number":5048,"context_line":"                 instance\u003dinstance)"},{"line_number":5049,"context_line":""},{"line_number":5050,"context_line":"        # NOTE(johngarbutt) update node and host now, so we know"},{"line_number":5051,"context_line":"        # the instance is here, even if something fails during this last stage"},{"line_number":5052,"context_line":"        node_name \u003d None"},{"line_number":5053,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_b412dd55","line":5050,"in_reply_to":"5a890539_d30eff8b","updated":"2014-12-03 13:54:49.000000000","message":"Sure, but that should be a separate change really, this is just moving the code from 5247. Now it is common, a follow on change can do that.","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9a7d68f0efcda1a4fcef338459b499ccc35dea9","unresolved":false,"context_lines":[{"line_number":5055,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5056,"context_line":"        except exception.NotFound:"},{"line_number":5057,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5058,"context_line":"        finally:"},{"line_number":5059,"context_line":"            instance.host \u003d dest"},{"line_number":5060,"context_line":"            instance.node \u003d node_name"},{"line_number":5061,"context_line":"            instance.save(expected_task_state\u003dtask_states.MIGRATING)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_b3597390","line":5058,"updated":"2014-12-01 07:42:21.000000000","message":"what if there is another exception that is raised? should we not be setting the error code here?\nthat is self._set_instance_error_state","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ce58c486c4a83d65a11f572515a60939da93de08","unresolved":false,"context_lines":[{"line_number":5055,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5056,"context_line":"        except exception.NotFound:"},{"line_number":5057,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5058,"context_line":"        finally:"},{"line_number":5059,"context_line":"            instance.host \u003d dest"},{"line_number":5060,"context_line":"            instance.node \u003d node_name"},{"line_number":5061,"context_line":"            instance.save(expected_task_state\u003dtask_states.MIGRATING)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_94cb21a3","line":5058,"in_reply_to":"5a890539_b3597390","updated":"2014-12-03 13:54:49.000000000","message":"hmm, yes we should.","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9a7d68f0efcda1a4fcef338459b499ccc35dea9","unresolved":false,"context_lines":[{"line_number":5069,"context_line":"                              instance\u003dinstance)"},{"line_number":5070,"context_line":"                self._set_instance_error_state(ctxt, instance)"},{"line_number":5071,"context_line":""},{"line_number":5072,"context_line":"    def _post_live_migration_impl(self, ctxt, instance,"},{"line_number":5073,"context_line":"                            dest, block_migration, migrate_data):"},{"line_number":5074,"context_line":"        \"\"\"Operations after live migrate is complete."},{"line_number":5075,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_134ec7c2","line":5072,"updated":"2014-12-01 07:42:21.000000000","message":"alignment","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9a7d68f0efcda1a4fcef338459b499ccc35dea9","unresolved":false,"context_lines":[{"line_number":5083,"context_line":"        on the source."},{"line_number":5084,"context_line":""},{"line_number":5085,"context_line":"        :param ctxt: security context"},{"line_number":5086,"context_line":"        :param instance: instance dict"},{"line_number":5087,"context_line":"        :param dest: destination host"},{"line_number":5088,"context_line":"        :param block_migration: if true, prepare for block migration"},{"line_number":5089,"context_line":"        :param migrate_data: if not None, it is a dict which has data"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_f3521b67","line":5086,"updated":"2014-12-01 07:42:21.000000000","message":"above you have set this an instance object","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ce58c486c4a83d65a11f572515a60939da93de08","unresolved":false,"context_lines":[{"line_number":5083,"context_line":"        on the source."},{"line_number":5084,"context_line":""},{"line_number":5085,"context_line":"        :param ctxt: security context"},{"line_number":5086,"context_line":"        :param instance: instance dict"},{"line_number":5087,"context_line":"        :param dest: destination host"},{"line_number":5088,"context_line":"        :param block_migration: if true, prepare for block migration"},{"line_number":5089,"context_line":"        :param migrate_data: if not None, it is a dict which has data"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_94108101","line":5086,"in_reply_to":"5a890539_f3521b67","updated":"2014-12-03 13:54:49.000000000","message":"thats a cut and paste issue.","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9a7d68f0efcda1a4fcef338459b499ccc35dea9","unresolved":false,"context_lines":[{"line_number":5218,"context_line":"        self.network_api.setup_networks_on_host(context, instance,"},{"line_number":5219,"context_line":"                                                         self.host)"},{"line_number":5220,"context_line":"        if source is None:"},{"line_number":5221,"context_line":"            source \u003d instance[\u0027host\u0027]"},{"line_number":5222,"context_line":"        migration \u003d {\u0027source_compute\u0027: source,"},{"line_number":5223,"context_line":"                     \u0027dest_compute\u0027: self.host, }"},{"line_number":5224,"context_line":"        self.network_api.migrate_instance_finish(context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_93c9d727","line":5221,"updated":"2014-12-01 07:42:21.000000000","message":"instance is an object - can you use instance.host?","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ce58c486c4a83d65a11f572515a60939da93de08","unresolved":false,"context_lines":[{"line_number":5218,"context_line":"        self.network_api.setup_networks_on_host(context, instance,"},{"line_number":5219,"context_line":"                                                         self.host)"},{"line_number":5220,"context_line":"        if source is None:"},{"line_number":5221,"context_line":"            source \u003d instance[\u0027host\u0027]"},{"line_number":5222,"context_line":"        migration \u003d {\u0027source_compute\u0027: source,"},{"line_number":5223,"context_line":"                     \u0027dest_compute\u0027: self.host, }"},{"line_number":5224,"context_line":"        self.network_api.migrate_instance_finish(context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_348fcd24","line":5221,"in_reply_to":"5a890539_93c9d727","updated":"2014-12-03 13:54:49.000000000","message":"yes, but I was trying to limit the changes here really.","commit_id":"b9d86519f87c817389c12a059e0c64f78bc77338"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3281f986231b17ece6db3a6c264369f0ab3fb600","unresolved":false,"context_lines":[{"line_number":5073,"context_line":"    @wrap_instance_event"},{"line_number":5074,"context_line":"    @wrap_instance_fault"},{"line_number":5075,"context_line":"    def _post_live_migration(self, ctxt, instance,"},{"line_number":5076,"context_line":"                             dest, block_migration\u003dFalse, migrate_data\u003dNone):"},{"line_number":5077,"context_line":"        \"\"\"Post operations for live migration."},{"line_number":5078,"context_line":""},{"line_number":5079,"context_line":"        This method is called from live_migration"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_d1031e0b","line":5076,"updated":"2015-01-14 16:32:29.000000000","message":"nit: not necessary to fix the PEP8 indent but that\u0027s ok","commit_id":"8852aa67a66c7a0e28bd01fbf6596f27c679bc94"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"78e41259c1c2b9c59706e7815f3b52283746194e","unresolved":false,"context_lines":[{"line_number":5073,"context_line":"    @wrap_instance_event"},{"line_number":5074,"context_line":"    @wrap_instance_fault"},{"line_number":5075,"context_line":"    def _post_live_migration(self, ctxt, instance,"},{"line_number":5076,"context_line":"                             dest, block_migration\u003dFalse, migrate_data\u003dNone):"},{"line_number":5077,"context_line":"        \"\"\"Post operations for live migration."},{"line_number":5078,"context_line":""},{"line_number":5079,"context_line":"        This method is called from live_migration"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_147715a1","line":5076,"in_reply_to":"3a961159_d1031e0b","updated":"2015-02-12 10:58:53.000000000","message":"i think that this change is fine","commit_id":"8852aa67a66c7a0e28bd01fbf6596f27c679bc94"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3281f986231b17ece6db3a6c264369f0ab3fb600","unresolved":false,"context_lines":[{"line_number":5105,"context_line":"        node_name \u003d None"},{"line_number":5106,"context_line":"        try:"},{"line_number":5107,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5108,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5109,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":5110,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5111,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_b1cf72b2","line":5108,"updated":"2015-01-14 16:32:29.000000000","message":"well, the problem is that in case of Ironic or VMware, we will arbitrarely return the first node. That\u0027s OK for the manager as it\u0027s related to the nova-compute service, but here there are chances that the value would be invalid.\n\nProvided that compute manager runs hyp1 and hyp2 and inst1 is running on hyp2, we will set inst1.node to hyp1\n\nI would rather be in favor of querying the Instance itself to know which hypervisor has been taken","commit_id":"8852aa67a66c7a0e28bd01fbf6596f27c679bc94"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5cc0a5931b5a0717bf67650abc7c989496a14584","unresolved":false,"context_lines":[{"line_number":5105,"context_line":"        node_name \u003d None"},{"line_number":5106,"context_line":"        try:"},{"line_number":5107,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5108,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5109,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":5110,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5111,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_5998e669","line":5108,"in_reply_to":"3a961159_b1cf72b2","updated":"2015-02-12 10:44:04.000000000","message":"This code hasn\u0027t changed, its just moved, so the bugs are consistent before and after this change.","commit_id":"8852aa67a66c7a0e28bd01fbf6596f27c679bc94"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3281f986231b17ece6db3a6c264369f0ab3fb600","unresolved":false,"context_lines":[{"line_number":5241,"context_line":"        self.network_api.setup_networks_on_host(context, instance,"},{"line_number":5242,"context_line":"                                                         self.host)"},{"line_number":5243,"context_line":"        if source is None:"},{"line_number":5244,"context_line":"            source \u003d instance.host"},{"line_number":5245,"context_line":"        migration \u003d {\u0027source_compute\u0027: source,"},{"line_number":5246,"context_line":"                     \u0027dest_compute\u0027: self.host, }"},{"line_number":5247,"context_line":"        self.network_api.migrate_instance_finish(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_71150ae5","line":5244,"updated":"2015-01-14 16:32:29.000000000","message":"maybe splitting this patch into 2 chunks would be better nope ?\n\n1/ bump the version to add the source field \n\n2/ add the exception handler\n\nAssuming that\u0027s maybe a nitpicking, my vote will not reflect this comment","commit_id":"8852aa67a66c7a0e28bd01fbf6596f27c679bc94"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5cc0a5931b5a0717bf67650abc7c989496a14584","unresolved":false,"context_lines":[{"line_number":5241,"context_line":"        self.network_api.setup_networks_on_host(context, instance,"},{"line_number":5242,"context_line":"                                                         self.host)"},{"line_number":5243,"context_line":"        if source is None:"},{"line_number":5244,"context_line":"            source \u003d instance.host"},{"line_number":5245,"context_line":"        migration \u003d {\u0027source_compute\u0027: source,"},{"line_number":5246,"context_line":"                     \u0027dest_compute\u0027: self.host, }"},{"line_number":5247,"context_line":"        self.network_api.migrate_instance_finish(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_99cc1e6c","line":5244,"in_reply_to":"3a961159_71150ae5","updated":"2015-02-12 10:44:04.000000000","message":"Not really sure that makes sense, you only need the source for this case.","commit_id":"8852aa67a66c7a0e28bd01fbf6596f27c679bc94"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"78e41259c1c2b9c59706e7815f3b52283746194e","unresolved":false,"context_lines":[{"line_number":5271,"context_line":"                compute_node \u003d self._get_compute_info(context, self.host)"},{"line_number":5272,"context_line":"                node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5273,"context_line":"            except exception.ComputeHostNotFound:"},{"line_number":5274,"context_line":"                LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027),"},{"line_number":5275,"context_line":"                              self.host)"},{"line_number":5276,"context_line":"            instance.node \u003d node_name"},{"line_number":5277,"context_line":"        instance.save(expected_task_state\u003dtask_states.MIGRATING)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_149e35b9","line":5274,"updated":"2015-02-12 10:58:53.000000000","message":"Do we need a log exception here. Why not just log info?","commit_id":"8852aa67a66c7a0e28bd01fbf6596f27c679bc94"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"57fa383aad2fc33eb8e0ae829edc2037def04ede","unresolved":false,"context_lines":[{"line_number":5244,"context_line":"    @object_compat"},{"line_number":5245,"context_line":"    @wrap_exception()"},{"line_number":5246,"context_line":"    @reverts_task_state"},{"line_number":5247,"context_line":"    @wrap_instance_event"},{"line_number":5248,"context_line":"    @wrap_instance_fault"},{"line_number":5249,"context_line":"    def post_live_migration_at_destination(self, context, instance,"},{"line_number":5250,"context_line":"                                           block_migration, source\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_058005be","line":5247,"updated":"2015-02-17 22:41:31.000000000","message":"only a question: \nlive migration is an event, do we need to send event like\ncompute_post_live_migration_at_destination etc?","commit_id":"20424f21a324dd7de04bb95803edf0bf13cdfe51"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7083766fb0046b80cc0f8d897fcd5b8b5efbc296","unresolved":false,"context_lines":[{"line_number":5244,"context_line":"    @object_compat"},{"line_number":5245,"context_line":"    @wrap_exception()"},{"line_number":5246,"context_line":"    @reverts_task_state"},{"line_number":5247,"context_line":"    @wrap_instance_event"},{"line_number":5248,"context_line":"    @wrap_instance_fault"},{"line_number":5249,"context_line":"    def post_live_migration_at_destination(self, context, instance,"},{"line_number":5250,"context_line":"                                           block_migration, source\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_c09e5456","line":5247,"in_reply_to":"da86d52c_058005be","updated":"2015-02-20 10:27:24.000000000","message":"This is a separate operation right now, from this event point of view.","commit_id":"20424f21a324dd7de04bb95803edf0bf13cdfe51"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"57fa383aad2fc33eb8e0ae829edc2037def04ede","unresolved":false,"context_lines":[{"line_number":5252,"context_line":""},{"line_number":5253,"context_line":"        :param context: security context"},{"line_number":5254,"context_line":"        :param instance: Instance dict"},{"line_number":5255,"context_line":"        :param block_migration: if true, prepare for block migration"},{"line_number":5256,"context_line":""},{"line_number":5257,"context_line":"        \"\"\""},{"line_number":5258,"context_line":"        LOG.info(_LI(\u0027Post operation of migration started\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_0532c55d","line":5255,"updated":"2015-02-17 22:41:31.000000000","message":"need description for the \u0027source\u0027","commit_id":"20424f21a324dd7de04bb95803edf0bf13cdfe51"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7083766fb0046b80cc0f8d897fcd5b8b5efbc296","unresolved":false,"context_lines":[{"line_number":5252,"context_line":""},{"line_number":5253,"context_line":"        :param context: security context"},{"line_number":5254,"context_line":"        :param instance: Instance dict"},{"line_number":5255,"context_line":"        :param block_migration: if true, prepare for block migration"},{"line_number":5256,"context_line":""},{"line_number":5257,"context_line":"        \"\"\""},{"line_number":5258,"context_line":"        LOG.info(_LI(\u0027Post operation of migration started\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_00f5cc82","line":5255,"in_reply_to":"da86d52c_0532c55d","updated":"2015-02-20 10:27:24.000000000","message":"oops, yes.","commit_id":"20424f21a324dd7de04bb95803edf0bf13cdfe51"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"57fa383aad2fc33eb8e0ae829edc2037def04ede","unresolved":false,"context_lines":[{"line_number":5298,"context_line":"        instance.power_state \u003d current_power_state"},{"line_number":5299,"context_line":"        instance.vm_state \u003d vm_states.ACTIVE"},{"line_number":5300,"context_line":"        instance.task_state \u003d None"},{"line_number":5301,"context_line":"        if instance.host !\u003d self.host:"},{"line_number":5302,"context_line":"            # NOTE(johngarbutt) can be removed with RPC version 4.0"},{"line_number":5303,"context_line":"            instance.host \u003d self.host"},{"line_number":5304,"context_line":"            node_name \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_180b0c25","line":5301,"updated":"2015-02-17 22:41:31.000000000","message":"do we need to check both host and node?\n\nand at line 5147 we already set the value of host\nany chance that it can be changed ?thanks","commit_id":"20424f21a324dd7de04bb95803edf0bf13cdfe51"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7083766fb0046b80cc0f8d897fcd5b8b5efbc296","unresolved":false,"context_lines":[{"line_number":5298,"context_line":"        instance.power_state \u003d current_power_state"},{"line_number":5299,"context_line":"        instance.vm_state \u003d vm_states.ACTIVE"},{"line_number":5300,"context_line":"        instance.task_state \u003d None"},{"line_number":5301,"context_line":"        if instance.host !\u003d self.host:"},{"line_number":5302,"context_line":"            # NOTE(johngarbutt) can be removed with RPC version 4.0"},{"line_number":5303,"context_line":"            instance.host \u003d self.host"},{"line_number":5304,"context_line":"            node_name \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_a0fec069","line":5301,"in_reply_to":"da86d52c_180b0c25","updated":"2015-02-20 10:27:24.000000000","message":"hmm, possibly, except the node information is current broken. I can add that.","commit_id":"20424f21a324dd7de04bb95803edf0bf13cdfe51"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e5b52e4c16e137efc5c452a9719e2d080032159d","unresolved":false,"context_lines":[{"line_number":5142,"context_line":"                                  dest, block_migration, migrate_data):"},{"line_number":5143,"context_line":"        # NOTE(johngarbutt) update node and host now, so we know"},{"line_number":5144,"context_line":"        # the instance is here, even if something fails during this last stage"},{"line_number":5145,"context_line":"        node_name \u003d None"},{"line_number":5146,"context_line":"        try:"},{"line_number":5147,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5148,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_991995d9","line":5145,"updated":"2015-03-08 14:25:05.000000000","message":"why is this not set in the event of an exception - that is, on line 5150","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a5c41a18fbd9ecd48a5d4ae23a019f8ccbfff0a","unresolved":false,"context_lines":[{"line_number":5142,"context_line":"                                  dest, block_migration, migrate_data):"},{"line_number":5143,"context_line":"        # NOTE(johngarbutt) update node and host now, so we know"},{"line_number":5144,"context_line":"        # the instance is here, even if something fails during this last stage"},{"line_number":5145,"context_line":"        node_name \u003d None"},{"line_number":5146,"context_line":"        try:"},{"line_number":5147,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5148,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_c65b3352","line":5145,"in_reply_to":"9a80dd14_991995d9","updated":"2015-03-13 15:04:14.000000000","message":"This is, on purpose, a absolute copy of the logic in the old code on line 5259\n\nYou have to set it here, otherwise its not initialised during the finally block when get_compute_info fails, if I am reading this correctly.","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e5b52e4c16e137efc5c452a9719e2d080032159d","unresolved":false,"context_lines":[{"line_number":5147,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5148,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5149,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":5150,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5151,"context_line":"        finally:"},{"line_number":5152,"context_line":"            instance.host \u003d dest"},{"line_number":5153,"context_line":"            instance.node \u003d node_name"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_d986adda","line":5150,"updated":"2015-03-08 14:25:05.000000000","message":"please add instance\u003dinstance\nDo we need a LOG.exception here. Would a LOG.info not suffice?","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a5c41a18fbd9ecd48a5d4ae23a019f8ccbfff0a","unresolved":false,"context_lines":[{"line_number":5147,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5148,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5149,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":5150,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5151,"context_line":"        finally:"},{"line_number":5152,"context_line":"            instance.host \u003d dest"},{"line_number":5153,"context_line":"            instance.node \u003d node_name"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_0600eb00","line":5150,"in_reply_to":"9a80dd14_d986adda","updated":"2015-03-13 15:04:14.000000000","message":"not fixed this on purpose, based on the idea of this being a code move. I could I suppose.","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e5b52e4c16e137efc5c452a9719e2d080032159d","unresolved":false,"context_lines":[{"line_number":5151,"context_line":"        finally:"},{"line_number":5152,"context_line":"            instance.host \u003d dest"},{"line_number":5153,"context_line":"            instance.node \u003d node_name"},{"line_number":5154,"context_line":"            instance.save(expected_task_state\u003dtask_states.MIGRATING)"},{"line_number":5155,"context_line":""},{"line_number":5156,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":5157,"context_line":"                ctxt, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_f927f10f","line":5154,"updated":"2015-03-08 14:25:05.000000000","message":"in the event of an exception do we want the state as MIGRATING?\n\nWhy not just set this after line 5274 (it will save a DB write in the event of a exception","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a5c41a18fbd9ecd48a5d4ae23a019f8ccbfff0a","unresolved":false,"context_lines":[{"line_number":5151,"context_line":"        finally:"},{"line_number":5152,"context_line":"            instance.host \u003d dest"},{"line_number":5153,"context_line":"            instance.node \u003d node_name"},{"line_number":5154,"context_line":"            instance.save(expected_task_state\u003dtask_states.MIGRATING)"},{"line_number":5155,"context_line":""},{"line_number":5156,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":5157,"context_line":"                ctxt, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_e64597b4","line":5154,"in_reply_to":"9a80dd14_f927f10f","updated":"2015-03-13 15:04:14.000000000","message":"thats not what this does.\n\nThe whole point of this patch is to ensure the host field is updated no matter what happens.","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c281452ca9502dcef6eeb15e52ce1b453e603451","unresolved":false,"context_lines":[{"line_number":5303,"context_line":"        instance.power_state \u003d current_power_state"},{"line_number":5304,"context_line":"        instance.vm_state \u003d vm_states.ACTIVE"},{"line_number":5305,"context_line":"        instance.task_state \u003d None"},{"line_number":5306,"context_line":"        if source is None:"},{"line_number":5307,"context_line":"            # NOTE(johngarbutt) can be removed with RPC version 4.0"},{"line_number":5308,"context_line":"            instance.host \u003d self.host"},{"line_number":5309,"context_line":"            node_name \u003d None"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_d0cd4d5f","line":5306,"updated":"2015-03-10 02:41:05.000000000","message":"I\u0027m clearly missing something and I\u0027m not ashamed to ask in public.\n\nHow will source ever be None?  Didn\u0027t you set it on line 5283/5284?","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a5c41a18fbd9ecd48a5d4ae23a019f8ccbfff0a","unresolved":false,"context_lines":[{"line_number":5303,"context_line":"        instance.power_state \u003d current_power_state"},{"line_number":5304,"context_line":"        instance.vm_state \u003d vm_states.ACTIVE"},{"line_number":5305,"context_line":"        instance.task_state \u003d None"},{"line_number":5306,"context_line":"        if source is None:"},{"line_number":5307,"context_line":"            # NOTE(johngarbutt) can be removed with RPC version 4.0"},{"line_number":5308,"context_line":"            instance.host \u003d self.host"},{"line_number":5309,"context_line":"            node_name \u003d None"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_c6ced359","line":5306,"in_reply_to":"9a80dd14_d0cd4d5f","updated":"2015-03-13 15:04:14.000000000","message":"Its compatibility with older computes, and RPC version pinning.\n\nConsider when post_live_migration_at_destination is called using the older RPC version (consider an older compute node during upgrade), you would have to deal with source\u003dNone.","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e5b52e4c16e137efc5c452a9719e2d080032159d","unresolved":false,"context_lines":[{"line_number":5306,"context_line":"        if source is None:"},{"line_number":5307,"context_line":"            # NOTE(johngarbutt) can be removed with RPC version 4.0"},{"line_number":5308,"context_line":"            instance.host \u003d self.host"},{"line_number":5309,"context_line":"            node_name \u003d None"},{"line_number":5310,"context_line":"            try:"},{"line_number":5311,"context_line":"                compute_node \u003d self._get_compute_info(context, self.host)"},{"line_number":5312,"context_line":"                node_name \u003d compute_node.hypervisor_hostname"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_9980b5c1","line":5309,"updated":"2015-03-08 14:25:05.000000000","message":"same point with node_name here as above","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a5c41a18fbd9ecd48a5d4ae23a019f8ccbfff0a","unresolved":false,"context_lines":[{"line_number":5306,"context_line":"        if source is None:"},{"line_number":5307,"context_line":"            # NOTE(johngarbutt) can be removed with RPC version 4.0"},{"line_number":5308,"context_line":"            instance.host \u003d self.host"},{"line_number":5309,"context_line":"            node_name \u003d None"},{"line_number":5310,"context_line":"            try:"},{"line_number":5311,"context_line":"                compute_node \u003d self._get_compute_info(context, self.host)"},{"line_number":5312,"context_line":"                node_name \u003d compute_node.hypervisor_hostname"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_611d1162","line":5309,"in_reply_to":"9a80dd14_9980b5c1","updated":"2015-03-13 15:04:14.000000000","message":"as above, you need it for scope reasons.","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e5b52e4c16e137efc5c452a9719e2d080032159d","unresolved":false,"context_lines":[{"line_number":5311,"context_line":"                compute_node \u003d self._get_compute_info(context, self.host)"},{"line_number":5312,"context_line":"                node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5313,"context_line":"            except exception.ComputeHostNotFound:"},{"line_number":5314,"context_line":"                LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027),"},{"line_number":5315,"context_line":"                              self.host)"},{"line_number":5316,"context_line":"            instance.node \u003d node_name"},{"line_number":5317,"context_line":"        instance.save(expected_task_state\u003dtask_states.MIGRATING)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_5972bd11","line":5314,"updated":"2015-03-08 14:25:05.000000000","message":"do we need a log.exception here? Would a LOG.info suffice?","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a5c41a18fbd9ecd48a5d4ae23a019f8ccbfff0a","unresolved":false,"context_lines":[{"line_number":5311,"context_line":"                compute_node \u003d self._get_compute_info(context, self.host)"},{"line_number":5312,"context_line":"                node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5313,"context_line":"            except exception.ComputeHostNotFound:"},{"line_number":5314,"context_line":"                LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027),"},{"line_number":5315,"context_line":"                              self.host)"},{"line_number":5316,"context_line":"            instance.node \u003d node_name"},{"line_number":5317,"context_line":"        instance.save(expected_task_state\u003dtask_states.MIGRATING)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_615431fe","line":5314,"in_reply_to":"9a80dd14_5972bd11","updated":"2015-03-13 15:04:14.000000000","message":"its an error, not an info.\n\nkeeping the old log message here to minimise the changes in this patch.","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e5b52e4c16e137efc5c452a9719e2d080032159d","unresolved":false,"context_lines":[{"line_number":5312,"context_line":"                node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5313,"context_line":"            except exception.ComputeHostNotFound:"},{"line_number":5314,"context_line":"                LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027),"},{"line_number":5315,"context_line":"                              self.host)"},{"line_number":5316,"context_line":"            instance.node \u003d node_name"},{"line_number":5317,"context_line":"        instance.save(expected_task_state\u003dtask_states.MIGRATING)"},{"line_number":5318,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_b981f9c4","line":5315,"updated":"2015-03-08 14:25:05.000000000","message":"please add instance\u003dinstance will make debugging easier","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a5c41a18fbd9ecd48a5d4ae23a019f8ccbfff0a","unresolved":false,"context_lines":[{"line_number":5312,"context_line":"                node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5313,"context_line":"            except exception.ComputeHostNotFound:"},{"line_number":5314,"context_line":"                LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027),"},{"line_number":5315,"context_line":"                              self.host)"},{"line_number":5316,"context_line":"            instance.node \u003d node_name"},{"line_number":5317,"context_line":"        instance.save(expected_task_state\u003dtask_states.MIGRATING)"},{"line_number":5318,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_616b51b9","line":5315,"in_reply_to":"9a80dd14_b981f9c4","updated":"2015-03-13 15:04:14.000000000","message":"again, I could, but trying to minimise the changes to only those related to this bug.","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c281452ca9502dcef6eeb15e52ce1b453e603451","unresolved":false,"context_lines":[{"line_number":5313,"context_line":"            except exception.ComputeHostNotFound:"},{"line_number":5314,"context_line":"                LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027),"},{"line_number":5315,"context_line":"                              self.host)"},{"line_number":5316,"context_line":"            instance.node \u003d node_name"},{"line_number":5317,"context_line":"        instance.save(expected_task_state\u003dtask_states.MIGRATING)"},{"line_number":5318,"context_line":""},{"line_number":5319,"context_line":"        # NOTE(vish): this is necessary to update dhcp"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_3524fc0b","line":5316,"updated":"2015-03-10 02:41:05.000000000","message":"Can\u0027t this node_name lookup be factored out and shared with _post_live_migration_impl() ?","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a5c41a18fbd9ecd48a5d4ae23a019f8ccbfff0a","unresolved":false,"context_lines":[{"line_number":5313,"context_line":"            except exception.ComputeHostNotFound:"},{"line_number":5314,"context_line":"                LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027),"},{"line_number":5315,"context_line":"                              self.host)"},{"line_number":5316,"context_line":"            instance.node \u003d node_name"},{"line_number":5317,"context_line":"        instance.save(expected_task_state\u003dtask_states.MIGRATING)"},{"line_number":5318,"context_line":""},{"line_number":5319,"context_line":"        # NOTE(vish): this is necessary to update dhcp"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_e1b58132","line":5316,"in_reply_to":"9a80dd14_3524fc0b","updated":"2015-03-13 15:04:14.000000000","message":"I was trying to make this code easy to delete, once this compatibility code is no longer required.","commit_id":"9d0b2b86545c85e5a97df4d4d2f42db79683e8f3"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"8457067ae40d1f49b59118f994166e3754a8b508","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                LOG.info(_LI(\"Task possibly preempted: %s\"),"},{"line_number":293,"context_line":"                         e.format_message())"},{"line_number":294,"context_line":"        except Exception:"},{"line_number":295,"context_line":"            wrapped_func \u003d utils.get_wrapped_function(function)"},{"line_number":296,"context_line":"            keyed_args \u003d safe_utils.getcallargs(wrapped_func, context, *args,"},{"line_number":297,"context_line":"                                                **kwargs)"},{"line_number":298,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a6ced46_78cb4953","line":295,"updated":"2015-03-24 18:49:38.000000000","message":"Did these need to get called before the context manager below?","commit_id":"5a212307d583c4fe6a4cf5168ae439a6d7e7485e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"45f03a34358ffbab56744faa503001e3a99c7314","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                LOG.info(_LI(\"Task possibly preempted: %s\"),"},{"line_number":293,"context_line":"                         e.format_message())"},{"line_number":294,"context_line":"        except Exception:"},{"line_number":295,"context_line":"            wrapped_func \u003d utils.get_wrapped_function(function)"},{"line_number":296,"context_line":"            keyed_args \u003d safe_utils.getcallargs(wrapped_func, context, *args,"},{"line_number":297,"context_line":"                                                **kwargs)"},{"line_number":298,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9aa53dc9_ea1c9f6b","line":295,"in_reply_to":"1a6ced46_78cb4953","updated":"2015-04-10 13:58:20.000000000","message":"ah, oops...","commit_id":"5a212307d583c4fe6a4cf5168ae439a6d7e7485e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"8457067ae40d1f49b59118f994166e3754a8b508","unresolved":false,"context_lines":[{"line_number":5175,"context_line":"        try:"},{"line_number":5176,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5177,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5178,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":5179,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5180,"context_line":"        finally:"},{"line_number":5181,"context_line":"            instance.host \u003d dest"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a6ced46_1865f544","line":5178,"updated":"2015-03-24 18:49:38.000000000","message":"I\u0027m not clear on why this would fail, or why it would be okay to set instance.node if it does.  If Nova doesn\u0027t know about a node why would we set the instance to that node?","commit_id":"5a212307d583c4fe6a4cf5168ae439a6d7e7485e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"45f03a34358ffbab56744faa503001e3a99c7314","unresolved":false,"context_lines":[{"line_number":5175,"context_line":"        try:"},{"line_number":5176,"context_line":"            compute_node \u003d self._get_compute_info(ctxt, dest)"},{"line_number":5177,"context_line":"            node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5178,"context_line":"        except exception.ComputeHostNotFound:"},{"line_number":5179,"context_line":"            LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027), self.host)"},{"line_number":5180,"context_line":"        finally:"},{"line_number":5181,"context_line":"            instance.host \u003d dest"}],"source_content_type":"text/x-python","patch_set":14,"id":"9aa53dc9_ea337ff4","line":5178,"in_reply_to":"1a6ced46_1865f544","updated":"2015-04-10 13:58:20.000000000","message":"Me neither, this is the old code cut and paste from below, I wanted to try make this change minimal.","commit_id":"5a212307d583c4fe6a4cf5168ae439a6d7e7485e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e3ec571c739ff83680f53e5187c7683c2c4699db","unresolved":false,"context_lines":[{"line_number":5340,"context_line":"                compute_node \u003d self._get_compute_info(context, self.host)"},{"line_number":5341,"context_line":"                node_name \u003d compute_node.hypervisor_hostname"},{"line_number":5342,"context_line":"            except exception.ComputeHostNotFound:"},{"line_number":5343,"context_line":"                LOG.exception(_LE(\u0027Failed to get compute_info for %s\u0027),"},{"line_number":5344,"context_line":"                              self.host)"},{"line_number":5345,"context_line":"            instance.node \u003d node_name"},{"line_number":5346,"context_line":"        instance.save(expected_task_state\u003dtask_states.MIGRATING)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_1e8047be","line":5343,"updated":"2015-03-19 10:09:46.000000000","message":"why do we need a log exception here?","commit_id":"5a212307d583c4fe6a4cf5168ae439a6d7e7485e"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"19ef182cd075dfe68c0fc40fabf723c4a9995d83","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        existing methods in 3.x after that point should be done such that they"},{"line_number":276,"context_line":"        can handle the version_cap being set to 3.35."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        * 3.36 - Add source param to post_live_migration_at_destination"},{"line_number":279,"context_line":"    \u0027\u0027\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    VERSION_ALIASES \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_ba74a336","line":278,"updated":"2014-10-23 19:22:43.000000000","message":"If I\u0027m reading this change correctly, there is also the implied change of who/where we update the instance.host, right?","commit_id":"cf03e602c60b7d40b0ae612bc754adfb9d53ec2b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d7842b862b28b0603447c8116cf5379babc6d1c5","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        existing methods in 3.x after that point should be done such that they"},{"line_number":276,"context_line":"        can handle the version_cap being set to 3.35."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        * 3.36 - Add source param to post_live_migration_at_destination"},{"line_number":279,"context_line":"    \u0027\u0027\u0027"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    VERSION_ALIASES \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_84ddbde2","line":278,"in_reply_to":"9aa7fdbe_ba74a336","updated":"2014-10-24 08:48:50.000000000","message":"Yes, thats true. I wasn\u0027t sure how much detail we wanted here, but I can add that.","commit_id":"cf03e602c60b7d40b0ae612bc754adfb9d53ec2b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3281f986231b17ece6db3a6c264369f0ab3fb600","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                 shelve_offload"},{"line_number":281,"context_line":"        * 3.38 - Add source param to post_live_migration_at_destination. This"},{"line_number":282,"context_line":"          is because we now update the instance.host on the source host,"},{"line_number":283,"context_line":"          before calling the destination host."},{"line_number":284,"context_line":"    \u0027\u0027\u0027"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    VERSION_ALIASES \u003d {"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_d1623eac","line":283,"updated":"2015-01-14 16:32:29.000000000","message":"Could we maybe put that comment about why directly in the code rather that in the version list ?\n\nThat would be more related to the change IMHO","commit_id":"8852aa67a66c7a0e28bd01fbf6596f27c679bc94"}]}
