Merge "Specify availability zone to create instances and volumes"

This commit is contained in:
Zuul 2019-06-18 13:44:26 +00:00 committed by Gerrit Code Review
commit fafd2a2b10
3 changed files with 30 additions and 0 deletions

View File

@ -0,0 +1,8 @@
---
features:
- |
A new parameter, compute/compute_volume_common_az is introduced to
specify availability zone where tempest creates instances and volumes
for scenario tests, to allow us to run scenario tests in the deployment
which has multiple availability zones and cinder/cross_az_attach in
nova.conf is set to False.

View File

@ -352,6 +352,19 @@ ComputeGroup = [
"If both values are not specified, Tempest avoids tests "
"which require a microversion. Valid values are string "
"with format 'X.Y' or string 'latest'"),
cfg.StrOpt('compute_volume_common_az',
default=None,
help='AZ to be used for Cinder and Nova. Set this parameter '
'when the cloud has nova.conf: cinder.cross_az_attach '
'set to false. Which means volumes attached to an '
'instance must be in the same availability zone in Cinder '
'as the instance availability zone in Nova. Set the '
'common availability zone in this config which will be '
'used to boot an instance as well as creating a volume. '
'NOTE: If that AZ is not in Cinder (or '
'allow_availability_zone_fallback=False in cinder.conf), '
'the volume create request will fail and the instance '
'will fail the build request.'),
]
placement_group = cfg.OptGroup(name='placement',

View File

@ -274,6 +274,10 @@ class ScenarioTest(tempest.test.BaseTestCase):
tenant_network = self.get_tenant_network()
if CONF.compute.compute_volume_common_az:
kwargs.setdefault('availability_zone',
CONF.compute.compute_volume_common_az)
body, _ = compute.create_test_server(
clients,
tenant_network=tenant_network,
@ -307,6 +311,11 @@ class ScenarioTest(tempest.test.BaseTestCase):
'imageRef': imageRef,
'volume_type': volume_type,
'size': size}
if CONF.compute.compute_volume_common_az:
kwargs.setdefault('availability_zone',
CONF.compute.compute_volume_common_az)
volume = self.volumes_client.create_volume(**kwargs)['volume']
self.addCleanup(self.volumes_client.wait_for_resource_deletion,