On Thu, Oct 02, 2014 at 10:11:38AM +0200, 'Klaus Aehlig' via ganeti-devel wrote:
....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))
s/save/safe/
+ 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
LGTM, no need to resend.