github.com/gophercloud/gophercloud@v1.11.0/openstack/imageservice/v2/imagedata/requests.go (about) 1 package imagedata 2 3 import ( 4 "io" 5 6 "github.com/gophercloud/gophercloud" 7 ) 8 9 // Upload uploads an image file. 10 func Upload(client *gophercloud.ServiceClient, id string, data io.Reader) (r UploadResult) { 11 resp, err := client.Put(uploadURL(client, id), data, nil, &gophercloud.RequestOpts{ 12 MoreHeaders: map[string]string{"Content-Type": "application/octet-stream"}, 13 OkCodes: []int{204}, 14 }) 15 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 16 return 17 } 18 19 // Stage performs PUT call on the existing image object in the Imageservice with 20 // the provided file. 21 // Existing image object must be in the "queued" status. 22 func Stage(client *gophercloud.ServiceClient, id string, data io.Reader) (r StageResult) { 23 resp, err := client.Put(stageURL(client, id), data, nil, &gophercloud.RequestOpts{ 24 MoreHeaders: map[string]string{"Content-Type": "application/octet-stream"}, 25 OkCodes: []int{204}, 26 }) 27 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 28 return 29 } 30 31 // Download retrieves an image. 32 func Download(client *gophercloud.ServiceClient, id string) (r DownloadResult) { 33 resp, err := client.Get(downloadURL(client, id), nil, &gophercloud.RequestOpts{ 34 KeepResponseBody: true, 35 }) 36 r.Body, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 37 return 38 }