blob: 8e9bd3a06837df38514c23e7cba5b4ff715416d9 [file] [log] [blame]
import pytest
import time
from fixtures.pre.pre_fixtures_create import *
from fixtures.post.post_fixtures_delete import *
from lib.ssh import *
from lib.test_utils import *
@pytest.mark.usefixtures('pre_init_db', 'pre_create_host', 'pre_create_tenant', 'pre_create_net', 'pre_create_image',
'pre_create_flavor', 'post_delete_net', 'post_delete_host')
def test_osm_01_create_vm(request, pre_init_db,
pre_create_host,
pre_create_tenant,
pre_create_net,
pre_create_image,
pre_create_flavor,
post_delete_image,
post_delete_flavor,
post_delete_vm,
post_delete_net,
post_delete_host):
"""
Create a vm and check network connection btw qrouter namespace and vm, evaluate using ping againt the ip given by
ovs dhcp server. Openvim is launched as a service by pre_launch_openvim_service before regresion start, is stopped
by post_stop_openvim_service after test regresion ends.
:param request: Users argument --config=<test yaml>
:param pre_init_db: initialize the openvim db
:param pre_create_host: Create hosts
:param pre_create_tenant: Create tenant
:param pre_create_net: Create a mgmt net
:param pre_create_image: Create an image
:param pre_create_flavor: Create a flavor
:param post_delete_image: Delete the image declare by the test
:param post_delete_flavor: Delete the flavor declare by the test
:param post_delete_vm: Delete the vm declare by the test
:param post_delete_net: Delete the mgmt net declare by the test
:param post_delete_host: remove the host attached by the test
:return:
"""
config_path = request.config.getoption('config')
config = get_config(config_path)
if not config['fake_mode']:
vm_id = create_vm_per_host(config, 1)
assert vm_id
# get vlan id
vlan_id = os.environ['OPENVIM_TEST_MGMT_NET_VLAN']
assert vlan_id
# get vm ip
ip = get_vm_ip(vm_id)
assert ip
# check ping against the vm
result = ping_ok(vlan_id, ip)
assert result
@pytest.mark.usefixtures('pre_init_db', 'pre_create_host', 'pre_create_tenant', 'pre_create_net', 'pre_create_image',
'pre_create_flavor', 'post_delete_net','post_delete_host')
def test_osm_02_create_2_vm_ping_btw(request, pre_init_db,
pre_create_host,
pre_create_tenant,
pre_create_net,
pre_create_image,
pre_create_flavor,
post_delete_flavor,
post_delete_image,
post_delete_vm,
post_delete_net,
post_delete_host):
"""
Create 2 vms and check network connection btw qrouter namespace and vms, after ssh ready check ping btw both vms
to validate the vlxan mesh btw computes is ok. The vms ips are handle by ovs dhcp server. Openvim is launched as a
service by pre_launch_openvim_service before regresion start, is stopped by post_stop_openvim_service after
test regresion ends.
:param request: Users argument --config=<test yaml>
:param pre_init_db: initialize the openvim db
:param pre_create_host: Create hosts
:param pre_create_tenant: Create tenant
:param pre_create_net: Create a mgmt net
:param pre_create_image: Create an image
:param pre_create_flavor: Create a flavor
:param post_delete_image: Delete the image declare by the test
:param post_delete_flavor: Delete the flavor declare by the test
:param post_delete_vm: Delete the vm declare by the test
:param post_delete_net: Delete the mgmt net declare by the test
:param post_delete_host: remove the host attached by the test
:return:
"""
config_path = request.config.getoption('config')
config = get_config(config_path)
if not config['fake_mode']:
vm_id_1 = create_vm_per_host(config, 0)
assert vm_id_1
vm_id_2 = create_vm_per_host(config, 1)
assert vm_id_2
# get vlan id
vlan_id = os.environ['OPENVIM_TEST_MGMT_NET_VLAN']
assert vlan_id
# get vm ip
ip_1 = get_vm_ip(vm_id_1)
ip_2 = get_vm_ip(vm_id_2)
assert ip_2
# check ping against the vms
result = ping_ok(vlan_id, ip_1)
assert result
result = ping_ok(vlan_id, ip_2)
assert result
# Wait for ssh to be ready
print "Wait for ssh to be ready"
time.sleep(90)
result = ping_ok_btw_2_vms(vlan_id, ip_1, ip_2)
assert result
@pytest.mark.usefixtures('pre_init_db', 'pre_create_host', 'pre_create_tenant', 'pre_create_net', 'pre_create_image',
'pre_create_flavor', 'post_delete_net','post_delete_host')
def test_osm_03_test_service_openvim(request, pre_init_db,
pre_create_host,
pre_create_tenant,
pre_create_net,
pre_create_image,
pre_create_flavor,
post_delete_flavor,
post_delete_image,
post_delete_net,
post_delete_host):
"""
Create a net, restart openvim service and check net status to avoid issues with preexisting nets during openvim
startup. Openvim is launched as a service by pre_launch_openvim_service before regresion start, is stopped by
post_stop_openvim_service after test regresion ends.
:param request: Users argument --config=<test yaml>
:param pre_init_db: initialize the openvim db
:param pre_create_host: Create hosts
:param pre_create_tenant: Create tenant
:param pre_create_net: Create a mgmt net
:param pre_create_image: Create an image
:param pre_create_flavor: Create a flavor
:param post_delete_image: Delete the image declare by the test
:param post_delete_flavor: Delete the flavor declare by the test
:param post_delete_net: Delete the mgmt net declare by the test
:param post_delete_host: remove the host attached by the test
:return:
"""
net_id = os.environ['OPENVIM_TEST_MGMT_NET']
status = get_net_status(net_id)
if 'ACTIVE' in status:
service_path = os.path.join(os.environ['OPENVIM_ROOT_FOLDER'], 'scripts', 'service-openvim')
execute_local('{} restart'.format(service_path))
else:
# force test fail if net status is not ACTIVE
assert None
status = get_net_status(net_id)
if 'ACTIVE' not in status:
assert None
def create_vm_per_host(config, host_number=0):
"""
Create a vm in an specific compute.
:param config: test config
:param host_number: compute number to be depolyed.
:return:
"""
# get env var for server descriptor
tenant_id = os.environ['OPENVIM_TENANT']
image_id = os.environ['OPENVIM_TEST_IMAGE']
flavor_id = os.environ['OPENVIM_TEST_FLAVOR']
net_id = os.environ['OPENVIM_TEST_MGMT_NET']
values = {'OPENVIM_TENANT': tenant_id,
'OPENVIM_TEST_IMAGE': image_id,
'OPENVIM_TEST_FLAVOR': flavor_id,
'OPENVIM_TEST_MGMT_NET': net_id,
'HOST_ID': os.environ['OPENVIM_TEST_HOST_' + str(host_number)]
}
descriptor = template_substitute(config['server'], values)
save_tmp_yaml('tmp.yaml', descriptor)
# create vm
openvim_path = os.path.join(os.environ['OPENVIM_ROOT_FOLDER'], 'openvim')
vm_id = execute_local("{} vm-create {}".format(openvim_path, 'tmp.yaml'))
vm_id = parse_uuid(vm_id)
delete_tmp_yaml('tmp.yaml')
return vm_id