# -*- coding: utf-8 -*- #
# Copyright 2025 Google LLC. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# NOTE: This file is autogenerated and should not be edited by hand.
# AUTOGEN_CLI_VERSION: HEAD
- release_tracks:
  - ALPHA
  auto_generated: true
  help_text:
    brief: Updates the parameters of a single Managed Lustre instance
    description: |
      Updates the parameters of a single Managed Lustre instance.
    examples: |-
      To update the description of an instance `my-instance` in location `us-central1-a` run:

      $ {command} my-instance --location=us-central1-a --description="<updated description>"
  arguments:
    params:
    - help_text: |-
        Identifier.
        The name of the instance.
      is_positional: true
      is_primary_resource: true
      resource_spec: !REF googlecloudsdk.command_lib.lustre.v1alpha_resources:projects_locations_instances
      required: true
    - arg_name: capacity-gib
      api_field: instance.capacityGib
      required: false
      repeated: false
      type: long
      help_text: |-
        The storage capacity of the instance in gibibytes (GiB). Allowed values
        are from `18000` to `7632000`, depending on the `perUnitStorageThroughput`.
        See [Performance tiers and maximum storage
        capacities](https://cloud.google.com/managed-lustre/docs/create-instance#performance-tiers)
        for specific minimums, maximums, and step sizes for each performance tier.
    - arg_name: description
      api_field: instance.description
      required: false
      repeated: false
      help_text: |-
        A user-readable description of the instance.
    - arg_name: labels
      api_field: instance.labels
      required: false
      repeated: true
      help_text: |-
        Labels as key value pairs.
      clearable: true
      spec:
      - api_field: key
      - api_field: value
    - arg_name: per-unit-storage-throughput
      api_field: instance.perUnitStorageThroughput
      required: false
      repeated: false
      type: long
      help_text: |-
        The throughput of the instance in MB/s/TiB. Valid values are 125, 250,
        500, 1000.
        See [Performance tiers and maximum storage
        capacities](https://cloud.google.com/managed-lustre/docs/create-instance#performance-tiers)
        for more information.
    - arg_name: gke-support-enabled
      api_field: instance.gkeSupportEnabled
      action: store_true_false
      required: false
      type: bool
      help_text: |-
        Indicates whether you want to enable support for GKE clients. By default,
        GKE clients are not supported.
        Deprecated. No longer required for GKE instance creation.
    - group:
        api_field: instance.accessRulesOptions
        arg_name: ''
        clearable: true
        required: false
        hidden: true
        help_text: |-
          IP-based access rules for the Managed Lustre instance. These options
          define the root user squash configuration.
        params:
        - arg_name: access-rules
          api_field: instance.accessRulesOptions.accessRules
          required: false
          repeated: true
          help_text: |-
            The access rules for the instance.
          clearable: true
          spec:
          - api_field: name
            help_text: |-
              The name of the access rule policy group.
              Must be 16 characters or less and include only alphanumeric characters
              or '_'.
          - api_field: ipAddressRanges
            help_text: |-
              The IP address ranges to which to apply this access rule. Accepts
              non-overlapping CIDR ranges (e.g., `192.168.1.0/24`) and IP addresses
              (e.g., `192.168.1.0`).
          - api_field: accessMode
            help_text: |-
              The access mode for the access rule nodemap.
              Default is [READ_WRITE][google.cloud.lustre.v1alpha.AccessRulesOptions.AccessRule.AccessMode.READ_WRITE].
          - api_field: squashMode
            help_text: |-
              Squash mode for the access rule.
          - api_field: squashUid
            help_text: |-
              Squash UID for the access rule. If the squash mode for this rule is
              [ROOT_SQUASH][google.cloud.lustre.v1alpha.AccessRulesOptions.SquashMode.ROOT_SQUASH], root users matching the
              [ip_ranges][AccessRule.ip_ranges] are squashed to this UID.
              Defaults to 0 (no root squash).
          - api_field: squashGid
            help_text: |-
              Squash GID for the access rule. If the squash mode for this rule is
              [ROOT_SQUASH][google.cloud.lustre.v1alpha.AccessRulesOptions.SquashMode.ROOT_SQUASH], root users matching the
              [ip_ranges][AccessRule.ip_ranges] are squashed to this GID.
              Defaults to 0 (no root squash).
          - api_field: mountableSubdirectories
            help_text: |-
              The list of non-root directories that can be mounted from
              clients in this NID range subset. Currently, there can be only a single
              directory at most. If no directory is mentioned, then the root directory
              will be accessible.
        - arg_name: default-squash-mode
          api_field: instance.accessRulesOptions.defaultSquashMode
          required: false
          help_text: |-
            The squash mode for the default access rule.
          choices:
          - arg_value: no-squash
            enum_value: NO_SQUASH
            help_text: |-
              Squash is disabled.

              If set inside an [AccessRule][google.cloud.lustre.v1alpha.AccessRulesOptions.AccessRule], root users matching the
              [ip_ranges][AccessRule.ip_ranges] are not squashed.

              If set as the [default_squash_mode][google.cloud.lustre.v1alpha.AccessRulesOptions.default_squash_mode], root squash is
              disabled for this instance.

              If the default squash mode is `NO_SQUASH`, do not set the
              [default_squash_uid][google.cloud.lustre.v1alpha.AccessRulesOptions.default_squash_uid] or
              [default_squash_gid][google.cloud.lustre.v1alpha.AccessRulesOptions.default_squash_gid], or an `invalid argument` error
              is returned.
          - arg_value: root-squash
            enum_value: ROOT_SQUASH
            help_text: |-
              Root user squash is enabled.

              Not supported inside an [AccessRule][google.cloud.lustre.v1alpha.AccessRulesOptions.AccessRule].

              If set as the [default_squash_mode][google.cloud.lustre.v1alpha.AccessRulesOptions.default_squash_mode],
              root users not matching any of the [access_rules][google.cloud.lustre.v1alpha.AccessRulesOptions.access_rules] are
              squashed to the [default_squash_uid][google.cloud.lustre.v1alpha.AccessRulesOptions.default_squash_uid] and
              [default_squash_gid][google.cloud.lustre.v1alpha.AccessRulesOptions.default_squash_gid].
          - arg_value: all-users-squash
            enum_value: ALL_USERS_SQUASH
            help_text: |-
              All users squashed to the [squash_uid][google.cloud.lustre.v1alpha.AccessRulesOptions.AccessRule.squash_uid] and
              [squash_gid][google.cloud.lustre.v1alpha.AccessRulesOptions.AccessRule.squash_gid] for the access rule.
              If this is for the [default_squash_mode][google.cloud.lustre.v1alpha.AccessRulesOptions.default_squash_mode], then the
              [default_squash_uid][google.cloud.lustre.v1alpha.AccessRulesOptions.default_squash_uid] and
              [default_squash_gid][google.cloud.lustre.v1alpha.AccessRulesOptions.default_squash_gid] will be squashed.
        - arg_name: default-squash-uid
          api_field: instance.accessRulesOptions.defaultSquashUid
          required: false
          repeated: false
          type: int
          help_text: |-
            The user squash UID for the default access rule.
            This user squash UID applies to all root users connecting from clients
            that are not matched by any of the access rules. If not set, the default
            is 0 (no UID squash).
        - arg_name: default-squash-gid
          api_field: instance.accessRulesOptions.defaultSquashGid
          required: false
          repeated: false
          type: int
          help_text: |-
            The user squash GID for the default access rule.
            This user squash GID applies to all root users connecting from clients
            that are not matched by any of the access rules. If not set, the default
            is 0 (no GID squash).
    - arg_name: request-id
      api_field: requestId
      required: false
      repeated: false
      help_text: |-
        An optional request ID to identify requests. Specify a unique request ID
        so that if you must retry your request, the server will know to ignore
        the request if it has already been completed. The server will guarantee
        that for at least 60 minutes since the first request.

        For example, consider a situation where you make an initial request and the
        request times out. If you make the request again with the same request
        ID, the server can check if original operation with the same request ID
        was received, and if so, will ignore the second request. This prevents
        clients from accidentally creating duplicate commitments.

        The request ID must be a valid UUID with the exception that zero UUID is
        not supported (00000000-0000-0000-0000-000000000000).
  request:
    api_version: v1alpha
    collection:
    - lustre.projects.locations.instances
  async:
    collection:
    - lustre.projects.locations.operations
  update:
    read_modify_update: true
