From: Yujun Zhang Date: Fri, 19 Aug 2016 05:46:35 +0000 (+0000) Subject: Merge "Fetch all compute ips via installer Fuel." X-Git-Tag: danube.1.0~307 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=c804c4ea8a8289bdc954653f961f6243a0e4885f;p=qtip.git Merge "Fetch all compute ips via installer Fuel." --- c804c4ea8a8289bdc954653f961f6243a0e4885f diff --cc func/env_setup.py index f59883a0,fdddf49a..1f86f0ea --- a/func/env_setup.py +++ b/func/env_setup.py @@@ -104,18 -112,63 +111,66 @@@ class Env_setup for val in v: ipvar = val ping_cmd = 'ping -D -c1 {0}'.format(ipvar) - while os.system(ping_cmd) != 0: - print '\nWaiting for machine\n' - time.sleep(10) + for i in range(attempts): + if os.system(ping_cmd) != 0: + print '\nWaiting for machine\n' + time.sleep(10) + else: + break print ('\n\n %s is UP \n\n ' % ipvar) - def get_host_machine_info(self, host_tag): + @staticmethod + def fetch_compute_ips(): + LOG.info("Fetch compute ips through installer") + ips = [] + + installer_type = os.environ['INSTALLER_TYPE'] + installer_ip = os.environ['INSTALLER_IP'] + if installer_type.down.lower() != "fuel" or "compass": + raise RuntimeError("%s is not supported" % installer_type) + if installer_ip: + raise RuntimeError("undefine environment variable INSTALLER_IP") + + cmd = "bash ./fetch_compute_ip.sh -i %s -a %s" % \ + (installer_type, installer_ip) + os.system(cmd) + home = expanduser("~") + os.chdir(home) + with open("ips.log", "r") as file: + data = file.read() + if data: + ips.extend(data.rstrip('\n').split('\n')) + LOG.info("All compute ips: %s" % ips) + return ips + def check_machine_ips(self, host_tag): + LOG.info("Check machine ips") + ips = self.fetch_compute_ips() + ips_num = len(ips) + num = len(host_tag) + if num > ips_num: + err = "host num %s > compute ips num %s" % (num, ips_num) + raise RuntimeError(err) + + for x in range(num): + hostlabel = 'machine_' + str(x + 1) + if host_tag[hostlabel]['ip']: + if host_tag[hostlabel]['ip'] in ips: + info = "%s's ip %s is defined by test case yaml file" % \ + (hostlabel, host_tag[hostlabel]['ip']) + LOG.info(info) + else: + err = "%s is not in %s" % (host_tag[hostlabel]['ip'], ips) + raise RuntimeError(err) + else: + host_tag[hostlabel]['ip'] = random.choice(ips) + info = "assign ip %s to %s" % (host_tag[hostlabel]['ip'], hostlabel) + ips.remove(host_tag[hostlabel]['ip']) + + def get_host_machine_info(self, host_tag): num = len(host_tag) offset = len(self.roles_ip_list) + self.check_machine_ips(host_tag) for x in range(num): hostlabel = 'machine_' + str(x + 1) self.roles_ip_list.insert(