release_tracks: [ALPHA, BETA, GA]

help_text:
  brief: |
    Reschedule maintenance window for a Memcache instance.
  description: |
    Reschedule maintenance window for a Memcache instance.
  examples: |
    To reschedule maintenance window for an instance with the name 'my-memcache-instance' in region
    'us-central-1' with next available window, run:

      $ {command} my-memcache-instance --region=us-central1 --reschedule-type=next-available-window

arguments:
  resource:
    spec: !REF googlecloudsdk.command_lib.memcache.resources:instance
    help_text: |
      Arguments and flags that specify the Cloud Memorystore for Memcache instance you
      want to reschedule maintenance window.
  params:
  - arg_name: reschedule-type
    api_field: rescheduleMaintenanceRequest.rescheduleType
    required: true
    choices:
    - arg_value: IMMEDIATE
      enum_value: IMMEDIATE
      help_text: Reschedule the maintenance to perform now.
    - arg_value: NEXT-AVAILABLE-WINDOW
      enum_value: NEXT_AVAILABLE_WINDOW
      help_text: Reschedule the maintenance to the next available window.
    - arg_value: SPECIFIC-TIME
      enum_value: SPECIFIC_TIME
      help_text: Reschedule the maintenance to a specific time.
    help_text: |
      Reschedule type to use for the reschedule maintenance window.
  - arg_name: schedule-time
    api_field: rescheduleMaintenanceRequest.scheduleTime
    help_text: |
      Time in RFC3339 format, for example: 2012-11-15T16:19:00.094Z

async:
  collection: memcache.projects.locations.operations

request:
  ALPHA:
    api_version: v1beta2
    modify_request_hooks:
    - googlecloudsdk.command_lib.memcache.instances_reschedule_util:CheckSpecificTimeField
  BETA:
    api_version: v1beta2
    modify_request_hooks:
    - googlecloudsdk.command_lib.memcache.instances_reschedule_util:CheckSpecificTimeField
  GA:
    api_version: v1
    modify_request_hooks:
    - googlecloudsdk.command_lib.memcache.instances_reschedule_util:CheckSpecificTimeField
  collection: memcache.projects.locations.instances
  method: rescheduleMaintenance
