def return_controller_ip(): config = argv[1] fuel_ip = argv[2] parser = SafeConfigParser() parser.read(config) cluster_settings = dict(parser.items('cluster')) client = fuel.NailgunClient(str(fuel_ip)) cluster_id = client.get_cluster_id(cluster_settings['env_name']) if cluster_settings['config_mode'] == 'ha_compact': ext_env_ip = client.get_networks(cluster_id).get("public_vip", "") else: ext_env_ip = next(network['ip_ranges'][0][0] for network in client.get_networks(cluster_id)['networks'] if network['name'] == 'public') if ext_env_ip: logger.info("Cluster URL: http://{}/".format(ext_env_ip)) print ext_env_ip else: logger.warning("Cluster URL not found")
def return_controller_ip(): config = argv[1] fuel_ip = argv[2] parser = SafeConfigParser() parser.read(config) cluster_settings = dict(parser.items('cluster')) client = fuel.NailgunClient(str(fuel_ip)) cluster_id = client.get_cluster_id(cluster_settings['env_name']) if cluster_settings['config_mode'] == 'ha_compact': ext_env_ip = client.get_networks(cluster_id).get("public_vip", "") else: ext_env_ip = next(network['ip_ranges'][0][0] for network in client.get_networks(cluster_id)['networks'] if network['name'] == 'public') if ext_env_ip: logger.info("Cluster URL: http://{}/".format(ext_env_ip)) print ext_env_ip else: logger.warning("Cluster URL not found")
def await_deploy(fuel_ip, cluster_settings): client = fuel.NailgunClient(str(fuel_ip)) cluster_id = client.get_cluster_id(cluster_settings['env_name']) conn = libvirt.open("qemu:///system") err_message = "Cluster {0} with name {1} has error status".format( cluster_id, cluster_settings['env_name']) deploy_timeout = int(cluster_settings.get('deploy_timeout', 7200)) waiting_time = 0 while waiting_time < deploy_timeout: for domain_name in conn.listDefinedDomains(): conn.lookupByName(domain_name).create() try: state = client.get_cluster(cluster_id)['status'] if state == 'operational': return if state == 'error': task_id = client.generate_logs()['id'] start_time = time.time() while client.get_task(task_id)['status'] == 'running': time.sleep(5) if time.time() - start_time > 600: raise RuntimeError( "Diagnostic snapshot makes so very long. " "Aborting. " + err_message) task = client.get_task(task_id) url = "http://{0}:8000{1}".format(fuel_ip, task['message']) log_path = os.environ.get("LOGGING_PATH", "logs/") log_name = "diagnostic_snapshot.tar.xz" if log_path.startswith('/'): logfile = os.path.join(log_path, log_name) else: logfile = os.path.join( os.path.join(os.getcwd()), log_path, log_name) try: with open(logfile, 'w') as f: f.write( urllib2.urlopen(url).read() ) except (urllib2.HTTPError, urllib2.URLError) as e: raise RuntimeError( "Diagnostic snapshot ready, but not saved. " + err_message + "({0}): {1}".format(e.errno, e.strerror) ) raise RuntimeError(err_message) logger.info('Waiting {0} of {1} seconds - cluster {2} has ' 'state "{3}"'.format( waiting_time, deploy_timeout, cluster_id, state )) except urllib2.URLError: pass waiting_time += POLL_PERIOD time.sleep(POLL_PERIOD) raise RuntimeError('Timeout waiting for cluster deployment')
def await_deploy(fuel_ip, cluster_settings): client = fuel.NailgunClient(str(fuel_ip)) cluster_id = client.get_cluster_id(cluster_settings['env_name']) conn = libvirt.open("qemu:///system") err_message = "Cluster {0} with name {1} has error status".format( cluster_id, cluster_settings['env_name']) deploy_timeout = int(cluster_settings.get('deploy_timeout', 7200)) waiting_time = 0 while waiting_time < deploy_timeout: for domain_name in conn.listDefinedDomains(): conn.lookupByName(domain_name).create() try: state = client.get_cluster(cluster_id)['status'] if state == 'operational': return if state == 'error': task_id = client.generate_logs()['id'] start_time = time.time() while client.get_task(task_id)['status'] == 'running': time.sleep(5) if time.time() - start_time > 600: raise RuntimeError( "Diagnostic snapshot makes so very long. " "Aborting. " + err_message) task = client.get_task(task_id) url = "http://{0}:8000{1}".format(fuel_ip, task['message']) log_path = os.environ.get("LOGGING_PATH", "logs/") log_name = "diagnostic_snapshot.tar.xz" if log_path.startswith('/'): logfile = os.path.join(log_path, log_name) else: logfile = os.path.join( os.path.join(os.getcwd()), log_path, log_name) try: with open(logfile, 'w') as f: f.write( urllib2.urlopen(url).read() ) except (urllib2.HTTPError, urllib2.URLError) as e: raise RuntimeError( "Diagnostic snapshot ready, but not saved. " + err_message + "({0}): {1}".format(e.errno, e.strerror) ) raise RuntimeError(err_message) logger.info('Waiting {0} of {1} seconds - cluster {2} has ' 'state "{3}"'.format( waiting_time, deploy_timeout, cluster_id, state )) except urllib2.URLError: pass waiting_time += POLL_PERIOD time.sleep(POLL_PERIOD) raise RuntimeError('Timeout waiting for cluster deployment')