// title: set node status // path: /node/status // method: POST // consume: application/x-www-form-urlencoded // produce: application/json // responses: // 200: Ok // 400: Invalid data // 401: Unauthorized // 404: App or unit not found func setNodeStatus(w http.ResponseWriter, r *http.Request, t auth.Token) error { if t.GetAppName() != app.InternalAppName { return &errors.HTTP{Code: http.StatusForbidden, Message: "this token is not allowed to execute this action"} } err := r.ParseForm() if err != nil { return &errors.HTTP{Code: http.StatusBadRequest, Message: err.Error()} } var hostInput provision.NodeStatusData dec := form.NewDecoder(nil) dec.IgnoreUnknownKeys(true) err = dec.DecodeValues(&hostInput, r.Form) if err != nil { return &errors.HTTP{Code: http.StatusBadRequest, Message: err.Error()} } result, err := app.UpdateNodeStatus(hostInput) if err != nil { if err == provision.ErrNodeNotFound { return &errors.HTTP{Code: http.StatusNotFound, Message: err.Error()} } return err } w.Header().Add("Content-Type", "application/json") return json.NewEncoder(w).Encode(result) }
func setUnitsStatus(w http.ResponseWriter, r *http.Request, t auth.Token) error { if t.GetAppName() != app.InternalAppName { return &errors.HTTP{Code: http.StatusForbidden, Message: "this token is not allowed to execute this action"} } defer r.Body.Close() var input []provision.UnitStatusData err := json.NewDecoder(r.Body).Decode(&input) if err != nil { return &errors.HTTP{Code: http.StatusBadRequest, Message: err.Error()} } result, err := app.UpdateNodeStatus(provision.NodeStatusData{Units: input}) if err != nil { return err } w.Header().Add("Content-Type", "application/json") return json.NewEncoder(w).Encode(result) }