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
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)
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)
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)