示例#1
0
文件: build.py 项目: mallow111/libra
    def _test_node(self, name):
        """ Run diags on node, blow it away if bad """
        server_list = []
        for server in cfg.CONF['gearman']['servers']:
            host, port = server.split(':')
            server_list.append({'host': host,
                                'port': int(port),
                                'keyfile': cfg.CONF['gearman']['ssl_key'],
                                'certfile': cfg.CONF['gearman']['ssl_cert'],
                                'ca_certs': cfg.CONF['gearman']['ssl_ca'],
                                'keepalive': cfg.CONF['gearman']['keepalive'],
                                'keepcnt': cfg.CONF['gearman']['keepcnt'],
                                'keepidle': cfg.CONF['gearman']['keepidle'],
                                'keepintvl': cfg.CONF['gearman']['keepintvl']})
        gm_client = JSONGearmanClient(server_list)

        job_data = {'hpcs_action': 'DIAGNOSTICS'}
        job_status = gm_client.submit_job(
            str(name), job_data, background=False, wait_until_complete=True,
            max_retries=10, poll_timeout=10
        )
        if job_status.state == JOB_UNKNOWN:
            # Gearman server connect fail, count as bad node because we can't
            # tell if it really is working
            LOG.error('Could not talk to gearman server')
            return False
        if job_status.timed_out:
            LOG.warning('Timeout getting diags from {0}'.format(name))
            return False
        LOG.debug(job_status.result)
        # Would only happen if DIAGNOSTICS call not supported
        if job_status.result['hpcs_response'] == 'FAIL':
            return True

        if job_status.result['network'] == 'FAIL':
            return False

        gearman_count = 0
        gearman_fail = 0
        for gearman_test in job_status.result['gearman']:
            gearman_count += 1
            if gearman_test['status'] == 'FAIL':
                LOG.info(
                    'Device {0} cannot talk to gearman {1}'
                    .format(name, gearman_test['host'])
                )
                gearman_fail += 1
        # Need 2/3rds gearman up
        max_fail_count = gearman_count / 3
        if gearman_fail > max_fail_count:
            return False
        return True
示例#2
0
 def __init__(self):
     server_list = []
     for server in cfg.CONF['gearman']['servers']:
         host, port = server.split(':')
         server_list.append({
             'host': host,
             'port': int(port),
             'keyfile': cfg.CONF['gearman']['ssl_key'],
             'certfile': cfg.CONF['gearman']['ssl_cert'],
             'ca_certs': cfg.CONF['gearman']['ssl_ca'],
             'keepalive': cfg.CONF['gearman']['keepalive'],
             'keepcnt': cfg.CONF['gearman']['keepcnt'],
             'keepidle': cfg.CONF['gearman']['keepidle'],
             'keepintvl': cfg.CONF['gearman']['keepintvl']
         })
     self.gearman_client = JSONGearmanClient(server_list)
示例#3
0
    def __init__(self, host, lbid):
        self.host = host
        self.lbid = lbid

        server_list = []
        for server in conf.gearman.server:
            ghost, gport = server.split(':')
            server_list.append({
                'host': ghost,
                'port': int(gport),
                'keyfile': conf.gearman.ssl_key,
                'certfile': conf.gearman.ssl_cert,
                'ca_certs': conf.gearman.ssl_ca,
                'keepalive': conf.gearman.keepalive,
                'keepcnt': conf.gearman.keepcnt,
                'keepidle': conf.gearman.keepidle,
                'keepintvl': conf.gearman.keepintvl
            })
        self.gearman_client = JSONGearmanClient(server_list)
示例#4
0
    def __init__(self):
        self.poll_timeout = cfg.CONF['admin_api']['stats_poll_timeout']
        self.poll_retry = cfg.CONF['admin_api']['stats_poll_timeout_retry']

        server_list = []
        for server in cfg.CONF['gearman']['servers']:
            host, port = server.split(':')
            server_list.append({
                'host': host,
                'port': int(port),
                'keyfile': cfg.CONF['gearman']['ssl_key'],
                'certfile': cfg.CONF['gearman']['ssl_cert'],
                'ca_certs': cfg.CONF['gearman']['ssl_ca'],
                'keepalive': cfg.CONF['gearman']['keepalive'],
                'keepcnt': cfg.CONF['gearman']['keepcnt'],
                'keepidle': cfg.CONF['gearman']['keepidle'],
                'keepintvl': cfg.CONF['gearman']['keepintvl']
            })
        self.gm_client = JSONGearmanClient(server_list)