// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// ** This file is automatically generated by gapic-generator-typescript. **
// ** https://github.com/googleapis/gapic-generator-typescript **
// ** All changes to this file may be overwritten. **



'use strict';

function main(parent, membershipId, resource) {
  // [START gkehub_v1beta1_generated_GkeHubMembershipService_CreateMembership_async]
  /**
   * TODO(developer): Uncomment these variables before running the sample.
   */
  /**
   *  Required. The parent (project and location) where the Memberships will be
   *  created. Specified in the format `projects/* /locations/*`.
   */
  // const parent = 'abc123'
  /**
   *  Required. Client chosen ID for the membership. `membership_id` must be a
   *  valid RFC 1123 compliant DNS label:
   *    1. At most 63 characters in length
   *    2. It must consist of lower case alphanumeric characters or `-`
   *    3. It must start and end with an alphanumeric character
   *  Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`,
   *  with a maximum length of 63 characters.
   */
  // const membershipId = 'abc123'
  /**
   *  Required. The membership to create.
   */
  // const resource = {}
  /**
   *  Optional. A request ID to identify requests. Specify a unique request ID
   *  so that if you must retry your request, the server will know to ignore
   *  the request if it has already been completed. The server will guarantee
   *  that for at least 60 minutes after the first request.
   *  For example, consider a situation where you make an initial request and
   *  the request times out. If you make the request again with the same request
   *  ID, the server can check if original operation with the same request ID
   *  was received, and if so, will ignore the second request. This prevents
   *  clients from accidentally creating duplicate commitments.
   *  The request ID must be a valid UUID with the exception that zero UUID is
   *  not supported (00000000-0000-0000-0000-000000000000).
   */
  // const requestId = 'abc123'

  // Imports the Gkehub library
  const {GkeHubMembershipServiceClient} = require('@google-cloud/gke-hub').v1beta1;

  // Instantiates a client
  const gkehubClient = new GkeHubMembershipServiceClient();

  async function callCreateMembership() {
    // Construct request
    const request = {
      parent,
      membershipId,
      resource,
    };

    // Run request
    const [operation] = await gkehubClient.createMembership(request);
    const [response] = await operation.promise();
    console.log(response);
  }

  callCreateMembership();
  // [END gkehub_v1beta1_generated_GkeHubMembershipService_CreateMembership_async]
}

process.on('unhandledRejection', err => {
  console.error(err.message);
  process.exitCode = 1;
});
main(...process.argv.slice(2));
