如何与OpenStack服务器同步/更新本地(卷)数据?

时间:2016-01-21 10:29:31

标签: openstack openstack-cinder openstack-python-api

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

  {% csrf_token %}
{{ exampleForm.management_form }}
  <form onsubmit="return false;" method="GET" class="exaSubmit" enctype="multipart/form-data">
  {% for form in exampleForm %}
    <div id="example1" type="hidden">
      {{ exampleForm.management_form }}
        ( {{ form.letterOfWord }} + {{ form.keyToUse }} ) MOD 26 =
          {{ form.letterToFill }} <br>
        </div>

  {% endfor %}
<button name="action" class="validateButton" value="validate"> Validate     </button> 
</form> 

在“创建”状态下,音量将持续一段时间。使用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

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

是否有(简单)方法将本地数据与远程状态同步?像:

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

1 个答案:

答案 0 :(得分:0)

在名为'Python APIs: The best-kept secret of OpenStack'的文件中找到答案:

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

mkfifo fifo # create a local fifo
Main_Program < fifo | Test_Program > fifo
rm fifo  # don't need it once your finished