| mirabal | 126e787 | 2017-07-06 05:54:49 -0500 | [diff] [blame] | 1 | import pytest |
| 2 | import time |
| 3 | from fixtures.pre.pre_fixtures_create import * |
| 4 | from fixtures.post.post_fixtures_delete import * |
| 5 | from lib.ssh import * |
| 6 | from lib.test_utils import * |
| 7 | |
| 8 | |
| 9 | @pytest.mark.usefixtures('pre_init_db', 'pre_create_host', 'pre_create_tenant', 'pre_create_net', 'pre_create_image', |
| 10 | 'pre_create_flavor', 'post_delete_net', 'post_delete_host') |
| 11 | def test_osm_01_create_vm(request, pre_init_db, |
| 12 | pre_create_host, |
| 13 | pre_create_tenant, |
| 14 | pre_create_net, |
| 15 | pre_create_image, |
| 16 | pre_create_flavor, |
| 17 | post_delete_image, |
| 18 | post_delete_flavor, |
| 19 | post_delete_vm, |
| 20 | post_delete_net, |
| 21 | post_delete_host): |
| 22 | """ |
| 23 | Create a vm and check network connection btw qrouter namespace and vm, evaluate using ping againt the ip given by |
| 24 | ovs dhcp server. Openvim is launched as a service by pre_launch_openvim_service before regresion start, is stopped |
| 25 | by post_stop_openvim_service after test regresion ends. |
| 26 | |
| 27 | :param request: Users argument --config=<test yaml> |
| 28 | :param pre_init_db: initialize the openvim db |
| 29 | :param pre_create_host: Create hosts |
| 30 | :param pre_create_tenant: Create tenant |
| 31 | :param pre_create_net: Create a mgmt net |
| 32 | :param pre_create_image: Create an image |
| 33 | :param pre_create_flavor: Create a flavor |
| 34 | :param post_delete_image: Delete the image declare by the test |
| 35 | :param post_delete_flavor: Delete the flavor declare by the test |
| 36 | :param post_delete_vm: Delete the vm declare by the test |
| 37 | :param post_delete_net: Delete the mgmt net declare by the test |
| 38 | :param post_delete_host: remove the host attached by the test |
| 39 | :return: |
| 40 | """ |
| 41 | config_path = request.config.getoption('config') |
| 42 | config = get_config(config_path) |
| 43 | if not config['fake_mode']: |
| 44 | vm_id = create_vm_per_host(config, 1) |
| 45 | assert vm_id |
| 46 | # get vlan id |
| 47 | vlan_id = os.environ['OPENVIM_TEST_MGMT_NET_VLAN'] |
| 48 | assert vlan_id |
| 49 | # get vm ip |
| 50 | ip = get_vm_ip(vm_id) |
| 51 | assert ip |
| 52 | # check ping against the vm |
| 53 | result = ping_ok(vlan_id, ip) |
| 54 | assert result |
| 55 | |
| 56 | |
| 57 | @pytest.mark.usefixtures('pre_init_db', 'pre_create_host', 'pre_create_tenant', 'pre_create_net', 'pre_create_image', |
| 58 | 'pre_create_flavor', 'post_delete_net','post_delete_host') |
| 59 | def test_osm_02_create_2_vm_ping_btw(request, pre_init_db, |
| 60 | pre_create_host, |
| 61 | pre_create_tenant, |
| 62 | pre_create_net, |
| 63 | pre_create_image, |
| 64 | pre_create_flavor, |
| 65 | post_delete_flavor, |
| 66 | post_delete_image, |
| 67 | post_delete_vm, |
| 68 | post_delete_net, |
| 69 | post_delete_host): |
| 70 | """ |
| 71 | Create 2 vms and check network connection btw qrouter namespace and vms, after ssh ready check ping btw both vms |
| 72 | to validate the vlxan mesh btw computes is ok. The vms ips are handle by ovs dhcp server. Openvim is launched as a |
| 73 | service by pre_launch_openvim_service before regresion start, is stopped by post_stop_openvim_service after |
| 74 | test regresion ends. |
| 75 | |
| 76 | :param request: Users argument --config=<test yaml> |
| 77 | :param pre_init_db: initialize the openvim db |
| 78 | :param pre_create_host: Create hosts |
| 79 | :param pre_create_tenant: Create tenant |
| 80 | :param pre_create_net: Create a mgmt net |
| 81 | :param pre_create_image: Create an image |
| 82 | :param pre_create_flavor: Create a flavor |
| 83 | :param post_delete_image: Delete the image declare by the test |
| 84 | :param post_delete_flavor: Delete the flavor declare by the test |
| 85 | :param post_delete_vm: Delete the vm declare by the test |
| 86 | :param post_delete_net: Delete the mgmt net declare by the test |
| 87 | :param post_delete_host: remove the host attached by the test |
| 88 | :return: |
| 89 | """ |
| 90 | config_path = request.config.getoption('config') |
| 91 | config = get_config(config_path) |
| 92 | |
| 93 | if not config['fake_mode']: |
| 94 | vm_id_1 = create_vm_per_host(config, 0) |
| 95 | assert vm_id_1 |
| 96 | |
| 97 | vm_id_2 = create_vm_per_host(config, 1) |
| 98 | assert vm_id_2 |
| 99 | |
| 100 | # get vlan id |
| 101 | vlan_id = os.environ['OPENVIM_TEST_MGMT_NET_VLAN'] |
| 102 | assert vlan_id |
| 103 | |
| 104 | # get vm ip |
| 105 | ip_1 = get_vm_ip(vm_id_1) |
| 106 | ip_2 = get_vm_ip(vm_id_2) |
| 107 | assert ip_2 |
| 108 | |
| 109 | # check ping against the vms |
| 110 | result = ping_ok(vlan_id, ip_1) |
| 111 | assert result |
| 112 | result = ping_ok(vlan_id, ip_2) |
| 113 | assert result |
| 114 | |
| 115 | # Wait for ssh to be ready |
| 116 | print "Wait for ssh to be ready" |
| 117 | time.sleep(90) |
| 118 | result = ping_ok_btw_2_vms(vlan_id, ip_1, ip_2) |
| 119 | assert result |
| 120 | |
| 121 | |
| 122 | @pytest.mark.usefixtures('pre_init_db', 'pre_create_host', 'pre_create_tenant', 'pre_create_net', 'pre_create_image', |
| 123 | 'pre_create_flavor', 'post_delete_net','post_delete_host') |
| 124 | def test_osm_03_test_service_openvim(request, pre_init_db, |
| 125 | pre_create_host, |
| 126 | pre_create_tenant, |
| 127 | pre_create_net, |
| 128 | pre_create_image, |
| 129 | pre_create_flavor, |
| 130 | post_delete_flavor, |
| 131 | post_delete_image, |
| 132 | post_delete_net, |
| 133 | post_delete_host): |
| 134 | """ |
| 135 | Create a net, restart openvim service and check net status to avoid issues with preexisting nets during openvim |
| 136 | startup. Openvim is launched as a service by pre_launch_openvim_service before regresion start, is stopped by |
| 137 | post_stop_openvim_service after test regresion ends. |
| 138 | |
| 139 | :param request: Users argument --config=<test yaml> |
| 140 | :param pre_init_db: initialize the openvim db |
| 141 | :param pre_create_host: Create hosts |
| 142 | :param pre_create_tenant: Create tenant |
| 143 | :param pre_create_net: Create a mgmt net |
| 144 | :param pre_create_image: Create an image |
| 145 | :param pre_create_flavor: Create a flavor |
| 146 | :param post_delete_image: Delete the image declare by the test |
| 147 | :param post_delete_flavor: Delete the flavor declare by the test |
| 148 | :param post_delete_net: Delete the mgmt net declare by the test |
| 149 | :param post_delete_host: remove the host attached by the test |
| 150 | :return: |
| 151 | """ |
| 152 | |
| 153 | net_id = os.environ['OPENVIM_TEST_MGMT_NET'] |
| 154 | status = get_net_status(net_id) |
| 155 | if 'ACTIVE' in status: |
| 156 | service_path = os.path.join(os.environ['OPENVIM_ROOT_FOLDER'], 'scripts', 'service-openvim') |
| 157 | execute_local('{} restart'.format(service_path)) |
| 158 | else: |
| 159 | # force test fail if net status is not ACTIVE |
| 160 | assert None |
| 161 | |
| 162 | status = get_net_status(net_id) |
| 163 | if 'ACTIVE' not in status: |
| 164 | assert None |
| 165 | |
| 166 | |
| 167 | def create_vm_per_host(config, host_number=0): |
| 168 | """ |
| 169 | Create a vm in an specific compute. |
| 170 | :param config: test config |
| 171 | :param host_number: compute number to be depolyed. |
| 172 | :return: |
| 173 | """ |
| 174 | # get env var for server descriptor |
| 175 | tenant_id = os.environ['OPENVIM_TENANT'] |
| 176 | image_id = os.environ['OPENVIM_TEST_IMAGE'] |
| 177 | flavor_id = os.environ['OPENVIM_TEST_FLAVOR'] |
| 178 | net_id = os.environ['OPENVIM_TEST_MGMT_NET'] |
| 179 | |
| 180 | values = {'OPENVIM_TENANT': tenant_id, |
| 181 | 'OPENVIM_TEST_IMAGE': image_id, |
| 182 | 'OPENVIM_TEST_FLAVOR': flavor_id, |
| 183 | 'OPENVIM_TEST_MGMT_NET': net_id, |
| 184 | 'HOST_ID': os.environ['OPENVIM_TEST_HOST_' + str(host_number)] |
| 185 | } |
| 186 | |
| 187 | descriptor = template_substitute(config['server'], values) |
| 188 | save_tmp_yaml('tmp.yaml', descriptor) |
| 189 | # create vm |
| 190 | openvim_path = os.path.join(os.environ['OPENVIM_ROOT_FOLDER'], 'openvim') |
| 191 | vm_id = execute_local("{} vm-create {}".format(openvim_path, 'tmp.yaml')) |
| 192 | vm_id = parse_uuid(vm_id) |
| 193 | delete_tmp_yaml('tmp.yaml') |
| 194 | return vm_id |