summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-01-24 15:35:33 +0000
committerGerrit Code Review <review@openstack.org>2017-01-24 15:35:33 +0000
commitbfad2abf23de1689a28d0377b0498db0feccdf3a (patch)
tree7c8e211282ea4758da7358985d2e3c8a434f2898 /openstackclient
parent1ef0dae8b1347d78cecec8007031679e7315f77b (diff)
parent4d9da2c40ae02086258cfde852b297754d8085fa (diff)
downloadpython-openstackclient-bfad2abf23de1689a28d0377b0498db0feccdf3a.tar.gz
Merge "Fix OSC networking commands help errors"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/common/clientmanager.py27
-rw-r--r--openstackclient/tests/functional/common/test_help.py7
2 files changed, 32 insertions, 2 deletions
diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py
index 23c35a3b..3e1a50e3 100644
--- a/openstackclient/common/clientmanager.py
+++ b/openstackclient/common/clientmanager.py
@@ -59,6 +59,8 @@ class ClientManager(clientmanager.ClientManager):
self._interface = self.interface
self._cacert = self.cacert
self._insecure = not self.verify
+ # store original auth_type
+ self._original_auth_type = cli_options.auth_type
def setup_auth(self):
"""Set up authentication"""
@@ -73,12 +75,33 @@ class ClientManager(clientmanager.ClientManager):
if self._cli_options._openstack_config is not None:
self._cli_options._openstack_config._pw_callback = \
shell.prompt_for_password
+ try:
+ self._cli_options._auth = \
+ self._cli_options._openstack_config.load_auth_plugin(
+ self._cli_options.config,
+ )
+ except TypeError as e:
+ self._fallback_load_auth_plugin(e)
+
+ return super(ClientManager, self).setup_auth()
+
+ def _fallback_load_auth_plugin(self, e):
+ # NOTES(RuiChen): Hack to avoid auth plugins choking on data they don't
+ # expect, delete fake token and endpoint, then try to
+ # load auth plugin again with user specified options.
+ # We know it looks ugly, but it's necessary.
+ if self._cli_options.config['auth']['token'] == 'x':
+ # restore original auth_type
+ self._cli_options.config['auth_type'] = \
+ self._original_auth_type
+ del self._cli_options.config['auth']['token']
+ del self._cli_options.config['auth']['endpoint']
self._cli_options._auth = \
self._cli_options._openstack_config.load_auth_plugin(
self._cli_options.config,
)
-
- return super(ClientManager, self).setup_auth()
+ else:
+ raise e
def is_network_endpoint_enabled(self):
"""Check if the network endpoint is enabled"""
diff --git a/openstackclient/tests/functional/common/test_help.py b/openstackclient/tests/functional/common/test_help.py
index bbc52197..211c52b1 100644
--- a/openstackclient/tests/functional/common/test_help.py
+++ b/openstackclient/tests/functional/common/test_help.py
@@ -64,3 +64,10 @@ class HelpTests(base.TestCase):
raw_output = self.openstack('help server')
for command in [row[0] for row in self.SERVER_COMMANDS]:
self.assertIn(command, raw_output)
+
+ def test_networking_commands_help(self):
+ """Check networking related commands in help message."""
+ raw_output = self.openstack('help network list')
+ self.assertIn('List networks', raw_output)
+ raw_output = self.openstack('network create --help')
+ self.assertIn('Create new network', raw_output)