// See the CloudServersProvider interface for details. func (gsp *genericServersProvider) CreateImage(id string, ci CreateImage) (string, error) { response, err := gsp.context.ResponseWithReauth(gsp.access, func() (*perigee.Response, error) { ep := fmt.Sprintf("%s/servers/%s/action", gsp.endpoint, id) return perigee.Request("POST", ep, perigee.Options{ ReqBody: &struct { CreateImage *CreateImage `json:"createImage"` }{&ci}, MoreHeaders: map[string]string{ "X-Auth-Token": gsp.access.AuthToken(), }, OkCodes: []int{200, 202}, }) }) if err != nil { return "", err } location, err := response.HttpResponse.Location() if err != nil { return "", err } // Return the last element of the location which is the image id locationArr := strings.Split(location.Path, "/") return locationArr[len(locationArr)-1], 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 }