def cluster_wait_for_service(args, cfg): # Uses 1 second timeout to just test once to see if Framework up if util.wait_for_framework(cfg, args['debug_flag'], 1): service_url = cfg.api_url() r = requests.get(service_url + 'clusters/' + args['cluster'] + '/nodes') util.debug_request(args['debug_flag'], r) js = json.loads(r.text) # Timeout must be at least 1 second num_nodes = len(js['nodes']) if num_nodes > 0: node_timeout = max(args['timeout'] / num_nodes, 1) for k in js['nodes']: util.wait_for_node(cfg, args['cluster'], args['debug_flag'], k, node_timeout) if num_nodes >= args['num_nodes']: # Okay, need to divide up the timeout properly util.wait_for_node_status_valid(cfg, args['cluster'], args['debug_flag'], js['nodes'][0], args['num_nodes'], args['timeout']) return print('Riak Mesos Framework did not respond.') return
def node(args, cfg): service_url = cfg.api_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") r = requests.get(service_url + 'clusters/' + args['cluster'] + '/nodes') util.debug_request(args['debug_flag'], r) print(r.text) return
def cluster_destroy(args, cfg): service_url = cfg.api_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") r = requests.delete(service_url + 'clusters/' + args['cluster'], data='') util.debug_request(args['debug_flag'], r) print(r.text) return
def node_add(args, cfg): service_url = cfg.api_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") for x in range(0, args['num_nodes']): r = requests.post(service_url + 'clusters/' + args['cluster'] + '/nodes', data='') util.debug_request(args['debug_flag'], r) print(r.text) return
def node_bucket_type_list(args, cfg): service_url = cfg.api_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") if args['node'] == '': raise CliError('Node name must be specified') r = requests.get(service_url + 'clusters/' + args['cluster'] + '/nodes/' + args['node'] + '/types') util.debug_request(args['debug_flag'], r) print(r.text) return
def node_bucket_type_create(args, cfg): service_url = cfg.api_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") if args['node'] == '' or args['bucket_type'] == '' or args['props'] == '': raise CliError('Node name, bucket-type, props must be ' 'specified') r = requests.post(service_url + 'clusters/' + args['cluster'] + '/nodes/' + args['node'] + '/types/' + args['bucket_type'], data=args['props']) util.debug_request(args['debug_flag'], r) print(r.text) return
def node_stats(args, cfg): service_url = cfg.scheduler_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") if args['node'] == '': raise CliError('Node name must be specified') r = requests.get(service_url + 'riak/nodes/' + args['node'] + '/stats') util.debug_request(args['debug_flag'], r) if r.status_code != 200: print('Failed to get stats, status_code: ' + str(r.status_code)) else: print(r.text) return
def node_remove(args, cfg): service_url = cfg.api_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") if args['node'] == '': raise CliError('Node name must be specified') requrl = service_url + 'clusters/' requrl += args['cluster'] + '/nodes/' + args['node'] if args['force_flag']: requrl += '?force=true' r = requests.delete(requrl, data='') util.debug_request(args['debug_flag'], r) print(r.text) return
def framework_teardown(args, cfg): r = requests.get('http://' + cfg.get('master') + '/master/state.json') util.debug_request(args['debug_flag'], r) if r.status_code != 200: print('Failed to get state.json from master.') return js = json.loads(r.text) for fw in js['frameworks']: if fw['name'] == cfg.get('framework-name'): r = requests.post('http://' + cfg.get('master') + '/master/teardown', data='frameworkId=' + fw['id']) util.debug_request(args['debug_flag'], r) print('Finished teardown.') return
def framework_teardown(args, cfg): r = requests.get('http://' + cfg.get('master') + '/master/state.json') util.debug_request(args['debug_flag'], r) if r.status_code != 200: print('Failed to get state.json from master.') return js = json.loads(r.text) for fw in js['frameworks']: if fw['name'] == cfg.get('framework-name'): r = requests.post( 'http://' + cfg.get('master') + '/master/teardown', data='frameworkId='+fw['id']) util.debug_request(args['debug_flag'], r) print('Finished teardown.') return
def node_log_list(args, cfg): service_url = cfg.scheduler_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") if args['node'] == '': raise CliError('Node name must be specified') node_name = util.get_node_name(cfg, args['cluster'], args['debug_flag'], args['node']) r = requests.get(service_url + 'explore/clusters/' + args['cluster'] + '/nodes/' + node_name + '/log/files') util.debug_request(args['debug_flag'], r) if r.status_code != 200: print('Failed to get log files, status_code: ' + str(r.status_code)) else: print(r.text) return
def cluster_config_advanced(args, cfg): service_url = cfg.api_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") if args['riak_file'] == '': r = requests.get(service_url + 'clusters/' + args['cluster'] + '/advancedConfig') util.debug_request(args['debug_flag'], r) print(r.text) else: with open(args['riak_file']) as data_file: r = requests.put(service_url + 'clusters/' + args['cluster'] + '/advancedConfig', data=data_file) util.debug_request(args['debug_flag'], r) print(r.text) return
def node_info(args, cfg): service_url = cfg.api_url() if service_url is False: raise CliError("Riak Mesos Framework is not running.") r = requests.get(service_url + 'clusters/' + args['cluster'] + '/nodes/' + args['node']) util.debug_request(args['debug_flag'], r) # TODO: Parse the relevant parts of the node info print(r.text) # node_json = try_json(r.text) # if (node_json is not False): # print('HTTP: http://' + node_json[node]['Hostname'] + ':' + # str(node_json[node]['TaskData']['HTTPPort'])) # print('PB : ' + node_json[node]['Hostname'] + ':' + # str(node_json[node]['TaskData']['PBPort'])) # util.ppobj('Node: ', r.text, node, '{}') # else: # print(r.text) return
def cluster_endpoints(args, cfg): if util.wait_for_framework(cfg, args['debug_flag'], 60): service_url = cfg.api_url() r = requests.get(service_url + 'clusters/' + args['cluster'] + '/nodes') util.debug_request(args['debug_flag'], r) cluster_data = {} if r.status_code == 200: js = json.loads(r.text) for k in js["nodes"]: cluster_data[k] = util.node_info(cfg, args['cluster'], args['debug_flag'], k) print(json.dumps(cluster_data)) return else: print(r.text) return print('Riak Mesos Framework did not respond within 60 ' 'seconds.') return