_PMigrationMode = ("mode", None, _TOr(_TNone,
_TElemOf(constants.HT_MIGRATION_MODES)))
+#: the obsolete 'live' mode (boolean)
+_PMigrationLive = ("live", None, _TMaybeBool)
+
# End types
class LogicalUnit(object):
_OP_PARAMS = [
_PInstanceName,
_PMigrationMode,
+ _PMigrationLive,
("cleanup", False, _TBool),
]
_OP_PARAMS = [
_PNodeName,
_PMigrationMode,
+ _PMigrationLive,
]
REQ_BGL = False
self.instance = instance
- if self.lu.op.mode is None:
+ if self.lu.op.live is not None and self.lu.op.mode is not None:
+ raise errors.OpPrereqError("Only one of the 'live' and 'mode'"
+ " parameters are accepted",
+ errors.ECODE_INVAL)
+ if self.lu.op.live is not None:
+ if self.lu.op.live:
+ self.lu.op.mode = constants.HT_MIGRATION_LIVE
+ else:
+ self.lu.op.mode = constants.HT_MIGRATION_NONLIVE
+ # reset the 'live' parameter to None so that repeated
+ # invocations of CheckPrereq do not raise an exception
+ self.lu.op.live = None
+ elif self.lu.op.mode is None:
# read the default value from the hypervisor
i_hv = self.cfg.GetClusterInfo().FillHV(instance, skip_globals=False)
self.lu.op.mode = i_hv[constants.HV_MIGRATION_MODE]
__slots__ = [
"node_name",
"mode",
+ "live",
]
"""
OP_ID = "OP_INSTANCE_MIGRATE"
OP_DSC_FIELD = "instance_name"
- __slots__ = ["instance_name", "mode", "cleanup"]
+ __slots__ = ["instance_name", "mode", "cleanup", "live"]
class OpMoveInstance(OpCode):