def cli()

in tools/gmon/gmon/cli.py [0:0]


def cli(parsers, args):
    """Main CLI function.

    Args:
        parsers (list): List of parsers.
        args (Namespace): Argparsed CLI parameters.
    """
    setup_logging()

    # Print help if no subparser is used
    parser = args.parser
    if not parser:
        parsers['root'].print_help()
        sys.exit(1)

    # Print help if no command is used
    command = getattr(args, 'operation', None)
    if not command:
        parsers[parser].print_help()
        sys.exit(1)

    # Parse optional args like limit, filters, fields...
    metric_type = getattr(args, 'metric-type', None)
    limit = getattr(args, 'limit', None)
    fields = getattr(args, 'fields', None)
    fields = parse_fields(fields)
    filters = getattr(args, 'filters', [])
    filters = parse_filters(filters)
    response = None

    if parser == 'metrics':
        client = MetricsClient(args.project)
        method = getattr(client, command)

        if command in ['get', 'delete']:
            response = method(metric_type)

        elif command in ['create']:
            response = method(metric_type, args.metric_kind, args.value_type,
                              args.description)

        elif command in ['list']:
            response = method(pattern=args.regex, fields=fields)

        elif command in ['inspect']:
            response = method(metric_type, window=args.window, filters=filters)
            filters = {}  # already using API filters

        elif command in ['delete_unused']:
            response = method(pattern=args.regex, window=args.window)

        # Format, filter and print response
        return fmt_response(response, limit, fields, filters)

    elif parser == 'accounts':
        if 'project' in args:
            client = AccountClient(project_id=args.project,
                                   no_poll=args.no_poll)
        else:
            client = AccountClient()
        method = getattr(client, command)
        if command in ['get', 'create', 'delete', 'list']:
            response = method()
        elif command in ['link', 'unlink']:
            response = method(project_id=args.project_id)
        return response

    elif parser == 'services':
        client = ServiceMonitoringClient(project_id=args.project)
        if command in ['get', 'create', 'delete']:
            method = getattr(client, command + '_service')
            response = method(args.service_id)
        else:
            method = getattr(client, command + '_services')
            response = method()
        return fmt_response(response, limit, fields, filters)

    elif parser == 'slos':
        client = ServiceMonitoringClient(project_id=args.project)
        if command in ['get', 'create', 'delete']:
            method = getattr(client, command + '_slo')
            response = method(args.service_id, args.slo_id)
        else:
            method = getattr(client, command + '_slos')
            response = method(args.service_id)
        return fmt_response(response, limit, fields, filters)