func enableDropletIPv6(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } return doResourceAction(c, client.DropletActions.EnableIPv6) }
func enableDropletPrivateNetworking(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } return doResourceAction(c, client.DropletActions.EnablePrivateNetworking) }
func listDropletBackups(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } return listDropletImages(c, client.Droplets.Backups) }
func disableDropletBackups(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } return doResourceAction(c, client.DropletActions.DisableBackups) }
func powerOnDroplet(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } return doResourceAction(c, client.DropletActions.PowerOn) }
func listDropletKernels(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } list := []godo.Kernel{} opt := &godo.ListOptions{} for { kernels, resp, err := client.Droplets.Kernels(id, opt) if err != nil { return Error(err) } list = append(list, kernels...) if resp.Links == nil || resp.Links.IsLastPage() { break } page, err := resp.Links.CurrentPage() if err != nil { return Error(err) } opt.Page = page + 1 } return Respond(c, list, nil) }
func listDroplets(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } list, er := paginateDroplets(client.Droplets.List) return Respond(c, list, er) }
func deleteDroplet(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } _, er := client.Droplets.Delete(id) return RespondNoContent(c, er) }
func showAction(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } action, _, er := client.Actions.Get(id) return Respond(c, action, er) }
func showImage(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } image, _, er := client.Images.GetByID(id) return Respond(c, image, er) }
func convertImage(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } transferReq := godo.ActionRequest{"type": "convert"} action, _, er := client.ImageActions.Transfer(id, &transferReq) return Respond(c, action, er) }
func listDropletActions(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } list, er := paginateActions(func(opt *godo.ListOptions) ([]godo.Action, *godo.Response, error) { return client.Droplets.Actions(id, opt) }) return Respond(c, list, er) }
func createKey(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } req := godo.KeyCreateRequest{} if err = c.Bind(&req); err != nil { return err } key, _, er := client.Keys.Create(&req) if er == nil { c.Response.Header().Set("Location", keyHref(key.ID)) } return RespondNoContent(c, er) }
func createDroplet(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } req := godo.DropletCreateRequest{} if err = c.Bind(&req); err != nil { return err } root, _, er := client.Droplets.Create(&req) if er == nil { c.Response.Header().Set("Location", dropletHref(root.Droplet.ID)) } return RespondNoContent(c, er) }
func showKey(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } key, _, er := client.Keys.GetByID(id) if er != nil { return Error(er) } return Respond(c, key, er) }
func updateKey(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } req := godo.KeyUpdateRequest{} if err = c.Bind(&req); err != nil { return err } id, err := getIDParam(c) if err != nil { return err } _, _, er := client.Keys.UpdateByID(id, &req) return RespondNoContent(c, er) }
func restoreDroplet(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } req := struct { ImageID int `json:"imageID"` }{} err = c.Bind(&req) if err != nil { return err } return doResourceAction(c, func(id int) (*godo.Action, *godo.Response, error) { return client.DropletActions.Restore(id, req.ImageID) }) }
func snapshotDroplet(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } req := struct { Name string `json:"name"` }{} err = c.Bind(&req) if err != nil { return err } return doResourceAction(c, func(id int) (*godo.Action, *godo.Response, error) { return client.DropletActions.Snapshot(id, req.Name) }) }
func showDroplet(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } root, _, er := client.Droplets.Get(id) var droplet *Droplet if err == nil { droplet = DropletFromApi(root.Droplet) } return Respond(c, droplet, er) }
func changeDropletKernel(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } req := struct { KernelID int `json:"kernelID"` }{} err = c.Bind(&req) if err != nil { return err } return doResourceAction(c, func(id int) (*godo.Action, *godo.Response, error) { return client.DropletActions.ChangeKernel(id, req.KernelID) }) }
func resizeDroplet(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } req := struct { SizeSlug string `json:"sizeSlug"` ResizeDisk bool `json:"resizeDisk"` }{} err = c.Bind(&req) if err != nil { return err } return doResourceAction(c, func(id int) (*godo.Action, *godo.Response, error) { return client.DropletActions.Resize(id, req.SizeSlug, req.ResizeDisk) }) }
func listDropletNeighbors(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } droplets, _, er := client.Droplets.Neighbors(id) var list []*Droplet if er == nil { for _, d := range droplets { list = append(list, DropletFromApi(&d)) } } return Respond(c, list, er) }
func transferImage(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } req := struct { Region string `json:"region"` }{} if err = c.Bind(&req); err != nil { return err } id, err := getIDParam(c) if err != nil { return err } transferReq := godo.ActionRequest{"type": "transfer", "region": req.Region} action, _, er := client.ImageActions.Transfer(id, &transferReq) return Respond(c, action, er) }
func getDropletAction(c *echo.Context) *echo.HTTPError { client, err := middleware.GetDOClient(c) if err != nil { return err } id, err := getIDParam(c) if err != nil { return err } said := c.Param("actionId") if said == "" { return Error(fmt.Errorf("missing action id")) } aid, er := strconv.Atoi(said) if er != nil { return Error(fmt.Errorf("invalid action id '%s' - must be a number", said)) } action, _, er := client.DropletActions.Get(id, aid) return Respond(c, action, er) }