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
Beispiel #4
0
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
Beispiel #5
0
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']
Beispiel #10
0
    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']