我試圖從當前持有磁盤的已停止實例中分離磁盤。這是我目前正在做的事情。從停止的實例中分離磁盤
def detach_disk_from_instance(disk_name, zone=GCLOUD_ZONE):
disk_info = get_disk_info(disk_name=disk_name, zone=zone)
if disk_info.get('users'):
instance_name = disk_info['users'][0].rsplit('/').pop()
logger.info("detatching disk : {} from instance : {}".format(disk_name, instance_name))
request = compute.instances().detachDisk(
project=GCLOUD_PROJECT_NAME, zone=zone, instance=instance_name, deviceName=disk_name)
return make_http_request(request, {})
def wait_for_operation(operation, zone=GCLOUD_ZONE, worker=1):
logger.info('Waiting for operation {} to finish...'.format(operation))
with ThreadPoolExecutor(worker) as executor:
future = executor.submit(_check_operation_status, operation=operation, zone=zone)
wait([future])
return future.result()
req = detach_disk_from_instance(disk_name='test-disk')
wait_for_operation(operation=req['name'])
上面的代碼工作,如果持有磁盤的實例當前正在運行。 ,但如果實例停止,它不起作用。當我嘗試從停止的實例中分離磁盤時,出現以下錯誤。
{ '錯誤':[{ '信息': '代碼' 「與設備名稱 '測試盤' 沒有發現連接的磁盤」: 'INVALID_USAGE'}]}
和我向你保證,磁盤仍然附着在實例上,gcp儀表板也顯示了這一點。