Merge "Boot server from encrypted volume"
This commit is contained in:
commit
6f4adce660
@ -1249,6 +1249,17 @@ class EncryptionScenarioTest(ScenarioTest):
|
|||||||
type_id, provider=provider, key_size=key_size, cipher=cipher,
|
type_id, provider=provider, key_size=key_size, cipher=cipher,
|
||||||
control_location=control_location)['encryption']
|
control_location=control_location)['encryption']
|
||||||
|
|
||||||
|
def create_encrypted_volume(self, encryption_provider, volume_type,
|
||||||
|
key_size=256, cipher='aes-xts-plain64',
|
||||||
|
control_location='front-end'):
|
||||||
|
volume_type = self.create_volume_type(name=volume_type)
|
||||||
|
self.create_encryption_type(type_id=volume_type['id'],
|
||||||
|
provider=encryption_provider,
|
||||||
|
key_size=key_size,
|
||||||
|
cipher=cipher,
|
||||||
|
control_location=control_location)
|
||||||
|
return self.create_volume(volume_type=volume_type['name'])
|
||||||
|
|
||||||
|
|
||||||
class ObjectStorageScenarioTest(ScenarioTest):
|
class ObjectStorageScenarioTest(ScenarioTest):
|
||||||
"""Provide harness to do Object Storage scenario tests.
|
"""Provide harness to do Object Storage scenario tests.
|
||||||
|
@ -48,15 +48,6 @@ class TestEncryptedCinderVolumes(manager.EncryptionScenarioTest):
|
|||||||
|
|
||||||
return self.create_server(image_id=image, key_name=keypair['name'])
|
return self.create_server(image_id=image, key_name=keypair['name'])
|
||||||
|
|
||||||
def create_encrypted_volume(self, encryption_provider, volume_type):
|
|
||||||
volume_type = self.create_volume_type(name=volume_type)
|
|
||||||
self.create_encryption_type(type_id=volume_type['id'],
|
|
||||||
provider=encryption_provider,
|
|
||||||
key_size=256,
|
|
||||||
cipher='aes-xts-plain64',
|
|
||||||
control_location='front-end')
|
|
||||||
return self.create_volume(volume_type=volume_type['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)
|
||||||
|
@ -24,7 +24,7 @@ CONF = config.CONF
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class TestVolumeBootPattern(manager.ScenarioTest):
|
class TestVolumeBootPattern(manager.EncryptionScenarioTest):
|
||||||
|
|
||||||
# Boot from volume scenario is quite slow, and needs extra
|
# Boot from volume scenario is quite slow, and needs extra
|
||||||
# breathing room to get through deletes in the time allotted.
|
# breathing room to get through deletes in the time allotted.
|
||||||
@ -227,3 +227,26 @@ class TestVolumeBootPattern(manager.ScenarioTest):
|
|||||||
|
|
||||||
# delete instance
|
# delete instance
|
||||||
self._delete_server(instance)
|
self._delete_server(instance)
|
||||||
|
|
||||||
|
@decorators.idempotent_id('cb78919a-e553-4bab-b73b-10cf4d2eb125')
|
||||||
|
@testtools.skipIf(CONF.volume.storage_protocol.lower() in ['ceph', 'nfs'],
|
||||||
|
'Currently, {} does not support volume encryption'
|
||||||
|
.format(CONF.volume.storage_protocol))
|
||||||
|
@test.services('compute', 'volume')
|
||||||
|
def test_boot_server_from_encrypted_volume_luks(self):
|
||||||
|
# Create an encrypted volume
|
||||||
|
volume = self.create_encrypted_volume('nova.volume.encryptors.'
|
||||||
|
'luks.LuksEncryptor',
|
||||||
|
volume_type='luks')
|
||||||
|
|
||||||
|
self.volumes_client.set_bootable_volume(volume['id'], bootable=True)
|
||||||
|
|
||||||
|
# Boot a server from the encrypted volume
|
||||||
|
server = self._boot_instance_from_resource(
|
||||||
|
source_id=volume['id'],
|
||||||
|
source_type='volume',
|
||||||
|
delete_on_termination=False)
|
||||||
|
|
||||||
|
server_info = self.servers_client.show_server(server['id'])['server']
|
||||||
|
created_volume = server_info['os-extended-volumes:volumes_attached']
|
||||||
|
self.assertEqual(volume['id'], created_volume[0]['id'])
|
||||||
|
Loading…
Reference in New Issue
Block a user