+ cluster.master_node)
+
+ def _helper(owner, attr, value, template):
+ try:
+ utils.ForceDictType(value, template)
+ except errors.GenericError, err:
+ result.append("%s has invalid %s: %s" % (owner, attr, err))
+
+ def _helper_nic(owner, params):
+ try:
+ objects.NIC.CheckParameterSyntax(params)
+ except errors.ConfigurationError, err:
+ result.append("%s has invalid nicparams: %s" % (owner, err))
+
+ def _helper_ipolicy(owner, params):
+ try:
+ objects.InstancePolicy.CheckParameterSyntax(params)
+ except errors.ConfigurationError, err:
+ result.append("%s has invalid instance policy: %s" % (owner, err))
+
+ def _helper_ispecs(owner, params):
+ for key, value in params.items():
+ if key in constants.IPOLICY_ISPECS:
+ fullkey = "ipolicy/" + key
+ _helper(owner, fullkey, value, constants.ISPECS_PARAMETER_TYPES)
+ else:
+ # FIXME: assuming list type
+ if key in constants.IPOLICY_PARAMETERS:
+ exp_type = float
+ else:
+ exp_type = list
+ if not isinstance(value, exp_type):
+ result.append("%s has invalid instance policy: for %s,"
+ " expecting %s, got %s" %
+ (owner, key, exp_type.__name__, type(value)))
+
+ # check cluster parameters
+ _helper("cluster", "beparams", cluster.SimpleFillBE({}),
+ constants.BES_PARAMETER_TYPES)
+ _helper("cluster", "nicparams", cluster.SimpleFillNIC({}),
+ constants.NICS_PARAMETER_TYPES)
+ _helper_nic("cluster", cluster.SimpleFillNIC({}))
+ _helper("cluster", "ndparams", cluster.SimpleFillND({}),
+ constants.NDS_PARAMETER_TYPES)
+ _helper_ipolicy("cluster", cluster.SimpleFillIPolicy({}))
+ _helper_ispecs("cluster", cluster.SimpleFillIPolicy({}))