Ievgeniia Zadorozhna | 8402302 | 2021-12-30 13:00:41 +0200 | [diff] [blame] | 1 | import os |
| 2 | import pytest |
| 3 | import utils |
| 4 | import random |
| 5 | import time |
| 6 | import logging |
| 7 | |
| 8 | from utils import os_client |
| 9 | |
| 10 | |
| 11 | logger = logging.getLogger(__name__) |
| 12 | |
| 13 | |
| 14 | @pytest.fixture(scope='session') |
| 15 | def 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 | |
| 26 | nodes = utils.get_pairs() |
| 27 | |
| 28 | |
| 29 | @pytest.fixture(scope='session', params=list(nodes.values()), |
| 30 | ids=list(nodes.keys())) |
| 31 | def pair(request): |
| 32 | return request.param |
| 33 | |
| 34 | |
| 35 | @pytest.fixture(scope='session') |
| 36 | def os_resources(openstack_clients): |
| 37 | os_actions = os_client.OSCliActions(openstack_clients) |
| 38 | os_resource = {} |
| 39 | config = utils.get_configuration() |
Ievgeniia Zadorozhna | 5ed74e2 | 2022-07-26 16:56:23 +0300 | [diff] [blame] | 40 | image_name = config.get('image_name', 'cvp.ubuntu.2004') |
Ievgeniia Zadorozhna | 8402302 | 2021-12-30 13:00:41 +0200 | [diff] [blame] | 41 | 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 Zadorozhna | c67b86b | 2023-02-02 18:09:12 +0300 | [diff] [blame^] | 84 | os_resource['router']['id'], {'subnet_id': os_resource['subnet1']}) |
Ievgeniia Zadorozhna | 8402302 | 2021-12-30 13:00:41 +0200 | [diff] [blame] | 85 | 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 Zadorozhna | c67b86b | 2023-02-02 18:09:12 +0300 | [diff] [blame^] | 101 | time.sleep(10) # extended to 10 since fails at TF sometimes |
Ievgeniia Zadorozhna | 8402302 | 2021-12-30 13:00:41 +0200 | [diff] [blame] | 102 | openstack_clients.network.delete_network(os_resource['net1']['id']) |
| 103 | openstack_clients.network.delete_network(os_resource['net2']['id']) |
| 104 | |
Ievgeniia Zadorozhna | 2c6469d | 2022-08-10 17:21:10 +0300 | [diff] [blame] | 105 | openstack_clients.network.delete_security_group( |
| 106 | os_resource['sec_group']['id']) |
Ievgeniia Zadorozhna | 8402302 | 2021-12-30 13:00:41 +0200 | [diff] [blame] | 107 | 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']) |