OpenStack Python API:如何使用Python API从Glance下载镜像
我正在尝试写一个Python程序,从glance服务下载图片。不过,我找不到用API从云端下载图片的方法。在这里可以找到相关文档:
http://docs.openstack.org/user-guide/content/sdk_manage_images.html
文档里讲了怎么上传图片,但没有说明怎么下载。
下面的代码展示了如何获取图片对象,但我不知道该如何处理这个对象:
import novaclient.v1_1.client as nvclient
name = "cirros"
nova = nvclient.Client(...)
image = nova.images.find(name=name)
有没有办法使用这个“image”对象下载图片文件并保存到磁盘上呢?
2 个回答
3
你可以使用 glance 命令行工具,通过 image-download 命令来完成这个操作:
glance image-download [--file <FILE>] [--progress] <IMAGE>
不过,你需要先安装 glance 命令行工具。
另外,根据你使用的云服务提供商,这个操作可能对普通用户是禁用的。你可能需要向你的服务提供商确认一下。
6
如果你不想安装glance命令行工具,也可以通过HTTP请求来下载镜像,具体方法可以参考这里:
http://docs.openstack.org/developer/glance/glanceapi.html#retrieve-raw-image-data
如果你使用Python客户端,可以这样做:
img = client.images.get(IMAGE_ID)
然后调用
client.images.data(img) # or img.data()
来获取一个生成器,这样你就可以访问镜像的原始数据了。
完整的例子(将镜像从glance保存到磁盘):
img = client.images.find(name='cirros-0.3.2-x86_64-uec')
file_name = "%s.img" % img.name
image_file = open(file_name, 'w+')
for chunk in img.data():
image_file.write(chunk)