Beispiel #1
0
def offline_version(ctx, group, pod, version):
    eru = ctx.obj['eru']
    if not version:
        version = ctx.obj['short_sha1']
    try:
        r = eru.offline_version(group, pod, ctx.obj['appname'], version)
    except EruException as e:
        click.echo(error(e.message))
        return

    count = 1
    task_status = {i: 0 for i in r['tasks']}
    while not all(s != 0 for s in task_status.values()):
        if count < 10:
            click.echo('o' * count + '\r', nl=False)
        elif count % 2:
            click.echo('o' * 10 + 'o\r', nl=False)
        else:
            click.echo('o' * 10 + 'x\r', nl=False)
        for task_id, status in task_status.iteritems():
            if status != 0:
                continue
            try:
                task = eru.get_task(task_id)
                if task['finished']:
                    task_status[task_id] = 1
            except EruException:
                task_status[task_id] = -1
        time.sleep(0.5)
        count += 1

    fcount = len([s for s in task_status.values() if s == -1])
    scount = len([s for s in task_status.values() if s == 1])
    click.echo(info('Done.' + count * ' '))
    click.echo(info('%s failed, %s succeeded.' % (fcount, scount)))
Beispiel #2
0
def deploy_public_container(ctx, group, pod, entrypoint, env, ncontainer,
        version, network, ip, raw, image):
    eru = ctx.obj['eru']

    network_ids = []
    for nname in network:
        try:
            n = eru.get_network(nname)
        except EruException as e:
            click.echo(error(e.message))
            ctx.exit(-1)
        else:
            network_ids.append(n['id'])

    if not version:
        version = ctx.obj['short_sha1']

    try:
        r = eru.deploy_public(
            group,
            pod,
            ctx.obj['appname'],
            ncontainer,
            version,
            entrypoint,
            env,
            network_ids,
            raw,
            image,
            ip
        )
    except EruException as e:
        click.echo(error(e.message))
        return

    count = 1
    task_status = {i: 0 for i in r['tasks']}
    while not all(s != 0 for s in task_status.values()):
        if count < 10:
            click.echo('o' * count + '\r', nl=False)
        elif count % 2:
            click.echo('o' * 10 + 'o\r', nl=False)
        else:
            click.echo('o' * 10 + 'x\r', nl=False)
        for task_id, status in task_status.iteritems():
            if status != 0:
                continue
            try:
                task = eru.get_task(task_id)
                if task['finished']:
                    task_status[task_id] = 1
            except EruException:
                task_status[task_id] = -1
        time.sleep(0.5)
        count += 1

    fcount = len([s for s in task_status.values() if s == -1])
    scount = len([s for s in task_status.values() if s == 1])
    click.echo(info('Done.' + count * ' '))
    click.echo(info('%s failed, %s succeeded.' % (fcount, scount)))
Beispiel #3
0
def remove_containers(ctx, container_ids):
    eru = ctx.obj['eru']
    r = eru.remove_containers(container_ids)

    if r['r']:
        click.echo(error(r['msg']))
        return

    count = 1
    task_status = {i: 0 for i in r['tasks']}
    while not all(s != 0 for s in task_status.values()):
        if count < 10:
            click.echo('o' * count + '\r', nl=False)
        elif count % 2:
            click.echo('o' * 10 + 'o\r', nl=False)
        else:
            click.echo('o' * 10 + 'x\r', nl=False)
        for task_id, status in task_status.iteritems():
            if status != 0:
                continue
            task = eru.get_task(task_id)
            if 'r' in task:
                task_status[task_id] = -1
            if task['finished']:
                task_status[task_id] = 1
        time.sleep(0.5)
        count += 1

    fcount = len([s for s in task_status.values() if s == -1])
    scount = len([s for s in task_status.values() if s == 1])
    click.echo(info('Done.' + count * ' '))
    click.echo(info('%s failed, %s succeeded.' % (fcount, scount)))
Beispiel #4
0
def create_group(ctx, name, description):
    eru = ctx.obj['eru']
    r = eru.create_group(name, description)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        click.echo(info('Group created successfully'))
Beispiel #5
0
def assign_host_to_group(ctx, addr, group_name):
    eru = ctx.obj['eru']
    r = eru.assign_host_to_group(addr, group_name)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        click.echo(info('Host assigned to group successfully'))
Beispiel #6
0
def create_host(ctx, addr, pod_name):
    eru = ctx.obj['eru']
    r = eru.create_host(addr, pod_name)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        click.echo(info('Host created successfully'))
