On Fri, Oct 07, 2016 at 08:38:07PM +0100, 'Viktor Bachraty' via ganeti-devel wrote: > Add a side effect to StartInstance on Xen hypervisor that restores the > Xen configuration in case it is missing. This is a common failure > scenario during migrations. The generic backend checks if the instance > is running and queries the hypervisor about it's state. If it needs > recovery, the backend gathers the associated block devices and calls > RestoreInstance in the same manner as if it would call StartInstance in > case the instance wasn't already running.
LGTM, except for the nits below (which don't change functionality). > + if instance_info and not _IsInstanceUserDown(instance_info): > + logging.info("Instance '%s' already running, not starting", > instance.name) > + if hyper.VerifyInstance(instance): > + return > + logging.info("Instance '%s' needs fixup", instance.name) "Instance '%s' hypervisor config out of date. Restoring." maybe? > + def VerifyInstance(self, instance): # pylint: disable=R0201,W0613 Nit: I think this is a bit misleading: it's not quite about the running instance state, it's about the config on disk. How about VerifyHypervisorConfig? > + """Verify if running instance is in correct state. Nit: has correct configuration > + @param instance: instance to stop Nit: s/to stop/to verify/ > + def RestoreInstance(self, instance, block_devices): Nit: WriteHypervisorConfig, maybe? > + @param instance: instance to stop Nit: s/to stop/to write/ > + def VerifyInstance(self, instance): > + """Verify if running instance is in correct state. > + > + @type instance: L{objects.Instance} > + @param instance: instance to stop As for hv_base. > + def RestoreInstance(self, instance, block_devices): > + """Fixup running instance's state. > + > + @type instance: L{objects.Instance} > + @param instance: instance to stop As for hv_base. > def StartInstance(self, instance, block_devices, startup_paused): > """Start an instance. > > + @type instance: L{objects.Instance} > + @param instance: instance to stop Nit: s/to stop/to start/