【问题标题】:Auto delete disk using libcloud使用 libcloud 自动删除磁盘
【发布时间】:2016-02-28 15:41:35
【问题描述】:

我正在尝试使用具有自动删除功能的 libcloud 创建 VM。问题是它只适用于启动盘。

例子:

new_node = driver.create_node("my_node_str", size, get_root_snapshot(driver), location,ex_service_accounts=sa_scopes, ex_disk_auto_delete=True, ...

然后我附加一个磁盘:

driver.attach_volume(my_node,...,ex_boot=False, ex_auto_delete=True)

所以我去了 GCE,这个音量自动删除被关闭了

所以,我尝试使用 libcloud“手动”更改它:

conn.ex_set_volume_auto_delete(vol, node)

我得到了错误:

libcloud.common.google.GoogleBaseError: u"Invalid value for field 'disk': 'myvolume1-worker-disk'

但是磁盘已创建、附加并且正在我的 VM 上运行。

根据文档 (https://cloud.google.com/compute/docs/reference/latest/instances/setDiskAutoDelete),调试 libloud 一切似乎都正常:

它调用:

u'/zones/us-central1-b/instances/myinstancename/setDiskAutoDelete'

带参数: 'deviceName': volume.name, 'autoDelete': auto_delete, 有什么线索吗?

【问题讨论】:

    标签: google-compute-engine


    【解决方案1】:

    看起来attach_volume 可能存在错误。如果是这样,我会做一些测试并修复它。

    关于使用ex_set_volume_auto_delete,你需要传入一个StorageVolume对象。看起来你只是在传递一个字符串(磁盘的名称)。

    你可以试试,

    disk_obj = driver.ex_get_volume('string-name-of-disk')
    driver.ex_set_volume_auto_delete(node_obj, disk_obj, ex_auto_delete=True)
    

    当我进一步研究第一个问题时,我会跟进它。

    【讨论】:

    • 我确实发现了 attach_volume 的错误并推送了修复 dc4daee
    • 谢谢 Eric,我会尽快测试修复并检查我的代码(我相信我没有传递字符串,而是传递对象)。
    • 嗨 Eric,我相信我的代码是正确的,但错误仍然存​​在:` #size = get_node_size(driverGCE, zone, "n1-standard-1") conn = connect_gce() node=conn. ex_get_node("myinstance", "all") vol=conn.ex_get_volume("my-disk-worker-disk", "all") print vol print node.name print node.extra['zone'].name conn.ex_set_volume_auto_delete (vol, node)` 我收到错误:libcloud.common.google.GoogleBaseError: u"Invalid value for field 'disk': 'my-disk-worker-disk'. " File "/drivers/gce.py",第 3460 行,在 ex_set_volume_auto_delete 中
    • 顺便说一句,您的修复在附加磁盘时有效!再次感谢。
    猜你喜欢
    • 2020-01-12
    • 1970-01-01
    • 2019-04-02
    • 2016-07-29
    • 2021-04-20
    • 2017-01-01
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多