This code raises a configuration error, but we need to transform it
into a prereq error (or possibly exec error), depending on when we
call this function.
---
 lib/cmdlib.py |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 30a3e12..c520221 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -3862,7 +3862,11 @@ class LUClusterSetParams(LogicalUnit):
         utils.ForceDictType(value, constants.ISPECS_PARAMETER_TYPES)
         ipolicy[key] = _GetUpdatedParams(cluster.ipolicy.get(key, {}),
                                           value)
-      objects.InstancePolicy.CheckParameterSyntax(ipolicy)
+      try:
+        objects.InstancePolicy.CheckParameterSyntax(ipolicy)
+      except errors.ConfigurationError, err:
+        raise errors.OpPrereqError("Invalid instance policy: %s" % err,
+                                   errors.ECODE_INVAL)
       self.new_ipolicy = ipolicy
 
     if self.op.nicparams:
@@ -12984,7 +12988,11 @@ class LUGroupAdd(LogicalUnit):
     if self.op.ipolicy:
       cluster = self.cfg.GetClusterInfo()
       full_ipolicy = cluster.SimpleFillIPolicy(self.op.ipolicy)
-      objects.InstancePolicy.CheckParameterSyntax(full_ipolicy)
+      try:
+        objects.InstancePolicy.CheckParameterSyntax(full_ipolicy)
+      except errors.ConfigurationError, err:
+        raise errors.OpPrereqError("Invalid instance policy: %s" % err,
+                                   errors.ECODE_INVAL)
 
   def BuildHooksEnv(self):
     """Build hooks env.
@@ -13322,7 +13330,11 @@ class LUGroupSetParams(LogicalUnit):
                                            use_none=True)
         utils.ForceDictType(g_ipolicy[key], constants.ISPECS_PARAMETER_TYPES)
       self.new_ipolicy = g_ipolicy
-      objects.InstancePolicy.CheckParameterSyntax(self.new_ipolicy)
+      try:
+        objects.InstancePolicy.CheckParameterSyntax(self.new_ipolicy)
+      except errors.ConfigurationError, err:
+        raise errors.OpPrereqError("Invalid instance policy: %s" % err,
+                                   errors.ECODE_INVAL)
 
   def BuildHooksEnv(self):
     """Build hooks env.
-- 
1.7.3.1

Reply via email to