- release_tracks: [ALPHA, BETA]
  help_text:
    brief: Create a restore plan.
    description: |
      Create a Backup for GKE restore plan.

      ## EXAMPLES

      To create a restore plan ``my-restore-plan'' in project ``my-project'' in location ``us-central1'', run:

        $ {command} my-restore-plan --project=my-project --location=us-central1 --cluster=projects/my-project/locations/us-central1/clusters/my-cluster --backup-plan=projects/my-project/locations/us-central1/backupPlans/my-backup-plan --all-namespaces --namespaced-resource-restore-mode=merge-skip-on-conflict

  request:
    collection: gkebackup.projects.locations.restorePlans
    api_version: v1

  async:
    collection: gkebackup.projects.locations.operations

  arguments:
    resource:
      help_text: |
        Name of the restore 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>/restorePlans/<restorePlan>`
        or as a single ID name (with the parent resources provided via options or through
        properties), e.g.
        `RESTORE_PLAN --project=<project> --location=<location>`.

      spec: !REF googlecloudsdk.command_lib.container.backup_restore.resources:positional_restore_plan

    params:
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_cluster
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_backup_plan
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_description
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_tags

    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:volume_data_restore_policy
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:volume_data_restore_policy_bindings
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:namespaced_resource_restore_mode
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:cluster_resource_conflict_policy
    - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_restore_order_file

    # Restore scope

    - group:
        required: true
        mutex: true
        help_text: |
          The scope of namespaced resources to restore.
        params:
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_all_namespaces
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_no_namespaces
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_selected_namespaces
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_excluded_namespaces
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_selected_applications

    - group:
        help_text: |
          The scope of cluster-scoped resources to restore.
        mutex: true
        params:
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:cluster_resource_selected_group_kinds
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:cluster_resource_excluded_group_kinds
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:cluster_resource_all_group_kinds
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:cluster_resource_no_group_kinds

    - group:
        mutex: true
        params:
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_substitution_rules_file
        - _REF_: googlecloudsdk.command_lib.container.backup_restore.flags:restore_plan_transformation_rules_file

    labels:
      api_field: restorePlan.labels
