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  }