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