0

我想在 OpenStack nova 中创建一个服务器。第一步是从图像创建卷:

volume = cinder.volumes.create(5, name="test", imageRef=some_id, ...)

然后该卷将在一段时间内处于“正在创建”状态。nova.servers.create使用处于状态的卷调用creating失败:

novaclient.exceptions.BadRequest: Block Device f2fe64ee-f049-4a6f-8edd-52579d82fc23 is not bootable. (HTTP 400) (Request-ID: req-f036d084-e9c8-4bdf-b266-73fbbe993796)

我的想法是等到音量得到available

while volume.status != 'available':
    print("Volume status [%s]" % volume.status)
    time.sleep(1.0)                                             

但看起来卷数据本身已在本地缓存并且永远不会更新 - 即使 GUI 和 CLI 显示该卷已经可用。

有没有一种(简单的)方法可以将本地数据与远程状态同步?喜欢:

volume.sync()
4

1 回答 1

0

在名为“Python APIs: The best-kept secret of OpenStack”的文档中找到了答案:

需要再次更新/获取整个卷:

while volume.status != 'available':
    print("Volume status [%s]" % volume.status)
    time.sleep(1.0)
    volume = cinder.volumes.get(volume.id)
于 2016-01-21T10:50:34.507 回答