def _init_runbook_args_parser()

in gcpdiag/runbook/command.py [0:0]


def _init_runbook_args_parser():
  parser = argparse.ArgumentParser(
      description='Run diagnostics in GCP projects.', prog='gcpdiag runbook')

  parser.add_argument(
      '--auth-adc',
      help='Authenticate using Application Default Credentials (default)',
      action='store_true')

  parser.add_argument(
      '--auth-key',
      help='Authenticate using a service account private key file',
      metavar='FILE')

  parser.add_argument(
      '--billing-project',
      metavar='P',
      help='Project used for billing/quota of API calls done by gcpdiag '
      '(default is the inspected project, requires '
      '\'serviceusage.services.use\' permission)')

  parser.add_argument('-v',
                      '--verbose',
                      action='count',
                      default=config.get('verbose'),
                      help='Increase log verbosity')

  parser.add_argument('--logging-ratelimit-requests',
                      metavar='R',
                      type=int,
                      help=('Configure rate limit for logging queries (default:'
                            f" {config.get('logging_ratelimit_requests')})"))

  parser.add_argument(
      '--logging-ratelimit-period-seconds',
      metavar='S',
      type=int,
      help=('Configure rate limit period for logging queries (default:'
            f" {config.get('logging_ratelimit_period_seconds')} seconds)"))

  parser.add_argument('--logging-page-size',
                      metavar='P',
                      type=int,
                      help=('Configure page size for logging queries (default:'
                            f" {config.get('logging_page_size')})"))

  parser.add_argument(
      '--logging-fetch-max-entries',
      metavar='E',
      type=int,
      help=('Configure max entries to fetch by logging queries (default:'
            f" {config.get('logging_fetch_max_entries')})"))

  parser.add_argument(
      '--logging-fetch-max-time-seconds',
      metavar='S',
      type=int,
      help=('Configure timeout for logging queries (default:'
            f" {config.get('logging_fetch_max_time_seconds')} seconds)"))

  parser.add_argument(
      'runbook',
      help=
      'Runbook to execute in the format product/runbook-name or product/name',
      nargs='?')

  parser.add_argument('--bundle-spec',
                      nargs='*',
                      default=[],
                      action=ParseBundleSpec,
                      type=argparse.FileType('r'),
                      help='Path to YAML file containing bundle specifications')
  parser.add_argument(
      '-p',
      '--parameter',
      action=ParseMappingArg,
      nargs=1,
      default=models.Parameter(),
      dest='parameter',
      metavar='key:value',
      help=
      ('One or more resource parameters as key-value pair(s) to scope inspection '
       '(e.g.: -p source_ip=xx:xx:xx:xx -p user:user@company.com)'))

  parser.add_argument(
      '-a',
      '--auto',
      help=('Execute runbook autonomously. Use this to skip human tasks. '
            'Incomplete tasks are added to the report.'),
      action='store_true')

  parser.add_argument(
      '--report-dir',
      metavar='FILE',
      default=config.get('report_dir'),
      type=expand_and_validate_path,
      help=
      ('Specifies the full path to the directory where reports '
       'will be saved (default: /tmp/gcpdiag or in Cloud Shell $HOME/tmp/gcpdiag)'
      ))
  parser.add_argument('--interface',
                      metavar='FORMATTER',
                      default=config.get('interface'),
                      type=str,
                      help='What interface as one of [cli, api] (default: cli)')

  parser.add_argument('--universe-domain',
                      type=str,
                      default=config.get('universe_domain'),
                      help='Domain name of APIs')

  parser.add_argument('--reason',
                      type=str,
                      default=config.get('reason'),
                      help='The reason for running gcpdiag')

  return parser