Specify availability zone to create instances and volumes
For clouds with separate AZs (like two independent fire compartments) the cross_az_attach feature is typically used. But using this feature the scenario tests in tempest will fail since Cinder/Nova will schedule the AZ independently. This patch introduces a new parameter compute_volume_common_az to specify the availability zone to create instances and volumes, so that we can confirm that these resources are created in the same availability zone. Change-Id: I565adbe2a3ebbdd1d73143380b976df1a9502d0f Closes-bug: #1647999
This commit is contained in:
committed by
Martin Kopec
parent
75944d33e9
commit
979e494da2
8
releasenotes/notes/bug-1647999-7aeda50a8d082d4c.yaml
Normal file
8
releasenotes/notes/bug-1647999-7aeda50a8d082d4c.yaml
Normal 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.
|
||||||
@@ -357,6 +357,19 @@ ComputeGroup = [
|
|||||||
"If both values are not specified, Tempest avoids tests "
|
"If both values are not specified, Tempest avoids tests "
|
||||||
"which require a microversion. Valid values are string "
|
"which require a microversion. Valid values are string "
|
||||||
"with format 'X.Y' or string 'latest'"),
|
"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',
|
placement_group = cfg.OptGroup(name='placement',
|
||||||
|
|||||||
@@ -274,6 +274,10 @@ class ScenarioTest(tempest.test.BaseTestCase):
|
|||||||
|
|
||||||
tenant_network = self.get_tenant_network()
|
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(
|
body, _ = compute.create_test_server(
|
||||||
clients,
|
clients,
|
||||||
tenant_network=tenant_network,
|
tenant_network=tenant_network,
|
||||||
@@ -307,6 +311,11 @@ class ScenarioTest(tempest.test.BaseTestCase):
|
|||||||
'imageRef': imageRef,
|
'imageRef': imageRef,
|
||||||
'volume_type': volume_type,
|
'volume_type': volume_type,
|
||||||
'size': size}
|
'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']
|
volume = self.volumes_client.create_volume(**kwargs)['volume']
|
||||||
|
|
||||||
self.addCleanup(self.volumes_client.wait_for_resource_deletion,
|
self.addCleanup(self.volumes_client.wait_for_resource_deletion,
|
||||||
|
|||||||
Reference in New Issue
Block a user