code: def _cluster_create(
      args: dict, project_id: str, creds: Credentials
  ) -> None:
      """creates a gke cluster
  
      Args:
      args: commandline args
      project_id: project in which to create cluster
      creds: credentials to use
      """
      dry_run = args["dry_run"]
      cluster_name = args["cluster_name"] or k.DEFAULT_CLUSTER_NAME
      zone = args["zone"]
      dashboard_url = util.dashboard_cluster_url(
          cluster_name, zone, project_id
      )
      release_channel = args["release_channel"]
      single_zone = args["single_zone"]
  
      # --------------------------------------------------------------------------
      cluster_client = googleapiclient.discovery.build(
          "container",
          k.CLUSTER_API_VERSION,
          credentials=creds,
          cache_discovery=False,
      )
  
      if cluster_client is None:
          logging.error("error building cluster client")
          return
  
      request = Cluster.create_request(
          cluster_client,
          creds,
          cluster_name,
          project_id,
          zone,
          release_channel,
          single_zone,
      )
  
      if request is None:
          logging.error("error creating cluster creation request")
          return
  
      if dry_run:
          logging.info(
              "request:\n{}".format(
                  pp.pformat(json.loads(request.body))
              )
          )
          return
  
      # --------------------------------------------------------------------------
      # see if cluster(s) already exist, and if so, check with the user before
      # creating another
      if not _check_for_existing_cluster(
          cluster_name, project_id, creds
      ):
          return
  
      logging.info(
          "creating cluster {} in project {} in {}...".format(
              cluster_name, project_id, zone
          )
      )
      logging.info("please be patient, this may take several minutes")
      logging.info(
          "visit {} to monitor cluster creation progress".format(
              dashboard_url
          )
      )
  
      # --------------------------------------------------------------------------
      # create the cluster
      cluster = Cluster.create(
          cluster_client, creds, request, project_id
      )
  
      return
  
imports: import json
  import logging
  import os
  import pprint
  from datetime import datetime
  from typing import Any, Dict, List, Optional
  import googleapiclient
  from google.auth.credentials import Credentials
  from kubernetes.client import V1Job
  import caliban.cli
  import caliban.config
  import caliban.platform.cloud.util
  import caliban.platform.gke.constants
  import caliban.platform.gke.util
  import caliban.util
  import caliban.util.metrics
  from caliban.history.util import create_experiments, generate_container_spec, get_mem_engine, get_sql_engine, session_scope
  from caliban.platform.cloud.core import generate_image_tag
  from caliban.platform.gke.cluster import Cluster
label_desc: Use image node_id 5 for calling a global function with example usage: _cluster_create(args, project_id, creds) without return types