diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-12-18 14:05:00 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-12-18 14:05:00 +0000 |
commit | 10860db5f155052ca0d353ce9058e1c16eec8437 (patch) | |
tree | c1ae5d02c5c77ddb7eecc248df264d8f38f1879d | |
parent | 6c1a9b49dc2ffcaa743ebf866c7281622ffad8ad (diff) | |
parent | b78dc19d9b47f3347a99394ee839c02f5127a986 (diff) | |
download | python-keystoneclient-10860db5f155052ca0d353ce9058e1c16eec8437.tar.gz |
Merge "Take plugin params from ENV rather than default"1.0.0
-rw-r--r-- | keystoneclient/auth/base.py | 10 | ||||
-rw-r--r-- | keystoneclient/tests/auth/test_cli.py | 20 | ||||
-rw-r--r-- | keystoneclient/tests/auth/utils.py | 3 |
3 files changed, 27 insertions, 6 deletions
diff --git a/keystoneclient/auth/base.py b/keystoneclient/auth/base.py index 1f4ce29..4c743d9 100644 --- a/keystoneclient/auth/base.py +++ b/keystoneclient/auth/base.py @@ -155,14 +155,12 @@ class BaseAuthPlugin(object): args.append('--os-%s' % o.name) envs.append('OS_%s' % o.name.replace('-', '_').upper()) - default = opt.default - if default is None: - # select the first ENV that is not false-y or return None - env_vars = (os.environ.get(e) for e in envs) - default = six.next(six.moves.filter(None, env_vars), None) + # select the first ENV that is not false-y or return None + env_vars = (os.environ.get(e) for e in envs) + default = six.next(six.moves.filter(None, env_vars), None) parser.add_argument(*args, - default=default, + default=default or opt.default, metavar=opt.metavar, help=opt.help, dest='os_%s' % opt.dest) diff --git a/keystoneclient/tests/auth/test_cli.py b/keystoneclient/tests/auth/test_cli.py index fc09195..33c2868 100644 --- a/keystoneclient/tests/auth/test_cli.py +++ b/keystoneclient/tests/auth/test_cli.py @@ -13,6 +13,7 @@ import argparse import uuid +import fixtures import mock from oslo.config import cfg @@ -43,6 +44,13 @@ class CliTests(utils.TestCase): super(CliTests, self).setUp() self.p = argparse.ArgumentParser() + def env(self, name, value=None): + if value is not None: + # environment variables are always strings + value = str(value) + + return self.useFixture(fixtures.EnvironmentVariable(name, value)) + def test_creating_with_no_args(self): ret = cli.register_argparse_arguments(self.p, []) self.assertIsNone(ret) @@ -140,6 +148,18 @@ class CliTests(utils.TestCase): self.assertIs(utils.MockPlugin, klass) m.assert_called_once_with(name) + @utils.mock_plugin + def test_env_overrides_default_opt(self, m): + name = uuid.uuid4().hex + val = uuid.uuid4().hex + self.env('OS_A_STR', val) + + klass = cli.register_argparse_arguments(self.p, [], default=name) + opts = self.p.parse_args([]) + a = klass.load_from_argparse_arguments(opts) + + self.assertEqual(val, a['a_str']) + def test_deprecated_cli_options(self): TesterPlugin.register_argparse_arguments(self.p) val = uuid.uuid4().hex diff --git a/keystoneclient/tests/auth/utils.py b/keystoneclient/tests/auth/utils.py index c3dae8f..cfca379 100644 --- a/keystoneclient/tests/auth/utils.py +++ b/keystoneclient/tests/auth/utils.py @@ -30,6 +30,8 @@ class MockPlugin(base.BaseAuthPlugin): INT_DESC = 'test int' FLOAT_DESC = 'test float' BOOL_DESC = 'test bool' + STR_DESC = 'test str' + STR_DEFAULT = uuid.uuid4().hex def __init__(self, **kwargs): self._data = kwargs @@ -49,6 +51,7 @@ class MockPlugin(base.BaseAuthPlugin): cfg.IntOpt('a-int', default='3', help=cls.INT_DESC), cfg.BoolOpt('a-bool', help=cls.BOOL_DESC), cfg.FloatOpt('a-float', help=cls.FLOAT_DESC), + cfg.StrOpt('a-str', help=cls.STR_DESC, default=cls.STR_DEFAULT), ] |