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