2016-11-04 17 views
0

有关背景知识:Rackspace中的Compute/Memory nova实例未附带本地根卷,Rackspace有一个策略可以使用外部SSD启动卷。现在的问题是: 我试图创建Rackspace的一个计算的味道实例使用pyrax API,在某种程度上Rackspace公司确实在其UI(https://support.rackspace.com/how-to/boot-a-server-from-a-cloud-block-storage-volume/)如下:Pyrax API:使用启动卷创建计算/内存风格的错误

pyrax.cloudservers.servers.create(hostname,image.id, 
             flavor.id,block_device_mapping, 
             security_groups=security_groups,  
             nics=networks, key_name=key) 

其中 block_device_mapping = {“VDA” : “59fb72d5-0b33-46c2-B10B-33fed25c5f74 ::: 1”}, 长32位数字是用我的服务器创建之前创建卷的volume_id

pyrax.cloud_blockstorage.create(name=volume_name, size=volume_size,  
           volume_type=volume_type). 

我得到一个错误说:

Policy doesn't allow memory_flavor:create:image_backed to be performed.(HTTP 403). 

也为其他口味与本地根卷(不用说,我没有引用那些'block_device_mapping'参数),例如创建pyrax api工作正常。 这是关于github上pyrax/rackspace回购的主题的一个小线程:https://github.com/rackspace/pyrax/issues/484,讨论了这个问题。 有什么我失踪?

回答

0

当可引导卷创建,image_id(OS图片ID)应指定开机音量:

pyrax.cloud_blockstorage.create(name=volume_name, size=volume_size, 
           volume_type=volume_type,image=image.id) 

也block_device_map需要更多的PARAMS:

block_device_map = [{ 
          'boot_index': '0', 
          'source_type': 'image', 
          'destination_type': 'volume', 
          'delete_on_termination': True, 
          'uuid': image.id, 
          'volume_size': int(requested_size), 
          'device_name': 'vda' 
        }]     

而这里的在实际上没有得到403 Forbidden错误的最终结果: 创建服务器实例时,请不要在pyrax调用参数中再次指定图像ID,否则pyrax会与启动实例的映像混淆。因此,只需在image_id中输入pyrax.cloudservers.servers.create()的参数即可:

pyrax.cloudservers.servers.create(
      hostname, 
      image=None, 
      flavor=flavor.id, 
      block_device_mapping_v2=block_device_map, 
      security_groups=security_groups, 
      nics=networks, 
      key_name=key)