From 81e3ab4f8c52e9813378b3cfbbbf015fa51416c0 Mon Sep 17 00:00:00 2001
From: Agata Murawska <agatamurawska@google.com>
Date: Tue, 6 Dec 2011 17:35:08 +0100
Subject: [PATCH] Introduce instance policy on nodegroup level

Signed-off-by: Agata Murawska <agatamurawska@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 lib/cmdlib.py  | 8 ++++++++
 lib/config.py  | 5 ++++-
 lib/objects.py | 3 +++
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index faed6d735..cbd49868f 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -1229,6 +1229,14 @@ def _DecideSelfPromotion(lu, exceptions=None):
   return mc_now < mc_should
 
 
+def _CalculateGroupIPolicy(cfg, group):
+  """Calculate instance policy for group.
+
+  """
+  cluster = cfg.GetClusterInfo()
+  return cluster.SimpleFillIPolicy(group.ipolicy)
+
+
 def _CheckNicsBridgesExist(lu, target_nics, target_node):
   """Check that the brigdes needed by a list of nics exist.
 
diff --git a/lib/config.py b/lib/config.py
index 13e00ad11..03a3d5aeb 100644
--- a/lib/config.py
+++ b/lib/config.py
@@ -561,8 +561,11 @@ class ConfigWriter:
         result.append("duplicate node group name '%s'" % nodegroup.name)
       else:
         nodegroups_names.add(nodegroup.name)
+      group_name = "group %s" % nodegroup.name
+      _helper_ipolicy(group_name, cluster.SimpleFillIPolicy(nodegroup.ipolicy))
+      _helper_ispecs(group_name, cluster.SimpleFillIPolicy(nodegroup.ipolicy))
       if nodegroup.ndparams:
-        _helper("group %s" % nodegroup.name, "ndparams",
+        _helper(group_name, "ndparams",
                 cluster.SimpleFillND(nodegroup.ndparams),
                 constants.NDS_PARAMETER_TYPES)
 
diff --git a/lib/objects.py b/lib/objects.py
index 7967059b5..1e61b7352 100644
--- a/lib/objects.py
+++ b/lib/objects.py
@@ -1257,6 +1257,7 @@ class NodeGroup(TaggableObject):
     "members",
     "ndparams",
     "diskparams",
+    "ipolicy",
     "serial_no",
     "hv_state_static",
     "disk_state_static",
@@ -1304,6 +1305,8 @@ class NodeGroup(TaggableObject):
       self.mtime = time.time()
 
     self.diskparams = UpgradeDiskParams(self.diskparams)
+    if self.ipolicy is None:
+      self.ipolicy = MakeEmptyIPolicy()
 
   def FillND(self, node):
     """Return filled out ndparams for L{objects.Node}
-- 
GitLab