コード例 #1
0
ファイル: app.py プロジェクト: youyangli7/eru-cli
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)))
コード例 #2
0
ファイル: app.py プロジェクト: youyangli7/eru-cli
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)))
コード例 #3
0
ファイル: app.py プロジェクト: neuront/eru-cli
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)))
コード例 #4
0
ファイル: entity.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #5
0
ファイル: entity.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #6
0
ファイル: entity.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #7
0
ファイル: entity.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #8
0
ファイル: entity.py プロジェクト: youyangli7/eru-cli
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))
コード例 #9
0
ファイル: entity.py プロジェクト: youyangli7/eru-cli
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))
コード例 #10
0
ファイル: entity.py プロジェクト: youyangli7/eru-cli
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))
コード例 #11
0
ファイル: entity.py プロジェクト: youyangli7/eru-cli
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))
コード例 #12
0
ファイル: entity.py プロジェクト: youyangli7/eru-cli
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))
コード例 #13
0
ファイル: app.py プロジェクト: marswon/eru-cli
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'))
コード例 #14
0
ファイル: output.py プロジェクト: Johnhacker/eru-cli
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)
コード例 #15
0
ファイル: app.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #16
0
ファイル: output.py プロジェクト: orzjerry/eru-cli
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)
コード例 #17
0
ファイル: app.py プロジェクト: marswon/eru-cli
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'))
コード例 #18
0
ファイル: app.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #19
0
ファイル: app.py プロジェクト: sdgdsffdsfff/eru-cli
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))
コード例 #20
0
ファイル: app.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #21
0
ファイル: app.py プロジェクト: Johnhacker/eru-cli
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'))
コード例 #22
0
ファイル: app.py プロジェクト: marswon/eru-cli
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'))
コード例 #23
0
ファイル: app.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #24
0
ファイル: app.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #25
0
ファイル: app.py プロジェクト: marswon/eru-cli
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'))
コード例 #26
0
ファイル: app.py プロジェクト: youyangli7/eru-cli
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))
コード例 #27
0
ファイル: app.py プロジェクト: orzjerry/eru-cli
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'))
コード例 #28
0
ファイル: app.py プロジェクト: youyangli7/eru-cli
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))
コード例 #29
0
ファイル: app.py プロジェクト: marswon/eru-cli
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'))
コード例 #30
0
ファイル: app.py プロジェクト: marswon/eru-cli
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'))