def _GetClusterDescription(project, zone, cluster_name):
  """Gets the description for a Cloud Bigtable cluster.

  Args:
    project: str. Name of the project in which the cluster was created.
    zone: str. Zone of the project in which the cluster was created.
    cluster_name: str. Cluster ID of the desired Bigtable cluster.

  Returns:
    A dictionary containing a cluster description.

  Raises:
    KeyError: when the cluster was not found.
  """
  env = {'CLOUDSDK_CORE_DISABLE_PROMPTS': '1'}
  env.update(os.environ)
  cmd = [FLAGS.gcloud_path, 'alpha', 'bigtable', 'clusters', 'list', '--quiet',
         '--format', 'json', '--project', project]
  stdout, stderr, returncode = vm_util.IssueCommand(cmd, env=env)
  if returncode:
    raise IOError('Command "{0}" failed:\nSTDOUT:\n{1}\nSTDERR:\n{2}'.format(
        ' '.join(cmd), stdout, stderr))
  result = json.loads(stdout)
  clusters = {cluster['name']: cluster for cluster in result['clusters']}
  expected_cluster_name = 'projects/{0}/zones/{1}/clusters/{2}'.format(
      project, zone, cluster_name)
  try:
    return clusters[expected_cluster_name]
  except __HOLE__:
    raise KeyError('Cluster {0} not found in {1}'.format(
        expected_cluster_name, list(clusters)))
dataset/ETHPy150Open GoogleCloudPlatform/PerfKitBenchmarker/perfkitbenchmarker/linux_benchmarks/cloud_bigtable_ycsb_benchmark.py/_GetClusterDescription