summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-12-18 14:05:00 +0000
committerGerrit Code Review <review@openstack.org>2014-12-18 14:05:00 +0000
commit10860db5f155052ca0d353ce9058e1c16eec8437 (patch)
treec1ae5d02c5c77ddb7eecc248df264d8f38f1879d
parent6c1a9b49dc2ffcaa743ebf866c7281622ffad8ad (diff)
parentb78dc19d9b47f3347a99394ee839c02f5127a986 (diff)
downloadpython-keystoneclient-10860db5f155052ca0d353ce9058e1c16eec8437.tar.gz
Merge "Take plugin params from ENV rather than default"1.0.0
-rw-r--r--keystoneclient/auth/base.py10
-rw-r--r--keystoneclient/tests/auth/test_cli.py20
-rw-r--r--keystoneclient/tests/auth/utils.py3
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),
]