- release_tracks: [ALPHA, BETA, GA]
  hidden: true
  help_text:
    brief: Create a new membership for a cluster.
    description: |
      Create a Hub membership resource corresponding to the cluster.

      This command does not install the Connect Agent or in-cluster Kubernetes Resources that are
      required to connect the cluster with Google. For complete cluster registration, consider using
      the command: `{parent_command} register --help`.
    examples: |
      Create a new membership for a cluster in Hub:

        $ {command} a-membership

      Create a new membership for a GKE cluster:

        $ {command} a-membership --gke-cluster-self-link=my-gke-cluster-self-link

  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:
      help_text: The cluster membership to create.
      spec: !REF googlecloudsdk.command_lib.container.hub.resources:membership
    params:
    - api_field: membership.description
      release_tracks: [BETA]
      arg_name: description
      required: true
      help_text: Description of the membership resource.
    - api_field: membership.externalId
      arg_name: external-id
      help_text:  External-id of the membership resource.
    - api_field: membership.endpoint.gkeCluster.resourceLink
      arg_name: gke-cluster-self-link
      help_text: |
        GKE cluster self-link of the cluster represented by this membership;
        for example,
        '//container.googleapis.com/projects/my-project/locations/us-central1-a/clusters/my-cluster.'
        This is only valid if the represented cluster is a GKE cluster. The
        provided self-link will be validated to confirm that it maps to the
        cluster represented by this membership.
    labels:
      api_field: membership.labels
