From ef99f444628282d06feae04514bd2a6328d87b93 Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Mon, 24 Apr 2017 18:57:05 -0500 Subject: Improve no-auth path The commands that do not require authentication sometimes still need to call ClientManager.is_network_endpoint_enabled() to see if Neutron is available. Optimize the paths a bit to skip auth when it is not necessary; the upshot is Neutron will be assumed in these cases now. This gets a LOT cleaner when it appears is a future osc-lib. Change-Id: Ifaddc57dfa192bde04d0482e2cdcce111313a22a --- openstackclient/common/clientmanager.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'openstackclient/common') diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py index 27f3b705..67912f0c 100644 --- a/openstackclient/common/clientmanager.py +++ b/openstackclient/common/clientmanager.py @@ -41,6 +41,9 @@ class ClientManager(clientmanager.ClientManager): # A simple incrementing version for the plugin to know what is available PLUGIN_INTERFACE_VERSION = "2" + # Let the commands set this + _auth_required = False + def __init__( self, cli_options=None, @@ -72,7 +75,10 @@ class ClientManager(clientmanager.ClientManager): # because openstack_config is an optional argument to # CloudConfig.__init__() and we'll die if it was not # passed. - if self._cli_options._openstack_config is not None: + if ( + self._auth_required and + self._cli_options._openstack_config is not None + ): self._cli_options._openstack_config._pw_callback = \ shell.prompt_for_password try: @@ -85,6 +91,13 @@ class ClientManager(clientmanager.ClientManager): return super(ClientManager, self).setup_auth() + @property + def auth_ref(self): + if not self._auth_required: + return None + else: + return super(ClientManager, self).auth_ref + 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 -- cgit v1.2.1