release_tracks: [ALPHA, BETA, GA]

help_text:
  brief: |
    Failover a standard tier Cloud Memorystore for Redis instance from the master node to its
    replica.
  description: |
    Failover a standard tier Cloud Memorystore for Redis instance from the master node to its
    replica.
  examples: |
    To failover an instance with the name 'my-redis-instance' in region 'us-central-1', run:

      $ {command} my-redis-instance --region=us-central1

    To failover an instance with the name 'my-redis-instance' in region 'us-central-1' without
    attempting to limit data loss, run:

      $ {command} my-redis-instance --region=us-central1 --data-protection-mode=force-data-loss

arguments:
  resource:
    spec: !REF googlecloudsdk.command_lib.redis.resources:instance
    help_text: |
      Arguments and flags that specify the standard tier Cloud Memorystore for Redis instance you
      want to failover.
  params:
  - arg_name: data-protection-mode
    api_field: failoverInstanceRequest.dataProtectionMode
    choices:
    - arg_value: force-data-loss
      enum_value: FORCE_DATA_LOSS
      help_text: Failover without data loss protection. Can cause significant data loss.
    - arg_value: limited-data-loss
      enum_value: LIMITED_DATA_LOSS
      help_text: Failover with data loss protection that ensures loss is within system thresholds.
    help_text: |
      Data protection mode to use for the failover. If not specified, defaults to
      'limited-data-loss'.

input:
  confirmation_prompt: |-
    WARNING: Failover can result in the loss of unreplicated data. Using 'force-data-loss' can potentially cause significant data loss. See manual failover documentation for more details.

async:
  collection: redis.projects.locations.operations

request:
  api_version: v1
  collection: redis.projects.locations.instances
  method: failover

output:
  format: none
