def send_mail(config_file, file_to_send, report_details): config = ConfigParser.ConfigParser() config.read(config_file) report_config = ConfigParser.ConfigParser() report_config.read(report_details) distro_sku = report_config.get('Test', 'Distro_Sku') smtpServer = read_config_option(config, 'Mail', 'server', '10.204.216.49') smtpPort = read_config_option(config, 'Mail', 'port', '25') mailSender = read_config_option(config, 'Mail', 'mailSender', '*****@*****.**') mailTo = read_config_option(config, 'Mail', 'mailTo', '*****@*****.**') if 'EMAIL_SUBJECT' in os.environ and os.environ['EMAIL_SUBJECT'] != '': logScenario = os.environ.get('EMAIL_SUBJECT') else: logScenario = report_config.get('Test', 'logScenario') if not mailTo or not smtpServer: print 'Mail destination not configured. Skipping' return True fp = open(file_to_send, 'rb') msg = MIMEText(fp.read(), 'html') fp.close() msg['Subject'] = '[Build %s] ' % (distro_sku) + logScenario + ' Report' msg['From'] = mailSender msg['To'] = mailTo s = None try: s = smtplib.SMTP(smtpServer, smtpPort) except Exception, e: print "Unable to connect to Mail Server" return False
def send_mail(config_file, file_to_send, report_details): if config_file.endswith('.ini'): config = configparser.ConfigParser() config.read(config_file) smtpServer = read_config_option(config, 'Mail', 'server', None) smtpPort = read_config_option(config, 'Mail', 'port', '25') mailSender = read_config_option(config, 'Mail', 'mailSender', '*****@*****.**') mailTo = read_config_option(config, 'Mail', 'mailTo', None) elif config_file.endswith(('.yml', '.yaml')): with open(config_file, 'r') as fd: config = yaml.load(fd) test_configs = config.get('test_configuration') or {} mailserver_configs = test_configs.get('mail_server') or {} smtpServer = mailserver_configs.get('server') smtpPort = mailserver_configs.get('port') or '25' mailTo = mailserver_configs.get('to') mailSender = mailserver_configs.get( 'sender') or '*****@*****.**' if not (smtpServer and mailSender and mailTo): print("Not all mail server details are available. Skipping mail send.") return False report_config = configparser.ConfigParser() report_config.read(report_details) distro_sku = report_config.get('Test', 'Distro_Sku') if 'EMAIL_SUBJECT' in os.environ and os.environ['EMAIL_SUBJECT'] != '': logScenario = os.environ.get('EMAIL_SUBJECT') else: logScenario = report_config.get('Test', 'logScenario') if not mailTo or not smtpServer: print('Mail destination not configured. Skipping') return True fp = open(file_to_send, 'rb') val = fp.read() fp.close() if sys.version_info[0] == 3: val = val.decode() msg = MIMEText(val, 'html') msg['Subject'] = '[Build %s] ' % (distro_sku) + logScenario + ' Report' msg['From'] = mailSender msg['To'] = mailTo s = None try: s = smtplib.SMTP(smtpServer, smtpPort) except Exception as e: print("Unable to connect to Mail Server") return False s.ehlo() try: s.sendmail(mailSender, mailTo.split(","), msg.as_string()) s.quit() except smtplib.SMTPException as e: print('Error while sending mail') return False return True
def send_mail(config_file, file_to_send, report_details): config = ConfigParser.ConfigParser() config.read(config_file) report_config = ConfigParser.ConfigParser() report_config.read(report_details) distro_sku = report_config.get('Test','Distro_Sku') smtpServer = read_config_option(config, 'Mail', 'server', '10.204.216.49') smtpPort = read_config_option(config, 'Mail', 'port', '25') mailSender = read_config_option(config, 'Mail', 'mailSender', '*****@*****.**') mailTo = read_config_option(config, 'Mail', 'mailTo', '*****@*****.**') if 'EMAIL_SUBJECT' in os.environ: logScenario = os.environ.get('EMAIL_SUBJECT') else: logScenario = read_config_option(config, 'Basic', 'logScenario', 'Sanity') if not mailTo or not smtpServer: print 'Mail destination not configured. Skipping' return True fp = open(file_to_send, 'rb') msg = MIMEText(fp.read(), 'html') fp.close() msg['Subject'] = '[Build %s] ' % ( distro_sku) + logScenario + ' Report' msg['From'] = mailSender msg['To'] = mailTo s = None try: s = smtplib.SMTP(smtpServer, smtpPort) except Exception, e: print "Unable to connect to Mail Server" return False
def send_mail(config_file, file_to_send, report_details): if config_file.endswith('.ini'): config = ConfigParser.ConfigParser() config.read(config_file) smtpServer = read_config_option(config, 'Mail', 'server', None) smtpPort = read_config_option(config, 'Mail', 'port', '25') mailSender = read_config_option(config, 'Mail', 'mailSender', '*****@*****.**') mailTo = read_config_option(config, 'Mail', 'mailTo', None) elif config_file.endswith(('.yml', '.yaml')): with open(config_file, 'r') as fd: config = yaml.load(fd) test_configs = config.get('test_configuration') or {} mailserver_configs = test_configs.get('mail_server') or {} smtpServer = mailserver_configs.get('server') smtpPort = mailserver_configs.get('port') or '25' mailTo = mailserver_configs.get('to') mailSender = mailserver_configs.get('sender') or '*****@*****.**' if not (smtpServer and mailSender and mailTo): print "Not all mail server details are available. Skipping mail send." return False report_config = ConfigParser.ConfigParser() report_config.read(report_details) distro_sku = report_config.get('Test','Distro_Sku') if 'EMAIL_SUBJECT' in os.environ and os.environ['EMAIL_SUBJECT'] != '': logScenario = os.environ.get('EMAIL_SUBJECT') else: logScenario = report_config.get('Test', 'logScenario') if not mailTo or not smtpServer: print 'Mail destination not configured. Skipping' return True fp = open(file_to_send, 'rb') msg = MIMEText(fp.read(), 'html') fp.close() msg['Subject'] = '[Build %s] ' % ( distro_sku) + logScenario + ' Report' msg['From'] = mailSender msg['To'] = mailTo s = None try: s = smtplib.SMTP(smtpServer, smtpPort) except Exception, e: print "Unable to connect to Mail Server" return False
def upload_to_webserver(config_file, report_config_file, elem): jenkins_trigger = get_os_env('JENKINS_TRIGGERED') if config_file.endswith('.ini'): config = ConfigParser.ConfigParser() config.read(config_file) web_server = read_config_option(config, 'WebServer', 'host', None) web_server_report_path = read_config_option(config, 'WebServer', 'reportPath', None) web_server_log_path = read_config_option(config, 'WebServer', 'logPath', None) web_server_username = read_config_option(config, 'WebServer', 'username', None) web_server_password = read_config_option(config, 'WebServer', 'password', None) http_proxy = read_config_option(config, 'proxy', 'proxy_url', None) elif config_file.endswith(('.yml', '.yaml')): with open(config_file, 'r') as fd: config = yaml.load(fd) test_configs = config.get('test_configuration') or {} webserver_configs = test_configs.get('web_server') or {} web_server = webserver_configs.get('server') web_server_username = webserver_configs.get('username') web_server_password = webserver_configs.get('password') web_server_report_path = webserver_configs.get('report_path') web_server_log_path = webserver_configs.get('log_path') http_proxy = test_configs.get('http_proxy') if not (web_server and web_server_report_path and web_server_log_path and \ web_server_username and web_server_password): print("Not all webserver details are available. Skipping upload.") return False report_config = ConfigParser.ConfigParser() report_config.read(report_config_file) ts = report_config.get('Test', 'timestamp') log_scenario = report_config.get('Test', 'logScenario') build_id = report_config.get('Test', 'build') distro_sku = report_config.get('Test', 'distro_sku') branch = get_os_env('BRANCH', 'unknown-branch') test_type = get_os_env('TEST_TYPE', 'daily') build_folder = build_id + '_' + ts web_server_path = web_server_log_path + '/' + build_folder + '/' log = 'logs' print("Web server log path %s" % web_server_path) try: with hide('everything'): with settings(host_string=web_server, user=web_server_username, password=web_server_password, warn_only=True, abort_on_prompts=False): if jenkins_trigger: # define report path sanity_report = '%s/%s' % (web_server_report_path, test_type) # report name in format # email_subject_line+time_stamp report_name = '%s %s' % (distro_sku.replace( '"', ''), log_scenario) report_file = "%s-%s.html" % ('-'.join( report_name.split(' ')), ts) # create report path if doesnt exist run('mkdir -p %s' % (sanity_report)) # create folder by release name passed from jenkins run('cd %s; mkdir -p %s' % (sanity_report, branch)) # create folder by build_number and create soft # link to original report with custom name run('cd %s/%s; mkdir -p %s; cd %s; ln -s %s/junit-noframes.html %s' % (sanity_report, branch, build_id, build_id, web_server_path, report_file)) if http_proxy: # Assume ssl over http-proxy and use sshpass. branch = build_id.split('-')[0] subprocess.check_output( "sshpass -p %s ssh %s@%s mkdir -p %s" % (web_server_password, web_server_username, web_server, web_server_path), shell=True) subprocess.check_output( "sshpass -p %s scp %s %s@%s:%s" % (web_server_password, elem, web_server_username, web_server, web_server_path), shell=True) ci_job_type = os.environ.get('TAGS', None) if 'ci_sanity_WIP' in ci_job_type: web_server_path_ci = web_server_log_path + '/CI_WIP_JOBS/' else: web_server_path_ci = web_server_log_path + '/CI_JOBS/' web_server_path_ci_build = web_server_path_ci + branch + '/' web_server_path = web_server_path_ci_build + build_folder + '/' subprocess.check_output( "sshpass -p %s ssh %s@%s mkdir -p %s" % (web_server_password, web_server_username, web_server, web_server_path_ci), shell=True) subprocess.check_output( "sshpass -p %s ssh %s@%s mkdir -p %s" % (web_server_password, web_server_username, web_server, web_server_path_ci_build), shell=True) subprocess.check_output( "sshpass -p %s ssh %s@%s mkdir -p %s" % (web_server_password, web_server_username, web_server, web_server_path), shell=True) subprocess.check_output( "sshpass -p %s scp -r /root/contrail-test/logs %s %s@%s:%s" % (web_server_password, elem, web_server_username, web_server, web_server_path), shell=True) else: run('mkdir -p %s' % (web_server_path)) output = put(elem, web_server_path) put('logs', web_server_path) put('result*.xml', web_server_path) put(report_config_file, web_server_path) if jenkins_trigger: #run('cd %s/%s; mkdir -p %s; cd %s; ln -s %s/junit-noframes.html %s' run('cd %s/%s; mkdir -p %s; cd %s; cp %s/%s .' % (sanity_report, branch, build_id, build_id, web_server_path, report_config_file)) except Exception as e: print('Error occured while uploading the logs to the Web Server ', e) return False return True
def upload_to_webserver(config_file, report_config_file, elem): jenkins_trigger = get_os_env('JENKINS_TRIGGERED') config = ConfigParser.ConfigParser() config.read(config_file) web_server = read_config_option(config, 'WebServer', 'host', None) web_server_report_path = read_config_option(config, 'WebServer', 'reportPath', None) web_server_log_path = read_config_option(config, 'WebServer', 'logPath', None) web_server_username = read_config_option(config, 'WebServer', 'username', None) web_server_password = read_config_option(config, 'WebServer', 'password', None) http_proxy = read_config_option(config, 'proxy', 'proxy_url', None) if not (web_server and web_server_report_path and web_server_log_path and \ web_server_username and web_server_password): print "Not all webserver details are available. Skipping upload." return False report_config = ConfigParser.ConfigParser() report_config.read(report_config_file) ts = report_config.get('Test', 'timestamp') log_scenario = report_config.get('Test', 'logScenario') build_id = report_config.get('Test', 'build') distro_sku = report_config.get('Test','distro_sku') branch = get_os_env('BRANCH', 'unknown-branch') test_type = get_os_env('TEST_TYPE','daily') build_folder = build_id + '_' + ts web_server_path = web_server_log_path + '/' + build_folder + '/' log = 'logs' print "Web server log path %s"%web_server_path try: with hide('everything'): with settings(host_string=web_server, user=web_server_username, password=web_server_password, warn_only=True, abort_on_prompts=False): if jenkins_trigger: # define report path sanity_report = '%s/%s' % ( web_server_report_path, test_type) # report name in format # email_subject_line+time_stamp report_name = '%s %s' % (distro_sku.replace('"',''), log_scenario) report_file = "%s-%s.html" % ( '-'.join(report_name.split(' ')), ts) # create report path if doesnt exist run('mkdir -p %s' % (sanity_report)) # create folder by release name passed from jenkins run('cd %s; mkdir -p %s' % (sanity_report, branch)) # create folder by build_number and create soft # link to original report with custom name run('cd %s/%s; mkdir -p %s; cd %s; ln -s %s/junit-noframes.html %s' % (sanity_report, branch, build_id, build_id, web_server_path, report_file)) if http_proxy: # Assume ssl over http-proxy and use sshpass. branch = build_id.split('-')[0] subprocess.check_output( "sshpass -p %s ssh %s@%s mkdir -p %s" % (web_server_password, web_server_username, web_server, web_server_path), shell=True) subprocess.check_output( "sshpass -p %s scp %s %s@%s:%s" % (web_server_password, elem, web_server_username, web_server, web_server_path), shell=True) ci_job_type = os.environ.get('TAGS', None) if 'ci_sanity_WIP' in ci_job_type: web_server_path_ci = web_server_log_path + '/CI_WIP_JOBS/' else: web_server_path_ci = web_server_log_path + '/CI_JOBS/' web_server_path_ci_build = web_server_path_ci + branch + '/' web_server_path = web_server_path_ci_build + build_folder + '/' subprocess.check_output( "sshpass -p %s ssh %s@%s mkdir -p %s" % (web_server_password, web_server_username, web_server, web_server_path_ci), shell=True) subprocess.check_output( "sshpass -p %s ssh %s@%s mkdir -p %s" % (web_server_password, web_server_username, web_server, web_server_path_ci_build), shell=True) subprocess.check_output( "sshpass -p %s ssh %s@%s mkdir -p %s" % (web_server_password, web_server_username, web_server, web_server_path), shell=True) subprocess.check_output( "sshpass -p %s scp -r /root/contrail-test/logs %s %s@%s:%s" % (web_server_password, elem, web_server_username, web_server, web_server_path), shell=True) else: run('mkdir -p %s' % (web_server_path)) output = put(elem, web_server_path) put('logs', web_server_path) put('result*.xml', web_server_path) put(report_config_file, web_server_path) if jenkins_trigger: #run('cd %s/%s; mkdir -p %s; cd %s; ln -s %s/junit-noframes.html %s' run('cd %s/%s; mkdir -p %s; cd %s; cp %s/%s .' % (sanity_report, branch, build_id, build_id, web_server_path, report_config_file)) except Exception,e: print 'Error occured while uploading the logs to the Web Server ',e return False
def upload_to_webserver(config_file, report_config_file, elem): jenkins_trigger = get_os_env('JENKINS_TRIGGERED') config = ConfigParser.ConfigParser() config.read(config_file) web_server = read_config_option(config, 'WebServer', 'host') web_server_report_path = read_config_option(config, 'WebServer', 'reportPath') web_server_log_path = read_config_option(config, 'WebServer', 'logPath') web_server_username = read_config_option(config, 'WebServer', 'username') web_server_password = read_config_option(config, 'WebServer', 'password') log_scenario = read_config_option(config, 'Basic', 'logScenario', 'Sanity') http_proxy = read_config_option(config, 'proxy', 'proxy_url') if not (web_server and web_server_report_path and web_server_log_path and \ web_server_username and web_server_password): print "Not all webserver details are available. Skipping upload." return False report_config = ConfigParser.ConfigParser() report_config.read(report_config_file) ts = report_config.get('Test', 'timestamp') build_id = report_config.get('Test', 'build') branch = build_id.split('-')[0] sanity_type = get_os_env('SANITY_TYPE','Daily') build_folder = build_id + '_' + ts web_server_path = web_server_log_path + '/' + build_folder + '/' log = 'logs' print "Web server log path %s"%web_server_path try: with hide('everything'): with settings(host_string=web_server, user=web_server_username, password=web_server_password, warn_only=True, abort_on_prompts=False): if jenkins_trigger: # define report path if sanity_type == "Daily": sanity_report = '%s/daily' % ( web_server_report_path) else: sanity_report = '%s/regression' % ( web_server_report_path) # report name in format # email_subject_line+time_stamp report_file = "%s-%s.html" % ( '-'.join(log_scenario.split(' ')), ts) # create report path if doesnt exist run('mkdir -p %s' % (sanity_report)) # create folder by release name passed from jenkins run('cd %s; mkdir -p %s' % (sanity_report, branch)) # create folder by build_number and create soft # link to original report with custom name run('cd %s/%s; mkdir -p %s; cd %s; ln -s %s/junit-noframes.html %s' % (sanity_report, branch, build_id, build_id, web_server_path, report_file)) if http_proxy: # Assume ssl over http-proxy and use sshpass. subprocess.check_output( "sshpass -p %s ssh %s@%s mkdir -p %s" % (web_server_password, web_server_username, web_server, web_server_path), shell=True) subprocess.check_output( "sshpass -p %s scp %s %s@%s:%s" % (web_server_password, elem, web_server_username, web_server, web_server_path), shell=True) else: run('mkdir -p %s' % (web_server_path)) output = put(elem, web_server_path) put('logs', web_server_path) put('result.xml', web_server_path) put('result1.xml', web_server_path) except Exception,e: print 'Error occured while uploading the logs to the Web Server ',e return False
def __init__(self, ini_file=None, logger=None): self.jenkins_trigger = self.get_os_env('JENKINS_TRIGGERED') self.os_type = custom_dict(self.get_os_version, 'os_type') self.config = None if ini_file: self.config = ConfigParser.ConfigParser() self.config.read(ini_file) self.logger = logger or contrail_logging.getLogger(__name__) self.orchestrator = read_config_option(self.config, 'Basic', 'orchestrator', 'openstack') self.prov_file = read_config_option(self.config, 'Basic', 'provFile', None) self.key = read_config_option(self.config, 'Basic', 'key', 'key1') self.tenant_isolation = read_config_option(self.config, 'Basic', 'tenant_isolation', True) self.user_isolation = read_config_option(self.config, 'Basic', 'user_isolation', True) # Read admin credentials if any self.admin_username = read_config_option( self.config, 'Basic', 'adminUser', os.getenv('OS_USERNAME', None)) self.admin_password = read_config_option( self.config, 'Basic', 'adminPassword', os.getenv('OS_PASSWORD', None)) self.admin_tenant = read_config_option( self.config, 'Basic', 'adminTenant', os.getenv('OS_TENANT_NAME', None)) self.stack_user = read_config_option(self.config, 'Basic', 'stackUser', self.admin_username) self.stack_password = read_config_option( self.config, 'Basic', 'stackPassword', self.admin_password) self.stack_tenant = read_config_option( self.config, 'Basic', 'stackTenant', self.admin_tenant) self.stack_domain = read_config_option( self.config, 'Basic', 'stackDomain', os.getenv('OS_DOMAIN_NAME', 'default-domain')) self.region_name = read_config_option( self.config, 'Basic', 'stackRegion', os.getenv('OS_REGION_NAME', 'RegionOne')) self.neutron_username = read_config_option(self.config, 'Basic', 'neutron_username', None) self.availability_zone = read_config_option(self.config, 'Basic', 'availability_zone', None) self.endpoint_type = read_config_option(self.config, 'Basic', 'endpoint_type', 'publicURL') self.auth_ip = read_config_option(self.config, 'Basic', 'auth_ip', None) self.auth_port = read_config_option(self.config, 'Basic', 'auth_port', 5000) self.auth_protocol = read_config_option(self.config, 'Basic', 'auth_protocol', 'http') self.ds_port = read_config_option(self.config, 'services', 'discovery_port', '5998') self.api_server_port = read_config_option(self.config, 'services', 'config_api_port', '8082') self.analytics_api_port = read_config_option( self.config, 'services', 'analytics_api_port', '8081') self.bgp_port = read_config_option(self.config, 'services', 'control_port', '8083') self.dns_port = read_config_option(self.config, 'services', 'dns_port', '8092') self.agent_port = read_config_option(self.config, 'services', 'agent_port', '8085') self.discovery_ip = read_config_option(self.config, 'services', 'discovery_ip', None) self.api_server_ip = read_config_option(self.config, 'services', 'config_api_ip', None) self.analytics_api_ip = read_config_option(self.config, 'services', 'analytics_api_ip', None) self.contrail_internal_vip = read_config_option( self.config, 'HA', 'contrail_internal_vip', None) self.contrail_external_vip = read_config_option( self.config, 'HA', 'contrail_external_vip', self.contrail_internal_vip) self.internal_vip = read_config_option(self.config, 'HA', 'internal_vip', None) self.external_vip = read_config_option( self.config, 'HA', 'external_vip', self.internal_vip) self.multi_tenancy = read_config_option(self.config, 'Basic', 'multiTenancy', False) self.enable_ceilometer = read_config_option(self.config, 'Basic', 'enable_ceilometer', False) self.ci_flavor = read_config_option(self.config, 'Basic', 'ci_flavor', None) self.config_amqp_ips = read_config_option(self.config, 'services', 'config_amqp_ips', None) if self.config_amqp_ips: self.config_amqp_ips = self.config_amqp_ips.split(',') self.config_amqp_port = read_config_option(self.config, 'services', 'config_amqp_port', '5672') self.fixture_cleanup = read_config_option(self.config, 'Basic', 'fixtureCleanup', 'yes') self.key_filename = read_config_option(self.config, 'Basic', 'key_filename', None) self.pubkey_filename = read_config_option(self.config, 'Basic', 'pubkey_filename', None) self.http_proxy = read_config_option(self.config, 'proxy', 'proxy_url', None) self.ui_config = read_config_option(self.config, 'ui', 'ui_config', None) self.ui_browser = read_config_option(self.config, 'ui', 'ui_browser', None) self.verify_webui = read_config_option(self.config, 'ui', 'webui', False) self.verify_horizon = read_config_option(self.config, 'ui', 'horizon', False) if not self.ui_browser and (self.verify_webui or self.verify_horizon): raise ValueError( "Verification via GUI needs 'browser' details. Please set the same." ) self.devstack = read_config_option(self.config, 'devstack', 'devstack', None) self.use_devicemanager_for_md5 = read_config_option( self.config, 'use_devicemanager_for_md5', 'use_devicemanager_for_md5', False) # router options self.mx_rt = read_config_option(self.config, 'router', 'route_target', '10003') self.router_asn = read_config_option(self.config, 'router', 'asn', '64512') router_info_tuples_string = read_config_option(self.config, 'router', 'router_info', '[]') self.ext_routers = ast.literal_eval(router_info_tuples_string) self.fip_pool_name = read_config_option(self.config, 'router', 'fip_pool_name', 'public-pool') self.fip_pool = read_config_option(self.config, 'router', 'fip_pool', None) if self.fip_pool: update_reserve_cidr(self.fip_pool) self.public_vn = read_config_option( self.config, 'router', 'public_virtual_network', 'public-network') self.public_tenant = read_config_option( self.config, 'router', 'public_tenant_name', 'public-tenant') # HA setup IPMI username/password self.ha_setup = read_config_option(self.config, 'HA', 'ha_setup', None) if self.ha_setup == True: self.ipmi_username = read_config_option(self.config, 'HA', 'ipmi_username', 'ADMIN') self.ipmi_password = read_config_option(self.config, 'HA', 'ipmi_password', 'ADMIN') # debug option self.verify_on_setup = read_config_option(self.config, 'debug', 'verify_on_setup', True) self.stop_on_fail = bool( read_config_option(self.config, 'debug', 'stop_on_fail', None)) self.ha_tmp_list = [] self.tor_agent_data = {} self.sriov_data = {} self.dpdk_data = {} self.mysql_token = None self.public_host = read_config_option(self.config, 'Basic', 'public_host', '10.204.216.50') self.prov_file = self.prov_file or self._create_prov_file() self.prov_data = self.read_prov_file() self.auth_url = os.getenv('OS_AUTH_URL') or \ '%s://%s:%s/v2.0'%(self.auth_protocol, self.auth_ip, self.auth_port) #vcenter server self.vcenter_dc = read_config_option(self.config, 'vcenter', 'vcenter_dc', None) self.vcenter_server = read_config_option(self.config, 'vcenter', 'vcenter_server', None) self.vcenter_port = read_config_option(self.config, 'vcenter', 'vcenter_port', None) self.vcenter_username = read_config_option(self.config, 'vcenter', 'vcenter_username', None) self.vcenter_password = read_config_option(self.config, 'vcenter', 'vcenter_password', None) self.vcenter_compute = read_config_option(self.config, 'vcenter', 'vcenter_compute', None) #for multiple vcenter try: if 'vcenter_servers' in self.prov_data.keys(): for server in self.prov_data['vcenter_servers']: for k in server.keys(): self.dv_switch = server[k]['dv_switch'][ 'dv_switch_name'] elif 'vcenter' in self.prov_data.keys(): self.dv_switch = self.prov_data['vcenter'][0]['dv_switch'][ 'dv_switch_name'] except Exception as e: pass self.username = self.host_data[self.cfgm_ip]['username'] self.password = self.host_data[self.cfgm_ip]['password'] # List of service correspond to each module self.compute_services = [ 'contrail-vrouter-agent', 'supervisor-vrouter', 'contrail-vrouter-nodemgr' ] self.control_services = [ 'contrail-control', 'supervisor-control', 'contrail-control-nodemgr', 'contrail-dns', 'contrail-named' ] self.cfgm_services = [ 'contrail-api', 'contrail-schema', 'contrail-discovery', 'supervisor-config', 'contrail-config-nodemgr', 'contrail-device-manager' ] self.webui_services = [ 'contrail-webui', 'contrail-webui-middleware', 'supervisor-webui' ] self.openstack_services = [ 'openstack-cinder-api', 'openstack-cinder-scheduler', 'openstack-cinder-scheduler', 'openstack-glance-api', 'openstack-glance-registry', 'openstack-keystone', 'openstack-nova-api', 'openstack-nova-scheduler', 'openstack-nova-cert' ] self.collector_services = [ 'contrail-collector', 'contrail-analytics-api', 'contrail-query-engine', 'contrail-analytics-nodemgr', 'supervisor-analytics', 'contrail-snmp-collector', 'contrail-topology' ] self.correct_states = ['active', 'backup']
def __init__(self, ini_file=None, logger=None): self.jenkins_trigger = self.get_os_env('JENKINS_TRIGGERED') self.os_type = custom_dict(self.get_os_version, 'os_type') self.config = None if ini_file: self.config = ConfigParser.ConfigParser() self.config.read(ini_file) self.logger = logger or contrail_logging.getLogger(__name__) self.orchestrator = read_config_option(self.config, 'Basic', 'orchestrator', 'openstack') self.prov_file = read_config_option(self.config, 'Basic', 'provFile', None) self.key = read_config_option(self.config, 'Basic', 'key', 'key1') self.tenant_isolation = read_config_option(self.config, 'Basic', 'tenant_isolation', True) self.user_isolation = read_config_option(self.config, 'Basic', 'user_isolation', True) # Read admin credentials if any self.admin_username = read_config_option( self.config, 'Basic', 'adminUser', os.getenv('OS_USERNAME', None)) self.admin_password = read_config_option( self.config, 'Basic', 'adminPassword', os.getenv('OS_PASSWORD', None)) self.admin_tenant = read_config_option( self.config, 'Basic', 'adminTenant', os.getenv('OS_TENANT_NAME', None)) self.stack_user = read_config_option(self.config, 'Basic', 'stackUser', self.admin_username) self.stack_password = read_config_option(self.config, 'Basic', 'stackPassword', self.admin_password) self.stack_tenant = read_config_option(self.config, 'Basic', 'stackTenant', self.admin_tenant) self.stack_domain = read_config_option( self.config, 'Basic', 'stackDomain', os.getenv('OS_DOMAIN_NAME', 'default-domain')) self.region_name = read_config_option( self.config, 'Basic', 'stackRegion', os.getenv('OS_REGION_NAME', 'RegionOne')) self.neutron_username = read_config_option(self.config, 'Basic', 'neutron_username', None) self.availability_zone = read_config_option(self.config, 'Basic', 'availability_zone', None) self.endpoint_type = read_config_option(self.config, 'Basic', 'endpoint_type', 'publicURL') self.auth_ip = read_config_option(self.config, 'Basic', 'auth_ip', None) self.auth_port = read_config_option(self.config, 'Basic', 'auth_port', 5000) self.auth_protocol = read_config_option(self.config, 'Basic', 'auth_protocol', 'http') self.ds_port = read_config_option(self.config, 'services', 'discovery_port', '5998') self.api_server_port = read_config_option(self.config, 'services', 'config_api_port', '8082') self.analytics_api_port = read_config_option(self.config, 'services', 'analytics_api_port', '8081') self.bgp_port = read_config_option(self.config, 'services', 'control_port', '8083') self.dns_port = read_config_option(self.config, 'services', 'dns_port', '8092') self.agent_port = read_config_option(self.config, 'services', 'agent_port', '8085') self.discovery_ip = read_config_option(self.config, 'services', 'discovery_ip', None) self.api_server_ip = read_config_option(self.config, 'services', 'config_api_ip', None) self.analytics_api_ip = read_config_option(self.config, 'services', 'analytics_api_ip', None) self.contrail_internal_vip = read_config_option( self.config, 'HA', 'contrail_internal_vip', None) self.contrail_external_vip = read_config_option( self.config, 'HA', 'contrail_external_vip', self.contrail_internal_vip) self.internal_vip = read_config_option(self.config, 'HA', 'internal_vip', None) self.external_vip = read_config_option(self.config, 'HA', 'external_vip', self.internal_vip) self.multi_tenancy = read_config_option(self.config, 'Basic', 'multiTenancy', False) self.enable_ceilometer = read_config_option(self.config, 'Basic', 'enable_ceilometer', False) self.ci_flavor = read_config_option(self.config, 'Basic', 'ci_flavor', None) self.fixture_cleanup = read_config_option(self.config, 'Basic', 'fixtureCleanup', 'yes') self.key_filename = read_config_option(self.config, 'Basic', 'key_filename', None) self.pubkey_filename = read_config_option(self.config, 'Basic', 'pubkey_filename', None) self.http_proxy = read_config_option(self.config, 'proxy', 'proxy_url', None) self.ui_config = read_config_option(self.config, 'ui', 'ui_config', None) self.ui_browser = read_config_option(self.config, 'ui', 'ui_browser', None) self.verify_webui = read_config_option(self.config, 'ui', 'webui', False) self.verify_horizon = read_config_option(self.config, 'ui', 'horizon', False) if not self.ui_browser and (self.verify_webui or self.verify_horizon): raise ValueError( "Verification via GUI needs 'browser' details. Please set the same." ) self.devstack = read_config_option(self.config, 'devstack', 'devstack', None) self.use_devicemanager_for_md5 = read_config_option( self.config, 'use_devicemanager_for_md5', 'use_devicemanager_for_md5', False) # router options self.mx_rt = read_config_option(self.config, 'router', 'route_target', '10003') self.router_asn = read_config_option(self.config, 'router', 'asn', '64512') router_info_tuples_string = read_config_option(self.config, 'router', 'router_info', '[]') self.ext_routers = ast.literal_eval(router_info_tuples_string) self.fip_pool_name = read_config_option(self.config, 'router', 'fip_pool_name', 'public-pool') self.fip_pool = read_config_option(self.config, 'router', 'fip_pool', None) if self.fip_pool: update_reserve_cidr(self.fip_pool) self.public_vn = read_config_option(self.config, 'router', 'public_virtual_network', 'public-network') self.public_tenant = read_config_option(self.config, 'router', 'public_tenant_name', 'public-tenant') # HA setup IPMI username/password self.ha_setup = read_config_option(self.config, 'HA', 'ha_setup', None) if self.ha_setup == True: self.ipmi_username = read_config_option(self.config, 'HA', 'ipmi_username', 'ADMIN') self.ipmi_password = read_config_option(self.config, 'HA', 'ipmi_password', 'ADMIN') # debug option self.verify_on_setup = read_config_option(self.config, 'debug', 'verify_on_setup', True) self.stop_on_fail = bool( read_config_option(self.config, 'debug', 'stop_on_fail', None)) self.ha_tmp_list = [] self.tor_agent_data = {} self.sriov_data = {} self.dpdk_data = {} self.mysql_token = None self.public_host = read_config_option(self.config, 'Basic', 'public_host', '10.204.216.50') self.prov_file = self.prov_file or self._create_prov_file() self.prov_data = self.read_prov_file() self.auth_url = os.getenv('OS_AUTH_URL') or \ '%s://%s:%s/v2.0'%(self.auth_protocol, self.auth_ip, self.auth_port) #vcenter server self.vcenter_dc = read_config_option(self.config, 'vcenter', 'vcenter_dc', None) self.vcenter_server = read_config_option(self.config, 'vcenter', 'vcenter_server', None) self.vcenter_port = read_config_option(self.config, 'vcenter', 'vcenter_port', None) self.vcenter_username = read_config_option(self.config, 'vcenter', 'vcenter_username', None) self.vcenter_password = read_config_option(self.config, 'vcenter', 'vcenter_password', None) self.vcenter_compute = read_config_option(self.config, 'vcenter', 'vcenter_compute', None) if 'vcenter' in self.prov_data.keys(): try: self.dv_switch = self.prov_data['vcenter'][0]['dv_switch'][ 'dv_switch_name'] except Exception as e: pass self.username = self.host_data[self.cfgm_ip]['username'] self.password = self.host_data[self.cfgm_ip]['password'] # List of service correspond to each module self.compute_services = [ 'contrail-vrouter-agent', 'supervisor-vrouter', 'contrail-vrouter-nodemgr' ] self.control_services = [ 'contrail-control', 'supervisor-control', 'contrail-control-nodemgr', 'contrail-dns', 'contrail-named' ] self.cfgm_services = [ 'contrail-api', 'contrail-schema', 'contrail-discovery', 'supervisor-config', 'contrail-config-nodemgr', 'contrail-device-manager' ] self.webui_services = [ 'contrail-webui', 'contrail-webui-middleware', 'supervisor-webui' ] self.openstack_services = [ 'openstack-cinder-api', 'openstack-cinder-scheduler', 'openstack-cinder-scheduler', 'openstack-glance-api', 'openstack-glance-registry', 'openstack-keystone', 'openstack-nova-api', 'openstack-nova-scheduler', 'openstack-nova-cert' ] self.collector_services = [ 'contrail-collector', 'contrail-analytics-api', 'contrail-query-engine', 'contrail-analytics-nodemgr', 'supervisor-analytics', 'contrail-snmp-collector', 'contrail-topology' ] self.correct_states = ['active', 'backup']
def __init__(self, ini_file=None): self.api_server_port = '8082' self.bgp_port = '8083' self.ds_port = '5998' self.jenkins_trigger = self.get_os_env('JENKINS_TRIGGERED') self.os_type = custom_dict(self.get_os_version, 'os_type') self.config = None if ini_file: self.config = ConfigParser.ConfigParser() self.config.read(ini_file) self.orchestrator = read_config_option(self.config, 'Basic', 'orchestrator', 'openstack') self.prov_file = read_config_option(self.config, 'Basic', 'provFile', None) self.key = read_config_option(self.config, 'Basic', 'key', 'key1') self.stack_user = read_config_option( self.config, 'Basic', 'stackUser', os.getenv('OS_USERNAME', 'admin')) self.stack_password = read_config_option( self.config, 'Basic', 'stackPassword', os.getenv('OS_PASSWORD', 'contrail123')) self.stack_tenant = read_config_option( self.config, 'Basic', 'stackTenant', os.getenv('OS_TENANT_NAME', 'admin')) self.stack_domain = read_config_option( self.config, 'Basic', 'stackDomain', os.getenv('OS_DOMAIN_NAME', 'default-domain')) self.endpoint_type = read_config_option( self.config, 'Basic', 'endpoint_type', 'publicURL') self.auth_ip = read_config_option(self.config, 'Basic', 'auth_ip', None) self.auth_port = read_config_option(self.config, 'Basic', 'auth_port', None) self.multi_tenancy = read_config_option(self.config, 'Basic', 'multiTenancy', False) self.enable_ceilometer = read_config_option(self.config, 'Basic', 'enable_ceilometer', False) self.fixture_cleanup = read_config_option( self.config, 'Basic', 'fixtureCleanup', 'yes') self.http_proxy = read_config_option(self.config, 'proxy', 'proxy_url', None) self.ui_config = read_config_option(self.config, 'ui', 'ui_config', None) self.ui_browser = read_config_option(self.config, 'ui', 'ui_browser', None) self.verify_webui = read_config_option(self.config, 'ui', 'webui', False) self.verify_horizon = read_config_option(self.config, 'ui', 'horizon', False) if not self.ui_browser and (self.verify_webui or self.verify_horizon): raise ValueError( "Verification via GUI needs 'browser' details. Please set the same.") self.devstack = read_config_option(self.config, 'devstack', 'devstack', None) self.use_devicemanager_for_md5 = read_config_option( self.config, 'use_devicemanager_for_md5', 'use_devicemanager_for_md5', False) # router options self.mx_rt = read_config_option(self.config, 'router', 'route_target', '10003') self.router_asn = read_config_option(self.config, 'router', 'asn', '64512') router_info_tuples_string = read_config_option( self.config, 'router', 'router_info', '[]') self.ext_routers = ast.literal_eval(router_info_tuples_string) self.fip_pool_name = read_config_option( self.config, 'router', 'fip_pool_name', 'public-pool') self.fip_pool = read_config_option(self.config, 'router', 'fip_pool', None) if self.fip_pool: update_reserve_cidr(self.fip_pool) self.public_vn = read_config_option( self.config, 'router', 'public_virtual_network', 'public-network') self.public_tenant = read_config_option( self.config, 'router', 'public_tenant_name', 'public-tenant') # HA setup IPMI username/password self.ha_setup = read_config_option(self.config, 'HA', 'ha_setup', None) if self.ha_setup == 'True': self.ipmi_username = read_config_option( self.config, 'HA', 'ipmi_username', 'ADMIN') self.ipmi_password = read_config_option( self.config, 'HA', 'ipmi_password', 'ADMIN') # debug option self.verify_on_setup = read_config_option( self.config, 'debug', 'verify_on_setup', True) self.stop_on_fail = bool( read_config_option( self.config, 'debug', 'stop_on_fail', None)) #vcenter server self.vcenter_dc = read_config_option( self.config, 'vcenter', 'vcenter_dc', None) self.vcenter_server = read_config_option( self.config, 'vcenter', 'vcenter_server', None) self.vcenter_port = read_config_option( self.config, 'vcenter', 'vcenter_port', None) self.vcenter_username = read_config_option( self.config, 'vcenter', 'vcenter_username', None) self.vcenter_password = read_config_option( self.config, 'vcenter', 'vcenter_password', None) self.vcenter_compute = read_config_option( self.config, 'vcenter', 'vcenter_compute', None) self.ha_tmp_list = [] self.tor_agent_data = {} self.mysql_token = None self.public_host = read_config_option(self.config, 'Basic', 'public_host', '10.204.216.50') self.prov_file = self.prov_file or self._create_prov_file() self.prov_data = self.read_prov_file() if self.ha_setup == 'True': self.update_etc_hosts_for_vip() self.username = self.host_data[self.cfgm_ip]['username'] self.password = self.host_data[self.cfgm_ip]['password'] # List of service correspond to each module self.compute_services = [ 'contrail-vrouter-agent', 'supervisor-vrouter', 'contrail-vrouter-nodemgr'] self.control_services = ['contrail-control', 'supervisor-control', 'contrail-control-nodemgr', 'contrail-dns', 'contrail-named'] self.cfgm_services = [ 'contrail-api', 'contrail-schema', 'contrail-discovery', 'supervisor-config', 'contrail-config-nodemgr', 'contrail-device-manager'] self.webui_services = ['contrail-webui', 'contrail-webui-middleware', 'supervisor-webui'] self.openstack_services = [ 'openstack-cinder-api', 'openstack-cinder-scheduler', 'openstack-cinder-scheduler', 'openstack-glance-api', 'openstack-glance-registry', 'openstack-keystone', 'openstack-nova-api', 'openstack-nova-scheduler', 'openstack-nova-cert'] self.collector_services = [ 'contrail-collector', 'contrail-analytics-api', 'contrail-query-engine', 'contrail-analytics-nodemgr', 'supervisor-analytics', 'contrail-snmp-collector', 'contrail-topology'] self.correct_states = ['active', 'backup']