- release_tracks: [ALPHA, BETA, GA]
  hidden: true
  help_text:
    brief: Create a new membership for a cluster.
    description: |
      Create a Fleet 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 `MEMBERSHIP_NAME` in the active project's fleet:

        $ {command} MEMBERSHIP_NAME

      Create a new membership `MEMBERSHIP_NAME` for a GKE cluster:

        $ {command} MEMBERSHIP_NAME --gke-cluster-self-link=my-gke-cluster-self-link

  request:
    collection: gkehub.projects.locations.memberships
    ALPHA:
      api_version: v1alpha
    BETA:
      api_version: v1beta
    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.fleet.resources:membership
    params:
    - 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
