test/automated-pytest-suite/testfixtures/resource_create.py

173 lines
4.9 KiB
Python

#
# Copyright (c) 2019 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
from pytest import fixture
from consts.stx import GuestImages
from keywords import nova_helper, glance_helper, keystone_helper, \
container_helper
from utils.tis_log import LOG
# Session fixture to add affinitiy and anti-affinity server group
@fixture(scope='session')
def server_groups():
def create_server_groups(soft=True, auth_info=None):
srv_grps_tenant = []
LOG.fixture_step(
'(session) Creating affinity and anti-affinity server groups with '
'best_effort set to {}'.
format(soft))
for policy in ['affinity', 'anti_affinity']:
if soft:
policy = 'soft_{}'.format(policy)
name = 'srv_group_{}'.format(policy)
srv_grp_id = \
nova_helper.create_server_group(name=name, policy=policy,
auth_info=auth_info,
rtn_exist=True)[1]
srv_grps_tenant.append(srv_grp_id)
return srv_grps_tenant
return create_server_groups
# Session fixture to add stxauto aggregate with stxauto availability zone
@fixture(scope='session')
def add_stxauto_zone(request):
LOG.fixture_step(
"(session) Add stxauto aggregate and stxauto availability zone")
nova_helper.create_aggregate(name='stxauto', avail_zone='stxauto',
check_first=True)
def remove_aggregate():
LOG.fixture_step("(session) Delete stxauto aggregate")
nova_helper.delete_aggregates('stxauto')
request.addfinalizer(remove_aggregate)
# return name of aggregate/availability zone
return 'stxauto'
# Fixtures to add admin role to primary tenant
@fixture(scope='module')
def add_admin_role_module(request):
__add_admin_role(scope='module', request=request)
@fixture(scope='class')
def add_admin_role_class(request):
__add_admin_role(scope='class', request=request)
@fixture(scope='function')
def add_admin_role_func(request):
__add_admin_role(scope='function', request=request)
def __add_admin_role(scope, request):
LOG.fixture_step(
"({}) Add admin role to user under primary tenant".format(scope))
code = keystone_helper.add_or_remove_role(add_=True, role='admin')[0]
def remove_admin():
if code != -1:
LOG.fixture_step(
"({}) Remove admin role from user under primary tenant".format(
scope))
keystone_helper.add_or_remove_role(add_=False, role='admin')
request.addfinalizer(remove_admin)
@fixture(scope='session')
def ubuntu14_image():
return __create_image('ubuntu_14', 'session')
@fixture(scope='session')
def ubuntu12_image():
return __create_image('ubuntu_12', 'session')
@fixture(scope='session')
def centos7_image():
return __create_image('centos_7', 'session')
@fixture(scope='session')
def centos6_image():
return __create_image('centos_6', 'session')
@fixture(scope='session')
def opensuse11_image():
return __create_image('opensuse_11', 'session')
@fixture(scope='session')
def opensuse12_image():
return __create_image('opensuse_12', 'session')
@fixture(scope='session')
def opensuse13_image():
return __create_image('opensuse_13', 'session')
@fixture(scope='session')
def rhel6_image():
return __create_image('rhel_6', 'session')
@fixture(scope='session')
def rhel7_image():
return __create_image('rhel_7', 'session')
@fixture(scope='session', autouse=True)
def default_glance_image():
if not container_helper.is_stx_openstack_deployed():
return None
return __create_image(None, 'session')
@fixture(scope='session', autouse=False)
def cgcs_guest_image():
return __create_image('cgcs-guest', 'session')
def __create_image(img_os, scope):
if not img_os:
img_os = GuestImages.DEFAULT['guest']
LOG.fixture_step(
"({}) Get or create a glance image with {} guest OS".format(scope,
img_os))
img_info = GuestImages.IMAGE_FILES[img_os]
img_id = glance_helper.get_image_id_from_name(img_os, strict=True)
if not img_id:
if img_info[0] is not None:
image_path = glance_helper.scp_guest_image(img_os=img_os)
else:
img_dir = GuestImages.DEFAULT['image_dir']
image_path = "{}/{}".format(img_dir, img_info[2])
disk_format = 'raw' if img_os in ['cgcs-guest', 'tis-centos-guest',
'vxworks'] else 'qcow2'
img_id = \
glance_helper.create_image(name=img_os,
source_image_file=image_path,
disk_format=disk_format,
container_format='bare',
cleanup=scope)[1]
return img_id