Credentials Configuration changes
* Credentials are moved to the identity section
* If the compute admin user defined in the compute-admin section it takes precedence
* The region just defined in the identity section
Change-Id: I1241116ce9312c90656a78235a4a91dd31460761
diff --git a/etc/tempest.conf.sample b/etc/tempest.conf.sample
index fc20d0b..53892e8 100644
--- a/etc/tempest.conf.sample
+++ b/etc/tempest.conf.sample
@@ -18,6 +18,28 @@
# The identity region
region = RegionOne
+# This should be the username of a user WITHOUT administrative privileges
+username = demo
+# The above non-administrative user's password
+password = secret
+# The above non-administrative user's tenant name
+tenant_name = demo
+
+# This should be the username of an alternate user WITHOUT
+# administrative privileges
+alt_username = alt_demo
+# The above non-administrative user's password
+alt_password = secret
+# The above non-administrative user's tenant name
+alt_tenant_name = alt_demo
+
+# This should be the username of a user WITH administrative privileges
+admin_username = admin
+# The above non-administrative user's password
+admin_password = secret
+# The above non-administrative user's tenant name
+admin_tenant_name = admin
+
[compute]
# This section contains configuration options used when executing tests
# against the OpenStack Compute API.
@@ -34,24 +56,6 @@
# are known.
allow_tenant_reuse = true
-# This should be the username of a user WITHOUT administrative privileges
-username = demo
-# The above non-administrative user's password
-password = pass
-# The above non-administrative user's tenant name
-tenant_name = demo
-
-# This should be the username of an alternate user WITHOUT
-# administrative privileges
-alt_username = alt_demo
-# The above non-administrative user's password
-alt_password = pass
-# The above non-administrative user's tenant name
-alt_tenant_name = alt_demo
-
-# The compute region
-region = RegionOne
-
# Reference data for tests. The ref and ref_alt should be
# distinct images/flavors.
image_ref = {$IMAGE_ID}
@@ -73,13 +77,13 @@
run_ssh = false
# Name of a user used to authenticated to an instance
-ssh_user = {$SSH_USER}
+ssh_user = cirros
# Network id used for SSH (public, private, etc)
-network_for_ssh = {$SSH_NETWORK}
+network_for_ssh = private
# IP version of the address used for SSH
-ip_version_for_ssh = {$SSH_IP_VERSION}
+ip_version_for_ssh = 4
# Number of seconds to wait to authenticate to an instance
ssh_timeout = 300
@@ -107,6 +111,18 @@
# whitebox test cases, which look at internal Nova database state,
# SSH into VMs to check instance state, etc.
+# Run live migration tests (requires 2 hosts)
+live_migration_available = false
+
+# Use block live migration (Otherwise, non-block migration will be
+# performed, which requires XenServer pools in case of using XS)
+use_block_migration_for_live_migration = false
+
+# By default, rely on the status of the diskConfig extension to
+# decide if to execute disk config tests. When set to false, tests
+# are forced to skip, regardless of the extension status
+disk_config_enabled_override = true
+
# Should we run whitebox tests for Compute?
whitebox_enabled = true
@@ -119,23 +135,20 @@
# Directory containing nova binaries such as nova-manage
bin_dir = /usr/local/bin
+# Connection string to the database of Compute service
+db_uri = mysql://nova:secret@localhost/nova
+
# Path to a private key file for SSH access to remote hosts
path_to_private_key = /home/user/.ssh/id_rsa
-# Connection string to the database of Compute service
-db_uri = mysql://user:pass@localhost/nova
-
-# Run live migration tests (requires 2 hosts)
-live_migration_available = false
-
-# Use block live migration (Otherwise, non-block migration will be
-# performed, which requires XenServer pools in case of using XS)
-use_block_migration_for_live_migration = false
-
-# By default, rely on the status of the diskConfig extension to
-# decide if to execute disk config tests. When set to false, tests
-# are forced to skip, regardless of the extension status
-disk_config_enabled_override = true
+[compute-admin]
+# This should be the username of a user WITH administrative privileges
+# If not defined the admin user from the identity section will be used
+username =
+# The above administrative user's password
+password =
+# The above administrative user's tenant name
+tenant_name =
[image]
# This section contains configuration options used when executing tests
@@ -155,18 +168,6 @@
# Port that the Image API is running on
port = 9292
-[compute-admin]
-# This section contains configuration options for an administrative
-# user of the Compute API. These options are used in tests that stress
-# the admin-only parts of the Compute API
-
-# This should be the username of a user WITH administrative privileges
-username = admin
-# The above administrative user's password
-password = pass
-# The above administrative user's tenant name
-tenant_name = admin
-
[network]
# This section contains configuration options used when executing tests
# against the OpenStack Network API.
@@ -176,13 +177,6 @@
# Catalog type of the Quantum Service
catalog_type = network
-# This should be the username of a user WITHOUT administrative privileges
-username = demo
-# The above non-administrative user's password
-password = pass
-# The above non-administrative user's tenant name
-tenant_name = demo
-
# A large private cidr block from which to allocate smaller blocks for
# tenant networks.
tenant_network_cidr = 10.100.0.0/16
@@ -229,9 +223,6 @@
# this value as "object-store"
catalog_type = object-store
-# The object-store region
-region = RegionOne
-
# Number of seconds to time on waiting for a container to container
# synchronization complete
container_sync_timeout = 120
@@ -252,9 +243,6 @@
aws_access =
aws_secret =
-#Region
-aws_region = RegionOne
-
#Image materials for S3 upload
# ALL content of the specified directory will be uploaded to S3
s3_materials_path = /opt/stack/devstack/files/images/s3-materials/cirros-0.3.0
diff --git a/stress/tools/nova_destroy_all.py b/stress/tools/nova_destroy_all.py
index 0070e72..00d8883 100755
--- a/stress/tools/nova_destroy_all.py
+++ b/stress/tools/nova_destroy_all.py
@@ -21,10 +21,9 @@
# get the environment variables for credentials
identity = tempest.config.TempestConfig().identity
-compute = tempest.config.TempestConfig().compute
-nt = client.Client(compute.username, compute.password,
- compute.tenant_name, identity.uri)
+nt = client.Client(identity.username, identity.password,
+ identity.tenant_name, identity.uri)
flavor_list = nt.flavors.list()
server_list = nt.servers.list()
diff --git a/stress/tools/nova_status.py b/stress/tools/nova_status.py
index f9bc707..ee20282 100755
--- a/stress/tools/nova_status.py
+++ b/stress/tools/nova_status.py
@@ -21,12 +21,11 @@
# get the environment variables for credentials
identity = tempest.config.TempestConfig().identity
-compute = tempest.config.TempestConfig().compute
-print compute.username, compute.password,\
- compute.tenant_name, identity.uri
+print identity.username, identity.password,\
+ identity.tenant_name, identity.uri
-nt = client.Client(compute.username, compute.password,
- compute.tenant_name, identity.uri)
+nt = client.Client(identity.username, identity.password,
+ identity.tenant_name, identity.uri)
flavor_list = nt.flavors.list()
server_list = nt.servers.list()
diff --git a/tempest/clients.py b/tempest/clients.py
index 801bdcf..29e83bf 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -156,9 +156,9 @@
# If no creds are provided, we fall back on the defaults
# in the config file for the Compute API.
- self.username = username or self.config.compute.username
- self.password = password or self.config.compute.password
- self.tenant_name = tenant_name or self.config.compute.tenant_name
+ self.username = username or self.config.identity.username
+ self.password = password or self.config.identity.password
+ self.tenant_name = tenant_name or self.config.identity.tenant_name
if None in (self.username, self.password, self.tenant_name):
msg = ("Missing required credentials. "
@@ -208,21 +208,6 @@
AccountClientCustomizedHeader(*client_args)
-class NonAdminManager(Manager):
-
- """
- Manager object that uses the alt_XXX credentials for its
- managed client objects
- """
-
- def __init__(self, interface='json'):
- conf = config.TempestConfig()
- super(NonAdminManager, self).__init__(conf.compute.username,
- conf.compute.password,
- conf.compute.tenant_name,
- interface=interface)
-
-
class AltManager(Manager):
"""
@@ -232,26 +217,42 @@
def __init__(self):
conf = config.TempestConfig()
- super(AltManager, self).__init__(conf.compute.alt_username,
- conf.compute.alt_password,
- conf.compute.alt_tenant_name)
+ super(AltManager, self).__init__(conf.identity.alt_username,
+ conf.identity.alt_password,
+ conf.identity.alt_tenant_name)
class AdminManager(Manager):
"""
- Manager object that uses the alt_XXX credentials for its
+ Manager object that uses the admin credentials for its
managed client objects
"""
def __init__(self, interface='json'):
conf = config.TempestConfig()
- super(AdminManager, self).__init__(conf.compute_admin.username,
- conf.compute_admin.password,
- conf.compute_admin.tenant_name,
+ super(AdminManager, self).__init__(conf.identity.admin_username,
+ conf.identity.admin_password,
+ conf.identity.admin_tenant_name,
interface=interface)
+class ComputeAdminManager(Manager):
+
+ """
+ Manager object that uses the compute_admin credentials for its
+ managed client objects
+ """
+
+ def __init__(self, interface='json'):
+ conf = config.TempestConfig()
+ base = super(ComputeAdminManager, self)
+ base.__init__(conf.compute_admin.username,
+ conf.compute_admin.password,
+ conf.compute_admin.tenant_name,
+ interface=interface)
+
+
class ServiceManager(object):
"""
diff --git a/tempest/common/rest_client.py b/tempest/common/rest_client.py
index 4213b10..5710f4c 100644
--- a/tempest/common/rest_client.py
+++ b/tempest/common/rest_client.py
@@ -44,7 +44,7 @@
self.token = None
self.base_url = None
self.config = config
- self.region = {'compute': self.config.compute.region}
+ self.region = {'compute': self.config.identity.region}
self.endpoint_url = 'publicURL'
self.strategy = self.config.identity.strategy
self.headers = {'Content-Type': 'application/%s' % self.TYPE,
diff --git a/tempest/config.py b/tempest/config.py
index e348cce..a166093 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -58,8 +58,42 @@
help="Which auth method does the environment use? "
"(basic|keystone)"),
cfg.StrOpt('region',
- default=None,
+ default='RegionOne',
help="The identity region name to use."),
+ cfg.StrOpt('username',
+ default='demo',
+ help="Username to use for Nova API requests."),
+ cfg.StrOpt('tenant_name',
+ default='demo',
+ help="Tenant name to use for Nova API requests."),
+ cfg.StrOpt('password',
+ default='pass',
+ help="API key to use when authenticating.",
+ secret=True),
+ cfg.StrOpt('alt_username',
+ default=None,
+ help="Username of alternate user to use for Nova API "
+ "requests."),
+ cfg.StrOpt('alt_tenant_name',
+ default=None,
+ help="Alternate user's Tenant name to use for Nova API "
+ "requests."),
+ cfg.StrOpt('alt_password',
+ default=None,
+ help="API key to use when authenticating as alternate user.",
+ secret=True),
+ cfg.StrOpt('admin_username',
+ default='admin',
+ help="Administrative Username to use for"
+ "Keystone API requests."),
+ cfg.StrOpt('admin_tenant_name',
+ default='admin',
+ help="Administrative Tenant name to use for Keystone API "
+ "requests."),
+ cfg.StrOpt('admin_password',
+ default='pass',
+ help="API key to use when authenticating as admin.",
+ secret=True),
]
@@ -97,31 +131,6 @@
"instead of failing because of the conflict. Note that "
"this would result in the tenant being deleted at the "
"end of a subsequent successful run."),
- cfg.StrOpt('username',
- default='demo',
- help="Username to use for Nova API requests."),
- cfg.StrOpt('tenant_name',
- default='demo',
- help="Tenant name to use for Nova API requests."),
- cfg.StrOpt('password',
- default='pass',
- help="API key to use when authenticating.",
- secret=True),
- cfg.StrOpt('alt_username',
- default=None,
- help="Username of alternate user to use for Nova API "
- "requests."),
- cfg.StrOpt('alt_tenant_name',
- default=None,
- help="Alternate user's Tenant name to use for Nova API "
- "requests."),
- cfg.StrOpt('alt_password',
- default=None,
- help="API key to use when authenticating as alternate user.",
- secret=True),
- cfg.StrOpt('region',
- default=None,
- help="The compute region name to use."),
cfg.StrOpt('image_ref',
default="{$IMAGE_ID}",
help="Valid secondary image reference to be used in tests."),
@@ -180,6 +189,14 @@
cfg.StrOpt('log_level',
default="ERROR",
help="Level for logging compute API calls."),
+ cfg.StrOpt('path_to_private_key',
+ default=None,
+ help="Path to a private key file for SSH access to remote "
+ "hosts"),
+ cfg.BoolOpt('disk_config_enabled_override',
+ default=True,
+ help="If false, skip config tests regardless of the "
+ "extension status"),
cfg.BoolOpt('whitebox_enabled',
default=False,
help="Does the test environment support whitebox tests for "
@@ -196,14 +213,6 @@
cfg.StrOpt('bin_dir',
default="/usr/local/bin/",
help="Directory containing nova binaries such as nova-manage"),
- cfg.StrOpt('path_to_private_key',
- default=None,
- help="Path to a private key file for SSH access to remote "
- "hosts"),
- cfg.BoolOpt('disk_config_enabled_override',
- default=True,
- help="If false, skip config tests regardless of the "
- "extension status"),
]
@@ -325,9 +334,6 @@
cfg.StrOpt('catalog_type',
default='object-store',
help="Catalog type of the Object-Storage service."),
- cfg.StrOpt('region',
- default=None,
- help='The object-store region name to use.'),
cfg.StrOpt('container_sync_timeout',
default=120,
help="Number of seconds to time on waiting for a container"
@@ -360,9 +366,6 @@
cfg.StrOpt('aws_access',
default=None,
help="AWS Access Key"),
- cfg.StrOpt('aws_region',
- default=None,
- help="AWS Region"),
cfg.StrOpt('s3_materials_path',
default="/opt/stack/devstack/files/images/"
"s3-materials/cirros-0.3.0",
@@ -448,17 +451,21 @@
register_compute_opts(cfg.CONF)
register_identity_opts(cfg.CONF)
- register_compute_admin_opts(cfg.CONF)
register_image_opts(cfg.CONF)
register_network_opts(cfg.CONF)
register_volume_opts(cfg.CONF)
register_object_storage_opts(cfg.CONF)
register_boto_opts(cfg.CONF)
+ register_compute_admin_opts(cfg.CONF)
self.compute = cfg.CONF.compute
- self.compute_admin = cfg.CONF['compute-admin']
self.identity = cfg.CONF.identity
self.images = cfg.CONF.image
self.network = cfg.CONF.network
self.volume = cfg.CONF.volume
self.object_storage = cfg.CONF['object-storage']
self.boto = cfg.CONF.boto
+ self.compute_admin = cfg.CONF['compute-admin']
+ if not self.compute_admin.username:
+ self.compute_admin.username = self.identity.admin_username
+ self.compute_admin.password = self.identity.admin_password
+ self.compute_admin.tenant_name = self.identity.admin_tenant_name
diff --git a/tempest/manager.py b/tempest/manager.py
index ef9eed4..4137ec3 100644
--- a/tempest/manager.py
+++ b/tempest/manager.py
@@ -114,11 +114,11 @@
# identified user, so a new client needs to be created for
# each user that operations need to be performed for.
if not username:
- username = self.config.compute.username
+ username = self.config.identity.username
if not password:
- password = self.config.compute.password
+ password = self.config.identity.password
if not tenant_name:
- tenant_name = self.config.compute.tenant_name
+ tenant_name = self.config.identity.tenant_name
if None in (username, password, tenant_name):
msg = ("Missing required credentials for compute client. "
@@ -153,18 +153,17 @@
# This identity client is not intended to check the security
# of the identity service, so use admin credentials by default.
if not username:
- username = self.config.compute_admin.username
+ username = self.config.identity.admin_username
if not password:
- password = self.config.compute_admin.password
+ password = self.config.identity.admin_password
if not tenant_name:
- tenant_name = self.config.compute_admin.tenant_name
+ tenant_name = self.config.identity.admin_tenant_name
if None in (username, password, tenant_name):
msg = ("Missing required credentials for identity client. "
"username: %(username)s, password: %(password)s, "
"tenant_name: %(tenant_name)s") % locals()
raise exceptions.InvalidConfiguration(msg)
- #TODO(afazekas): Above is a code dpulication, net to be resolved
auth_url = self.config.identity.uri
dscv = self.config.identity.disable_ssl_certificate_validation
@@ -182,9 +181,9 @@
# preferable to authenticating as a specific user because
# working with certain resources (public routers and networks)
# often requires admin privileges anyway.
- username = self.config.compute_admin.username
- password = self.config.compute_admin.password
- tenant_name = self.config.compute_admin.tenant_name
+ username = self.config.identity.admin_username
+ password = self.config.identity.admin_password
+ tenant_name = self.config.identity.admin_tenant_name
if None in (username, password, tenant_name):
msg = ("Missing required credentials for network client. "
@@ -223,9 +222,9 @@
# If no creds are provided, we fall back on the defaults
# in the config file for the Compute API.
- username = username or self.config.compute.username
- password = password or self.config.compute.password
- tenant_name = tenant_name or self.config.compute.tenant_name
+ username = username or self.config.identity.username
+ password = password or self.config.identity.password
+ tenant_name = tenant_name or self.config.identity.tenant_name
if None in (username, password, tenant_name):
msg = ("Missing required credentials. "
@@ -270,9 +269,9 @@
def __init__(self):
conf = tempest.config.TempestConfig()
super(ComputeFuzzClientAltManager, self).__init__(
- conf.compute.alt_username,
- conf.compute.alt_password,
- conf.compute.alt_tenant_name)
+ conf.identity.alt_username,
+ conf.identity.alt_password,
+ conf.identity.alt_tenant_name)
class ComputeFuzzClientAdminManager(Manager):
diff --git a/tempest/services/boto/clients.py b/tempest/services/boto/clients.py
index 9cfe234..228e826 100644
--- a/tempest/services/boto/clients.py
+++ b/tempest/services/boto/clients.py
@@ -35,7 +35,7 @@
aws_secret = config.boto.aws_secret
purl = urlparse.urlparse(config.boto.ec2_url)
- region = RegionInfo(name=config.boto.aws_region,
+ region = RegionInfo(name=config.identity.region,
endpoint=purl.hostname)
port = purl.port
if port is None:
diff --git a/tempest/services/image/service.py b/tempest/services/image/service.py
index 270bf03..66ba219 100644
--- a/tempest/services/image/service.py
+++ b/tempest/services/image/service.py
@@ -44,9 +44,9 @@
dscv = self.config.identity.disable_ssl_certificate_validation
auth_url = self.config.identity.uri
keystone = keystoneclient.v2_0.client.Client(
- username=config.compute.username,
- password=config.compute.password,
- tenant_name=config.compute.tenant_name,
+ username=config.identity.username,
+ password=config.identity.password,
+ tenant_name=config.identity.tenant_name,
auth_url=auth_url,
insecure=dscv)
token = keystone.auth_token
diff --git a/tempest/tests/compute/__init__.py b/tempest/tests/compute/__init__.py
index a00ec77..398f982 100644
--- a/tempest/tests/compute/__init__.py
+++ b/tempest/tests/compute/__init__.py
@@ -69,11 +69,11 @@
if CONFIG.compute.allow_tenant_isolation:
MULTI_USER = True
else:
- user1 = CONFIG.compute.username
- user2 = CONFIG.compute.alt_username
+ user1 = CONFIG.identity.username
+ user2 = CONFIG.identity.alt_username
if user2 and user1 != user2:
- user2_password = CONFIG.compute.alt_password
- user2_tenant_name = CONFIG.compute.alt_tenant_name
+ user2_password = CONFIG.identity.alt_password
+ user2_tenant_name = CONFIG.identity.alt_tenant_name
if not user2_password or not user2_tenant_name:
msg = ("Alternate user specified but not alternate "
"tenant or password: alt_tenant_name=%s alt_password=%s"
diff --git a/tempest/tests/compute/admin/test_quotas.py b/tempest/tests/compute/admin/test_quotas.py
index eaf245a..2c2e5da 100644
--- a/tempest/tests/compute/admin/test_quotas.py
+++ b/tempest/tests/compute/admin/test_quotas.py
@@ -27,14 +27,14 @@
@classmethod
def setUpClass(cls):
super(QuotasTest, cls).setUpClass()
- adm_user = cls.config.compute_admin.username
- adm_pass = cls.config.compute_admin.password
- adm_tenant = cls.config.compute_admin.tenant_name
+ c_adm_user = cls.config.compute_admin.username
+ c_adm_pass = cls.config.compute_admin.password
+ c_adm_tenant = cls.config.compute_admin.tenant_name
auth_url = cls.config.identity.uri
- cls.adm_client = adm_quotas.AdminQuotasClient(cls.config, adm_user,
- adm_pass, auth_url,
- adm_tenant)
+ cls.adm_client = adm_quotas.AdminQuotasClient(cls.config, c_adm_user,
+ c_adm_pass, auth_url,
+ c_adm_tenant)
cls.client = cls.os.quotas_client
cls.identity_admin_client = cls._get_identity_admin_client()
resp, tenants = cls.identity_admin_client.list_tenants()
@@ -43,7 +43,7 @@
cls.demo_tenant_id = cls.isolated_creds[0][0]['tenantId']
else:
cls.demo_tenant_id = [tnt['id'] for tnt in tenants if tnt['name']
- == cls.config.compute.tenant_name][0]
+ == cls.config.identity.tenant_name][0]
cls.adm_tenant_id = [tnt['id'] for tnt in tenants if tnt['name'] ==
cls.config.compute_admin.tenant_name][0]
diff --git a/tempest/tests/compute/base.py b/tempest/tests/compute/base.py
index 3f3b3e8..9e2e883 100644
--- a/tempest/tests/compute/base.py
+++ b/tempest/tests/compute/base.py
@@ -92,8 +92,8 @@
return (
cls.config,
- cls.config.compute_admin.username,
- cls.config.compute_admin.password,
+ cls.config.identity.admin_username,
+ cls.config.identity.admin_password,
cls.config.identity.uri
)
@@ -256,16 +256,16 @@
@classmethod
def setUpClass(cls):
cls.config = config.TempestConfig()
- cls.admin_username = cls.config.compute_admin.username
- cls.admin_password = cls.config.compute_admin.password
- cls.admin_tenant = cls.config.compute_admin.tenant_name
+ cls.admin_username = cls.config.identity.admin_username
+ cls.admin_password = cls.config.identity.admin_password
+ cls.admin_tenant = cls.config.identity.admin_tenant_name
if not cls.admin_username and cls.admin_password and cls.admin_tenant:
msg = ("Missing Compute Admin API credentials "
"in configuration.")
raise nose.SkipTest(msg)
- cls.os = clients.AdminManager(interface=cls._interface)
+ cls.os = clients.ComputeAdminManager(interface=cls._interface)
class BaseComputeAdminTestJSON(BaseComputeAdminTest):
diff --git a/tempest/tests/identity/base.py b/tempest/tests/identity/base.py
index 125e46c..9c318cd 100644
--- a/tempest/tests/identity/base.py
+++ b/tempest/tests/identity/base.py
@@ -35,7 +35,7 @@
cls.data = DataGenerator(cls.client)
- os = clients.NonAdminManager(interface=cls._interface)
+ os = clients.Manager(interface=cls._interface)
cls.non_admin_client = os.identity_client
@classmethod
diff --git a/tempest/tests/volume/admin/base.py b/tempest/tests/volume/admin/base.py
index d35efbc..364be54 100644
--- a/tempest/tests/volume/admin/base.py
+++ b/tempest/tests/volume/admin/base.py
@@ -32,9 +32,9 @@
def setUpClass(cls):
super(BaseVolumeAdminTest, cls).setUpClass()
cls.config = config.TempestConfig()
- cls.adm_user = cls.config.compute_admin.username
- cls.adm_pass = cls.config.compute_admin.password
- cls.adm_tenant = cls.config.compute_admin.tenant_name
+ cls.adm_user = cls.config.identity.admin_username
+ cls.adm_pass = cls.config.identity.admin_password
+ cls.adm_tenant = cls.config.identity.admin_tenant_name
cls.auth_url = cls.config.identity.uri
if not cls.adm_user and cls.adm_pass and cls.adm_tenant:
diff --git a/tempest/tests/volume/admin/test_volume_types.py b/tempest/tests/volume/admin/test_volume_types.py
index a907a79..cef8428 100644
--- a/tempest/tests/volume/admin/test_volume_types.py
+++ b/tempest/tests/volume/admin/test_volume_types.py
@@ -25,9 +25,9 @@
@classmethod
def setUpClass(cls):
super(VolumeTypesTest, cls).setUpClass()
- adm_user = cls.config.compute_admin.username
- adm_pass = cls.config.compute_admin.password
- adm_tenant = cls.config.compute_admin.tenant_name
+ adm_user = cls.config.identity.admin_username
+ adm_pass = cls.config.identity.admin_password
+ adm_tenant = cls.config.identity.admin_tenant_name
auth_url = cls.config.identity.uri
cls.client = volume_types_client.VolumeTypesClientJSON(cls.config,
diff --git a/tempest/tests/volume/admin/test_volume_types_extra_specs.py b/tempest/tests/volume/admin/test_volume_types_extra_specs.py
index c5a1fa9..d3fd8e5 100644
--- a/tempest/tests/volume/admin/test_volume_types_extra_specs.py
+++ b/tempest/tests/volume/admin/test_volume_types_extra_specs.py
@@ -26,9 +26,9 @@
def setUpClass(cls):
super(VolumeTypesExtraSpecsTest, cls).setUpClass()
- adm_user = cls.config.compute_admin.username
- adm_pass = cls.config.compute_admin.password
- adm_tenant = cls.config.compute_admin.tenant_name
+ adm_user = cls.config.identity.admin_username
+ adm_pass = cls.config.identity.admin_password
+ adm_tenant = cls.config.identity.admin_tenant_name
auth_url = cls.config.identity.uri
cls.client = volume_types_client.VolumeTypesClientJSON(cls.config,
diff --git a/tempest/tests/volume/base.py b/tempest/tests/volume/base.py
index 1b35170..33bae45 100644
--- a/tempest/tests/volume/base.py
+++ b/tempest/tests/volume/base.py
@@ -73,7 +73,7 @@
"""
Returns an instance of the Identity Admin API client
"""
- os = clients.AdminManager()
+ os = clients.ComputeAdminManager()
return os.identity_client
@classmethod
diff --git a/tools/tempest_coverage.py b/tools/tempest_coverage.py
index 6e7ac04..267eafa 100755
--- a/tools/tempest_coverage.py
+++ b/tools/tempest_coverage.py
@@ -138,9 +138,9 @@
def main(argv):
CLI = parse_opts(argv)
- client_args = (CONF, CONF.compute_admin.username,
- CONF.compute_admin.password, CONF.identity.uri,
- CONF.compute_admin.tenant_name)
+ client_args = (CONF, CONF.identity.admin_username,
+ CONF.identity.admin_password, CONF.identity.uri,
+ CONF.identity.admin_tenant_name)
coverage_client = CoverageClientJSON(*client_args)
if CLI.command == 'start':