Python API Openstack: как загрузить изображение с первого взгляда, используя API Python

Я пытаюсь написать программу на 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)

Есть ли способ загрузить файл изображения и сохранить его на диске, используя этот объект "изображение"?

2 ответа

Решение

Без установки glance cli вы можете загрузить изображение через HTTP-вызов, как описано здесь: http://docs.openstack.org/developer/glance/glanceapi.html

Для клиента 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)

Вы можете сделать это используя glance CLI с командой image-download:

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

Для этого вам нужно будет установить glance cli.

Также в зависимости от того, какой облачный провайдер / служба вы используете, эта операция может быть отключена для обычного пользователя. Возможно, вам придется проверить с вашим провайдером.

Другие вопросы по тегам