- release_tracks: [GA, ALPHA]
  help_text:
    brief: Update a Cloud TPU VM node.
    description: Update a Cloud TPU VM node.
    examples: |
      To modify a TPU VM node with ID `my-tpu` in the default user project and compute/zone by
      updating the description to "A new description", run:

        $ {command} my-tpu --description="A new description"

      To modify a TPU VM node with ID `my-tpu` in the default user project, network and compute/zone
      (with other defaults supplied by API) by adding labels `k0`, with value `value0` and label
      `k1` with value `value1` and removing labels with key `k2`, run:

        $ {command} my-tpu --update-labels=k0=value0,k1=value1 --remove-labels=k2

      Labels can be used to identify the TPU VM node. To list TPU VM nodes with the `k1:value1`
      label, run:

        $ {parent_command} list --filter='labels.k1=value1'

      To list only the labels when describing a resource, use `--format` to filter the result:

        $ {parent_command} describe my-tpu --format="default(labels)"

  request:
    collection: tpu.projects.locations.nodes
    ALPHA:
      api_version: v2alpha1
      modify_request_hooks:
      - googlecloudsdk.command_lib.compute.tpus.tpu_vm.util:GenerateUpdateMask:api_version=v2alpha1
    GA:
      api_version: v2
      modify_request_hooks:
      - googlecloudsdk.command_lib.compute.tpus.tpu_vm.util:GenerateUpdateMask:api_version=v2

  async:
    collection: tpu.projects.locations.operations
    extract_resource_result: false
    ALPHA:
      api_version: v2alpha1
    GA:
      api_version: v2

  arguments:
    resource:
      help_text: Name of the Cloud TPU VM node to update.
      spec: !REF googlecloudsdk.command_lib.compute.tpus.tpu_vm.resources:tpu

    params:
    - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:description
    - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:enable_external_ips
    - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:update_labels
    - group:
        required: false
        mutex: true
        params:
        - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:clear_labels
        - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:remove_labels
    - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:add_tags
    - group:
        required: false
        mutex: true
        params:
        - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:clear_tags
        - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:remove_tags
    - group:
        required: false
        mutex: true
        params:
        - _REF_: googlecloudsdk.command_lib.compute.tpus.flags:metadata_from_file
        - group:
            required: false
            params:
            - _REF_: googlecloudsdk.command_lib.compute.tpus.flags:update_metadata
            - group:
                required: false
                mutex: true
                params:
                - _REF_: googlecloudsdk.command_lib.compute.tpus.flags:clear_metadata
                - _REF_: googlecloudsdk.command_lib.compute.tpus.flags:remove_metadata
    - group:
        required: false
        params:
        - group:
            mutex: true
            params:
            - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:attach_disk
            - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:detach_disk
        - _REF_: googlecloudsdk.command_lib.compute.tpus.tpu_vm.flags:worker
          release_tracks: [ALPHA]

  update:
    read_modify_update: true
    disable_auto_field_mask: true

  output:
    format: none
