def _create_rescue_disk()

in gce_rescue/tasks/disks.py [0:0]


def _create_rescue_disk(vm, source_disk: str) -> Dict:
  """ Create new temporary rescue disk based on source_disk.
  https://cloud.google.com/compute/docs/reference/rest/v1/disks/insert
  Returns:
    operation-result: Dict
  """

  chk_disk_exist = {}
  try:
    chk_disk_exist = vm.compute.disks().get(
      **vm.project_data,
      disk = vm.rescue_disk).execute()
  except googleapiclient.errors.HttpError as e:
    if e.status_code == 404:
      _logger.info(f'Creating rescue disk {vm.rescue_disk}...')
    else:
      raise Exception(e) from e

  if 'name' in chk_disk_exist.keys():
    if 'users' in chk_disk_exist.keys():
      disk_users = chk_disk_exist['users']
      raise Exception(
        f'Disk {vm.rescue_disk} is currently in use: {disk_users}'
      )
    _logger.info(f'Disk {vm.rescue_disk} already exist. Skipping...')
    return {}

  disk_body = {
    'name': vm.rescue_disk,
    'sourceImage': source_disk,
    'type': f'projects/{vm.project}/zones/{vm.zone}/diskTypes/pd-balanced'
  }
  operation = vm.compute.disks().insert(
    **vm.project_data,
    body = disk_body).execute()

  result = wait_for_operation(vm, oper=operation)
  return result