- release_tracks: [ALPHA, BETA, GA]

  help_text:
    brief: Update a membership.
    description: Update an existing membership in Hub.
    examples: |
      Update a membership for a cluster:

        $ {command} a-membership

  request:
    collection: gkehub.projects.locations.memberships
    ALPHA:
      api_version: v1alpha2
    BETA:
      api_version: v1beta1
    GA:
      api_version: v1

  async:
    collection: gkehub.projects.locations.operations

  arguments:
    resource:
      spec: !REF googlecloudsdk.command_lib.container.hub.resources:membership
      help_text: membership resource representing a cluster in Hub.
    params:
    - api_field: membership.description
      release_tracks: [BETA]
      hidden: true
      arg_name: description
      help_text: Update description of the membership resource.
    - api_field: membership.externalId
      hidden: true
      arg_name: external-id
      help_text:  Update external-id of the membership resource.
    - api_field: membership.infrastructureType
      release_tracks: [ALPHA, BETA]
      hidden: true
      arg_name: infra-type
      choices:
      - arg_value: on-prem
        enum_value: ON_PREM
        help_text: |
          Specifies a cluster is running on an on-prem environment.
      - arg_value: multi-cloud
        enum_value: MULTI_CLOUD
        help_text: |
          Specified a cluster is running on public cloud infrastructure.
      help_text: |
        Specifies the infrastructure type that the cluster is running on.
    labels:
      api_field: membership.labels

  update:
    read_modify_update: true
