Merge "Take plugin params from ENV rather than default"
This commit is contained in:
		| @@ -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) | ||||
|  | ||||
|             parser.add_argument(*args, | ||||
|                                 default=default, | ||||
|                                 default=default or opt.default, | ||||
|                                 metavar=opt.metavar, | ||||
|                                 help=opt.help, | ||||
|                                 dest='os_%s' % opt.dest) | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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), | ||||
|         ] | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins