summaryrefslogtreecommitdiff
path: root/ceilometer/cmd
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-03-08 04:34:33 +0000
committerGerrit Code Review <review@openstack.org>2016-03-08 04:34:33 +0000
commit7b3712eb50f510b96b97e440a570dbcfeb77cee5 (patch)
tree4ece606210858794fad7823783ce1da4b2cb124c /ceilometer/cmd
parent5356d19b75acd1091718fdb96f917777ae1fc382 (diff)
parent55afd4fa763f62e75fb00e0622df9862811365b8 (diff)
downloadceilometer-7b3712eb50f510b96b97e440a570dbcfeb77cee5.tar.gz
Merge "Add validation for polling_namespaces option"
Diffstat (limited to 'ceilometer/cmd')
-rw-r--r--ceilometer/cmd/polling.py19
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