diff --git a/lib/cli.py b/lib/cli.py index 0e7918ad37b953d73f6e9772eb4bca29da382509..fea2c1d40ddaeff5e3b29bdb7a6e11a73dfe8fb9 100644 --- a/lib/cli.py +++ b/lib/cli.py @@ -236,6 +236,7 @@ __all__ = [ "FormatQueryResult", "FormatParameterDict", "FormatParamsDictInfo", + "FormatPolicyInfo", "PrintGenericInfo", "GenerateTable", "AskUser", @@ -3639,6 +3640,57 @@ def FormatParamsDictInfo(param_dict, actual): return ret +def _FormatListInfoDefault(data, def_data): + if data is not None: + ret = utils.CommaJoin(data) + else: + ret = "default (%s)" % utils.CommaJoin(def_data) + return ret + + +def FormatPolicyInfo(custom_ipolicy, eff_ipolicy, iscluster): + """Formats an instance policy. + + @type custom_ipolicy: dict + @param custom_ipolicy: own policy + @type eff_ipolicy: dict + @param eff_ipolicy: effective policy (including defaults); ignored for + cluster + @type iscluster: bool + @param iscluster: the policy is at cluster level + @rtype: list of pairs + @return: formatted data, suitable for L{PrintGenericInfo} + + """ + if iscluster: + eff_ipolicy = custom_ipolicy + + custom_minmax = custom_ipolicy.get(constants.ISPECS_MINMAX) + ret = [ + (key, + FormatParamsDictInfo(custom_minmax.get(key, {}), + eff_ipolicy[constants.ISPECS_MINMAX][key])) + for key in constants.ISPECS_MINMAX_KEYS + ] + if iscluster: + stdspecs = custom_ipolicy[constants.ISPECS_STD] + ret.append( + (constants.ISPECS_STD, + FormatParamsDictInfo(stdspecs, stdspecs)) + ) + + ret.append( + ("enabled disk templates", + _FormatListInfoDefault(custom_ipolicy.get(constants.IPOLICY_DTS), + eff_ipolicy[constants.IPOLICY_DTS])) + ) + ret.extend([ + (key, str(custom_ipolicy.get(key, "default (%s)" % eff_ipolicy[key]))) + for key in constants.IPOLICY_PARAMETERS + ]) + return ret + + def ConfirmOperation(names, list_type, text, extra=""): """Ask the user to confirm an operation on a list of list_type. diff --git a/lib/client/gnt_cluster.py b/lib/client/gnt_cluster.py index bbee602fb7721142d47c7e19c8e37e62c1e1e196..e44f834423afbf1618c9165deeef1a8bb58d6419 100644 --- a/lib/client/gnt_cluster.py +++ b/lib/client/gnt_cluster.py @@ -474,23 +474,7 @@ def ShowClusterConfig(opts, args): _FormatGroupedParams(result["diskparams"], roman=opts.roman_integers)), ("Instance policy - limits for instances", - [ - (key, - _FormatGroupedParams(result["ipolicy"][constants.ISPECS_MINMAX][key], - roman=opts.roman_integers)) - for key in constants.ISPECS_MINMAX_KEYS - ] + - [ - (constants.ISPECS_STD, - _FormatGroupedParams(result["ipolicy"][constants.ISPECS_STD], - roman=opts.roman_integers)), - ("enabled disk templates", - utils.CommaJoin(result["ipolicy"][constants.IPOLICY_DTS])), - ] + - [ - (key, result["ipolicy"][key]) - for key in constants.IPOLICY_PARAMETERS - ]), + FormatPolicyInfo(result["ipolicy"], None, True)), ] PrintGenericInfo(info)