summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-04-25 22:58:22 +0000
committerGerrit Code Review <review@openstack.org>2017-04-25 22:58:22 +0000
commitf6804f6b0dec9b1322ee996972489c1118f19f90 (patch)
tree7d81710bfdcddf4bf16029bba32d175df3b22def
parentd300678f4066542c61d579dac625e86a09ca9f98 (diff)
parentff2c06c30538edb9cb47b83f0a194f7893a7f458 (diff)
downloados-client-config-f6804f6b0dec9b1322ee996972489c1118f19f90.tar.gz
Merge "Make _fix_argv() somewhat compatible with Argparse action='append'"1.27.0
-rw-r--r--os_client_config/config.py5
-rw-r--r--os_client_config/tests/test_config.py11
2 files changed, 15 insertions, 1 deletions
diff --git a/os_client_config/config.py b/os_client_config/config.py
index 89b5c6c..96d7f53 100644
--- a/os_client_config/config.py
+++ b/os_client_config/config.py
@@ -19,6 +19,7 @@ import collections
import copy
import json
import os
+import re
import sys
import warnings
@@ -146,7 +147,9 @@ def _fix_argv(argv):
# over the place.
processed = collections.defaultdict(list)
for index in range(0, len(argv)):
- if argv[index].startswith('--'):
+ # If the value starts with '--' and has '-' or '_' in it, then
+ # it's worth looking at it
+ if re.match('^--.*(_|-)+.*', argv[index]):
split_args = argv[index].split('=')
orig = split_args[0]
new = orig.replace('_', '-')
diff --git a/os_client_config/tests/test_config.py b/os_client_config/tests/test_config.py
index dcc841a..09a11d2 100644
--- a/os_client_config/tests/test_config.py
+++ b/os_client_config/tests/test_config.py
@@ -702,6 +702,17 @@ class TestConfigArgparse(base.TestCase):
self.assertEqual(cc.config['auth']['password'], 'pass')
self.assertEqual(cc.config['auth']['auth_url'], 'auth-url')
+ def test_argparse_action_append_no_underscore(self):
+ c = config.OpenStackConfig(config_files=[self.no_yaml],
+ vendor_files=[self.no_yaml],
+ secure_files=[self.no_yaml])
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--foo', action='append')
+ argv = ['--foo', '1', '--foo', '2']
+ c.register_argparse_arguments(parser, argv=argv)
+ opts, _remain = parser.parse_known_args(argv)
+ self.assertEqual(opts.foo, ['1', '2'])
+
def test_argparse_underscores_duplicate(self):
c = config.OpenStackConfig(config_files=[self.no_yaml],
vendor_files=[self.no_yaml],