Keystone v2/v3 commit

Change-Id: Ib82f3159b9a35a970879a984a6cdb8ede693248b
This commit is contained in:
Anand Shanmugam 2016-10-17 10:16:36 -07:00
parent 0583279a33
commit 6237884f36
7 changed files with 73 additions and 67 deletions

View File

@ -11,18 +11,12 @@
# under the License.
from cinderclient.client import Client as cinder_client
from keystoneclient.auth.identity import v3 as keystone_v3
from keystoneclient import session
class CinderHealth(object):
def __init__(self, creds):
cacert = creds['cacert']
del creds['cacert']
auth = keystone_v3.Password(**creds)
sess = session.Session(auth=auth, verify=cacert)
self.cinderclient = cinder_client(2, session=sess)
self.cinderclient = cinder_client(2, **creds)
def cinder_list(self):
try:

View File

@ -12,18 +12,19 @@
from glanceclient.exc import ClientException
from glanceclient.v2 import client as glance_client
from keystoneclient.auth.identity import v3 as keystone_v3
from keystoneclient import session
class GlanceHealth(object):
def __init__(self, creds):
cacert = creds['cacert']
del creds['cacert']
auth = keystone_v3.Password(**creds)
sess = session.Session(auth=auth, verify=cacert)
self.glanceclient = glance_client.Client('1', session=sess)
endpoint = None
if 'endpoint_type' in creds:
del creds['endpoint_type']
if 'session' in creds:
endpoint = creds['session'].get_endpoint(
service_type='image', interface='internal')
self.glanceclient = glance_client.Client(
'2', endpoint_override=endpoint, **creds)
def glance_image_list(self):
try:

View File

@ -10,21 +10,14 @@
# License for the specific language governing permissions and limitations
# under the License.
from keystoneclient.auth.identity import v3 as keystone_v3
from keystoneclient import client as keystoneclient
from keystoneclient.exceptions import ClientException
from keystoneclient import session
class KeystoneHealth(object):
def __init__(self, creds):
cacert = creds['cacert']
del creds['cacert']
auth = keystone_v3.Password(**creds)
sess = session.Session(auth=auth, verify=cacert)
self.keystoneclient = keystoneclient.Client(
3, session=sess, auth_url=creds['auth_url'])
self.keystoneclient = keystoneclient.Client(**creds)
def keystone_service_list(self):
try:

View File

@ -0,0 +1,51 @@
# Copyright 2015 Rackspace
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from keystoneauth1.identity import v2 as v2_client
from keystoneauth1.identity import v3 as v3_client
from keystoneauth1 import session
from oslo_config import cfg
from oslo_log import log as logging
from oslo_utils import excutils
LOG = logging.getLogger(__name__)
cfg.CONF.import_group('keystone_authtoken', 'keystonemiddleware.auth_token')
def _get_kssession():
kwargs = {'auth_url': cfg.CONF.keystone_authtoken.auth_uri,
'username': cfg.CONF.keystone_authtoken.username,
'password': cfg.CONF.keystone_authtoken.password}
if cfg.CONF.keystone_authtoken.auth_version == '2':
client = v2_client
kwargs['tenant_name'] = cfg.CONF.keystone_authtoken.project_name
elif cfg.CONF.keystone_authtoken.auth_version == '3':
client = v3_client
kwargs['project_name'] = cfg.CONF.keystone_authtoken.project_name
kwargs['user_domain_id'] = cfg.CONF.keystone_authtoken.user_domain_id
kwargs[
'project_domain_id'] = (cfg.CONF.keystone_authtoken.
project_domain_id)
else:
raise Exception('Unknown keystone version!')
try:
kc = client.Password(**kwargs)
kssession = session.Session(
auth=kc, verify=(cfg.CONF.keystone_authtoken.cafile))
return kssession
except Exception:
with excutils.save_and_reraise_exception():
LOG.exception("Error creating Keystone session.")

View File

@ -11,8 +11,6 @@
# under the License.
from keystoneclient.auth.identity import v3 as keystone_v3
from keystoneclient import session
from neutronclient.common.exceptions import NeutronException
from neutronclient.neutron import client as neutronclient
@ -20,12 +18,7 @@ from neutronclient.neutron import client as neutronclient
class NeutronHealth(object):
def __init__(self, creds):
# creds['timeout'] = 30
cacert = creds['cacert']
del creds['cacert']
auth = keystone_v3.Password(**creds)
sess = session.Session(auth=auth, verify=cacert)
self.neutron_client = neutronclient.Client('2.0', session=sess)
self.neutron_client = neutronclient.Client('2.0', **creds)
def neutron_agent_list(self):
try:

