Fix dns problem on E/// pod 35/6535/1
authorboucherv <valentin.boucher@orange.com>
Wed, 13 Jan 2016 14:09:37 +0000 (15:09 +0100)
committervalentin boucher <valentin.boucher@orange.com>
Wed, 13 Jan 2016 14:41:31 +0000 (14:41 +0000)
FUNCTEST-122

Change-Id: I077ca9f1e8394583410f4b067d272e5be225ef3d
Signed-off-by: boucherv <valentin.boucher@orange.com>
(cherry picked from commit 5f49a3982fdd8c8addac8b3b5d3b23327de3d077)

testcases/functest_utils.py
testcases/vIMS/CI/orchestrator.py
testcases/vIMS/CI/vIMS.py

index 6c0c498..401078b 100644 (file)
@@ -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
index ab0b448..382fbd1 100644 (file)
@@ -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; "
index 74cce97..d2b6567 100644 (file)
@@ -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)