X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/26f15862d6dd3ab2ea34de066c8c789a649d70f1..5de4474dee09d243a9c940481334d22da6f1d8d7:/scripts/gnt-cluster diff --git a/scripts/gnt-cluster b/scripts/gnt-cluster index 9cd1f52..928e0ac 100755 --- a/scripts/gnt-cluster +++ b/scripts/gnt-cluster @@ -69,13 +69,7 @@ def InitCluster(opts, args): (opts.default_hypervisor, hvlist)) return 1 - hvparams = opts.hvparams - if hvparams: - # a list of (name, dict) we can pass directly to dict() - hvparams = dict(opts.hvparams) - else: - # otherwise init as empty dict - hvparams = {} + hvparams = dict(opts.hvparams) beparams = opts.beparams # check for invalid parameters @@ -88,17 +82,7 @@ def InitCluster(opts, args): for parameter in constants.BES_PARAMETERS: if parameter not in beparams: beparams[parameter] = constants.BEC_DEFAULTS[parameter] - - # type wrangling - try: - beparams[constants.BE_VCPUS] = int(beparams[constants.BE_VCPUS]) - except ValueError: - ToStderr("%s must be an integer", constants.BE_VCPUS) - return 1 - - if not isinstance(beparams[constants.BE_MEMORY], int): - beparams[constants.BE_MEMORY] = utils.ParseUnit( - beparams[constants.BE_MEMORY]) + utils.ForceDictType(beparams, constants.BES_PARAMETER_TYPES) # prepare hvparams dict for hv in constants.HYPER_TYPES: @@ -107,6 +91,7 @@ def InitCluster(opts, args): for parameter in constants.HVC_DEFAULTS[hv]: if parameter not in hvparams[hv]: hvparams[hv][parameter] = constants.HVC_DEFAULTS[hv][parameter] + utils.ForceDictType(hvparams[hv], constants.HVS_PARAMETER_TYPES) for hv in hvlist: if hv not in constants.HYPER_TYPES: @@ -187,7 +172,7 @@ def RedistributeConfig(opts, args): @return: the desired exit code """ - op = opcodes.OpRedistributeConf() + op = opcodes.OpRedistributeConfig() SubmitOrSend(op, opts) return 0 @@ -202,8 +187,8 @@ def ShowClusterVersion(opts, args): @return: the desired exit code """ - op = opcodes.OpQueryClusterInfo() - result = SubmitOpCode(op) + cl = GetClient() + result = cl.QueryClusterInfo() ToStdout("Software version: %s", result["software_version"]) ToStdout("Internode protocol: %s", result["protocol_version"]) ToStdout("Configuration format: %s", result["config_version"]) @@ -236,8 +221,8 @@ def ShowClusterConfig(opts, args): @return: the desired exit code """ - op = opcodes.OpQueryClusterInfo() - result = SubmitOpCode(op) + cl = GetClient() + result = cl.QueryClusterInfo() ToStdout("Cluster name: %s", result["name"]) @@ -482,12 +467,13 @@ def SetClusterParams(opts, args): if hvlist is not None: hvlist = hvlist.split(",") - hvparams = opts.hvparams - if hvparams: - # a list of (name, dict) we can pass directly to dict() - hvparams = dict(opts.hvparams) + # a list of (name, dict) we can pass directly to dict() (or []) + hvparams = dict(opts.hvparams) + for hv, hv_params in hvparams.iteritems(): + utils.ForceDictType(hv_params, constants.HVS_PARAMETER_TYPES) beparams = opts.beparams + utils.ForceDictType(beparams, constants.BES_PARAMETER_TYPES) op = opcodes.OpSetClusterParams(vg_name=opts.vg_name, enabled_hypervisors=hvlist,