....unless force is used. This will prevent accidentally crashing instances.
Signed-off-by: Klaus Aehlig <[email protected]> --- lib/cmdlib/instance_migration.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/cmdlib/instance_migration.py b/lib/cmdlib/instance_migration.py index 2708b32..4c6f297 100644 --- a/lib/cmdlib/instance_migration.py +++ b/lib/cmdlib/instance_migration.py @@ -133,7 +133,7 @@ class LUInstanceFailover(LogicalUnit): TLMigrateInstance(self, self.op.instance_uuid, self.op.instance_name, self.op.cleanup, True, False, self.op.ignore_consistency, True, - self.op.shutdown_timeout, self.op.ignore_ipolicy) + self.op.shutdown_timeout, self.op.ignore_ipolicy, True) self.tasklets = [self._migrater] @@ -199,7 +199,7 @@ class LUInstanceMigrate(LogicalUnit): self.op.cleanup, False, self.op.allow_failover, False, self.op.allow_runtime_changes, constants.DEFAULT_SHUTDOWN_TIMEOUT, - self.op.ignore_ipolicy) + self.op.ignore_ipolicy, False) self.tasklets = [self._migrater] @@ -270,6 +270,8 @@ class TLMigrateInstance(Tasklet): @ivar shutdown_timeout: In case of failover timeout of the shutdown @type ignore_ipolicy: bool @ivar ignore_ipolicy: If true, we can ignore instance policy when migrating + @type ignore_hvversions: bool + @ivar ignore_hvversions: If true, accept incompatible hypervisor versions """ @@ -279,7 +281,7 @@ class TLMigrateInstance(Tasklet): def __init__(self, lu, instance_uuid, instance_name, cleanup, failover, fallback, ignore_consistency, allow_runtime_changes, - shutdown_timeout, ignore_ipolicy): + shutdown_timeout, ignore_ipolicy, ignore_hvversions): """Initializes this class. """ @@ -296,6 +298,7 @@ class TLMigrateInstance(Tasklet): self.shutdown_timeout = shutdown_timeout self.ignore_ipolicy = ignore_ipolicy self.allow_runtime_changes = allow_runtime_changes + self.ignore_hvversions = ignore_hvversions def CheckPrereq(self): """Check prerequisites. @@ -695,6 +698,19 @@ class TLMigrateInstance(Tasklet): self.feedback_fn("* warning: hypervisor version mismatch between" " source (%s) and target (%s) node" % (src_version, dst_version)) + if utils.HVVersionsLikelySafeForMigration(src_version, dst_version): + self.feedback_fn(" migrating from hypervisor version %s to %s should" + " be save" % (src_version, dst_version)) + else: + self.feedback_fn(" migrating from hypervisor version %s to %s is" + " likely unsupported" % (src_version, dst_version)) + if self.ignore_hvversions: + self.feedback_fn(" continuing anyway (told to ignore version" + " mismatch)") + else: + raise errors.OpExecError("Unsupported migration between hypervisor" + " versions (%s to %s)" % + (src_version, dst_version)) self.feedback_fn("* checking disk consistency between source and target") for (idx, dev) in enumerate(self.cfg.GetInstanceDisks(self.instance.uuid)): -- 2.1.0.rc2.206.gedb03e5
