func createRegistryHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: create registry" util.LogHandlerEntry(handler, r) defer r.Body.Close() registryName, err := getPathVariable(w, r, "registry", handler) if err != nil { return } reg := getRegistry(w, r, handler) if reg.Name != registryName { e := fmt.Errorf("Registry name does not match %s != %s", reg.Name, registryName) util.LogAndReturnError(handler, http.StatusBadRequest, e, w) return } if reg != nil { err = backend.CreateRegistry(reg) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } } util.LogHandlerExitWithJSON(handler, w, reg, http.StatusOK) }
func listRegistryTypesHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: list registry types" util.LogHandlerEntry(handler, r) registryName, err := getPathVariable(w, r, "registry", handler) if err != nil { return } var regex *regexp.Regexp regexString, err := getPathVariable(w, r, "regex", handler) if err == nil { regex, err = regexp.Compile(regexString) if err != nil { util.LogAndReturnError(handler, http.StatusInternalServerError, err, w) return } } registryTypes, err := backend.ListRegistryTypes(registryName, regex) if err != nil { util.LogAndReturnError(handler, http.StatusInternalServerError, err, w) return } util.LogHandlerExitWithJSON(handler, w, registryTypes, http.StatusOK) }
func roundTripHandler(w http.ResponseWriter, r *http.Request) { defer r.Body.Close() handler := "expandybird: expand" util.LogHandlerEntry(handler, r) util.LogHandlerExitWithJSON(handler, w, roundTripResponses[0], http.StatusOK) roundTripResponses = roundTripResponses[1:] }
func getDownloadURLsHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: get download URLs" util.LogHandlerEntry(handler, r) registryName, err := getPathVariable(w, r, "registry", handler) if err != nil { return } typeName, err := getPathVariable(w, r, "type", handler) if err != nil { return } tt, err := registry.ParseType(typeName) if err != nil { util.LogAndReturnError(handler, http.StatusInternalServerError, err, w) return } c, err := backend.GetDownloadURLs(registryName, tt) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } urls := []string{} for _, u := range c { urls = append(urls, u.String()) } util.LogHandlerExitWithJSON(handler, w, urls, http.StatusOK) }
func expanderSuccessHandler(w http.ResponseWriter, r *http.Request) { handler := "expandybird: expand" util.LogHandlerEntry(handler, r) defer r.Body.Close() body, err := ioutil.ReadAll(r.Body) if err != nil { status := fmt.Sprintf("cannot read request body:%s", err) http.Error(w, status, http.StatusInternalServerError) return } template := &Template{} if err := json.Unmarshal(body, template); err != nil { status := fmt.Sprintf("cannot unmarshal request body:%s\n%s\n", err, body) http.Error(w, status, http.StatusInternalServerError) return } if !reflect.DeepEqual(validTemplateTestCaseData, *template) { status := fmt.Sprintf("error in http handler:\nwant:%s\nhave:%s\n", util.ToJSONOrError(validTemplateTestCaseData), util.ToJSONOrError(template)) http.Error(w, status, http.StatusInternalServerError) return } util.LogHandlerExitWithJSON(handler, w, validResponseTestCaseData, http.StatusOK) }
// Putting Registry handlers here for now because deployments.go // currently owns its own Manager backend and doesn't like to share. func listRegistriesHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: list registries" util.LogHandlerEntry(handler, r) registries, err := backend.ListRegistries() if err != nil { return } util.LogHandlerExitWithJSON(handler, w, registries, http.StatusOK) }
func listTypeInstancesHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: list instances" util.LogHandlerEntry(handler, r) typeName, err := getPathVariable(w, r, "type", handler) if err != nil { return } util.LogHandlerExitWithJSON(handler, w, backend.ListInstances(typeName), http.StatusOK) }
// Putting Type handlers here for now because deployments.go // currently owns its own Manager backend and doesn't like to share. func listTypesHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: list types" util.LogHandlerEntry(handler, r) types, err := backend.ListTypes() if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } util.LogHandlerExitWithJSON(handler, w, types, http.StatusOK) }
func listDeploymentsHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: list deployments" util.LogHandlerEntry(handler, r) l, err := backend.ListDeployments() if err != nil { util.LogAndReturnError(handler, http.StatusInternalServerError, err, w) return } var names []string for _, d := range l { names = append(names, d.Name) } util.LogHandlerExitWithJSON(handler, w, names, http.StatusOK) }
func getCredentialHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: get credential" util.LogHandlerEntry(handler, r) credentialName, err := getPathVariable(w, r, "credential", handler) if err != nil { return } c, err := backend.GetCredential(credentialName) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } util.LogHandlerExitWithJSON(handler, w, c, http.StatusOK) }
func expandHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: expand config" util.LogHandlerEntry(handler, r) defer r.Body.Close() t := getTemplate(w, r, handler) if t != nil { c, err := backend.Expand(t) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } util.LogHandlerExitWithJSON(handler, w, c, http.StatusCreated) return } }
func createDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: create deployment" util.LogHandlerEntry(handler, r) defer r.Body.Close() t := getTemplate(w, r, handler) if t != nil { d, err := backend.CreateDeployment(t) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } util.LogHandlerExitWithJSON(handler, w, d, http.StatusCreated) return } }
func getDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: get deployment" util.LogHandlerEntry(handler, r) name, err := getPathVariable(w, r, "deployment", handler) if err != nil { return } d, err := backend.GetDeployment(name) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } util.LogHandlerExitWithJSON(handler, w, d, http.StatusOK) }
func getRegistryHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: get registry" util.LogHandlerEntry(handler, r) registryName, err := getPathVariable(w, r, "registry", handler) if err != nil { return } cr, err := backend.GetRegistry(registryName) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } util.LogHandlerExitWithJSON(handler, w, cr, http.StatusOK) }
func putDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: update deployment" util.LogHandlerEntry(handler, r) defer r.Body.Close() name, err := getPathVariable(w, r, "deployment", handler) if err != nil { return } t := getTemplate(w, r, handler) if t != nil { d, err := backend.PutDeployment(name, t) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } util.LogHandlerExitWithJSON(handler, w, d, http.StatusCreated) } }
func createCredentialHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: create credential" util.LogHandlerEntry(handler, r) defer r.Body.Close() credentialName, err := getPathVariable(w, r, "credential", handler) if err != nil { return } c := getCredential(w, r, handler) if c != nil { err = backend.CreateCredential(credentialName, c) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } } util.LogHandlerExitWithJSON(handler, w, c, http.StatusOK) }
func getFileHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: get file" util.LogHandlerEntry(handler, r) registryName, err := getPathVariable(w, r, "registry", handler) if err != nil { return } file := r.FormValue("file") if file == "" { return } b, err := backend.GetFile(registryName, file) if err != nil { util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return } util.LogHandlerExitWithJSON(handler, w, b, http.StatusOK) }
func listManifestsHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: list manifests" util.LogHandlerEntry(handler, r) deploymentName, err := getPathVariable(w, r, "deployment", handler) if err != nil { return } m, err := backend.ListManifests(deploymentName) if err != nil { util.LogAndReturnError(handler, http.StatusInternalServerError, err, w) return } var manifestNames []string for _, manifest := range m { manifestNames = append(manifestNames, manifest.Name) } util.LogHandlerExitWithJSON(handler, w, manifestNames, http.StatusOK) }
// Putting Type handlers here for now because deployments.go // currently owns its own Manager backend and doesn't like to share. func listTypesHandlerFunc(w http.ResponseWriter, r *http.Request) { handler := "manager: list types" util.LogHandlerEntry(handler, r) util.LogHandlerExitWithJSON(handler, w, backend.ListTypes(), http.StatusOK) }