Wait for servers to be SSHABLE
This is necessary to make sure we don't miss an attach or detach event in the instance. Depends-On: https://review.opendev.org/c/openstack/tempest/+/882342 Change-Id: I4cb8af79d6d474b28e96d7b2c385ed8e5ba9c1d7
This commit is contained in:
parent
9f1f4b88e1
commit
51c56f219e
@ -138,6 +138,11 @@ class BaseVolumeTest(api_version_utils.BaseMicroversionTest,
|
|||||||
'name',
|
'name',
|
||||||
data_utils.rand_name(self.__class__.__name__ + '-instance'))
|
data_utils.rand_name(self.__class__.__name__ + '-instance'))
|
||||||
|
|
||||||
|
if wait_until == 'SSHABLE' and not kwargs.get('validation_resources'):
|
||||||
|
kwargs['validation_resources'] = (
|
||||||
|
self.get_test_validation_resources(self.os_primary))
|
||||||
|
kwargs['validatable'] = True
|
||||||
|
|
||||||
tenant_network = self.get_tenant_network()
|
tenant_network = self.get_tenant_network()
|
||||||
body, _ = compute.create_test_server(
|
body, _ = compute.create_test_server(
|
||||||
self.os_primary,
|
self.os_primary,
|
||||||
|
@ -31,6 +31,16 @@ class VolumesBackupsTest(base.BaseVolumeTest):
|
|||||||
if not CONF.volume_feature_enabled.backup:
|
if not CONF.volume_feature_enabled.backup:
|
||||||
raise cls.skipException("Cinder backup feature disabled")
|
raise cls.skipException("Cinder backup feature disabled")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setup_credentials(cls):
|
||||||
|
# Setting network=True, subnet=True creates a default network
|
||||||
|
cls.set_network_resources(
|
||||||
|
network=True,
|
||||||
|
subnet=True,
|
||||||
|
router=True,
|
||||||
|
dhcp=True)
|
||||||
|
super(VolumesBackupsTest, cls).setup_credentials()
|
||||||
|
|
||||||
@decorators.idempotent_id('885410c6-cd1d-452c-a409-7c32b7e0be15')
|
@decorators.idempotent_id('885410c6-cd1d-452c-a409-7c32b7e0be15')
|
||||||
def test_volume_snapshot_backup(self):
|
def test_volume_snapshot_backup(self):
|
||||||
"""Create backup from snapshot."""
|
"""Create backup from snapshot."""
|
||||||
@ -107,7 +117,7 @@ class VolumesBackupsTest(base.BaseVolumeTest):
|
|||||||
server = self.create_server(
|
server = self.create_server(
|
||||||
name=server_name,
|
name=server_name,
|
||||||
block_device_mapping=bd_map,
|
block_device_mapping=bd_map,
|
||||||
wait_until='ACTIVE')
|
wait_until='SSHABLE')
|
||||||
|
|
||||||
# Delete VM
|
# Delete VM
|
||||||
self.os_primary.servers_client.delete_server(server['id'])
|
self.os_primary.servers_client.delete_server(server['id'])
|
||||||
|
@ -23,6 +23,13 @@ class SnapshotDataIntegrityTests(manager.ScenarioTest):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(SnapshotDataIntegrityTests, self).setUp()
|
super(SnapshotDataIntegrityTests, self).setUp()
|
||||||
|
self.validation_resources = self.get_test_validation_resources(
|
||||||
|
self.os_primary)
|
||||||
|
# NOTE(danms): If validation is enabled, we will have a keypair to use,
|
||||||
|
# otherwise we need to create our own.
|
||||||
|
if 'keypair' in self.validation_resources:
|
||||||
|
self.keypair = self.validation_resources['keypair']
|
||||||
|
else:
|
||||||
self.keypair = self.create_keypair()
|
self.keypair = self.create_keypair()
|
||||||
self.security_group = self.create_security_group()
|
self.security_group = self.create_security_group()
|
||||||
|
|
||||||
@ -48,6 +55,9 @@ class SnapshotDataIntegrityTests(manager.ScenarioTest):
|
|||||||
# Create an instance
|
# Create an instance
|
||||||
server = self.create_server(
|
server = self.create_server(
|
||||||
key_name=self.keypair['name'],
|
key_name=self.keypair['name'],
|
||||||
|
validatable=True,
|
||||||
|
validation_resources=self.validation_resources,
|
||||||
|
wait_until='SSHABLE',
|
||||||
security_groups=[{'name': self.security_group['name']}])
|
security_groups=[{'name': self.security_group['name']}])
|
||||||
|
|
||||||
# Create an empty volume
|
# Create an empty volume
|
||||||
|
@ -38,11 +38,6 @@ class TestEncryptedCinderVolumes(manager.EncryptionScenarioTest,
|
|||||||
def resource_cleanup(cls):
|
def resource_cleanup(cls):
|
||||||
super(TestEncryptedCinderVolumes, cls).resource_cleanup()
|
super(TestEncryptedCinderVolumes, cls).resource_cleanup()
|
||||||
|
|
||||||
def launch_instance(self):
|
|
||||||
keypair = self.create_keypair()
|
|
||||||
|
|
||||||
return self.create_server(key_name=keypair['name'])
|
|
||||||
|
|
||||||
def attach_detach_volume(self, server, volume):
|
def attach_detach_volume(self, server, volume):
|
||||||
attached_volume = self.nova_volume_attach(server, volume)
|
attached_volume = self.nova_volume_attach(server, volume)
|
||||||
self.nova_volume_detach(server, attached_volume)
|
self.nova_volume_detach(server, attached_volume)
|
||||||
@ -108,7 +103,11 @@ class TestEncryptedCinderVolumes(manager.EncryptionScenarioTest,
|
|||||||
self.volumes_client, volume_s['id'], 'available')
|
self.volumes_client, volume_s['id'], 'available')
|
||||||
volume_source = self.volumes_client.show_volume(
|
volume_source = self.volumes_client.show_volume(
|
||||||
volume_s['id'])['volume']
|
volume_s['id'])['volume']
|
||||||
server = self.launch_instance()
|
validation_resources = self.get_test_validation_resources(
|
||||||
|
self.os_primary)
|
||||||
|
server = self.create_server(wait_until='SSHABLE',
|
||||||
|
validatable=True,
|
||||||
|
validation_resources=validation_resources)
|
||||||
self.attach_detach_volume(server, volume_source)
|
self.attach_detach_volume(server, volume_source)
|
||||||
|
|
||||||
@decorators.idempotent_id('5bb622ab-5060-48a8-8840-d589a548b7e4')
|
@decorators.idempotent_id('5bb622ab-5060-48a8-8840-d589a548b7e4')
|
||||||
|
@ -31,6 +31,13 @@ class VolumeMultiattachTests(manager.ScenarioTest,
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(VolumeMultiattachTests, self).setUp()
|
super(VolumeMultiattachTests, self).setUp()
|
||||||
|
self.validation_resources = self.get_test_validation_resources(
|
||||||
|
self.os_primary)
|
||||||
|
# NOTE(danms): If validation is enabled, we will have a keypair to use,
|
||||||
|
# otherwise we need to create our own.
|
||||||
|
if 'keypair' in self.validation_resources:
|
||||||
|
self.keypair = self.validation_resources['keypair']
|
||||||
|
else:
|
||||||
self.keypair = self.create_keypair()
|
self.keypair = self.create_keypair()
|
||||||
self.security_group = self.create_security_group()
|
self.security_group = self.create_security_group()
|
||||||
|
|
||||||
@ -52,6 +59,9 @@ class VolumeMultiattachTests(manager.ScenarioTest,
|
|||||||
# Create an instance
|
# Create an instance
|
||||||
server_1 = self.create_server(
|
server_1 = self.create_server(
|
||||||
key_name=self.keypair['name'],
|
key_name=self.keypair['name'],
|
||||||
|
wait_until='SSHABLE',
|
||||||
|
validatable=True,
|
||||||
|
validation_resources=self.validation_resources,
|
||||||
security_groups=[{'name': self.security_group['name']}])
|
security_groups=[{'name': self.security_group['name']}])
|
||||||
|
|
||||||
# Create multiattach type
|
# Create multiattach type
|
||||||
@ -92,6 +102,9 @@ class VolumeMultiattachTests(manager.ScenarioTest,
|
|||||||
# Create another instance
|
# Create another instance
|
||||||
server_2 = self.create_server(
|
server_2 = self.create_server(
|
||||||
key_name=self.keypair['name'],
|
key_name=self.keypair['name'],
|
||||||
|
validatable=True,
|
||||||
|
validation_resources=self.validation_resources,
|
||||||
|
wait_until='SSHABLE',
|
||||||
security_groups=[{'name': self.security_group['name']}])
|
security_groups=[{'name': self.security_group['name']}])
|
||||||
|
|
||||||
instance_2_ip = self.get_server_ip(server_2)
|
instance_2_ip = self.get_server_ip(server_2)
|
||||||
@ -117,6 +130,9 @@ class VolumeMultiattachTests(manager.ScenarioTest,
|
|||||||
# Create an instance
|
# Create an instance
|
||||||
server = self.create_server(
|
server = self.create_server(
|
||||||
key_name=self.keypair['name'],
|
key_name=self.keypair['name'],
|
||||||
|
validatable=True,
|
||||||
|
validation_resources=self.validation_resources,
|
||||||
|
wait_until='SSHABLE',
|
||||||
security_groups=[{'name': self.security_group['name']}])
|
security_groups=[{'name': self.security_group['name']}])
|
||||||
|
|
||||||
# Create multiattach type
|
# Create multiattach type
|
||||||
|
@ -5,4 +5,4 @@
|
|||||||
pbr!=2.1.0,>=2.0.0 # Apache-2.0
|
pbr!=2.1.0,>=2.0.0 # Apache-2.0
|
||||||
oslo.config>=5.1.0 # Apache-2.0
|
oslo.config>=5.1.0 # Apache-2.0
|
||||||
oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
|
oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
|
||||||
tempest>=27.0.0 # Apache-2.0
|
tempest>=30.0.0 # Apache-2.0
|
||||||
|
Loading…
Reference in New Issue
Block a user