blob: 56bdb1bd47da9181d8f142178cf21b8971258da1 [file] [log] [blame]
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +03001import pytest
2import utils
3import random
4import time
5from utils import os_client
6
7@pytest.fixture(scope='session')
8def local_salt_client():
9 return utils.init_salt_client()
10
11
12# TODO: fix
13# should not be executed on any test run
14nodes = utils.get_pairs()
15hw_nodes = utils.get_hw_pairs()
16
17
18@pytest.fixture(scope='session', params=nodes.values(), ids=nodes.keys())
19def pair(request):
20 return request.param
21
22
23@pytest.fixture(scope='session', params=hw_nodes.values(), ids=hw_nodes.keys())
24def hw_pair(request):
25 return request.param
26
27
28@pytest.fixture(scope='session')
29def openstack_clients(local_salt_client):
30 nodes_info = local_salt_client.cmd(
31 'keystone:server', 'pillar.get',
Oleksii Zhurba47aad3d2019-06-03 13:24:53 -050032 ['keystone:client:os_client_config:cfgs:root:content:clouds:admin_identity'],
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030033 expr_form='pillar')
Oleksii Zhurba47aad3d2019-06-03 13:24:53 -050034
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030035 if nodes_info.__len__() < 1:
36 pytest.skip("No keystone server found")
37 return False
38 keystone = nodes_info[nodes_info.keys()[0]]
Oleksii Zhurba47aad3d2019-06-03 13:24:53 -050039 # TODO: region? OS_CACERT?
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030040 return os_client.OfficialClientManager(
Oleksii Zhurba47aad3d2019-06-03 13:24:53 -050041 username=keystone['auth']['username'],
42 password=keystone['auth']['password'],
43 tenant_name=keystone['auth']['project_name'],
44 auth_url=keystone['auth']['auth_url'],
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030045 cert=False,
Oleksii Zhurba47aad3d2019-06-03 13:24:53 -050046 # domain will be used as project_domain_name and user_domain_name
47 domain=keystone['auth']['project_domain_name'],
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030048 )
49
50
51@pytest.fixture(scope='session')
52def os_resources(openstack_clients):
53 os_actions = os_client.OSCliActions(openstack_clients)
54 os_resource = {}
55 config = utils.get_configuration()
Hanna Arhipovad6774a12019-07-16 16:44:46 +030056 image_name = config.get('image_name', 'Ubuntu')
57 flavor_name = config.get('flavor_name', 'spt-test')
58 flavor_ram = config.get('flavor_ram', 1536)
59 flavor_vcpus = config.get('flavor_vcpus', 1)
60 flavor_disk = config.get('flavor_disk', 3)
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030061
62 os_images_list = [image.id for image in openstack_clients.image.images.list(filters={'name': image_name})]
63 if os_images_list.__len__() == 0:
64 pytest.skip("No images with name {}. This name can be redefined with 'image_name' env var ".format(image_name))
65
66 os_resource['image_id'] = str(os_images_list[0])
67
Hanna Arhipovad6774a12019-07-16 16:44:46 +030068 os_resource['flavor_id'] = [flavor.id for flavor in openstack_clients.compute.flavors.list() if flavor.name == flavor_name]
Hanna Arhipovac846c732019-12-16 11:02:35 +020069 flavor_is_created = False
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030070 if not os_resource['flavor_id']:
Hanna Arhipovad6774a12019-07-16 16:44:46 +030071 os_resource['flavor_id'] = os_actions.create_flavor(flavor_name, flavor_ram, flavor_vcpus, flavor_disk).id
Hanna Arhipovac846c732019-12-16 11:02:35 +020072 flavor_is_created = True
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030073 else:
74 os_resource['flavor_id'] = str(os_resource['flavor_id'][0])
75
76 os_resource['sec_group'] = os_actions.create_sec_group()
Hanna Arhipovad6774a12019-07-16 16:44:46 +030077 os_resource['keypair'] = openstack_clients.compute.keypairs.create(
78 '{}-{}'.format(flavor_name, random.randrange(100, 999)))
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030079 os_resource['net1'] = os_actions.create_network_resources()
80 os_resource['ext_net'] = os_actions.get_external_network()
81 adm_tenant = os_actions.get_admin_tenant()
82 os_resource['router'] = os_actions.create_router(os_resource['ext_net'], adm_tenant.id)
83 os_resource['net2'] = os_actions.create_network(adm_tenant.id)
84 os_resource['subnet2'] = os_actions.create_subnet(os_resource['net2'], adm_tenant.id, '10.2.7.0/24')
85 for subnet in openstack_clients.network.list_subnets()['subnets']:
86 if subnet['network_id'] == os_resource['net1']['id']:
87 os_resource['subnet1'] = subnet['id']
88
89 openstack_clients.network.add_interface_router(os_resource['router']['id'], {'subnet_id': os_resource['subnet1']})
90 openstack_clients.network.add_interface_router(os_resource['router']['id'], {'subnet_id': os_resource['subnet2']['id']})
91 yield os_resource
92 # time.sleep(5)
93 openstack_clients.network.remove_interface_router(os_resource['router']['id'], {'subnet_id': os_resource['subnet1']})
94 openstack_clients.network.remove_interface_router(os_resource['router']['id'], {'subnet_id': os_resource['subnet2']['id']})
95 openstack_clients.network.remove_gateway_router(os_resource['router']['id'])
96 time.sleep(5)
97 openstack_clients.network.delete_router(os_resource['router']['id'])
98 time.sleep(5)
99 # openstack_clients.network.delete_subnet(subnet1['id'])
100 openstack_clients.network.delete_network(os_resource['net1']['id'])
101 openstack_clients.network.delete_network(os_resource['net2']['id'])
102
103 openstack_clients.compute.security_groups.delete(os_resource['sec_group'].id)
104 openstack_clients.compute.keypairs.delete(os_resource['keypair'].name)
Hanna Arhipovac846c732019-12-16 11:02:35 +0200105 if flavor_is_created:
106 openstack_clients.compute.flavors.delete(os_resource['flavor_id'])