// LimitsSet sets an app's limits. func LimitsSet(appID string, limits []string, limitType string) error { c, appID, err := load(appID) if err != nil { return err } limitsMap := parseLimits(limits) fmt.Print("Applying limits... ") quit := progress() configObj := api.Config{} if limitType == "cpu" { configObj.CPU = limitsMap } else { configObj.Memory = limitsMap } _, err = config.Set(c, appID, configObj) quit <- true <-quit if err != nil { return err } fmt.Print("done\n\n") return LimitsList(appID) }
// ConfigUnset removes a config variable from an app. func ConfigUnset(appID string, configVars []string) error { c, appID, err := load(appID) if err != nil { return err } fmt.Print("Removing config... ") quit := progress() configObj := api.Config{} valuesMap := make(map[string]interface{}) for _, configVar := range configVars { valuesMap[configVar] = nil } configObj.Values = valuesMap _, err = config.Set(c, appID, configObj) quit <- true <-quit if err != nil { return err } fmt.Print("done\n\n") return ConfigList(appID, false) }
// TagsUnset removes an app's tags. func TagsUnset(appID string, tags []string) error { c, appID, err := load(appID) if err != nil { return err } fmt.Print("Applying tags... ") quit := progress() configObj := api.Config{} tagsMap := make(map[string]interface{}) for _, tag := range tags { tagsMap[tag] = nil } configObj.Tags = tagsMap _, err = config.Set(c, appID, configObj) quit <- true <-quit if err != nil { return err } fmt.Print("done\n\n") return TagsList(appID) }
// TagsSet sets an app's tags. func TagsSet(appID string, tags []string) error { c, appID, err := load(appID) if err != nil { return err } tagsMap := parseTags(tags) fmt.Print("Applying tags... ") quit := progress() configObj := api.Config{} configObj.Tags = tagsMap _, err = config.Set(c, appID, configObj) quit <- true <-quit if err != nil { return err } fmt.Print("done\n\n") return TagsList(appID) }
// ConfigSet sets an app's config variables. func ConfigSet(appID string, configVars []string) error { c, appID, err := load(appID) if err != nil { return err } configMap := parseConfig(configVars) value, ok := configMap["SSH_KEY"] if ok { sshKey := value.(string) if _, err := os.Stat(value.(string)); err == nil { contents, err := ioutil.ReadFile(value.(string)) if err != nil { return err } sshKey = string(contents) } sshRegex := regexp.MustCompile("^-.+ .SA PRIVATE KEY-*") if !sshRegex.MatchString(sshKey) { return fmt.Errorf("Could not parse SSH private key:\n %s", sshKey) } configMap["SSH_KEY"] = base64.StdEncoding.EncodeToString([]byte(sshKey)) } fmt.Print("Creating config... ") quit := progress() configObj := api.Config{Values: configMap} configObj, err = config.Set(c, appID, configObj) quit <- true <-quit if err != nil { return err } if release, ok := configObj.Values["DEIS_RELEASE"]; ok { fmt.Printf("done, %s\n\n", release) } else { fmt.Print("done\n\n") } return ConfigList(appID, false) }
// AppCreate creates an app. func AppCreate(id string, buildpack string, remote string, noRemote bool) error { c, err := client.New() if err != nil { return err } fmt.Print("Creating Application... ") quit := progress() app, err := apps.New(c, id) quit <- true <-quit if err != nil { return err } fmt.Printf("done, created %s\n", app.ID) if buildpack != "" { configValues := api.Config{ Values: map[string]interface{}{ "BUILDPACK_URL": buildpack, }, } if _, err = config.Set(c, app.ID, configValues); err != nil { return err } } if !noRemote { if err = git.CreateRemote(c.ControllerURL.Host, remote, app.ID); err != nil { if err.Error() == "exit status 128" { fmt.Println("To replace the existing git remote entry, run:") fmt.Printf(" git remote rename deis deis.old && deis git:remote -a %s\n", app.ID) } return err } } fmt.Println("remote available at", git.RemoteURL(c.ControllerURL.Host, app.ID)) return nil }
// LimitsUnset removes an app's limits. func LimitsUnset(appID string, limits []string, limitType string) error { c, appID, err := load(appID) if err != nil { return err } fmt.Print("Applying limits... ") quit := progress() configObj := api.Config{} valuesMap := make(map[string]interface{}) for _, limit := range limits { valuesMap[limit] = nil } if limitType == "cpu" { configObj.CPU = valuesMap } else { configObj.Memory = valuesMap } _, err = config.Set(c, appID, configObj) quit <- true <-quit if err != nil { return err } fmt.Print("done\n\n") return LimitsList(appID) }