예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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
예제 #9
0
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
예제 #10
0
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
예제 #11
0
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
예제 #12
0
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
예제 #13
0
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
예제 #14
0
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
예제 #15
0
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
예제 #16
0
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
예제 #17
0
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
예제 #18
0
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
예제 #19
0
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
예제 #20
0
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
예제 #21
0
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
예제 #22
0
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
예제 #23
0
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
예제 #24
0
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
예제 #25
0
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
예제 #26
0
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