diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-03-08 04:34:33 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-03-08 04:34:33 +0000 |
commit | 7b3712eb50f510b96b97e440a570dbcfeb77cee5 (patch) | |
tree | 4ece606210858794fad7823783ce1da4b2cb124c /ceilometer/cmd | |
parent | 5356d19b75acd1091718fdb96f917777ae1fc382 (diff) | |
parent | 55afd4fa763f62e75fb00e0622df9862811365b8 (diff) | |
download | ceilometer-7b3712eb50f510b96b97e440a570dbcfeb77cee5.tar.gz |
Merge "Add validation for polling_namespaces option"
Diffstat (limited to 'ceilometer/cmd')
-rw-r--r-- | ceilometer/cmd/polling.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/ceilometer/cmd/polling.py b/ceilometer/cmd/polling.py index 1055711e..e4bb583f 100644 --- a/ceilometer/cmd/polling.py +++ b/ceilometer/cmd/polling.py @@ -29,9 +29,8 @@ CONF = cfg.CONF class MultiChoicesOpt(cfg.Opt): def __init__(self, name, choices=None, **kwargs): - super(MultiChoicesOpt, self).__init__(name, - type=DeduplicatedCfgList(), - **kwargs) + super(MultiChoicesOpt, self).__init__( + name, type=DeduplicatedCfgList(choices), **kwargs) self.choices = choices def _get_argparse_kwargs(self, group, **kwargs): @@ -45,12 +44,20 @@ class MultiChoicesOpt(cfg.Opt): class DeduplicatedCfgList(cfg.types.List): + def __init__(self, choices=None, **kwargs): + super(DeduplicatedCfgList, self).__init__(**kwargs) + self.choices = choices or [] + def __call__(self, *args, **kwargs): result = super(DeduplicatedCfgList, self).__call__(*args, **kwargs) - if len(result) != len(set(result)): + result_set = set(result) + if len(result) != len(result_set): LOG.warning(_LW("Duplicated values: %s found in CLI options, " - "auto de-duplidated"), result) - result = list(set(result)) + "auto de-duplicated"), result) + result = list(result_set) + if self.choices and not (result_set <= set(self.choices)): + raise Exception('Valid values are %s, but found %s' + % (self.choices, result)) return result |