View File

@ -10,8 +10,6 @@
# License for the specific language governing permissions and limitations
# under the License.
from keystoneclient.auth.identity import v3 as keystone_v3
from keystoneclient import session
from novaclient.client import Client as novaclient
from novaclient.exceptions import ClientException
@ -19,12 +17,7 @@ from novaclient.exceptions import ClientException
class NovaHealth(object):
def __init__(self, creds):
# creden['timeout'] = 30
cacert = creds['cacert']
del creds['cacert']
auth = keystone_v3.Password(**creds)
sess = session.Session(auth=auth, verify=cacert)
self.novaclient = novaclient(2, session=sess)
self.novaclient = novaclient(2, **creds)
def nova_hypervisor_list(self):
try:

View File

@ -13,6 +13,7 @@
from cloudpulse.openstack.api.cinder_api import CinderHealth
from cloudpulse.openstack.api.glance_api import GlanceHealth
from cloudpulse.openstack.api.keystone_api import KeystoneHealth
from cloudpulse.openstack.api import keystone_session
from cloudpulse.openstack.api.neutron_api import NeutronHealth
from cloudpulse.openstack.api.nova_api import NovaHealth
from cloudpulse.scenario import base
@ -53,61 +54,41 @@ CONF.register_opts(TESTS_OPTS, periodic_test_group)
class endpoint_scenario(base.Scenario):
def _get_credentials(self):
importutils.import_module('keystonemiddleware.auth_token')
def _get_keystone_session_creds(self):
creds = {}
creds['username'] = cfg.CONF.keystone_authtoken.username
creds['password'] = cfg.CONF.keystone_authtoken.password
creds['project_name'] = cfg.CONF.keystone_authtoken.project_name
creds['auth_url'] = cfg.CONF.keystone_authtoken.auth_uri
creds['cacert'] = cfg.CONF.keystone_authtoken.cafile
if cfg.CONF.keystone_authtoken.project_domain_id:
creds[
'project_domain_id'] = (cfg.CONF.keystone_authtoken.
project_domain_id)
creds[
'user_domain_id'] = cfg.CONF.keystone_authtoken.user_domain_id
return creds
def _get_nova_v2_credentials(self):
importutils.import_module('keystonemiddleware.auth_token')
creds = {}
creds['username'] = cfg.CONF.keystone_authtoken.username
creds['project_id'] = cfg.CONF.keystone_authtoken.project_name
creds['api_key'] = cfg.CONF.keystone_authtoken.password
creds['auth_url'] = cfg.CONF.keystone_authtoken.auth_uri
creds['version'] = 2
creds['cacert'] = cfg.CONF.keystone_authtoken.cafile
creds['session'] = keystone_session._get_kssession()
creds['endpoint_type'] = 'internalURL'
return creds
@base.scenario(admin_only=False, operator=False)
def nova_endpoint(self, *args, **kwargs):
creds = self._get_credentials()
creds = self._get_keystone_session_creds()
nova = NovaHealth(creds)
return nova.nova_service_list()
@base.scenario(admin_only=False, operator=False)
def neutron_endpoint(self, *args, **kwargs):
creds = self._get_credentials()
creds = self._get_keystone_session_creds()
neutron = NeutronHealth(creds)
return neutron.neutron_list_networks()
@base.scenario(admin_only=False, operator=False)
def keystone_endpoint(self, *args, **kwargs):
creds = self._get_credentials()
importutils.import_module('keystonemiddleware.auth_token')
creds = self._get_keystone_session_creds()
creds['auth_url'] = cfg.CONF.keystone_authtoken.auth_uri
keystone = KeystoneHealth(creds)
return keystone.keystone_service_list()
@base.scenario(admin_only=False, operator=False)
def glance_endpoint(self, *args, **kwargs):
creds = self._get_credentials()
creds = self._get_keystone_session_creds()
glance = GlanceHealth(creds)
return glance.glance_image_list()
@base.scenario(admin_only=False, operator=False)
def cinder_endpoint(self, *args, **kwargs):
creds = self._get_credentials()
creds = self._get_keystone_session_creds()
cinder = CinderHealth(creds)
return cinder.cinder_list()