2014-05-18 21 views
5

Sto provando a scrivere un programma python per scaricare le immagini dal servizio occhiata. Tuttavia, non ho trovato un modo per scaricare immagini dal cloud utilizzando l'API. Nella documentazione che può essere trovato qui:API Openstack python: come scaricare l'immagine da un'occhiata usando python api

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

spiegano come caricare le immagini, ma non per scaricarli.

Il codice seguente mostra come ottenere oggetto immagine, ma non lo faccio ora che cosa a che fare con questo oggetto:

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

c'è un modo per scaricare il file immagine e salvarlo sul disco utilizzando questo oggetto "immagine"?

risposta

4

Senza installare sguardo CLI è possibile scaricare immagini tramite chiamata HTTP come descritto qui: http://docs.openstack.org/developer/glance/glanceapi.html#retrieve-raw-image-data

Per il client di pitone è possibile utilizzare

img = client.images.get(IMAGE_ID) 

e quindi chiamare

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

a recuperare il generatore tramite il quale è possibile accedere ai dati grezzi dell'immagine.

esempio completa (risparmio di immagine dal colpo d'occhio su disco):

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

È possibile farlo usando sguardo CLI con il comando immagine-download:

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

Si dovrà installare sguardo cli per questo.

Inoltre, a seconda del provider/servizio cloud che si sta utilizzando, questa operazione potrebbe essere disabilitata per l'utente normale. Potrebbe essere necessario verificare con il proprio fornitore.