// RunKeyCreate uploads a SSH key. func RunKeyCreate(ns string, config doit.Config, out io.Writer, args []string) error { client := config.GetGodoClient() if len(args) != 1 { return doit.NewMissingArgsErr(ns) } name := args[0] publicKey, err := config.GetString(ns, doit.ArgKeyPublicKey) if err != nil { return err } kcr := &godo.KeyCreateRequest{ Name: name, PublicKey: publicKey, } r, _, err := client.Keys.Create(kcr) if err != nil { logrus.WithField("err", err).Fatal("could not create key") } return doit.DisplayOutput(r, out) }
// RunImageActionsTransfer an image. func RunImageActionsTransfer(ns string, config doit.Config, out io.Writer, args []string) error { client := config.GetGodoClient() if len(args) != 1 { return doit.NewMissingArgsErr(ns) } id, err := strconv.Atoi(args[0]) if err != nil { return err } region, err := config.GetString(ns, doit.ArgRegionSlug) if err != nil { return err } req := &godo.ActionRequest{ "region": region, } action, _, err := client.ImageActions.Transfer(id, req) if err != nil { logrus.WithField("err", err).Fatal("could not transfer image") } return doit.DisplayOutput(action, out) }
// RunFloatingIPActionsUnassign unassigns a floating IP to a droplet. func RunFloatingIPActionsUnassign(ns string, config doit.Config, out io.Writer, args []string) error { if len(args) != 1 { return doit.NewMissingArgsErr(ns) } ip := args[0] client := config.GetGodoClient() action, _, err := client.FloatingIPActions.Unassign(ip) if err != nil { logrus.WithField("err", err).Fatal("could not unsassign IP to droplet") } return doit.DisplayOutput(action, out) }