- release_tracks: [GA, BETA, ALPHA]

  help_text:
    brief: |
      Create a workstation cluster.
    description: |
      Create a workstation cluster.
    examples: |
      To create a public cluster `my-cluster` in region `us-central1`, run:

        $ {command} my-cluster --region=us-central1

      To create a private cluster 'my-private-cluster' associated with network 'my-network' and
      subnetwork 'my-subnetwork'. run:

        $ {command} my-private-cluster --region=us-central1 --enable-private-endpoint
          --network='my-network' --subnetwork='my-subnetwork'

  arguments:
    resource:
      spec: !REF googlecloudsdk.command_lib.workstations.resources:cluster
      help_text: |
        Arguments and flags that specify the cluster to create.
    params:
    - arg_name: network
      api_field: workstationCluster.network
      help_text: |
        Fully specified network path for instances created in this cluster.
    - arg_name: subnetwork
      api_field: workstationCluster.subnetwork
      help_text: |
        Fully specified subnetwork path for instances created in this cluster.
    - arg_name: labels
      metavar: KEY=VALUE
      api_field: workstationCluster.labels
      type: "googlecloudsdk.calliope.arg_parsers:ArgDict:"
      help_text: |
        Labels that are applied to the cluster and propagated to the underlying Compute Engine
        resources.
    - arg_name: enable-private-endpoint
      api_field: workstationCluster.privateClusterConfig.enablePrivateEndpoint
      type: bool
      default: false
      help_text: |
        Default is false.
        If specified, the cluster will be assigned an internal IP address to the Cluster Gateway.
        This isolates the cluster's workstations from public networks, but requires additional
        configuration. Learn more: https://cloud.google.com/workstations/docs.
    - arg_name: domain
      api_field: workstationCluster.domainConfig.domain
      type: str
      help_text: |
        Domain used by Workstations for HTTP ingress.
    - arg_name: tags
      api_field: workstationCluster.tags
      metavar: KEY=VALUE
      type: "googlecloudsdk.calliope.arg_parsers:ArgDict:"
      help_text: |
        Resource manager tags to be bound to this cluster.
        For example:
         "123/environment=production"
         "123/costCenter=marketing"

  request:
    GA:
      api_version: v1
    BETA:
      api_version: v1beta
    ALPHA:
      api_version: v1beta
    collection: workstations.projects.locations.workstationClusters

  async:
    collection: workstations.projects.locations.operations
