【发布时间】:2017-05-29 02:09:11
【问题描述】:
我正在尝试从当前持有磁盘的已停止实例中分离磁盘。这是我目前的做法。
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'])
如果持有磁盘的实例当前正在运行,则上述代码有效。 但如果实例停止,它就不起作用。当我尝试从停止的实例中分离磁盘时出现以下错误。
{'errors': [{'message': "没有找到带有设备名称的附加磁盘 'test-disk'", 'code': 'INVALID_USAGE'}]}
我向您保证,磁盘仍然连接到实例,gcp 仪表板也显示了这一点。
【问题讨论】:
标签: google-api google-compute-engine google-api-python-client