【问题标题】:Openstack python API: how to download image from glance using the python apiOpenstack python API:如何使用 python api 从 Glance 下载图像
【发布时间】:2014-07-06 08:29:22
【问题描述】:

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

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

【问题讨论】:

    标签: python api openstack openstack-glance


    【解决方案1】:

    无需安装 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()
    

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

    完整示例(将图像从 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)
    

    【讨论】:

    • 您的代码真的让我很开心,谢谢,但我有一个问题,每个chunk 的大小是多少,我可以增加大小以加快下载速度吗?
    • @Corey 我已经有一段时间没有在 OpenStack 中做某事了,但是在快速查看代码后,我认为它在这里是硬编码的:github.com/openstack/python-glanceclient/blob/…
    【解决方案2】:

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

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

    您必须为此安装 Glance cli。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 2023-04-05
      • 1970-01-01
      • 2020-04-09
      相关资源
      最近更新 更多