2014-05-18 24 views
5

Próbuję napisać program python do pobierania obrazów z usługi skrótu. Jednak nie mogłem znaleźć sposobu na pobranie obrazów z chmury przy użyciu interfejsu API. W dokumentacji, którą można znaleźć tutaj:API python Openstack: jak pobrać obraz z widoku przy użyciu python api

http://docs.openstack.org/user-guide/content/sdk_manage_images.html

wyjaśniają w jaki sposób przesłać zdjęcia, ale nie na ich pobranie.

Poniższy kod pokazuje jak uzyskać obraz obiektu, ale nie teraz, co zrobić z tym obiektem:

import novaclient.v1_1.client as nvclient 
name = "cirros" 
nova = nvclient.Client(...) 
image = nova.images.find(name=name) 

jest jakiś sposób, aby pobrać plik obrazu i zapisać go na dysku za pomocą tego obiekt "obraz"?

Odpowiedz

4

Bez instalowania spojrzenie cli można pobrać obraz za pośrednictwem połączenia HTTP, jak opisano tutaj: http://docs.openstack.org/developer/glance/glanceapi.html#retrieve-raw-image-data

Dla klienta python można użyć

img = client.images.get(IMAGE_ID) 

a następnie zadzwonić

client.images.data(img) # or img.data() 

do pobierz generator, dzięki któremu uzyskasz dostęp do surowych danych obrazu.

Pełny przykład (zapisywanie obrazu z oka na dysku):

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) 
2

Można to zrobić korzystając z polecenia CLI spojrzenie obraz-download:

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

Trzeba będzie zainstalować spojrzenie CLI dla tego produktu.

Również w zależności od dostawcy/usługi w chmurze operacja ta może zostać wyłączona dla zwykłego użytkownika. Być może będziesz musiał skontaktować się ze swoim dostawcą.