diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 12419376b24a8f63122ae6ed8a9f5598769006d4..9f90a3b4dc068bbf2b1b75d6f72c7104257c3383 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -2059,6 +2059,19 @@ class LUFailoverInstance(LogicalUnit): raise errors.OpPrereqError, ("Instance '%s' not known" % self.op.instance_name) + # check memory requirements on the secondary node + target_node = instance.secondary_nodes[0] + nodeinfo = rpc.call_node_info([target_node], self.cfg.GetVGName()) + info = nodeinfo.get(target_node, None) + if not info: + raise errors.OpPrereqError, ("Cannot get current information" + " from node '%s'" % nodeinfo) + if instance.memory > info['memory_free']: + raise errors.OpPrereqError, ("Not enough memory on target node %s." + " %d MB available, %d MB required" % + (target_node, info['memory_free'], + instance.memory)) + # check bridge existance brlist = [nic.bridge for nic in instance.nics] if not rpc.call_bridges_exist(instance.primary_node, brlist):