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