File: //snap/google-cloud-cli/396/lib/surface/container/backup_restore/backup_plans/create.yaml
- release_tracks: [ALPHA, BETA]
  help_text:
    brief: Create a backup plan.
    description: |
      Create a Backup for GKE backup plan.
      ## EXAMPLES
      To create a backup plan ``my-backup-plan'' in project ``my-project'' in location ``us-central1'', run:
        $ {command} my-backup-plan --project=my-project --location=us-central1 --cluster=projects/my-project/locations/us-central1/clusters/my-cluster --all-namespaces
  request:
    collection: gkebackup.projects.locations.backupPlans
    api_version: v1
  async:
    collection: gkebackup.projects.locations.operations
  arguments:
    resource:
      help_text: |
        Name of the backup plan to create. Once the plan is created, this name can't be changed.
        This must be 63 or fewer characters long and must be unique within the project and location.
        The name may be provided either as a relative name, e.g.
        `projects/<project>/locations/<location>/backupPlans/<backupPlan>`
        or as a single ID name (with the parent resources provided via options or through
        properties), e.g.
        `BACKUP_PLAN --project=<project> --location=<location>`.
      spec: !REF googlecloudsdk.command_lib.container.backup_restore.resources:positional_backup_plan
    params:
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:backup_plan_cluster
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:backup_plan_description
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:deactivated
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:backup_plan_tags
    # Retention policy
    - group:
        required: false
        params:
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:backup_delete_lock_days
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:backup_retain_days
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:locked
    # Backup schedule
    - group:
        params:
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:paused
        - group:
            params:
            - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:cron_schedule
            - group:
                params:
                - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:target_rpo_minutes
                  required: true
                - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:exclusion_windows_file
    # Backup scope
    - group:
        required: true
        mutex: true
        params:
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:all_namespaces
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:selected_namespaces
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:selected_applications
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:selected_namespace_labels
    # Backup config
    - group:
        params:
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:include_volume_data
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:include_secrets
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:encryption_key
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:permissive_mode
    labels:
      api_field: backupPlan.labels