func handleHistory(s api.FluxService) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { inst := getInstanceID(r) service := mux.Vars(r)["service"] spec, err := flux.ParseServiceSpec(service) if err != nil { w.WriteHeader(http.StatusBadRequest) fmt.Fprintf(w, errors.Wrapf(err, "parsing service spec %q", spec).Error()) return } h, err := s.History(inst, spec) if err != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, err.Error()) return } w.Header().Set("Content-Type", "application/json; charset=utf-8") if err := json.NewEncoder(w).Encode(h); err != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, err.Error()) return } }) }
func handlePostRelease(s api.FluxService) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { var ( inst = getInstanceID(r) vars = mux.Vars(r) service = vars["service"] image = vars["image"] kind = vars["kind"] ) serviceSpec, err := flux.ParseServiceSpec(service) if err != nil { w.WriteHeader(http.StatusBadRequest) fmt.Fprintf(w, errors.Wrapf(err, "parsing service spec %q", service).Error()) return } imageSpec := flux.ParseImageSpec(image) releaseKind, err := flux.ParseReleaseKind(kind) if err != nil { w.WriteHeader(http.StatusBadRequest) fmt.Fprintf(w, errors.Wrapf(err, "parsing release kind %q", kind).Error()) return } var excludes []flux.ServiceID for _, ex := range r.URL.Query()["exclude"] { s, err := flux.ParseServiceID(ex) if err != nil { w.WriteHeader(http.StatusBadRequest) fmt.Fprintf(w, errors.Wrapf(err, "parsing excluded service %q", ex).Error()) return } excludes = append(excludes, s) } id, err := s.PostRelease(inst, jobs.ReleaseJobParams{ ServiceSpec: serviceSpec, ImageSpec: imageSpec, Kind: releaseKind, Excludes: excludes, }) if err != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, err.Error()) return } w.Header().Set("Content-Type", "application/json; charset=utf-8") if err := json.NewEncoder(w).Encode(postReleaseResponse{ Status: "Queued.", ReleaseID: id, }); err != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, err.Error()) return } }) }
func parseServiceOption(s string) (flux.ServiceSpec, error) { if s == "" { return flux.ServiceSpecAll, nil } return flux.ParseServiceSpec(s) }