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