javelin: create and attach volumes
Bring Cinder support in tempest/javelin to test: - volume creation - volume attachement to a server Partial-Bug #1330178 Signed-off-by: Emilien Macchi <emilien.macchi@enovance.com> Change-Id: Ie0e437312aab3ccb0d8233e4b73f9215f64149ac
This commit is contained in:
parent
76bf0bc611
commit
626b4f8f75
|
@ -35,6 +35,7 @@ from tempest.services.identity.json import identity_client
|
|||
from tempest.services.image.v2.json import image_client
|
||||
from tempest.services.object_storage import container_client
|
||||
from tempest.services.object_storage import object_client
|
||||
from tempest.services.volume.json import volumes_client
|
||||
|
||||
OPTS = {}
|
||||
USERS = {}
|
||||
|
@ -60,6 +61,7 @@ class OSClient(object):
|
|||
self.containers = container_client.ContainerClient(_auth)
|
||||
self.images = image_client.ImageClientV2JSON(_auth)
|
||||
self.flavors = flavors_client.FlavorsClientJSON(_auth)
|
||||
self.volumes = volumes_client.VolumesClientJSON(_auth)
|
||||
|
||||
|
||||
def load_resources(fname):
|
||||
|
@ -190,6 +192,7 @@ class JavelinCheck(unittest.TestCase):
|
|||
self.check_users()
|
||||
self.check_objects()
|
||||
self.check_servers()
|
||||
self.check_volumes()
|
||||
|
||||
def check_users(self):
|
||||
"""Check that the users we expect to exist, do.
|
||||
|
@ -235,6 +238,21 @@ class JavelinCheck(unittest.TestCase):
|
|||
"Server %s is not pingable at %s" % (
|
||||
server['name'], addr))
|
||||
|
||||
def check_volumes(self):
|
||||
"""Check that the volumes are still there and attached."""
|
||||
for volume in self.res['volumes']:
|
||||
client = client_for_user(volume['owner'])
|
||||
found = _get_volume_by_name(client, volume['name'])
|
||||
self.assertIsNotNone(
|
||||
found,
|
||||
"Couldn't find expected volume %s" % volume['name'])
|
||||
|
||||
# Verify that a volume's attachment retrieved
|
||||
server_id = _get_server_by_name(client, volume['server'])['id']
|
||||
attachment = self.client.get_attachment_from_volume(volume)
|
||||
self.assertEqual(volume['id'], attachment['volume_id'])
|
||||
self.assertEqual(server_id, attachment['server_id'])
|
||||
|
||||
|
||||
#######################
|
||||
#
|
||||
|
@ -337,6 +355,40 @@ def create_servers(servers):
|
|||
client.servers.create_server(server['name'], image_id, flavor_id)
|
||||
|
||||
|
||||
#######################
|
||||
#
|
||||
# VOLUMES
|
||||
#
|
||||
#######################
|
||||
|
||||
def _get_volume_by_name(client, name):
|
||||
r, body = client.volumes.list_volumes()
|
||||
for volume in body['volumes']:
|
||||
if name == volume['name']:
|
||||
return volume
|
||||
return None
|
||||
|
||||
|
||||
def create_volumes(volumes):
|
||||
for volume in volumes:
|
||||
client = client_for_user(volume['owner'])
|
||||
|
||||
# only create a volume if the name isn't here
|
||||
r, body = client.volumes.list_volumes()
|
||||
if any(item['name'] == volume['name'] for item in body):
|
||||
continue
|
||||
|
||||
client.volumes.create_volume(volume['name'], volume['size'])
|
||||
|
||||
|
||||
def attach_volumes(volumes):
|
||||
for volume in volumes:
|
||||
client = client_for_user(volume['owner'])
|
||||
|
||||
server_id = _get_server_by_name(client, volume['server'])['id']
|
||||
client.volumes.attach_volume(volume['name'], server_id)
|
||||
|
||||
|
||||
#######################
|
||||
#
|
||||
# MAIN LOGIC
|
||||
|
@ -355,6 +407,8 @@ def create_resources():
|
|||
create_objects(RES['objects'])
|
||||
create_images(RES['images'])
|
||||
create_servers(RES['servers'])
|
||||
create_volumes(RES['volumes'])
|
||||
attach_volumes(RES['volumes'])
|
||||
|
||||
|
||||
def get_options():
|
||||
|
|
|
@ -32,9 +32,14 @@ images:
|
|||
aki: cirros-0.3.2-x86_64-vmlinuz
|
||||
ari: cirros-0.3.2-x86_64-initrd
|
||||
volumes:
|
||||
- assegai:
|
||||
- owner: javelin
|
||||
- gb: 1
|
||||
- name: assegai
|
||||
server: peltast
|
||||
owner: javelin
|
||||
size: 1
|
||||
- name: pifpouf
|
||||
server: hoplite
|
||||
owner: javelin
|
||||
size: 2
|
||||
servers:
|
||||
- name: peltast
|
||||
owner: javelin
|
||||
|
|
Loading…
Reference in New Issue