Beispiel #7
0
def assign_pod_to_group(ctx, pod_name, group_name):
    eru = ctx.obj['eru']
    r = eru.assign_pod_to_group(pod_name, group_name)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        click.echo(info('Pod assigned to group successfully'))
Beispiel #8
0
def create_pod(ctx, name, description):
    eru = ctx.obj['eru']
    try:
        eru.create_pod(name, description)
        click.echo(info('Pod created successfully'))
    except EruException as e:
        click.echo(error(e.message))
Beispiel #9
0
def create_network(ctx, name, netspace):
    eru = ctx.obj['eru']
    try:
        eru.create_network(name, netspace)
        click.echo(info('Network created successfully'))
    except EruException as e:
        click.echo(error(e.message))
Beispiel #10
0
def assign_pod_to_group(ctx, pod_name, group_name):
    eru = ctx.obj['eru']
    try:
        eru.assign_pod_to_group(pod_name, group_name)
        click.echo(info('Pod assigned to group successfully'))
    except EruException as e:
        click.echo(error(e.message))
Beispiel #11
0
def create_host(ctx, addr, pod_name):
    eru = ctx.obj['eru']
    try:
        eru.create_host(addr, pod_name)
        click.echo(info('Host created successfully'))
    except EruException as e:
        click.echo(error(e.message))
Beispiel #12
0
def assign_host_to_group(ctx, addr, group_name):
    eru = ctx.obj['eru']
    try:
        eru.assign_host_to_group(addr, group_name)
        click.echo(info('Host assigned to group successfully'))
    except EruException as e:
        click.echo(error(e.message))
Beispiel #13
0
def register_app_version(ctx):
    eru = ctx.obj['eru']
    r = eru.register_app_version(ctx.obj['appname'], ctx.obj['sha1'],
            ctx.obj['remote'], ctx.obj['appname'], ctx.obj['appconfig'])
    if r['r']:
        click.echo(error(r['msg']))
    else:
        click.echo(info('Register successfully'))
Beispiel #14
0
def as_form(title, content):
    empty = not bool(content)
    if empty:
        content = [['' for _ in title]]
    header, contents = tabulate(content, headers=title).split('-\n', 1) # tricky
    click.echo(info(header + '-'))
    if not empty:
        click.echo(contents)
Beispiel #15
0
def register_app_version(ctx):
    eru = ctx.obj['eru']
    r = eru.register_app_version(ctx.obj['appname'], ctx.obj['sha1'],
                                 ctx.obj['remote'], ctx.obj['appname'],
                                 ctx.obj['appconfig'])
    if r['r']:
        click.echo(error(r['msg']))
    else:
        click.echo(info('Register successfully'))
Beispiel #16
0
def as_form(title, content):
    empty = not bool(content)
    if empty:
        content = [['' for _ in title]]
    header, contents = tabulate(content, headers=title).split('-\n',
                                                              1)  # tricky
    click.echo(info(header + '-'))
    if not empty:
        click.echo(contents)
Beispiel #17
0
def update_version(ctx, group, pod, version):
    eru = ctx.obj['eru']
    if not version:
        version = ctx.obj['short_sha1']
    r = eru.update_version(group, pod, ctx.obj['appname'], version)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        # TODO get tasks id
        click.echo(info('Update successfully'))
Beispiel #18
0
def update_version(ctx, group, pod, version):
    eru = ctx.obj['eru']
    if not version:
        version = ctx.obj['short_sha1']
    r = eru.update_version(group, pod, ctx.obj['appname'], version)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        # TODO get tasks id
        click.echo(info('Update successfully'))
Beispiel #19
0
def bind_container_network(ctx, container_id, network):
    if not network:
        click.echo(error('at least bind 1 network'))
        return

    eru = ctx.obj['eru']
    try:
        r = eru.bind_container_network(ctx.obj['appname'], container_id, network)
    except EruException as e:
        click.echo(error(e.message))
        return

    if r['r']:
        click.echo(error(r['msg']))
        return

    rs = ','.join(ip['address'] for ip in r['msg'])
    click.echo(info('Done.'))
    click.echo(info('%s bound' % rs))
Beispiel #20
0
def remove_containers(ctx, group, pod, host, version, ncontainer):
    eru = ctx.obj['eru']
    if not version:
        version = ctx.obj['short_sha1']
    r = eru.remove_containers(group, pod, ctx.obj['appname'], version, host,
                              ncontainer)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        # TODO get tasks id
        click.echo(info('Remove successfully'))
