Detect invalid collectors.

The program would blow up anyway, but provide users with a more friendly
error message.

Change-Id: If70fc27b61963058af036568b88535b7f2dcff3f
This commit is contained in:
Clint Byrum 2013-07-05 17:15:32 -07:00
parent ba6c781db0
commit 140e527458
3 changed files with 16 additions and 0 deletions

View File

@ -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)

View File

@ -16,3 +16,7 @@ class CfnMetadataNotConfigured(SourceNotAvailable):
class HeatLocalMetadataNotAvailable(SourceNotAvailable):
"""The local Heat metadata is not available."""
class InvalidArguments(ValueError):
"""Invalid arguments."""

View File

@ -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):