diff --git a/os_collect_config/collect.py b/os_collect_config/collect.py index fdee61c..937177a 100644 --- a/os_collect_config/collect.py +++ b/os_collect_config/collect.py @@ -106,8 +106,15 @@ def collect_all(collectors, store=False, requests_impl_map=None): def __main__(args=sys.argv, requests_impl_map=None): setup_conf() CONF(args=args[1:], prog="os-collect-config") + log.setup("os-collect-config") + unknown_collectors = set(CONF.collectors) - set(DEFAULT_COLLECTORS) + if unknown_collectors: + raise exc.InvalidArguments( + 'Unknown collectors %s. Valid collectors are: %s' % + (list(unknown_collectors), DEFAULT_COLLECTORS)) + (any_changed, content) = collect_all(cfg.CONF.collectors, store=bool(CONF.command), requests_impl_map=requests_impl_map) diff --git a/os_collect_config/exc.py b/os_collect_config/exc.py index d8bf515..be2a633 100644 --- a/os_collect_config/exc.py +++ b/os_collect_config/exc.py @@ -16,3 +16,7 @@ class CfnMetadataNotConfigured(SourceNotAvailable): class HeatLocalMetadataNotAvailable(SourceNotAvailable): """The local Heat metadata is not available.""" + + +class InvalidArguments(ValueError): + """Invalid arguments.""" diff --git a/os_collect_config/tests/test_collect.py b/os_collect_config/tests/test_collect.py index b2e467c..909d24f 100644 --- a/os_collect_config/tests/test_collect.py +++ b/os_collect_config/tests/test_collect.py @@ -24,6 +24,7 @@ import testtools from testtools import matchers from os_collect_config import collect +from os_collect_config import exc from os_collect_config.tests import test_cfn from os_collect_config.tests import test_ec2 from os_collect_config.tests import test_heat_local @@ -126,6 +127,10 @@ class TestCollect(testtools.TestCase): self.assertIn('ec2', out_struct) self.assertIn('cfn', out_struct) + def test_main_invalid_collector(self): + fake_args = ['os-collect-config', 'invalid'] + self.assertRaises(exc.InvalidArguments, self._call_main, fake_args) + class TestCollectAll(testtools.TestCase): def setUp(self):