func setUnitStatus(w http.ResponseWriter, r *http.Request, t auth.Token) error { unitName := r.URL.Query().Get(":unit") if unitName == "" { return &errors.HTTP{ Code: http.StatusBadRequest, Message: "missing unit", } } postStatus := r.FormValue("status") status, err := provision.ParseStatus(postStatus) if err != nil { return &errors.HTTP{ Code: http.StatusBadRequest, Message: err.Error(), } } appName := r.URL.Query().Get(":app") a, err := app.GetByName(appName) if err != nil { return &errors.HTTP{Code: http.StatusNotFound, Message: err.Error()} } err = a.SetUnitStatus(unitName, status) if _, ok := err.(*provision.UnitNotFoundError); ok { return &errors.HTTP{Code: http.StatusNotFound, Message: err.Error()} } if err == nil { w.WriteHeader(http.StatusOK) } return err }
// title: set unit status // path: /apps/{app}/units/{unit} // method: POST // consume: application/x-www-form-urlencoded // responses: // 200: Ok // 400: Invalid data // 401: Unauthorized // 404: App or unit not found func setUnitStatus(w http.ResponseWriter, r *http.Request, t auth.Token) error { unitName := r.URL.Query().Get(":unit") if unitName == "" { return &errors.HTTP{ Code: http.StatusBadRequest, Message: "missing unit", } } postStatus := r.FormValue("status") status, err := provision.ParseStatus(postStatus) if err != nil { return &errors.HTTP{ Code: http.StatusBadRequest, Message: err.Error(), } } appName := r.URL.Query().Get(":app") a, err := app.GetByName(appName) if err != nil { return &errors.HTTP{Code: http.StatusNotFound, Message: err.Error()} } allowed := permission.Check(t, permission.PermAppUpdateUnitStatus, contextsForApp(a)..., ) if !allowed { return permission.ErrUnauthorized } err = a.SetUnitStatus(unitName, status) if _, ok := err.(*provision.UnitNotFoundError); ok { return &errors.HTTP{Code: http.StatusNotFound, Message: err.Error()} } return err }
func statusFilter(status string) []string { statusList := []string{} if status == "" { return statusList } for _, s := range strings.Split(status, ",") { _, err := provision.ParseStatus(s) if err == nil { statusList = append(statusList, s) } } return statusList }