diff --git a/lib/objects.py b/lib/objects.py index 729a8bec43d1b681892c51b5133427b1734698c2..1a6178d6553002645a96a3ba38de97c0ade6e1cb 100644 --- a/lib/objects.py +++ b/lib/objects.py @@ -54,6 +54,24 @@ def FillDict(defaults_dict, custom_dict): ret_dict.update(custom_dict) return ret_dict + +def UpgradeGroupedParams(target, defaults): + """Update all groups for the target parameter. + + @type target: dict of dicts + @param target: {group: {parameter: value}} + @type defaults: dict + @param defaults: default parameter values + + """ + if target is None: + target = {constants.PP_DEFAULT: defaults} + else: + for group in target: + target[group] = FillDict(defaults, target[group]) + return target + + class ConfigObject(object): """A generic config object. @@ -763,12 +781,8 @@ class Cluster(TaggableObject): self.hvparams[hypervisor] = FillDict( constants.HVC_DEFAULTS[hypervisor], self.hvparams[hypervisor]) - if self.beparams is None: - self.beparams = {constants.PP_DEFAULT: constants.BEC_DEFAULTS} - else: - for begroup in self.beparams: - self.beparams[begroup] = FillDict(constants.BEC_DEFAULTS, - self.beparams[begroup]) + self.beparams = UpgradeGroupedParams(self.beparams, + constants.BEC_DEFAULTS) if self.modify_etc_hosts is None: self.modify_etc_hosts = True