switch to keystoneauth
move troveclient to keystoneauth as keystoneclient's auth session, plugins and adapter code has been deprecated. Change-Id: I3d57dde9c013038accbab8cc30d9622a142d0f71
This commit is contained in:
parent
286df261cb
commit
fff88e0a9c
@ -7,7 +7,7 @@ requests>=2.10.0 # Apache-2.0
|
||||
simplejson>=2.2.0 # MIT
|
||||
oslo.i18n>=2.1.0 # Apache-2.0
|
||||
oslo.utils>=3.5.0 # Apache-2.0
|
||||
python-keystoneclient!=1.8.0,!=2.1.0,>=1.7.0 # Apache-2.0
|
||||
Babel>=2.3.4 # BSD
|
||||
keystoneauth1>=2.1.0 # Apache-2.0
|
||||
six>=1.9.0 # MIT
|
||||
python-swiftclient>=2.2.0 # Apache-2.0
|
||||
|
@ -24,7 +24,7 @@ from __future__ import print_function
|
||||
import logging
|
||||
import requests
|
||||
|
||||
from keystoneclient import adapter
|
||||
from keystoneauth1 import adapter
|
||||
from oslo_utils import importutils
|
||||
from troveclient import exceptions
|
||||
from troveclient.openstack.common.apiclient import client
|
||||
|
@ -33,10 +33,9 @@ import sys
|
||||
import pkg_resources
|
||||
import six
|
||||
|
||||
from keystoneclient.auth.identity.generic import password
|
||||
from keystoneclient.auth.identity.generic import token
|
||||
from keystoneclient.auth.identity import v3 as identity
|
||||
from keystoneclient import session as ks_session
|
||||
from keystoneauth1.identity.generic import password
|
||||
from keystoneauth1.identity.generic import token
|
||||
from keystoneauth1 import loading
|
||||
|
||||
from oslo_utils import encodeutils
|
||||
from oslo_utils import importutils
|
||||
@ -91,7 +90,7 @@ class TroveClientArgumentParser(argparse.ArgumentParser):
|
||||
|
||||
class OpenStackTroveShell(object):
|
||||
|
||||
def get_base_parser(self):
|
||||
def get_base_parser(self, argv):
|
||||
parser = TroveClientArgumentParser(
|
||||
prog='trove',
|
||||
description=__doc__.strip(),
|
||||
@ -120,7 +119,8 @@ class OpenStackTroveShell(object):
|
||||
parser.add_argument('--os-auth-system',
|
||||
metavar='<auth-system>',
|
||||
default=utils.env('OS_AUTH_SYSTEM'),
|
||||
help='Defaults to env[OS_AUTH_SYSTEM].')
|
||||
help=argparse.SUPPRESS)
|
||||
|
||||
parser.add_argument('--os_auth_system',
|
||||
help=argparse.SUPPRESS)
|
||||
|
||||
@ -207,42 +207,43 @@ class OpenStackTroveShell(object):
|
||||
'on the server side. '
|
||||
'Defaults to env[OS_PROFILE_HMACKEY].')
|
||||
|
||||
self._append_global_identity_args(parser)
|
||||
self._append_global_identity_args(parser, argv)
|
||||
|
||||
# The auth-system-plugins might require some extra options
|
||||
troveclient.auth_plugin.load_auth_system_opts(parser)
|
||||
|
||||
return parser
|
||||
|
||||
def _append_global_identity_args(self, parser):
|
||||
def _append_global_identity_args(self, parser, argv):
|
||||
# Register CLI identity related arguments
|
||||
|
||||
# Use Keystoneclient API to register common V3 CLI arguments
|
||||
ks_session.Session.register_cli_options(parser)
|
||||
identity.Password.register_argparse_arguments(parser)
|
||||
# Use keystoneauth to register common CLI arguments
|
||||
loading.register_session_argparse_arguments(parser)
|
||||
default_auth_plugin = 'password'
|
||||
if 'os-token' in argv:
|
||||
default_auth_plugin = 'token'
|
||||
loading.register_auth_argparse_arguments(parser, argv,
|
||||
default=default_auth_plugin)
|
||||
|
||||
parser.set_defaults(insecure=utils.env('TROVECLIENT_INSECURE',
|
||||
default=False))
|
||||
|
||||
parser.add_argument('--os-tenant-name',
|
||||
metavar='<auth-tenant-name>',
|
||||
default=utils.env('OS_TENANT_NAME'),
|
||||
help='Tenant to request authorization on. '
|
||||
'Defaults to env[OS_TENANT_NAME].')
|
||||
parser.set_defaults(os_auth_url=utils.env('OS_AUTH_URL'))
|
||||
|
||||
parser.set_defaults(os_project_name=utils.env(
|
||||
'OS_PROJECT_NAME', 'OS_TENANT_NAME'))
|
||||
parser.set_defaults(os_project_id=utils.env(
|
||||
'OS_PROJECT_ID', 'OS_TENANT_ID'))
|
||||
|
||||
parser.add_argument('--os_tenant_name',
|
||||
help=argparse.SUPPRESS)
|
||||
|
||||
parser.add_argument('--os-tenant-id',
|
||||
metavar='<tenant-id>',
|
||||
default=utils.env('OS_TENANT_ID'),
|
||||
help='Tenant to request authorization on. '
|
||||
'Defaults to env[OS_TENANT_ID].')
|
||||
parser.add_argument('--os_tenant_id',
|
||||
help=argparse.SUPPRESS)
|
||||
|
||||
parser.add_argument('--os-auth-token',
|
||||
default=utils.env('OS_AUTH_TOKEN'),
|
||||
help='Defaults to env[OS_AUTH_TOKEN]')
|
||||
help=argparse.SUPPRESS)
|
||||
|
||||
parser.add_argument('--os-region-name',
|
||||
metavar='<region-name>',
|
||||
@ -252,8 +253,8 @@ class OpenStackTroveShell(object):
|
||||
parser.add_argument('--os_region_name',
|
||||
help=argparse.SUPPRESS)
|
||||
|
||||
def get_subcommand_parser(self, version):
|
||||
parser = self.get_base_parser()
|
||||
def get_subcommand_parser(self, version, argv):
|
||||
parser = self.get_base_parser(argv)
|
||||
|
||||
self.subcommands = {}
|
||||
subparsers = parser.add_subparsers(metavar='<subcommand>')
|
||||
@ -367,7 +368,7 @@ class OpenStackTroveShell(object):
|
||||
|
||||
def main(self, argv):
|
||||
# Parse args once to find version and debug settings
|
||||
parser = self.get_base_parser()
|
||||
parser = self.get_base_parser(argv)
|
||||
(options, args) = parser.parse_known_args(argv)
|
||||
self.setup_debugging(options.debug)
|
||||
self.options = options
|
||||
@ -381,7 +382,7 @@ class OpenStackTroveShell(object):
|
||||
self._run_extension_hooks('__pre_parse_args__')
|
||||
|
||||
subcommand_parser = self.get_subcommand_parser(
|
||||
options.os_database_api_version)
|
||||
options.os_database_api_version, argv)
|
||||
self.parser = subcommand_parser
|
||||
|
||||
if options.help or not argv:
|
||||
@ -401,11 +402,22 @@ class OpenStackTroveShell(object):
|
||||
|
||||
os_username = args.os_username
|
||||
os_password = args.os_password
|
||||
os_tenant_name = args.os_tenant_name
|
||||
os_project_name = getattr(args, 'os_project_name',
|
||||
getattr(args, 'os_tenant_name', None))
|
||||
os_auth_url = args.os_auth_url
|
||||
os_region_name = args.os_region_name
|
||||
os_tenant_id = args.os_tenant_id
|
||||
os_project_id = getattr(
|
||||
args, 'os_project_id',
|
||||
getattr(args, 'os_tenant_id', None))
|
||||
os_auth_system = args.os_auth_system
|
||||
|
||||
if "v2.0" not in os_auth_url:
|
||||
if (not args.os_project_domain_id and
|
||||
not args.os_project_domain_name):
|
||||
setattr(args, "os_project_domain_id", "default")
|
||||
if not args.os_user_domain_id and not args.os_user_domain_name:
|
||||
setattr(args, "os_user_domain_id", "default")
|
||||
|
||||
endpoint_type = args.endpoint_type
|
||||
insecure = args.insecure
|
||||
service_type = args.service_type
|
||||
@ -448,20 +460,14 @@ class OpenStackTroveShell(object):
|
||||
os_auth_url = auth_plugin.get_auth_url()
|
||||
|
||||
# V3 stuff
|
||||
project_info_provided = (self.options.os_tenant_name or
|
||||
self.options.os_tenant_id or
|
||||
(self.options.os_project_name and
|
||||
(self.options.os_project_domain_name or
|
||||
self.options.os_project_domain_id)) or
|
||||
project_info_provided = (self.options.os_project_name or
|
||||
self.options.os_project_id)
|
||||
|
||||
if (not project_info_provided):
|
||||
raise exc.CommandError(
|
||||
_("You must provide a tenant_name, tenant_id, "
|
||||
_("You must provide a "
|
||||
"project_id or project_name (with "
|
||||
"project_domain_name or project_domain_id) via "
|
||||
" --os-tenant-name (env[OS_TENANT_NAME]),"
|
||||
" --os-tenant-id (env[OS_TENANT_ID]),"
|
||||
" --os-project-id (env[OS_PROJECT_ID])"
|
||||
" --os-project-name (env[OS_PROJECT_NAME]),"
|
||||
" --os-project-domain-id "
|
||||
@ -481,36 +487,35 @@ class OpenStackTroveShell(object):
|
||||
if auth_plugin or bypass_url:
|
||||
use_session = False
|
||||
|
||||
keystone_session = None
|
||||
ks_session = None
|
||||
keystone_auth = None
|
||||
if use_session:
|
||||
project_id = args.os_project_id or args.os_tenant_id
|
||||
project_name = args.os_project_name or args.os_tenant_name
|
||||
project_id = args.os_project_id or args.os_tenant_id
|
||||
project_name = args.os_project_name or args.os_tenant_name
|
||||
|
||||
keystone_session = (ks_session.Session.
|
||||
load_from_cli_options(args))
|
||||
keystone_auth = self._get_keystone_auth(
|
||||
keystone_session,
|
||||
args.os_auth_url,
|
||||
username=args.os_username,
|
||||
user_id=args.os_user_id,
|
||||
user_domain_id=args.os_user_domain_id,
|
||||
user_domain_name=args.os_user_domain_name,
|
||||
password=args.os_password,
|
||||
auth_token=args.os_auth_token,
|
||||
project_id=project_id,
|
||||
project_name=project_name,
|
||||
project_domain_id=args.os_project_domain_id,
|
||||
project_domain_name=args.os_project_domain_name)
|
||||
ks_session = loading.load_session_from_argparse_arguments(args)
|
||||
keystone_auth = self._get_keystone_auth(
|
||||
ks_session,
|
||||
args.os_auth_url,
|
||||
username=args.os_username,
|
||||
user_id=args.os_user_id,
|
||||
user_domain_id=args.os_user_domain_id,
|
||||
user_domain_name=args.os_user_domain_name,
|
||||
password=args.os_password,
|
||||
auth_token=args.os_auth_token,
|
||||
project_id=project_id,
|
||||
project_name=project_name,
|
||||
project_domain_id=args.os_project_domain_id,
|
||||
project_domain_name=args.os_project_domain_name)
|
||||
|
||||
profile = osprofiler_profiler and options.profile
|
||||
if profile:
|
||||
osprofiler_profiler.init(options.profile)
|
||||
|
||||
self.cs = client.Client(options.os_database_api_version, os_username,
|
||||
os_password, os_tenant_name, os_auth_url,
|
||||
os_password, os_project_name, os_auth_url,
|
||||
insecure, region_name=os_region_name,
|
||||
tenant_id=os_tenant_id,
|
||||
tenant_id=os_project_id,
|
||||
endpoint_type=endpoint_type,
|
||||
extensions=self.extensions,
|
||||
service_type=service_type,
|
||||
@ -522,7 +527,7 @@ class OpenStackTroveShell(object):
|
||||
bypass_url=bypass_url,
|
||||
auth_system=os_auth_system,
|
||||
auth_plugin=auth_plugin,
|
||||
session=keystone_session,
|
||||
session=ks_session,
|
||||
auth=keystone_auth)
|
||||
|
||||
try:
|
||||
|
@ -16,7 +16,7 @@
|
||||
# under the License.
|
||||
|
||||
import fixtures
|
||||
from keystoneclient import adapter
|
||||
from keystoneauth1 import adapter
|
||||
import logging
|
||||
import mock
|
||||
import requests
|
||||
|
@ -15,7 +15,7 @@ import re
|
||||
import sys
|
||||
|
||||
import fixtures
|
||||
from keystoneclient import fixture
|
||||
from keystoneauth1 import fixture
|
||||
import mock
|
||||
import requests_mock
|
||||
import six
|
||||
@ -161,7 +161,7 @@ class ShellTest(testtools.TestCase):
|
||||
else:
|
||||
self.fail('CommandError not raised')
|
||||
|
||||
@mock.patch('keystoneclient._discover.get_version_data',
|
||||
@mock.patch('keystoneauth1.discover.get_version_data',
|
||||
return_value=[{u'status': u'stable', u'id': version_id,
|
||||
u'links': links}])
|
||||
@mock.patch('troveclient.v1.datastores.DatastoreVersions.list')
|
||||
@ -182,7 +182,7 @@ class ShellTest(testtools.TestCase):
|
||||
stdout, stderr = self.shell('datastore-version-list XXX')
|
||||
self.assertEqual(expected, (stdout + stderr))
|
||||
|
||||
@mock.patch('keystoneclient._discover.get_version_data',
|
||||
@mock.patch('keystoneauth1.discover.get_version_data',
|
||||
return_value=[{u'status': u'stable', u'id': version_id,
|
||||
u'links': links}])
|
||||
@mock.patch('troveclient.v1.datastores.Datastores.list')
|
||||
@ -282,11 +282,9 @@ class ShellTestKeystoneV3(ShellTest):
|
||||
|
||||
def test_no_project_id(self):
|
||||
required = (
|
||||
u'You must provide a tenant_name, tenant_id, '
|
||||
u'You must provide a '
|
||||
u'project_id or project_name (with '
|
||||
u'project_domain_name or project_domain_id) via '
|
||||
u' --os-tenant-name (env[OS_TENANT_NAME]),'
|
||||
u' --os-tenant-id (env[OS_TENANT_ID]),'
|
||||
u' --os-project-id (env[OS_PROJECT_ID])'
|
||||
u' --os-project-name (env[OS_PROJECT_NAME]),'
|
||||
u' --os-project-domain-id '
|
||||
@ -302,7 +300,7 @@ class ShellTestKeystoneV3(ShellTest):
|
||||
else:
|
||||
self.fail('CommandError not raised')
|
||||
|
||||
@mock.patch('keystoneclient._discover.get_version_data',
|
||||
@mock.patch('keystoneauth1.discover.get_version_data',
|
||||
return_value=[{u'status': u'stable', u'id': version_id,
|
||||
u'links': links}])
|
||||
@mock.patch('troveclient.v1.datastores.DatastoreVersions.list')
|
||||
@ -324,7 +322,7 @@ class ShellTestKeystoneV3(ShellTest):
|
||||
stdout, stderr = self.shell('datastore-version-list XXX')
|
||||
self.assertEqual(expected, (stdout + stderr))
|
||||
|
||||
@mock.patch('keystoneclient._discover.get_version_data',
|
||||
@mock.patch('keystoneauth1.discover.get_version_data',
|
||||
return_value=[{u'status': u'stable', u'id': version_id,
|
||||
u'links': links}])
|
||||
@mock.patch('troveclient.v1.datastores.Datastores.list')
|
||||
@ -346,7 +344,7 @@ class ShellTestKeystoneV3(ShellTest):
|
||||
stdout, stderr = self.shell('datastore-list')
|
||||
self.assertEqual(expected, (stdout + stderr))
|
||||
|
||||
@mock.patch('keystoneclient._discover.get_version_data',
|
||||
@mock.patch('keystoneauth1.discover.get_version_data',
|
||||
return_value=[{u'status': u'stable', u'id': version_id,
|
||||
u'links': links}])
|
||||
@requests_mock.Mocker()
|
||||
|
Loading…
x
Reference in New Issue
Block a user