package gophercloud import ( "github.com/racker/perigee" ) // See the CloudImagesProvider interface for details. func (gsp *genericServersProvider) ListImages() ([]Image, error) { var is []Image err := gsp.context.WithReauth(gsp.access, func() error { url := gsp.endpoint + "/images/detail" return perigee.Get(url, perigee.Options{ CustomClient: gsp.context.httpClient, Results: &struct{ Images *[]Image }{&is}, MoreHeaders: map[string]string{ "X-Auth-Token": gsp.access.AuthToken(), }, }) }) return is, err } func (gsp *genericServersProvider) ImageById(id string) (*Image, error) { var is *Image err := gsp.context.WithReauth(gsp.access, func() error { url := gsp.endpoint + "/images/" + id return perigee.Get(url, perigee.Options{ CustomClient: gsp.context.httpClient, Results: &struct{ Image **Image }{&is}, MoreHeaders: map[string]string{ "X-Auth-Token": gsp.access.AuthToken(), }, }) }) return is, err } func (gsp *genericServersProvider) DeleteImageById(id string) error { err := gsp.context.WithReauth(gsp.access, func() error { url := gsp.endpoint + "/images/" + id _, err := perigee.Request("DELETE", url, perigee.Options{ CustomClient: gsp.context.httpClient, MoreHeaders: map[string]string{ "X-Auth-Token": gsp.access.AuthToken(), }, }) return err }) return err } // ImageLink provides a reference to a image by either ID or by direct URL. // Some services use just the ID, others use just the URL. // This structure provides a common means of expressing both in a single field. type ImageLink struct { Id string `json:"id"` Links []Link `json:"links"` } // Image is used for JSON (un)marshalling. // It provides a description of an OS image. // // The Id field contains the image's unique identifier. // For example, this identifier will be useful for specifying which operating system to install on a new server instance. // // The MinDisk and MinRam fields specify the minimum resources a server must provide to be able to install the image. // // The Name field provides a human-readable moniker for the OS image. // // The Progress and Status fields indicate image-creation status. // Any usable image will have 100% progress. // // The Updated field indicates the last time this image was changed. // // OsDcfDiskConfig indicates the server's boot volume configuration. // Valid values are: // AUTO // ---- // The server is built with a single partition the size of the target flavor disk. // The file system is automatically adjusted to fit the entire partition. // This keeps things simple and automated. // AUTO is valid only for images and servers with a single partition that use the EXT3 file system. // This is the default setting for applicable Rackspace base images. // // MANUAL // ------ // The server is built using whatever partition scheme and file system is in the source image. // If the target flavor disk is larger, // the remaining disk space is left unpartitioned. // This enables images to have non-EXT3 file systems, multiple partitions, and so on, // and enables you to manage the disk configuration. // type Image struct { Created string `json:"created"` Id string `json:"id"` Links []Link `json:"links"` MinDisk int `json:"minDisk"` MinRam int `json:"minRam"` Name string `json:"name"` Progress int `json:"progress"` Status string `json:"status"` Updated string `json:"updated"` OsDcfDiskConfig string `json:"OS-DCF:diskConfig"` }