Beispiel #1
0
def up(image, dns, uid, maps, nodes):
    if not maps:
        maps = '{"props":{"n_val":2, "datatype":"map"}}'

    dns_servers, dns_output = common.set_up_dns(dns, uid)
    riak_output = {}

    command = '''
sed -i 's/[email protected]/riak@{hostname}/' /etc/riak/riak.conf
sed -i 's/127.0.0.1:/0.0.0.0:/' /etc/riak/riak.conf
riak console'''

    for num in range(nodes):
        node_out = _node_up(command, num, maps, dns_servers, image, uid)
        common.merge(riak_output, node_out)

    containers = riak_output['docker_ids']
    common.merge(riak_output, dns_output)

    _wait_until(_ready, containers)
    _cluster_nodes(containers, uid)

    docker.exec_(containers[0],
                 command=['riak-admin', 'bucket-type', 'create', 'maps', maps],
                 stdout=sys.stderr)

    _wait_until(lambda c: _bucket_ready('maps', c), containers[:1])

    docker.exec_(containers[0],
                 command=['riak-admin', 'bucket-type', 'activate', 'maps'],
                 stdout=sys.stderr)

    common.merge(riak_output, dns_output)
    return riak_output
Beispiel #2
0
def up(image, bindir, logdir, dns, uid, config_path):
    config = common.parse_json_file(config_path)['oneprovider_node']
    config['config']['target_dir'] = '/root/bin'
    configs = [_tweak_config(config, node, uid) for node in config['nodes']]

    dns_servers, output = common.set_up_dns(dns, uid)
    ccms = []
    workers = []

    db_node_mappings, riak_out = _riak_up(configs, dns_servers, uid)
    common.merge(output, riak_out)

    for cfg, _ in configs:
        ccm, worker, node_out = _node_up(image, bindir, logdir, uid, cfg,
                                         dns_servers, db_node_mappings)
        ccms.extend(ccm)
        workers.extend(worker)
        common.merge(output, node_out)

    _wait_until_ready(workers)

    if logdir:
        for node in ccms + workers:
            docker.exec_(node, [
                'chown', '-R', '{0}:{1}'.format(os.geteuid(), os.getegid()),
                '/root/bin/node/log/'
            ])

    return output
Beispiel #3
0
def up(image, bindir, logdir, dns, uid, config_path):
    config = common.parse_json_file(config_path)['globalregistry']
    config['config']['target_dir'] = '/root/bin'
    configs = [_tweak_config(config, node, uid) for node in config['nodes']]

    dns_servers, output = common.set_up_dns(dns, uid)

    gr_containers = []
    for cfg in configs:
        gr_container, node_out = _node_up(image, bindir, logdir, uid, cfg,
                                          dns_servers)
        common.merge(output, node_out)
        gr_containers.append(gr_container)

    if logdir:
        for node in gr_containers:
            docker.exec_(node, [
                'chown', '-R', '{0}:{1}'.format(os.geteuid(), os.getegid()),
                '/root/bin/node/log/'
            ])

    return output
Beispiel #4
0
def _cluster_nodes(containers, uid):
    for container in containers[1:]:
        docker.exec_(container, [
            'riak-admin', 'cluster', 'join', 'riak@{0}'.format(
                common.format_hostname(_riak(0), uid))
        ],
                     stdout=sys.stderr)

    _wait_until(_ring_ready, containers)
    docker.exec_(containers[0], ['riak-admin', 'cluster', 'plan'],
                 stdout=sys.stderr)
    docker.exec_(containers[0], ['riak-admin', 'cluster', 'commit'],
                 stdout=sys.stderr)
Beispiel #5
0
def _bucket_ready(bucket, container):
    output = docker.exec_(container,
                          ['riak-admin', 'bucket-type', 'status', 'maps'],
                          output=True,
                          stdout=sys.stderr)
    return '{0} has been created and may be activated'.format(bucket) in output
Beispiel #6
0
def _ring_ready(container):
    output = docker.exec_(container, ['riak-admin', 'ring_status'],
                          output=True,
                          stdout=sys.stderr)
    return bool(re.search('Ring Ready:\s*true', output))
Beispiel #7
0
def _ready(container):
    return docker.exec_(container, ['riak', 'ping'], stdout=sys.stderr) == 0