blob: 721d772870421d834889a3322660bc6a38d3f6c3 [file] [log] [blame]
Ievgeniia Zadorozhna84023022021-12-30 13:00:41 +02001import os
2import pytest
3import utils
4import random
5import time
6import logging
7
8from utils import os_client
9
10
11logger = logging.getLogger(__name__)
12
13
14@pytest.fixture(scope='session')
15def openstack_clients():
16 return os_client.OfficialClientManager(
17 username=os.environ['OS_USERNAME'],
18 password=os.environ['OS_PASSWORD'],
19 tenant_name=os.environ['OS_PROJECT_NAME'],
20 auth_url=os.environ['OS_AUTH_URL'],
21 cert=False,
22 domain=os.environ['OS_PROJECT_DOMAIN_NAME'],
23 )
24
25
26nodes = utils.get_pairs()
27
28
29@pytest.fixture(scope='session', params=list(nodes.values()),
30 ids=list(nodes.keys()))
31def pair(request):
32 return request.param
33
34
35@pytest.fixture(scope='session')
36def os_resources(openstack_clients):
37 os_actions = os_client.OSCliActions(openstack_clients)
38 os_resource = {}
39 config = utils.get_configuration()
Ievgeniia Zadorozhna5ed74e22022-07-26 16:56:23 +030040 image_name = config.get('image_name', 'cvp.ubuntu.2004')
Ievgeniia Zadorozhna84023022021-12-30 13:00:41 +020041 flavor_name = config.get('flavor_name', 'spt-test')
42 flavor_ram = config.get('flavor_ram', 1536)
43 flavor_vcpus = config.get('flavor_vcpus', 1)
44 flavor_disk = config.get('flavor_disk', 3)
45
46 os_images_list = [image.id for image in
47 openstack_clients.image.images.list(
48 filters={'name': image_name})]
49
50 if os_images_list.__len__() == 0:
51 pytest.skip("No images with name {}. This name can be redefined "
52 "with 'image_name' env var ".format(image_name))
53
54 os_resource['image_id'] = str(os_images_list[0])
55
56 os_resource['flavor_id'] = [flavor.id for flavor in
57 openstack_clients.compute.flavors.list()
58 if flavor.name == flavor_name]
59 flavor_is_created = False
60 if not os_resource['flavor_id']:
61 os_resource['flavor_id'] = os_actions.create_flavor(
62 flavor_name, flavor_ram, flavor_vcpus, flavor_disk).id
63 flavor_is_created = True
64 else:
65 os_resource['flavor_id'] = str(os_resource['flavor_id'][0])
66
67 os_resource['sec_group'] = os_actions.create_sec_group()
68 os_resource['keypair'] = openstack_clients.compute.keypairs.create(
69 '{}-{}'.format('spt-key', random.randrange(100, 999))
70 )
71 os_resource['net1'] = os_actions.create_network_resources()
72 os_resource['ext_net'] = os_actions.get_external_network()
73 adm_tenant = os_actions.get_admin_tenant()
74 os_resource['router'] = os_actions.create_router(
75 os_resource['ext_net'], adm_tenant.id)
76 os_resource['net2'] = os_actions.create_network(adm_tenant.id)
77 os_resource['subnet2'] = os_actions.create_subnet(
78 os_resource['net2'], adm_tenant.id, '10.2.7.0/24')
79 for subnet in openstack_clients.network.list_subnets()['subnets']:
80 if subnet['network_id'] == os_resource['net1']['id']:
81 os_resource['subnet1'] = subnet['id']
82
83 openstack_clients.network.add_interface_router(
Ievgeniia Zadorozhnac67b86b2023-02-02 18:09:12 +030084 os_resource['router']['id'], {'subnet_id': os_resource['subnet1']})
Ievgeniia Zadorozhna84023022021-12-30 13:00:41 +020085 openstack_clients.network.add_interface_router(
86 os_resource['router']['id'],
87 {'subnet_id': os_resource['subnet2']['id']})
88 yield os_resource
89
90 # cleanup created resources
91 logger.info("Deleting routers, networks, SG, key pair, flavor...")
92 openstack_clients.network.remove_interface_router(
93 os_resource['router']['id'], {'subnet_id': os_resource['subnet1']})
94 openstack_clients.network.remove_interface_router(
95 os_resource['router']['id'],
96 {'subnet_id': os_resource['subnet2']['id']})
97 openstack_clients.network.remove_gateway_router(
98 os_resource['router']['id'])
99 time.sleep(5)
100 openstack_clients.network.delete_router(os_resource['router']['id'])
Ievgeniia Zadorozhnac67b86b2023-02-02 18:09:12 +0300101 time.sleep(10) # extended to 10 since fails at TF sometimes
Ievgeniia Zadorozhna84023022021-12-30 13:00:41 +0200102 openstack_clients.network.delete_network(os_resource['net1']['id'])
103 openstack_clients.network.delete_network(os_resource['net2']['id'])
104
Ievgeniia Zadorozhna2c6469d2022-08-10 17:21:10 +0300105 openstack_clients.network.delete_security_group(
106 os_resource['sec_group']['id'])
Ievgeniia Zadorozhna84023022021-12-30 13:00:41 +0200107 openstack_clients.compute.keypairs.delete(os_resource['keypair'].name)
108 if flavor_is_created:
109 openstack_clients.compute.flavors.delete(os_resource['flavor_id'])
110 if os_actions.create_fake_ext_net:
111 openstack_clients.network.delete_network(os_resource['ext_net']['id'])