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