diff options
-rw-r--r-- | sdnvpn/test/functest/config.yaml | 398 | ||||
-rw-r--r-- | sdnvpn/test/functest/run_sdnvpn_tests.py | 57 | ||||
-rw-r--r-- | sdnvpn/test/functest/run_tempest.py | 33 |
3 files changed, 266 insertions, 222 deletions
diff --git a/sdnvpn/test/functest/config.yaml b/sdnvpn/test/functest/config.yaml index d719453..360d88f 100644 --- a/sdnvpn/test/functest/config.yaml +++ b/sdnvpn/test/functest/config.yaml @@ -3,218 +3,230 @@ defaults: testcases: sdnvpn.test.functest.run_tempest: - enabled: true - description: Neutron BGPVPN tests in tempest + enabled: true + order: 0 + description: Neutron BGPVPN tests in tempest + image_name: bgpvpn-tempest-image sdnvpn.test.functest.testcase_1: - enabled: true - description: VPN provides connectivity between subnets - instance_1_name: sdnvpn-1-1 - instance_2_name: sdnvpn-1-2 - instance_3_name: sdnvpn-1-3 - instance_4_name: sdnvpn-1-4 - instance_5_name: sdnvpn-1-5 - image_name: sdnvpn-image - net_1_name: sdnvpn-1-1-net - subnet_1_name: sdnvpn-1-1-subnet - subnet_1_cidr: 10.10.10.0/24 - router_1_name: sdnvpn-1-1-router - net_2_name: sdnvpn-1-2-net - subnet_2_name: sdnvpn-1-2-subnet - subnet_2_cidr: 10.10.11.0/24 - router_2_name: sdnvpn-1-2-router - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases - targets1: '88:88' - targets2: '55:55' - route_distinguishers: '11:11' + enabled: true + order: 1 + description: VPN provides connectivity between subnets + instance_1_name: sdnvpn-1-1 + instance_2_name: sdnvpn-1-2 + instance_3_name: sdnvpn-1-3 + instance_4_name: sdnvpn-1-4 + instance_5_name: sdnvpn-1-5 + image_name: sdnvpn-image + net_1_name: sdnvpn-1-1-net + subnet_1_name: sdnvpn-1-1-subnet + subnet_1_cidr: 10.10.10.0/24 + router_1_name: sdnvpn-1-1-router + net_2_name: sdnvpn-1-2-net + subnet_2_name: sdnvpn-1-2-subnet + subnet_2_cidr: 10.10.11.0/24 + router_2_name: sdnvpn-1-2-router + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases + targets1: '88:88' + targets2: '55:55' + route_distinguishers: '11:11' sdnvpn.test.functest.testcase_2: - enabled: true - description: Tenant separation - instance_1_name: sdnvpn-2-1 - instance_2_name: sdnvpn-2-2 - instance_3_name: sdnvpn-2-3 - instance_4_name: sdnvpn-2-4 - instance_5_name: sdnvpn-2-5 - instance_1_ip: 10.10.10.11 - instance_2_ip: 10.10.10.12 - instance_3_ip: 10.10.11.13 - instance_4_ip: 10.10.10.12 - instance_5_ip: 10.10.11.13 - image_name: sdnvpn-image - net_1_name: sdnvpn-2-1-net - subnet_1a_name: sdnvpn-2-1a-subnet - subnet_1a_cidr: 10.10.10.0/24 - subnet_1b_name: sdnvpn-2-1b-subnet - subnet_1b_cidr: 10.10.11.0/24 - router_1_name: sdnvpn-2-1-router - net_2_name: sdnvpn-2-2-net - subnet_2a_name: sdnvpn-2-2a-subnet - subnet_2a_cidr: 10.10.11.0/24 - subnet_2b_name: sdnvpn-2-2b-subnet - subnet_2b_cidr: 10.10.10.0/24 - router_2_name: sdnvpn-2-2-router - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases - targets1: '88:88' - targets2: '55:55' - route_distinguishers1: '111:111' - route_distinguishers2: '222:222' + enabled: true + order: 2 + description: Tenant separation + instance_1_name: sdnvpn-2-1 + instance_2_name: sdnvpn-2-2 + instance_3_name: sdnvpn-2-3 + instance_4_name: sdnvpn-2-4 + instance_5_name: sdnvpn-2-5 + instance_1_ip: 10.10.10.11 + instance_2_ip: 10.10.10.12 + instance_3_ip: 10.10.11.13 + instance_4_ip: 10.10.10.12 + instance_5_ip: 10.10.11.13 + image_name: sdnvpn-image + net_1_name: sdnvpn-2-1-net + subnet_1a_name: sdnvpn-2-1a-subnet + subnet_1a_cidr: 10.10.10.0/24 + subnet_1b_name: sdnvpn-2-1b-subnet + subnet_1b_cidr: 10.10.11.0/24 + router_1_name: sdnvpn-2-1-router + net_2_name: sdnvpn-2-2-net + subnet_2a_name: sdnvpn-2-2a-subnet + subnet_2a_cidr: 10.10.11.0/24 + subnet_2b_name: sdnvpn-2-2b-subnet + subnet_2b_cidr: 10.10.10.0/24 + router_2_name: sdnvpn-2-2-router + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases + targets1: '88:88' + targets2: '55:55' + route_distinguishers1: '111:111' + route_distinguishers2: '222:222' sdnvpn.test.functest.testcase_3: - enabled: true - description: Data center gateway integration - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases - image_name: sdnvpn-image - ubuntu_image_name: sdnvpn-ubuntu-image - net_1_name: sdnvpn-3-1-net - subnet_1_name: sdnvpn-3-1-subnet - subnet_1_cidr: 10.10.10.0/24 - router_1_name: sdnvpn-3-1-router - quagga_net_name: sdnvpn-3-2-quagga-net - quagga_subnet_name: sdnvpn-3-2-quagga-subnet - quagga_subnet_cidr: 10.10.11.0/24 - quagga_router_name: sdnvpn-3-2-quagga-router - quagga_instance_name: sdnvpn-3-2-quagga - quagga_instance_ip: 10.10.11.5 - instance_1_name: sdnvpn-3-1 - instance_1_ip: 10.10.10.5 - import_targets: '31:31' - export_targets: '32:32' - + enabled: true + order: 3 + description: Data center gateway integration + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases + image_name: sdnvpn-image + ubuntu_image_name: sdnvpn-ubuntu-image + net_1_name: sdnvpn-3-1-net + subnet_1_name: sdnvpn-3-1-subnet + subnet_1_cidr: 10.10.10.0/24 + router_1_name: sdnvpn-3-1-router + quagga_net_name: sdnvpn-3-2-quagga-net + quagga_subnet_name: sdnvpn-3-2-quagga-subnet + quagga_subnet_cidr: 10.10.11.0/24 + quagga_router_name: sdnvpn-3-2-quagga-router + quagga_instance_name: sdnvpn-3-2-quagga + quagga_instance_ip: 10.10.11.5 + instance_1_name: sdnvpn-3-1 + instance_1_ip: 10.10.10.5 + import_targets: '31:31' + export_targets: '32:32' sdnvpn.test.functest.testcase_4: - enabled: true - description: VPN provides connectivity between subnets using router association - instance_1_name: sdnvpn-4-1 - instance_2_name: sdnvpn-4-2 - instance_3_name: sdnvpn-4-3 - instance_4_name: sdnvpn-4-4 - instance_5_name: sdnvpn-4-5 - image_name: sdnvpn-image - net_1_name: sdnvpn-4-1-net - subnet_1_name: sdnvpn-4-1-subnet - subnet_1_cidr: 10.10.10.0/24 - router_1_name: sdnvpn-4-1-router - net_2_name: sdnvpn-4-2-net - subnet_2_name: sdnvpn-4-2-subnet - subnet_2_cidr: 10.10.11.0/24 - router_2_name: sdnvpn-4-2-router - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases - targets1: '88:88' - targets2: '55:55' - route_distinguishers: '12:12' + enabled: true + order: 4 + description: VPN provides connectivity between subnets using router association + instance_1_name: sdnvpn-4-1 + instance_2_name: sdnvpn-4-2 + instance_3_name: sdnvpn-4-3 + instance_4_name: sdnvpn-4-4 + instance_5_name: sdnvpn-4-5 + image_name: sdnvpn-image + net_1_name: sdnvpn-4-1-net + subnet_1_name: sdnvpn-4-1-subnet + subnet_1_cidr: 10.10.10.0/24 + router_1_name: sdnvpn-4-1-router + net_2_name: sdnvpn-4-2-net + subnet_2_name: sdnvpn-4-2-subnet + subnet_2_cidr: 10.10.11.0/24 + router_2_name: sdnvpn-4-2-router + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases + targets1: '88:88' + targets2: '55:55' + route_distinguishers: '12:12' sdnvpn.test.functest.testcase_7: - enabled: false - description: Network associate VPNs with routers attached (ODL Bug 6962) - image_name: sdnvpn-image - instance_1_name: sdnvpn-7-1 - instance_2_name: sdnvpn-7-2 - net_1_name: sdnvpn-7-1 - subnet_1_name: sdnvpn-7-1-subnet - subnet_1_cidr: 10.10.10.0/24 - router_1_name: sdnvpn-7-1-router - net_2_name: sdnvpn-7-2 - subnet_2_name: sdnvpn-7-2-subnet - subnet_2_cidr: 10.10.20.0/24 - router_2_name: sdnvpn-7-2-router - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases - targets: '77:77' - route_distinguishers: '11:11' + enabled: false + order: 7 + description: Network associate VPNs with routers attached (ODL Bug 6962) + image_name: sdnvpn-image + instance_1_name: sdnvpn-7-1 + instance_2_name: sdnvpn-7-2 + net_1_name: sdnvpn-7-1 + subnet_1_name: sdnvpn-7-1-subnet + subnet_1_cidr: 10.10.10.0/24 + router_1_name: sdnvpn-7-1-router + net_2_name: sdnvpn-7-2 + subnet_2_name: sdnvpn-7-2-subnet + subnet_2_cidr: 10.10.20.0/24 + router_2_name: sdnvpn-7-2-router + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases + targets: '77:77' + route_distinguishers: '11:11' sdnvpn.test.functest.testcase_8: - enabled: true - description: Test floating IP and router assoc coexistence - image_name: sdnvpn-image - instance_1_name: sdnvpn-8-1 - instance_2_name: sdnvpn-8-2 - net_1_name: sdnvpn-8-1 - subnet_1_name: sdnvpn-8-1-subnet - subnet_1_cidr: 10.10.10.0/24 - router_1_name: sdnvpn-8-1-router - net_2_name: sdnvpn-8-2 - subnet_2_name: sdnvpn-8-2-subnet - subnet_2_cidr: 10.10.20.0/24 - router_2_name: sdnvpn-8-2-router - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases - targets: '88:88' - route_distinguishers: '18:18' + enabled: true + order: 8 + description: Test floating IP and router assoc coexistence + image_name: sdnvpn-image + instance_1_name: sdnvpn-8-1 + instance_2_name: sdnvpn-8-2 + net_1_name: sdnvpn-8-1 + subnet_1_name: sdnvpn-8-1-subnet + subnet_1_cidr: 10.10.10.0/24 + router_1_name: sdnvpn-8-1-router + net_2_name: sdnvpn-8-2 + subnet_2_name: sdnvpn-8-2-subnet + subnet_2_cidr: 10.10.20.0/24 + router_2_name: sdnvpn-8-2-router + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases + targets: '88:88' + route_distinguishers: '18:18' sdnvpn.test.functest.testcase_9: - enabled: true - description: Verify that all OpenStack nodes OVS br-int have fail_mode set to secure. + enabled: true + order: 9 + description: Verify that all OpenStack nodes OVS br-int have fail_mode set to secure. sdnvpn.test.functest.testcase_10: - enabled: true - description: Test if interupts occure during ping, when removing and adding instances - instance_1_name: sdnvpn-10-1 - instance_2_name: sdnvpn-10-2 - instance_3_name: sdnvpn-10-3 - instance_4_name: sdnvpn-10-4 - image_name: sdnvpn-image - net_1_name: sdnvpn-10-1-net - subnet_1_name: sdnvpn-10-1-subnet - subnet_1_cidr: 10.10.10.0/24 - router_1_name: sdnvpn-10-1-router - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases + enabled: true + order: 10 + description: Test if interupts occure during ping, when removing and adding instances + instance_1_name: sdnvpn-10-1 + instance_2_name: sdnvpn-10-2 + instance_3_name: sdnvpn-10-3 + instance_4_name: sdnvpn-10-4 + image_name: sdnvpn-image + net_1_name: sdnvpn-10-1-net + subnet_1_name: sdnvpn-10-1-subnet + subnet_1_cidr: 10.10.10.0/24 + router_1_name: sdnvpn-10-1-router + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases sdnvpn.test.functest.testcase_11: - enabled: true - description: Check relevant OVS groups are removed upon deletion of OpenStack topology - instance_1_name: sdnvpn-11-1 - instance_2_name: sdnvpn-11-2 - image_name: sdnvpn-image - net_1_name: sdnvpn-11-1-net - subnet_1_name: sdnvpn-11-1-subnet - subnet_1_cidr: 10.10.10.0/24 - router_1_name: sdnvpn-11-1-router - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases + enabled: true + order: 11 + description: Check relevant OVS groups are removed upon deletion of OpenStack topology + instance_1_name: sdnvpn-11-1 + instance_2_name: sdnvpn-11-2 + image_name: sdnvpn-image + net_1_name: sdnvpn-11-1-net + subnet_1_name: sdnvpn-11-1-subnet + subnet_1_cidr: 10.10.10.0/24 + router_1_name: sdnvpn-11-1-router + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases sdnvpn.test.functest.testcase_12: - enabled: true - description: Check Flows and Groups are reprogrammed after OVS reconnect - instance_1_name: sdnvpn-12-1 - instance_2_name: sdnvpn-12-2 - image_name: sdnvpn-image - net_1_name: sdnvpn-12-1-net - subnet_1_name: sdnvpn-12-1-subnet - subnet_1_cidr: 10.10.10.0/24 - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases + enabled: true + order: 12 + description: Check Flows and Groups are reprogrammed after OVS reconnect + instance_1_name: sdnvpn-12-1 + instance_2_name: sdnvpn-12-2 + image_name: sdnvpn-image + net_1_name: sdnvpn-12-1-net + subnet_1_name: sdnvpn-12-1-subnet + subnet_1_cidr: 10.10.10.0/24 + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases sdnvpn.test.functest.testcase_13: - enabled: true - description: Testing extra route ECMP for intra-data center scenario - instance_1_name: sdnvpn-13-1 - instance_2_name: sdnvpn-13-2 - instance_3_name: sdnvpn-13-3 - image_name: sdnvpn-image - net_1_name: sdnvpn-13-1-net - subnet_1_name: sdnvpn-13-1-subnet - subnet_1_cidr: 10.10.10.0/24 - router_1_name: sdnvpn-13-1-router - net_2_name: sdnvpn-13-2-net - subnet_2_name: sdnvpn-13-2-subnet - subnet_2_cidr: 10.10.11.0/24 - router_2_name: sdnvpn-13-2-router - interface_name: lo - interface_number: 1 - extra_route_cidr: 179.24.1.12/32 - extra_route_ip: 179.24.1.12 - extra_route_subnet_mask: 255.255.255.255 - extra_route_name: sdnvpn_extra_route_13 - secgroup_name: sdnvpn-sg - secgroup_descr: Security group for SDNVPN test cases - targets1: '88:88' - targets2: '88:88' - route_distinguishers: - - '12:12' - - '13:13' + enabled: true + order: 13 + description: Testing extra route ECMP for intra-data center scenario + instance_1_name: sdnvpn-13-1 + instance_2_name: sdnvpn-13-2 + instance_3_name: sdnvpn-13-3 + image_name: sdnvpn-image + net_1_name: sdnvpn-13-1-net + subnet_1_name: sdnvpn-13-1-subnet + subnet_1_cidr: 10.10.10.0/24 + router_1_name: sdnvpn-13-1-router + net_2_name: sdnvpn-13-2-net + subnet_2_name: sdnvpn-13-2-subnet + subnet_2_cidr: 10.10.11.0/24 + router_2_name: sdnvpn-13-2-router + interface_name: lo + interface_number: 1 + extra_route_cidr: 179.24.1.12/32 + extra_route_ip: 179.24.1.12 + extra_route_subnet_mask: 255.255.255.255 + extra_route_name: sdnvpn_extra_route_13 + secgroup_name: sdnvpn-sg + secgroup_descr: Security group for SDNVPN test cases + targets1: '88:88' + targets2: '88:88' + route_distinguishers: + - '12:12' + - '13:13' diff --git a/sdnvpn/test/functest/run_sdnvpn_tests.py b/sdnvpn/test/functest/run_sdnvpn_tests.py index 8e55b2d..23a62e6 100644 --- a/sdnvpn/test/functest/run_sdnvpn_tests.py +++ b/sdnvpn/test/functest/run_sdnvpn_tests.py @@ -15,12 +15,14 @@ import sys import traceback import yaml +from collections import OrderedDict from xtesting.core import feature from sdnvpn.lib import config as sdnvpn_config from sdnvpn.lib import openstack_utils as os_utils from sdnvpn.lib.gather_logs import gather_logs from sdnvpn.lib import utils as test_utils +logger = logging.getLogger(__name__) COMMON_CONFIG = sdnvpn_config.CommonConfig() @@ -42,8 +44,8 @@ class SdnvpnFunctest(feature.Feature): neutron_quota['port'], neutron_quota['router']) instances_quota = test_utils.get_nova_instances_quota(nova_client) - self.logger.info("Setting net/subnet/port/router " - "quota to unlimited") + logger.info("Setting net/subnet/port/router " + "quota to unlimited") test_utils.update_nw_subnet_port_quota( neutron_client, tenant_id, @@ -55,13 +57,14 @@ class SdnvpnFunctest(feature.Feature): # Workaround for # https://jira.opnfv.org/projects/SDNVPN/issues/SDNVPN-115 - self.logger.info("Setting instances quota class to unlimited") + logger.info("Setting instances quota class to unlimited") test_utils.update_instance_quota_class( nova_client, COMMON_CONFIG.nova_instances_quota_class) # Clean up the stale floating ip's so that required # ip addresses are available for sdnvpn testcases + logger.info("Cleaning up the Floating IP Addresses") floating_ips = os_utils.get_floating_ips(neutron_client) if floating_ips is not None: for floating_ip in floating_ips: @@ -72,44 +75,46 @@ class SdnvpnFunctest(feature.Feature): config_yaml = yaml.safe_load(f) testcases = config_yaml.get("testcases") + testcases_ordered = OrderedDict(sorted(testcases.items(), + key=lambda x: x[1]['order'])) overall_status = "PASS" - for tc in testcases: - if testcases[tc]['enabled']: + for tc, test_sdnvpn in testcases_ordered.items(): + if test_sdnvpn['enabled']: test_name = tc test_descr = testcases[tc]['description'] title = ("Running '%s - %s'" % (test_name, test_descr)) - self.logger.info(title) - self.logger.info("%s\n" % ("=" * len(title))) + logger.info(title) + logger.info("%s\n" % ("=" * len(title))) try: - self.logger.info("Importing the testcase %s" % test_name) + logger.info("Importing the testcase %s" % test_name) t = importlib.import_module(test_name, package=None) - self.logger.info("Calling the testcase %s main method" - % test_name) + logger.info("Calling the testcase %s main method" + % test_name) result = t.main() - self.logger.info("Execution is complete for the" - " testcase %s" % test_name) + logger.info("Execution is complete for the" + " testcase %s" % test_name) except Exception as ex: result = -1 - self.logger.info("Caught Exception in %s: %s Trace: %s" - % (test_name, ex, - traceback.format_exc())) + logger.info("Caught Exception in %s: %s Trace: %s" + % (test_name, ex, + traceback.format_exc())) if result < 0: status = "FAIL" overall_status = "FAIL" - self.logger.info("Testcase %s failed" % test_name) + logger.info("Testcase %s failed" % test_name) else: status = result.get("status") self.details.update( {test_name: {'status': status, 'details': result.get("details")}}) - self.logger.info("Results of test case '%s - %s':\n%s\n" - % (test_name, test_descr, result)) + logger.info("Results of test case '%s - %s':\n%s\n" + % (test_name, test_descr, result)) if status == "FAIL": overall_status = "FAIL" - self.logger.info("Resetting subnet/net/port quota") + logger.info("Resetting subnet/net/port quota") test_utils.update_nw_subnet_port_quota(neutron_client, tenant_id, neutron_nw_quota, @@ -117,7 +122,7 @@ class SdnvpnFunctest(feature.Feature): neutron_port_quota, neutron_router_quota) - self.logger.info("Resetting instances quota class") + logger.info("Resetting instances quota class") test_utils.update_instance_quota_class(nova_client, instances_quota) try: @@ -125,13 +130,13 @@ class SdnvpnFunctest(feature.Feature): if installer_type in ["fuel", "apex"]: gather_logs('overall') else: - self.logger.info("Skipping log gathering because installer" - "type %s is neither fuel nor apex" % - installer_type) + logger.info("Skipping log gathering because installer" + "type %s is neither fuel nor apex" % + installer_type) except Exception as ex: - self.logger.error(('Something went wrong in the Log gathering.' - 'Ex: %s, Trace: %s') - % (ex, traceback.format_exc())) + logger.error(('Something went wrong in the Log gathering.' + 'Ex: %s, Trace: %s') + % (ex, traceback.format_exc())) if overall_status == "PASS": self.result = 100 diff --git a/sdnvpn/test/functest/run_tempest.py b/sdnvpn/test/functest/run_tempest.py index a1ef004..15d4eda 100644 --- a/sdnvpn/test/functest/run_tempest.py +++ b/sdnvpn/test/functest/run_tempest.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright (c) 2017 All rights reserved +# Copyright (c) 2018 All rights reserved # This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at @@ -16,8 +16,16 @@ import shutil import functest.opnfv_tests.openstack.tempest.conf_utils as tempest_utils +from sdnvpn.lib import config as sdnvpn_config +from sdnvpn.lib import openstack_utils as os_utils + + logger = logging.getLogger('sdnvpn-tempest') +COMMON_CONFIG = sdnvpn_config.CommonConfig() +TESTCASE_CONFIG = sdnvpn_config.TestcaseConfig( + 'sdnvpn.test.functest.run_tempest') + def main(): verifier_id = tempest_utils.get_verifier_id() @@ -39,18 +47,35 @@ def main(): exit(-1) shutil.copy(src_tempest_conf, bgpvpn_tempest_conf) + glance_client = os_utils.get_glance_client() + img_ref = os_utils.create_glance_image(glance_client, + TESTCASE_CONFIG.image_name, + COMMON_CONFIG.image_path, + disk=COMMON_CONFIG.image_format, + container="bare", public='public') + + nova_client = os_utils.get_nova_client() + flav_ref = os_utils.get_flavor_id(nova_client, + COMMON_CONFIG.default_flavor) + logger.info("Copying tempest.conf to %s." % bgpvpn_tempest_conf) config = ConfigParser.RawConfigParser() config.read(bgpvpn_tempest_conf) config.set('service_available', 'bgpvpn', 'True') logger.debug("Updating %s with bgpvpn=True" % bgpvpn_tempest_conf) + config.set('compute', 'flavor_ref', flav_ref) + logger.debug("Updating %s with flavor_id %s" + % (bgpvpn_tempest_conf, flav_ref)) + config.set('compute', 'image_ref', img_ref) + logger.debug("Updating %s with image_id %s" + % (bgpvpn_tempest_conf, img_ref)) with open(bgpvpn_tempest_conf, 'wb') as tempest_conf: config.write(tempest_conf) # TODO: Though --config-file parameter is set during the tempest run, # it looks for tempest.conf at /etc/tempest/ directory. so applying # the following workaround. Will remove it when the root cause is found. - cmd = ("mkdir /etc/tempest;" + cmd = ("mkdir -p /etc/tempest;" "cp {0} /etc/tempest/tempest.conf".format(bgpvpn_tempest_conf)) logger.info("Configuring default tempest conf file") os.popen(cmd) @@ -94,7 +119,9 @@ def main(): return {"status": status, "details": results} except Exception as e: logger.error("Problem when parsing the results: %s", e) - + finally: + os_utils.delete_glance_image(glance_client, img_ref) + logger.debug("Deleted image %s" % img_ref) if __name__ == '__main__': main() |