Beispiel #1
0
def command_info(args):
    info = armada_api.get_json('info')

    output_header = ['Current', 'Ship name', 'Ship role', 'API address', 'API status', 'Version']
    output_rows = [output_header]

    ship_role_counts = Counter()
    for ship in info:
        current_string = '->'.rjust(len(output_header[0])) if ship['is_current'] else ''
        if ship['status'] == 'passing':
            ship_role_counts[ship['role']] += 1
        output_rows.append([current_string, ship['name'], ship['role'], ship['address'], ship['status'],
                            ship['version']])

    print_table(output_rows)

    if ship_role_counts['leader'] == 0:
        print('\nERROR: There is no active leader. Armada is not working!', file=sys.stderr)
    elif ship_role_counts['commander'] == 0:
        print('\nWARNING: We cannot survive leader leaving/failure.', file=sys.stderr)
        print('Such configuration should only be used in development environments.', file=sys.stderr)
    elif ship_role_counts['commander'] == 1:
        print('\nWARNING: We can survive leaving of commander but commander failure or leader leave/failure will be '
              'fatal.', file=sys.stderr)
        print('Such configuration should only be used in development environments.', file=sys.stderr)
    else:
        failure_tolerance = ship_role_counts['commander'] / 2
        print('\nWe can survive failure of {0} {1} (including leader).'.format(
            failure_tolerance, 'commander' if failure_tolerance == 1 else 'commanders'),
            file=sys.stderr)
def command_dockyard_list(args):
    output_header = ['Default', 'Alias', 'Address', 'User', 'Password']
    output_rows = [output_header]
    alias_list = alias.get_list()
    for alias_dict in alias_list:
        default_string = '->'.rjust(len(output_header[0])) if alias_dict['is_default'] else ''
        row = [default_string, alias_dict['name'], alias_dict['address'], alias_dict.get('user', ''),
               _hide_password(alias_dict.get('password', ''))]
        output_rows.append(row)
    print_table(output_rows)
Beispiel #3
0
def command_dockyard_list(args):
    output_header = ['Default', 'Alias', 'Address', 'User', 'Password']
    output_rows = [output_header]
    alias_list = alias.get_list()
    for alias_dict in alias_list:
        default_string = '->'.rjust(len(
            output_header[0])) if alias_dict['is_default'] else ''
        row = [
            default_string, alias_dict['name'], alias_dict['address'],
            alias_dict.get('user', ''),
            _hide_password(alias_dict.get('password', ''))
        ]
        output_rows.append(row)
    print_table(output_rows)
Beispiel #4
0
def command_list(args):
    service_list = get_json('list', vars(args))

    if args.quiet:
        for container_id in {
                service['container_id']
                for service in service_list
        }:
            print(container_id)
        return

    output_header = ['Name', 'Address', 'ID', 'Status', 'Env', 'AppID']
    if args.uptime:
        output_header.append("Created (UTC)")
    if args.microservice_version:
        output_header.append("Microservice Version")
    output_rows = [output_header]

    for service in service_list:
        service_tags = service['tags']

        output_row = [
            service['name'], service['address'], service['container_id'],
            service['status'],
            service_tags.get('env') or '-',
            service_tags.get('app_id') or '-'
        ]
        if args.uptime:
            creation_time = epoch_to_iso(service['start_timestamp'])
            output_row.append(creation_time)
        if args.microservice_version:
            microservice_version = service.get('microservice_version', '?')
            output_row.append(microservice_version)
        output_rows.append(output_row)

    print_table(output_rows)