Merge "Fix OSC networking commands help errors"

This commit is contained in:
Jenkins 2017-01-24 15:35:33 +00:00 committed by Gerrit Code Review
commit bfad2abf23
3 changed files with 38 additions and 2 deletions

View File

@ -59,6 +59,8 @@ class ClientManager(clientmanager.ClientManager):
self._interface = self.interface self._interface = self.interface
self._cacert = self.cacert self._cacert = self.cacert
self._insecure = not self.verify self._insecure = not self.verify
# store original auth_type
self._original_auth_type = cli_options.auth_type
def setup_auth(self): def setup_auth(self):
"""Set up authentication""" """Set up authentication"""
@ -73,13 +75,34 @@ class ClientManager(clientmanager.ClientManager):
if self._cli_options._openstack_config is not None: if self._cli_options._openstack_config is not None:
self._cli_options._openstack_config._pw_callback = \ self._cli_options._openstack_config._pw_callback = \
shell.prompt_for_password shell.prompt_for_password
try:
self._cli_options._auth = \ self._cli_options._auth = \
self._cli_options._openstack_config.load_auth_plugin( self._cli_options._openstack_config.load_auth_plugin(
self._cli_options.config, self._cli_options.config,
) )
except TypeError as e:
self._fallback_load_auth_plugin(e)
return super(ClientManager, self).setup_auth() 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,
)
else:
raise e
def is_network_endpoint_enabled(self): def is_network_endpoint_enabled(self):
"""Check if the network endpoint is enabled""" """Check if the network endpoint is enabled"""

View File

@ -64,3 +64,10 @@ class HelpTests(base.TestCase):
raw_output = self.openstack('help server') raw_output = self.openstack('help server')
for command in [row[0] for row in self.SERVER_COMMANDS]: for command in [row[0] for row in self.SERVER_COMMANDS]:
self.assertIn(command, raw_output) 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)

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fixed a ``__init__() got an unexpected keyword argument 'project_name'``
error in various networking commands when ``help`` or ``--help`` was used.
[Bug `1650026 <https://bugs.launchpad.net/bugs/1650026>`_]