示例#1
0
文件: commands.py 项目: rmoorman/noel
def logs_command(args):
    """Gets (or streams) the logs for an application."""
    args.app = args.app.lower()

    k8s = Kubernetes(args.kubernetes_url, namespace='noelapp')
    pods = k8s.pods(params={'labelSelector': 'noel-app={}'.format(args.app)})

    if not pods['items']:
        logger.error('No running pods found for app {}'.format(args.app))
        return False

    pod = pods['items'].pop()
    logger.info('Using pod {}'.format(pod['metadata']['name']))

    if args.follow:
        logger.warning('Streaming logs. Press ctrl+c to quit.')

    try:
        it = k8s.logs(pod['metadata']['name'],
                      container='noel-app',
                      lines=args.lines,
                      follow=args.follow)

        for log in it:
            print(log)

    except KeyboardInterrupt:
        pass
示例#2
0
文件: commands.py 项目: rmoorman/noel
def delete_app_command(args):
    """Deletes an app and all cluster resources associated with it."""
    args.app = args.app.lower()

    k8s = Kubernetes(args.kubernetes_url, namespace='noelapp')
    deployer.delete_app(k8s, args.app)

    logger.info('Application {} deleted'.format(args.app))
示例#3
0
文件: commands.py 项目: rmoorman/noel
def deploy_image_command(args):
    """Updates an application with the given docker image."""
    args.app = args.app.lower()

    k8s = Kubernetes(args.kubernetes_url, namespace='noelapp')
    deployer.deploy_app(k8s, args.app, image=args.image)

    logger.info('Application {} updated with image {}'.format(
        args.app, args.image))
示例#4
0
文件: commands.py 项目: rmoorman/noel
def add_git_remote_command(args):
    """Adds the remote builder as a git remote to the current repository."""

    k8s = Kubernetes(args.kubernetes_url, namespace='noel')
    remote.add_builder_git_remote(k8s, args.app, args.remote_name)

    logger.info(
        'Git remote added. Use `git push {} master` to deploy application {}.'.
        format(args.remote_name, args.app))
示例#5
0
文件: commands.py 项目: rmoorman/noel
def add_ssh_key_command(args):
    """Add an authorized SSH key to the remote builder."""
    with open(os.path.expanduser(args.ssh_key), 'r') as f:
        ssh_key = f.read()

    k8s = Kubernetes(args.kubernetes_url, namespace='noel')
    ssh_keys.add_key(k8s, args.hostname, ssh_key)

    logger.info('SSH Key {} added for as {}'.format(args.ssh_key,
                                                    args.hostname))
示例#6
0
文件: commands.py 项目: rmoorman/noel
def set_config_command(args):
    """Sets the current configuration values for an application."""
    args.app = args.app.lower()

    data = {pair[0]: pair[1] for pair in [x.split('=', 1) for x in args.pairs]}

    k8s = Kubernetes(args.kubernetes_url, namespace='noelapp')
    config = deployer.update_config(k8s, args.app, data)
    deployer.deploy_app(k8s, args.app, config=config)

    logger.info('Config updated for app {}'.format(args.app))
示例#7
0
文件: commands.py 项目: rmoorman/noel
def get_config_command(args):
    """Gets the current configuration values for an application."""
    args.app = args.app.lower()

    k8s = Kubernetes(args.kubernetes_url, namespace='noelapp')
    config = deployer.get_config(k8s, args.app)

    if not config:
        logger.error('No config for app {}'.format(args.app))
        return False

    for k, v in config['data'].iteritems():
        print('{}: {}'.format(k, v))
示例#8
0
文件: commands.py 项目: rmoorman/noel
def scale_command(args):
    """Scales the number of replicas for an application."""
    args.app = args.app.lower()

    k8s = Kubernetes(args.kubernetes_url, namespace='noelapp')

    rc = deployer.get_replication_controller(k8s, args.app)

    if not rc:
        logger.error('No replication controller found for app {}.'.format(
            args.app))
        return False

    k8s.scale(rc['metadata']['name'], replicas=args.replicas)

    logger.info('Scaled app {} to {} replicas.'.format(args.app,
                                                       args.replicas))