6

我正在尝试编写一个 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)

有没有办法下载图像文件并使用这个对象“图像”将其保存在磁盘上?

4

2 回答 2

5

无需安装glance cli,您可以通过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()

检索生成器,您可以通过该生成器访问图像的原始数据。

完整示例(将图像从一瞥保存到磁盘):

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)
于 2014-12-10T21:39:32.150 回答
3

您可以使用带有 image-download 命令的 Glance CLI 执行此操作:

glance image-download [--file <FILE>] [--progress] <IMAGE>

为此,您必须安装 Glance cli。

此外,根据您使用的云提供商/服务,普通用户可能会禁用此操作。您可能需要咨询您的提供商。

于 2014-05-18T15:29:54.207 回答