diff options
Diffstat (limited to 'openstackclient/shell.py')
| -rw-r--r-- | openstackclient/shell.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/openstackclient/shell.py b/openstackclient/shell.py index fb5d0727..83dd1040 100644 --- a/openstackclient/shell.py +++ b/openstackclient/shell.py @@ -27,6 +27,7 @@ from cliff.app import App from cliff.commandmanager import CommandManager from openstackclient.common import clientmanager +from openstackclient.common import exceptions as exc from openstackclient.common import utils @@ -141,6 +142,41 @@ class OpenStackShell(App): 'image': self.options.os_image_api_version, } + self.log.debug('validating authentication options') + if self.options.os_token or self.options.os_url: + # Token flow auth takes priority + if not self.options.os_token: + raise exc.CommandError( + "You must provide a token via" + " either --os-token or env[OS_TOKEN]") + + if not self.options.os_url: + raise exc.CommandError( + "You must provide a service URL via" + " either --os-url or env[OS_URL]") + + else: + # Validate password flow auth + if not self.options.os_username: + raise exc.CommandError( + "You must provide a username via" + " either --os-username or env[OS_USERNAME]") + + if not self.options.os_password: + raise exc.CommandError( + "You must provide a password via" + " either --os-password or env[OS_PASSWORD]") + + if not (self.options.os_tenant_id or self.options.os_tenant_name): + raise exc.CommandError( + "You must provide a tenant_id via" + " either --os-tenant-id or via env[OS_TENANT_ID]") + + if not self.options.os_auth_url: + raise exc.CommandError( + "You must provide an auth url via" + " either --os-auth-url or via env[OS_AUTH_URL]") + self.client_manager = clientmanager.ClientManager( token=self.options.os_token, url=self.options.os_url, |
