Commit 9a9398c0 authored by Matt Butcher's avatar Matt Butcher

fix(manager): updated routes to new format

parent 0b0092f2
...@@ -43,27 +43,6 @@ import ( ...@@ -43,27 +43,6 @@ import (
"github.com/kubernetes/helm/pkg/util" "github.com/kubernetes/helm/pkg/util"
) )
var deployments = []Route{
{"CreateDeployment", "/deployments", "POST", createDeploymentHandlerFunc, "JSON"},
{"DeleteDeplyment", "/deployments/{deployment}", "DELETE", deleteDeploymentHandlerFunc, ""},
{"PutDeployment", "/deployments/{deployment}", "PUT", putDeploymentHandlerFunc, "JSON"},
{"ListManifests", "/deployments/{deployment}/manifests", "GET", listManifestsHandlerFunc, ""},
{"GetManifest", "/deployments/{deployment}/manifests/{manifest}", "GET", getManifestHandlerFunc, ""},
{"Expand", "/expand", "POST", expandHandlerFunc, ""},
{"ListTypes", "/types", "GET", listTypesHandlerFunc, ""},
{"ListTypeInstances", "/types/{type}/instances", "GET", listTypeInstancesHandlerFunc, ""},
{"GetRegistryForType", "/types/{type}/registry", "GET", getRegistryForTypeHandlerFunc, ""},
{"GetMetadataForType", "/types/{type}/metadata", "GET", getMetadataForTypeHandlerFunc, ""},
{"ListRegistries", "/registries", "GET", listRegistriesHandlerFunc, ""},
{"GetRegistry", "/registries/{registry}", "GET", getRegistryHandlerFunc, ""},
{"CreateRegistry", "/registries/{registry}", "POST", createRegistryHandlerFunc, "JSON"},
{"ListRegistryTypes", "/registries/{registry}/types", "GET", listRegistryTypesHandlerFunc, ""},
{"GetDownloadURLs", "/registries/{registry}/types/{type}", "GET", getDownloadURLsHandlerFunc, ""},
{"GetFile", "/registries/{registry}/download", "GET", getFileHandlerFunc, ""},
{"CreateCredential", "/credentials/{credential}", "POST", createCredentialHandlerFunc, "JSON"},
{"GetCredential", "/credentials/{credential}", "GET", getCredentialHandlerFunc, ""},
}
// Deprecated. Use Context.Manager instead. // Deprecated. Use Context.Manager instead.
var backend manager.Manager var backend manager.Manager
...@@ -79,21 +58,27 @@ type Route struct { ...@@ -79,21 +58,27 @@ type Route struct {
} }
func registerDeploymentRoutes(c *router.Context, h *router.Handler) { func registerDeploymentRoutes(c *router.Context, h *router.Handler) {
re := regexp.MustCompile("{[a-z]+}")
h.Add("GET /healthz", healthz) h.Add("GET /healthz", healthz)
h.Add("GET /deployments", listDeploymentsHandlerFunc) h.Add("GET /deployments", listDeploymentsHandlerFunc)
h.Add("GET /deployments/*", getDeploymentHandlerFunc) h.Add("GET /deployments/*", getDeploymentHandlerFunc)
h.Add("POST /deployments", createDeploymentHandlerFunc)
// TODO: Replace these routes with updated ones. h.Add("DELETE /deployments/*", deleteDeploymentHandlerFunc)
for _, d := range deployments { h.Add("PUT /deployments/*", putDeploymentHandlerFunc)
path := fmt.Sprintf("%s %s", d.Methods, re.ReplaceAllString(d.Path, "*")) h.Add("GET /deployments/*/manifests", listManifestsHandlerFunc)
fmt.Printf("\t%s\n", path) h.Add("GET /deployments/*/manifests/*", getManifestHandlerFunc)
h.Add(path, func(w http.ResponseWriter, r *http.Request, c *router.Context) error { h.Add("POST /expand", expandHandlerFunc)
d.HandlerFunc(w, r) h.Add("GET /types", listTypesHandlerFunc)
return nil h.Add("GET /types/*/instances", listTypeInstancesHandlerFunc)
}) h.Add("GET /types/*/registry", getRegistryForTypeHandlerFunc)
} h.Add("GET /types/*/metadata", getMetadataForTypeHandlerFunc)
h.Add("GET /registries", listRegistriesHandlerFunc)
h.Add("GET /registries/*", getRegistryHandlerFunc)
h.Add("POST /registries/*", createRegistryHandlerFunc)
h.Add("GET /registries/*/types", listRegistryTypesHandlerFunc)
h.Add("GET /registries/*/types/*", getDownloadURLsHandlerFunc)
h.Add("GET /registries/*/download", getFileHandlerFunc)
h.Add("POST /credentials/*", createCredentialHandlerFunc)
h.Add("GET /credentials/*", getCredentialHandlerFunc)
} }
func healthz(w http.ResponseWriter, r *http.Request, c *router.Context) error { func healthz(w http.ResponseWriter, r *http.Request, c *router.Context) error {
...@@ -207,7 +192,7 @@ func listDeploymentsHandlerFunc(w http.ResponseWriter, r *http.Request, c *route ...@@ -207,7 +192,7 @@ func listDeploymentsHandlerFunc(w http.ResponseWriter, r *http.Request, c *route
func getDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error { func getDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: get deployment" handler := "manager: get deployment"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
name, err := getPathVariable(w, r, "deployment", handler) name, err := pos(w, r, 2)
if err != nil { if err != nil {
return nil return nil
} }
...@@ -222,7 +207,7 @@ func getDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request, c *router. ...@@ -222,7 +207,7 @@ func getDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.
return nil return nil
} }
func createDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) { func createDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: create deployment" handler := "manager: create deployment"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
defer r.Body.Close() defer r.Body.Close()
...@@ -230,52 +215,53 @@ func createDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) { ...@@ -230,52 +215,53 @@ func createDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) {
if t != nil { if t != nil {
d, err := backend.CreateDeployment(t) d, err := backend.CreateDeployment(t)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, d, http.StatusCreated) util.LogHandlerExitWithJSON(handler, w, d, http.StatusCreated)
return
} }
return nil
} }
func deleteDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) { func deleteDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: delete deployment" handler := "manager: delete deployment"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
defer r.Body.Close() defer r.Body.Close()
name, err := pos(w, r, 2) //getPathVariable(w, r, "deployment", handler) name, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
d, err := backend.DeleteDeployment(name, true) d, err := c.Manager.DeleteDeployment(name, true)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) return err
return
} }
util.LogHandlerExitWithJSON(handler, w, d, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, d, http.StatusOK)
return nil
} }
func putDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) { func putDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: update deployment" handler := "manager: update deployment"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
defer r.Body.Close() defer r.Body.Close()
name, err := pos(w, r, 2) //getPathVariable(w, r, "deployment", handler) name, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
t := getTemplate(w, r, handler) t := getTemplate(w, r, handler)
if t != nil { if t != nil {
d, err := backend.PutDeployment(name, t) d, err := backend.PutDeployment(name, t)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, d, http.StatusCreated) util.LogHandlerExitWithJSON(handler, w, d, http.StatusCreated)
} }
return nil
} }
// pos gets a path item by position. // pos gets a path item by position.
...@@ -288,7 +274,6 @@ func putDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) { ...@@ -288,7 +274,6 @@ func putDeploymentHandlerFunc(w http.ResponseWriter, r *http.Request) {
func pos(w http.ResponseWriter, r *http.Request, i int) (string, error) { func pos(w http.ResponseWriter, r *http.Request, i int) (string, error) {
parts := strings.Split(r.URL.Path, "/") parts := strings.Split(r.URL.Path, "/")
if len(parts) < i-1 { if len(parts) < i-1 {
httputil.BadRequest(w, r)
return "", fmt.Errorf("No index for %d", i) return "", fmt.Errorf("No index for %d", i)
} }
return parts[i], nil return parts[i], nil
...@@ -331,18 +316,17 @@ func getTemplate(w http.ResponseWriter, r *http.Request, handler string) *common ...@@ -331,18 +316,17 @@ func getTemplate(w http.ResponseWriter, r *http.Request, handler string) *common
return t return t
} }
func listManifestsHandlerFunc(w http.ResponseWriter, r *http.Request) { func listManifestsHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: list manifests" handler := "manager: list manifests"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
deploymentName, err := pos(w, r, 2) deploymentName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
m, err := backend.ListManifests(deploymentName) m, err := backend.ListManifests(deploymentName)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusInternalServerError, err, w) return err
return
} }
var manifestNames []string var manifestNames []string
...@@ -351,31 +335,33 @@ func listManifestsHandlerFunc(w http.ResponseWriter, r *http.Request) { ...@@ -351,31 +335,33 @@ func listManifestsHandlerFunc(w http.ResponseWriter, r *http.Request) {
} }
util.LogHandlerExitWithJSON(handler, w, manifestNames, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, manifestNames, http.StatusOK)
return nil
} }
func getManifestHandlerFunc(w http.ResponseWriter, r *http.Request) { func getManifestHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: get manifest" handler := "manager: get manifest"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
deploymentName, err := pos(w, r, 2) deploymentName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
manifestName, err := pos(w, r, 4) manifestName, err := pos(w, r, 4)
if err != nil { if err != nil {
return return err
} }
m, err := backend.GetManifest(deploymentName, manifestName) m, err := backend.GetManifest(deploymentName, manifestName)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, m, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, m, http.StatusOK)
return nil
} }
func expandHandlerFunc(w http.ResponseWriter, r *http.Request) { func expandHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: expand config" handler := "manager: expand config"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
defer r.Body.Close() defer r.Body.Close()
...@@ -383,108 +369,114 @@ func expandHandlerFunc(w http.ResponseWriter, r *http.Request) { ...@@ -383,108 +369,114 @@ func expandHandlerFunc(w http.ResponseWriter, r *http.Request) {
if t != nil { if t != nil {
c, err := backend.Expand(t) c, err := backend.Expand(t)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, c, http.StatusCreated) util.LogHandlerExitWithJSON(handler, w, c, http.StatusCreated)
return
} }
return nil
} }
// Putting Type handlers here for now because deployments.go // Putting Type handlers here for now because deployments.go
// currently owns its own Manager backend and doesn't like to share. // currently owns its own Manager backend and doesn't like to share.
func listTypesHandlerFunc(w http.ResponseWriter, r *http.Request) { func listTypesHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: list types" handler := "manager: list types"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
types, err := backend.ListTypes() types, err := backend.ListTypes()
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, types, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, types, http.StatusOK)
return nil
} }
func listTypeInstancesHandlerFunc(w http.ResponseWriter, r *http.Request) { func listTypeInstancesHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: list instances" handler := "manager: list instances"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
typeName, err := pos(w, r, 2) typeName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
instances, err := backend.ListInstances(typeName) instances, err := backend.ListInstances(typeName)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, instances, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, instances, http.StatusOK)
return nil
} }
func getRegistryForTypeHandlerFunc(w http.ResponseWriter, r *http.Request) { func getRegistryForTypeHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: get type registry" handler := "manager: get type registry"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
typeName, err := pos(w, r, 2) typeName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
registry, err := backend.GetRegistryForType(typeName) registry, err := backend.GetRegistryForType(typeName)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, registry, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, registry, http.StatusOK)
return nil
} }
func getMetadataForTypeHandlerFunc(w http.ResponseWriter, r *http.Request) { func getMetadataForTypeHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: get type metadata" handler := "manager: get type metadata"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
typeName, err := pos(w, r, 2) typeName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
metadata, err := backend.GetMetadataForType(typeName) metadata, err := backend.GetMetadataForType(typeName)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, metadata, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, metadata, http.StatusOK)
return nil
} }
// Putting Registry handlers here for now because deployments.go // Putting Registry handlers here for now because deployments.go
// currently owns its own Manager backend and doesn't like to share. // currently owns its own Manager backend and doesn't like to share.
func listRegistriesHandlerFunc(w http.ResponseWriter, r *http.Request) { func listRegistriesHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: list registries" handler := "manager: list registries"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
registries, err := backend.ListRegistries() registries, err := backend.ListRegistries()
if err != nil { if err != nil {
return return err
} }
util.LogHandlerExitWithJSON(handler, w, registries, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, registries, http.StatusOK)
return nil
} }
func getRegistryHandlerFunc(w http.ResponseWriter, r *http.Request) { func getRegistryHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: get registry" handler := "manager: get registry"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
registryName, err := pos(w, r, 2) registryName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
cr, err := backend.GetRegistry(registryName) cr, err := backend.GetRegistry(registryName)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, cr, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, cr, http.StatusOK)
return nil
} }
func getRegistry(w http.ResponseWriter, r *http.Request, handler string) *common.Registry { func getRegistry(w http.ResponseWriter, r *http.Request, handler string) *common.Registry {
...@@ -504,44 +496,45 @@ func getRegistry(w http.ResponseWriter, r *http.Request, handler string) *common ...@@ -504,44 +496,45 @@ func getRegistry(w http.ResponseWriter, r *http.Request, handler string) *common
return t return t
} }
func createRegistryHandlerFunc(w http.ResponseWriter, r *http.Request) { func createRegistryHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: create registry" handler := "manager: create registry"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
defer r.Body.Close() defer r.Body.Close()
registryName, err := pos(w, r, 2) registryName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
reg := getRegistry(w, r, handler) reg := getRegistry(w, r, handler)
if reg.Name != registryName { if reg.Name != registryName {
e := fmt.Errorf("Registry name does not match %s != %s", reg.Name, registryName) e := fmt.Errorf("Registry name does not match %s != %s", reg.Name, registryName)
util.LogAndReturnError(handler, http.StatusBadRequest, e, w) httputil.BadRequest(w, r, e)
return return nil
} }
if reg != nil { if reg != nil {
err = backend.CreateRegistry(reg) err = backend.CreateRegistry(reg)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
} }
util.LogHandlerExitWithJSON(handler, w, reg, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, reg, http.StatusOK)
return nil
} }
func listRegistryTypesHandlerFunc(w http.ResponseWriter, r *http.Request) { func listRegistryTypesHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: list registry types" handler := "manager: list registry types"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
registryName, err := pos(w, r, 2) registryName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
values, err := url.ParseQuery(r.URL.RawQuery) values, err := url.ParseQuery(r.URL.RawQuery)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
var regex *regexp.Regexp var regex *regexp.Regexp
...@@ -549,72 +542,73 @@ func listRegistryTypesHandlerFunc(w http.ResponseWriter, r *http.Request) { ...@@ -549,72 +542,73 @@ func listRegistryTypesHandlerFunc(w http.ResponseWriter, r *http.Request) {
if regexString != "" { if regexString != "" {
regex, err = regexp.Compile(regexString) regex, err = regexp.Compile(regexString)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
} }
registryTypes, err := backend.ListRegistryTypes(registryName, regex) registryTypes, err := backend.ListRegistryTypes(registryName, regex)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusInternalServerError, err, w) return err
return
} }
util.LogHandlerExitWithJSON(handler, w, registryTypes, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, registryTypes, http.StatusOK)
return nil
} }
func getDownloadURLsHandlerFunc(w http.ResponseWriter, r *http.Request) { func getDownloadURLsHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: get download URLs" handler := "manager: get download URLs"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
registryName, err := pos(w, r, 2) registryName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
typeName, err := pos(w, r, 4) typeName, err := pos(w, r, 4)
if err != nil { if err != nil {
return return err
} }
tt, err := registry.ParseType(typeName) tt, err := registry.ParseType(typeName)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusInternalServerError, err, w) return err
return
} }
c, err := backend.GetDownloadURLs(registryName, tt) cr, err := backend.GetDownloadURLs(registryName, tt)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
urls := []string{} urls := []string{}
for _, u := range c { for _, u := range cr {
urls = append(urls, u.String()) urls = append(urls, u.String())
} }
util.LogHandlerExitWithJSON(handler, w, urls, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, urls, http.StatusOK)
return nil
} }
func getFileHandlerFunc(w http.ResponseWriter, r *http.Request) { func getFileHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: get file" handler := "manager: get file"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
registryName, err := pos(w, r, 2) registryName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
file := r.FormValue("file") file := r.FormValue("file")
if file == "" { if file == "" {
return return err
} }
b, err := backend.GetFile(registryName, file) b, err := backend.GetFile(registryName, file)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, b, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, b, http.StatusOK)
return nil
} }
func getCredential(w http.ResponseWriter, r *http.Request, handler string) *common.RegistryCredential { func getCredential(w http.ResponseWriter, r *http.Request, handler string) *common.RegistryCredential {
...@@ -634,42 +628,44 @@ func getCredential(w http.ResponseWriter, r *http.Request, handler string) *comm ...@@ -634,42 +628,44 @@ func getCredential(w http.ResponseWriter, r *http.Request, handler string) *comm
return t return t
} }
func createCredentialHandlerFunc(w http.ResponseWriter, r *http.Request) { func createCredentialHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: create credential" handler := "manager: create credential"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
defer r.Body.Close() defer r.Body.Close()
credentialName, err := pos(w, r, 2) credentialName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
c := getCredential(w, r, handler) cr := getCredential(w, r, handler)
if c != nil { if cr != nil {
err = backend.CreateCredential(credentialName, c) err = backend.CreateCredential(credentialName, cr)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
} }
util.LogHandlerExitWithJSON(handler, w, c, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, c, http.StatusOK)
return nil
} }
func getCredentialHandlerFunc(w http.ResponseWriter, r *http.Request) { func getCredentialHandlerFunc(w http.ResponseWriter, r *http.Request, c *router.Context) error {
handler := "manager: get credential" handler := "manager: get credential"
util.LogHandlerEntry(handler, r) util.LogHandlerEntry(handler, r)
credentialName, err := pos(w, r, 2) credentialName, err := pos(w, r, 2)
if err != nil { if err != nil {
return return err
} }
c, err := backend.GetCredential(credentialName) cr, err := backend.GetCredential(credentialName)
if err != nil { if err != nil {
util.LogAndReturnError(handler, http.StatusBadRequest, err, w) httputil.BadRequest(w, r, err)
return return nil
} }
util.LogHandlerExitWithJSON(handler, w, c, http.StatusOK) util.LogHandlerExitWithJSON(handler, w, cr, http.StatusOK)
return nil
} }
func getJSONFromRequest(w http.ResponseWriter, r *http.Request, handler string) ([]byte, error) { func getJSONFromRequest(w http.ResponseWriter, r *http.Request, handler string) ([]byte, error) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment