func Provision(app, addon, plan string) error { if app == "" { return errgo.New("no app defined") } else if addon == "" { return errgo.New("no addon defined") } else if plan == "" { return errgo.New("no plan defined") } planID, err := checkPlanExist(addon, plan) if err != nil { return errgo.Mask(err, errgo.Any) } params, err := scalingo.AddonProvision(app, addon, planID) if err != nil { return errgo.Mask(err, errgo.Any) } io.Status("Addon", addon, "has been provisionned") io.Info("ID:", params.Addon.ResourceID) if len(params.Variables) > 0 { io.Info("Modified variables:", params.Variables) } if len(params.Message) > 0 { io.Info("Message from addon provider:", params.Message) } return nil }
func Upgrade(app, resourceID, plan string) error { if app == "" { return errgo.New("no app defined") } else if resourceID == "" { return errgo.New("no addon ID defined") } else if plan == "" { return errgo.New("no plan defined") } addon, err := checkAddonExist(app, resourceID) if err != nil { return errgo.Mask(err, errgo.Any) } planID, err := checkPlanExist(addon.AddonProvider.Name, plan) if err != nil { return errgo.Mask(err, errgo.Any) } params, err := api.AddonUpgrade(app, addon.ID, planID) if err != nil { return errgo.Mask(err, errgo.Any) } io.Status("Addon", resourceID, "has been upgraded") if len(params.Variables) > 0 { io.Info("Modified variables:", params.Variables) } if len(params.Message) > 0 { io.Info("Message from addon provider:", params.Message) } return nil }
func Destroy(app, resourceID string) error { if app == "" { return errgo.New("no app defined") } else if resourceID == "" { return errgo.New("no addon ID defined") } addon, err := checkAddonExist(app, resourceID) if err != nil { return errgo.Mask(err, errgo.Any) } io.Status("Destroy", resourceID) io.Warning("This operation is irreversible") io.Warning("All related data will be destroyed") io.Info("To confirm, type the ID of the addon:") fmt.Print("-----> ") var validationName string fmt.Scan(&validationName) if validationName != resourceID { return errgo.Newf("'%s' is not '%s', aborting…\n", validationName, resourceID) } err = api.AddonDestroy(app, addon.ID) if err != nil { return errgo.Mask(err, errgo.Any) } io.Status("Addon", resourceID, "has been destroyed") return nil }
func Provision(app, webHookURL string) error { if app == "" { return errgo.New("no app defined") } else if webHookURL == "" { return errgo.New("no url defined") } c := config.ScalingoClient() params, err := c.NotificationProvision(app, webHookURL) if err != nil { return errgo.Mask(err, errgo.Any) } io.Status("Notifications to", webHookURL, "have been provisionned") if len(params.Variables) > 0 { io.Info("Modified variables:", params.Variables) } if len(params.Message) > 0 { io.Info("Message from notification provider:", params.Message) } return nil }
func Add(app string, domain string, cert string, key string) error { certContent, keyContent, err := validateSSL(cert, key) if err != nil { return errgo.Mask(err) } d, err := scalingo.DomainsAdd(app, scalingo.Domain{ Name: domain, TlsCert: certContent, TlsKey: keyContent, }) if err != nil { return errgo.Mask(err) } io.Status("Domain", d.Name, "has been created, access your app at the following URL:\n") io.Info("http://" + d.Name) return nil }