From cbd1cf8b06a89a9c4021048b6a6dd466bf72d4c8 Mon Sep 17 00:00:00 2001 From: George Paraskevopoulos Date: Wed, 15 Feb 2017 14:24:14 +0200 Subject: Pass availability zone as param on vnf create JIRA: SFC-63 JIRA: SFC-73 Instead of changing the vnfd-template file in runtime we can pass the availability zone as a parameter when the vnf is created This enables also the use of topology_shuffler for SFC-63 Change-Id: Ie650e3347e40aee030005b6a2272cae64968d303 Signed-off-by: George Paraskevopoulos --- sfc/lib/utils.py | 18 +++++++++++ ...ain_two_service_functions_different_computes.py | 37 +++++++--------------- .../vnfd-templates/test-vnfd-default-params.yaml | 1 + sfc/tests/functest/vnfd-templates/test-vnfd1.yaml | 2 +- sfc/tests/functest/vnfd-templates/test-vnfd2.yaml | 2 +- sfc/tests/functest/vnfd-templates/test2-vnfd1.yaml | 2 +- sfc/tests/functest/vnfd-templates/test2-vnfd2.yaml | 2 +- 7 files changed, 34 insertions(+), 30 deletions(-) create mode 100644 sfc/tests/functest/vnfd-templates/test-vnfd-default-params.yaml diff --git a/sfc/lib/utils.py b/sfc/lib/utils.py index 9c191462..67dbff22 100644 --- a/sfc/lib/utils.py +++ b/sfc/lib/utils.py @@ -12,10 +12,12 @@ import os import re import subprocess import time +import yaml import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as ft_utils import functest.utils.openstack_utils as os_utils +import functest.utils.openstack_tacker as os_tacker logger = ft_logger.Logger("sfc_test_utils").getLogger() @@ -75,6 +77,22 @@ def download_image(url, image_path): logger.info("Using old image") +def create_vnf_in_av_zone(tacker_client, vnf_name, vnfd_name, av_zone=None): + param_file = os.path.join(os.getcwd(), + 'vnfd-templates', + 'test-vnfd-default-params.yaml') + if av_zone is not None: + param_file = os.path.join('/tmp', 'param_{0}.yaml'.format(av_zone)) + data = {'zone': av_zone} + with open(param_file) as f: + yaml.dump(data, f) + + os_tacker.create_vnf(tacker_client, + vnf_name, + vnfd_name=vnfd_name, + param_file=param_file) + + def setup_neutron(neutron_client, net, subnet, router, subnet_cidr): n_dict = os_utils.create_network_full(neutron_client, net, diff --git a/sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py b/sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py index 9661ee09..76c10126 100644 --- a/sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py +++ b/sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py @@ -10,7 +10,6 @@ import argparse import os -import re import sys import time @@ -69,26 +68,6 @@ def setup_availability_zones(nova_client): return az -# JIRA: SFC-52 new function -def modify_vnfd(tacker_vnfd, az): - try: - with open(tacker_vnfd, 'r') as stream: - lines = stream.readlines() - with open(tacker_vnfd, 'w') as stream: - for line in lines: - stream.write(re.sub('nova$', az, line)) - - except Exception, e: - logger.error("Problem when changing vnfd %s" % e) - - -# JIRA: SFC-52 new function -def prepare_tacker_vnfd(nova_client): - azs = setup_availability_zones(nova_client) - modify_vnfd(TACKER_VNFD1, azs[0]) - modify_vnfd(TACKER_VNFD2, azs[1]) - - def main(): installer_type = os.environ.get("INSTALLER_TYPE") if installer_type != "fuel": @@ -143,7 +122,7 @@ def main(): TESTCASE_CONFIG.secgroup_name, TESTCASE_CONFIG.secgroup_descr) - prepare_tacker_vnfd(nova_client) + availability_zones = setup_availability_zones(nova_client) test_utils.create_instance( nova_client, CLIENT, COMMON_CONFIG.flavor, @@ -170,10 +149,16 @@ def main(): tacker_client, tosca_file=tosca_file) - os_tacker.create_vnf( - tacker_client, 'testVNF1', vnfd_name='test-vnfd1') - os_tacker.create_vnf( - tacker_client, 'testVNF2', vnfd_name='test-vnfd2') + test_utils.create_vnf_in_av_zone( + tacker_client, + 'testVNF1', + 'test-vnfd1', + av_zone=availability_zones[0]) + test_utils.create_vnf_in_av_zone( + tacker_client, + 'testVNF2', + 'test-vnfd2', + av_zone=availability_zones[1]) try: os_tacker.wait_for_vnf(tacker_client, vnf_name='testVNF1') diff --git a/sfc/tests/functest/vnfd-templates/test-vnfd-default-params.yaml b/sfc/tests/functest/vnfd-templates/test-vnfd-default-params.yaml new file mode 100644 index 00000000..5b052e5f --- /dev/null +++ b/sfc/tests/functest/vnfd-templates/test-vnfd-default-params.yaml @@ -0,0 +1 @@ +zone: nova diff --git a/sfc/tests/functest/vnfd-templates/test-vnfd1.yaml b/sfc/tests/functest/vnfd-templates/test-vnfd1.yaml index fd862ea0..79a625fa 100644 --- a/sfc/tests/functest/vnfd-templates/test-vnfd1.yaml +++ b/sfc/tests/functest/vnfd-templates/test-vnfd1.yaml @@ -20,7 +20,7 @@ vdus: management: true placement_policy: - availability_zone: nova + availability_zone: { get_input: zone } auto-scaling: noop monitoring_policy: noop diff --git a/sfc/tests/functest/vnfd-templates/test-vnfd2.yaml b/sfc/tests/functest/vnfd-templates/test-vnfd2.yaml index 5451358d..64f799e4 100644 --- a/sfc/tests/functest/vnfd-templates/test-vnfd2.yaml +++ b/sfc/tests/functest/vnfd-templates/test-vnfd2.yaml @@ -20,7 +20,7 @@ vdus: management: true placement_policy: - availability_zone: nova + availability_zone: { get_input: zone } auto-scaling: noop monitoring_policy: noop diff --git a/sfc/tests/functest/vnfd-templates/test2-vnfd1.yaml b/sfc/tests/functest/vnfd-templates/test2-vnfd1.yaml index 1d8da125..e8e0626b 100644 --- a/sfc/tests/functest/vnfd-templates/test2-vnfd1.yaml +++ b/sfc/tests/functest/vnfd-templates/test2-vnfd1.yaml @@ -22,7 +22,7 @@ vdus: placement_policy: # TODO: This availability zone is changed by the test case on the fly. # See JIRA SFC-73 for more info - availability_zone: nova + availability_zone: { get_input: zone } auto-scaling: noop monitoring_policy: noop diff --git a/sfc/tests/functest/vnfd-templates/test2-vnfd2.yaml b/sfc/tests/functest/vnfd-templates/test2-vnfd2.yaml index 280fc9e5..93a38acb 100644 --- a/sfc/tests/functest/vnfd-templates/test2-vnfd2.yaml +++ b/sfc/tests/functest/vnfd-templates/test2-vnfd2.yaml @@ -22,7 +22,7 @@ vdus: placement_policy: # TODO: This availability zone is changed by the test case on the fly. # See JIRA SFC-73 for more info - availability_zone: nova + availability_zone: { get_input: zone } auto-scaling: noop monitoring_policy: noop -- cgit 1.2.3-korg