Beispiel #21
0
def deploy_public_container(ctx, group, pod, entrypoint, env, ncontainer, version):
    eru = ctx.obj['eru']
    if not version:
        version = ctx.obj['short_sha1']
    r = eru.deploy_public(group, pod, ctx.obj['appname'],
            ncontainer, version, entrypoint, env)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        # TODO get tasks id
        click.echo(info('Deploy successfully'))
Beispiel #22
0
def remove_containers(ctx, group, pod, host, version, ncontainer):
    eru = ctx.obj['eru']
    if not version:
        version = ctx.obj['short_sha1']
    r = eru.remove_containers(group, pod, ctx.obj['appname'],
            version, host, ncontainer)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        # TODO get tasks id
        click.echo(info('Remove successfully'))
Beispiel #23
0
def deploy_public_container(ctx, group, pod, entrypoint, env, ncontainer,
                            version):
    eru = ctx.obj['eru']
    if not version:
        version = ctx.obj['short_sha1']
    r = eru.deploy_public(group, pod, ctx.obj['appname'], ncontainer, version,
                          entrypoint, env)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        # TODO get tasks id
        click.echo(info('Deploy successfully'))
Beispiel #24
0
def alloc_resource(ctx, env, res_name, name):
    if name == '':
        name = res_name
    if res_name not in ('influxdb', 'mysql'):
        click.echo(error('Res name must be influxdb/mysql'))
        ctx.exit(-1)
    eru = ctx.obj['eru']
    r = eru.alloc_resource(ctx.obj['appname'], env, res_name, name)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        # TODO get tasks id
        click.echo(info('Alloc successfully'))
Beispiel #25
0
def alloc_resource(ctx, env, res_name, name):
    if name == '':
        name = res_name
    if res_name not in ('influxdb', 'mysql'):
        click.echo(error('Res name must be influxdb/mysql'))
        ctx.exit(-1)
    eru = ctx.obj['eru']
    r = eru.alloc_resource(ctx.obj['appname'], env, res_name, name)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        # TODO get tasks id
        click.echo(info('Alloc successfully'))
Beispiel #26
0
def set_app_env(ctx, env, vs):
    kv = {}
    for v in vs:
        if not '=' in v:
            click.echo(error('Env must be like key=value'))
            ctx.exit(-1)
        key, value = v.split('=', 1)
        kv[key] = value
    eru = ctx.obj['eru']
    try:
        eru.set_app_env(ctx.obj['appname'], env, **kv)
        click.echo(info('env variables set successfully'))
    except EruException as e:
        click.echo(error(e.message))
Beispiel #27
0
def set_app_env(ctx, env, vs):
    kv = {}
    for v in vs:
        if not '=' in v:
            click.echo(error('Env must be like key=value'))
            ctx.exit(-1)
        key, value = v.split('=', 1)
        kv[key] = value
    eru = ctx.obj['eru']
    r = eru.set_app_env(ctx.obj['appname'], env, **kv)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        click.echo(info('env variables set successfully'))
Beispiel #28
0
def register_app_version(ctx, raw):
    eru = ctx.obj['eru']
    try:
        eru.register_app_version(
            ctx.obj['appname'],
            ctx.obj['sha1'],
            ctx.obj['remote'],
            ctx.obj['appname'],
            ctx.obj['appconfig'],
            raw
        )
        click.echo(info('Register successfully'))
    except EruException as e:
        click.echo(error(e.message))
Beispiel #29
0
def set_app_env(ctx, env, vs):
    kv = {}
    for v in vs:
        if not '=' in v:
            click.echo(error('Env must be like key=value'))
            ctx.exit(-1)
        key, value = v.split('=', 1)
        kv[key] = value
    eru = ctx.obj['eru']
    r = eru.set_app_env(ctx.obj['appname'], env, **kv)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        click.echo(info('env variables set successfully'))
Beispiel #30
0
def deploy_public_container(ctx, group, pod, entrypoint, env, ncontainer, version, network):
    eru = ctx.obj['eru']

    network_ids = []
    for nname in network:
        n = eru.get_network_by_name(nname)
        if 'r' in n and n['r'] == 1:
            click.echo(error(n['msg']))
            ctx.exit(-1)
        network_ids.append(n['id'])

    if not version:
        version = ctx.obj['short_sha1']
    r = eru.deploy_public(group, pod, ctx.obj['appname'],
            ncontainer, version, entrypoint, env, network_ids)
    if r['r']:
        click.echo(error(r['msg']))
    else:
        # TODO get tasks id
        click.echo(info('Deploy successfully'))