From 3a7c308e1b0d6716d6bb16bc8af30a85616f2976 Mon Sep 17 00:00:00 2001
From: Guido Trotter <ultrotter@google.com>
Date: Thu, 19 Jul 2007 14:41:21 +0000
Subject: [PATCH] Check for memory size requirements before failing over an
 instance.

Reviewed-By: iustinp
---
 lib/cmdlib.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 12419376b..9f90a3b4d 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):
-- 
GitLab