From 30c49f0a81d4b672aa4deedfaad4b8dc804001cb Mon Sep 17 00:00:00 2001 From: boucherv Date: Wed, 13 Jan 2016 15:09:37 +0100 Subject: [PATCH] Fix dns problem on E/// pod FUNCTEST-122 Change-Id: I077ca9f1e8394583410f4b067d272e5be225ef3d Signed-off-by: boucherv (cherry picked from commit 5f49a3982fdd8c8addac8b3b5d3b23327de3d077) --- testcases/functest_utils.py | 24 ++++++++++++++++++++---- testcases/vIMS/CI/orchestrator.py | 8 +++++++- testcases/vIMS/CI/vIMS.py | 11 +++++++++-- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/testcases/functest_utils.py b/testcases/functest_utils.py index 6c0c49832..401078b70 100644 --- a/testcases/functest_utils.py +++ b/testcases/functest_utils.py @@ -17,6 +17,7 @@ import sys import requests import json import shutil +import re from git import Repo @@ -166,7 +167,7 @@ def delete_neutron_net(neutron_client, network_id): def create_neutron_subnet(neutron_client, name, cidr, net_id): json_body = {'subnets': [{'name': name, 'cidr': cidr, - 'ip_version': 4, 'network_id': net_id}]} + 'ip_version': 4, 'network_id': net_id}]} try: subnet = neutron_client.create_subnet(body=json_body) return subnet['subnets'][0]['id'] @@ -382,7 +383,7 @@ def get_image_id(glance_client, image_name): def create_glance_image(glance_client, image_name, file_path, public=True): if not os.path.isfile(file_path): - print "Error: file "+file_path+" does not exist." + print "Error: file " + file_path + " does not exist." return False try: with open(file_path) as fimage: @@ -414,6 +415,7 @@ def get_volumes(cinder_client): except: return None + def delete_volume(cinder_client, volume_id, forced=False): try: if forced: @@ -433,7 +435,8 @@ def delete_volume(cinder_client, volume_id, forced=False): # ################ CINDER ################# def get_security_groups(neutron_client): try: - security_groups = neutron_client.list_security_groups()['security_groups'] + security_groups = neutron_client.list_security_groups()[ + 'security_groups'] return security_groups except: return None @@ -626,7 +629,8 @@ def get_pod_name(logger=None): return os.environ['NODE_NAME'] except KeyError: if logger: - logger.error("Unable to retrieve the POD name from environment.Using pod name 'unknown-pod'") + logger.error( + "Unable to retrieve the POD name from environment.Using pod name 'unknown-pod'") return "unknown-pod" @@ -684,6 +688,18 @@ def get_ci_envvars(): return ci_env_var +def get_resolvconf_ns(): + nameservers = [] + rconf = open("/etc/resolv.conf", "r") + line = rconf.readline() + while line: + ip = re.search(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", line) + if ip: + nameservers.append(ip.group()) + line = rconf.readline() + return nameservers + + def isTestRunnable(test, functest_yaml): # check getTestEnv(test) and CI env var # check installer, controller and options diff --git a/testcases/vIMS/CI/orchestrator.py b/testcases/vIMS/CI/orchestrator.py index ab0b448fa..382fbd139 100644 --- a/testcases/vIMS/CI/orchestrator.py +++ b/testcases/vIMS/CI/orchestrator.py @@ -47,6 +47,12 @@ class orchestrator: def set_ssh_user(self, ssh_user): self.config['ssh_user'] = ssh_user + def set_nameservers(self, nameservers): + if 0 < len(nameservers): + self.config['dns_subnet_1'] = nameservers[0] + if 1 < len(nameservers): + self.config['dns_subnet_2'] = nameservers[1] + def set_logger(self, logger): self.logger = logger @@ -91,7 +97,7 @@ class orchestrator: if self.logger: self.logger.info("Launching the cloudify-manager deployment") - script = "set -e; " + script = "set -e; " script += "source " + self.testcase_dir + "venv_cloudify/bin/activate; " script += "cd " + self.testcase_dir + "; " script += "cfy init -r; " diff --git a/testcases/vIMS/CI/vIMS.py b/testcases/vIMS/CI/vIMS.py index 74cce9793..d2b6567d8 100644 --- a/testcases/vIMS/CI/vIMS.py +++ b/testcases/vIMS/CI/vIMS.py @@ -138,10 +138,13 @@ def test_clearwater(): logger.info("vIMS functional test Start Time:'%s'" % ( datetime.datetime.fromtimestamp(start_time_ts).strftime( '%Y-%m-%d %H:%M:%S'))) + nameservers = functest_utils.get_resolvconf_ns() + resolvconf = "" + for ns in nameservers: + resolvconf += "\nnameserver " + ns if dns_ip != "": - script = 'echo -e "nameserver ' + dns_ip + \ - '\nnameserver 8.8.8.8\nnameserver 8.8.4.4" > /etc/resolv.conf; ' + script = 'echo -e "nameserver ' + dns_ip + resolvconf + '" > /etc/resolv.conf; ' script += 'source /etc/profile.d/rvm.sh; ' script += 'cd ' + VIMS_TEST_DIR + '; ' script += 'rake test[' + \ @@ -343,6 +346,10 @@ def main(): cfy.set_external_network_name(ext_net) + ns = functest_utils.get_resolvconf_ns() + if ns: + cfy.set_nameservers(ns) + logger.info("Prepare virtualenv for cloudify-cli") cmd = "chmod +x " + VIMS_DIR + "create_venv.sh" functest_utils.execute_command(cmd, logger) -- 2.16.6