|
@@ -72,9 +72,18 @@ func httpError(w http.ResponseWriter, err error) {
|
|
http.Error(w, err.Error(), statusCode)
|
|
http.Error(w, err.Error(), statusCode)
|
|
}
|
|
}
|
|
|
|
|
|
-func writeJSON(w http.ResponseWriter, b []byte) {
|
|
|
|
|
|
+func writeJSON(w http.ResponseWriter, code int, v interface{}) error {
|
|
|
|
+ b, err := json.Marshal(v)
|
|
|
|
+
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
|
+ w.WriteHeader(code)
|
|
w.Write(b)
|
|
w.Write(b)
|
|
|
|
+
|
|
|
|
+ return nil
|
|
}
|
|
}
|
|
|
|
|
|
func getBoolParam(value string) (bool, error) {
|
|
func getBoolParam(value string) (bool, error) {
|
|
@@ -107,25 +116,14 @@ func postAuth(srv *Server, version float64, w http.ResponseWriter, r *http.Reque
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
if status != "" {
|
|
if status != "" {
|
|
- b, err := json.Marshal(&APIAuth{Status: status})
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+ return writeJSON(w, http.StatusOK, &APIAuth{Status: status})
|
|
}
|
|
}
|
|
w.WriteHeader(http.StatusNoContent)
|
|
w.WriteHeader(http.StatusNoContent)
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|
|
func getVersion(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func getVersion(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
- m := srv.DockerVersion()
|
|
|
|
- b, err := json.Marshal(m)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+ return writeJSON(w, http.StatusOK, srv.DockerVersion())
|
|
}
|
|
}
|
|
|
|
|
|
func postContainersKill(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func postContainersKill(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -168,12 +166,8 @@ func getImagesJSON(srv *Server, version float64, w http.ResponseWriter, r *http.
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- b, err := json.Marshal(outs)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusOK, outs)
|
|
}
|
|
}
|
|
|
|
|
|
func getImagesViz(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func getImagesViz(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -184,13 +178,7 @@ func getImagesViz(srv *Server, version float64, w http.ResponseWriter, r *http.R
|
|
}
|
|
}
|
|
|
|
|
|
func getInfo(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func getInfo(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
- out := srv.DockerInfo()
|
|
|
|
- b, err := json.Marshal(out)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+ return writeJSON(w, http.StatusOK, srv.DockerInfo())
|
|
}
|
|
}
|
|
|
|
|
|
func getEvents(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func getEvents(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -259,12 +247,8 @@ func getImagesHistory(srv *Server, version float64, w http.ResponseWriter, r *ht
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- b, err := json.Marshal(outs)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusOK, outs)
|
|
}
|
|
}
|
|
|
|
|
|
func getContainersChanges(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func getContainersChanges(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -276,12 +260,8 @@ func getContainersChanges(srv *Server, version float64, w http.ResponseWriter, r
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- b, err := json.Marshal(changesStr)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusOK, changesStr)
|
|
}
|
|
}
|
|
|
|
|
|
func getContainersTop(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func getContainersTop(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -300,12 +280,8 @@ func getContainersTop(srv *Server, version float64, w http.ResponseWriter, r *ht
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- b, err := json.Marshal(procsStr)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusOK, procsStr)
|
|
}
|
|
}
|
|
|
|
|
|
func getContainersJSON(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func getContainersJSON(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -327,23 +303,18 @@ func getContainersJSON(srv *Server, version float64, w http.ResponseWriter, r *h
|
|
n = -1
|
|
n = -1
|
|
}
|
|
}
|
|
|
|
|
|
- var b []byte
|
|
|
|
outs := srv.Containers(all, size, n, since, before)
|
|
outs := srv.Containers(all, size, n, since, before)
|
|
|
|
+
|
|
if version < 1.5 {
|
|
if version < 1.5 {
|
|
outs2 := []APIContainersOld{}
|
|
outs2 := []APIContainersOld{}
|
|
for _, ctnr := range outs {
|
|
for _, ctnr := range outs {
|
|
outs2 = append(outs2, ctnr.ToLegacy())
|
|
outs2 = append(outs2, ctnr.ToLegacy())
|
|
}
|
|
}
|
|
- b, err = json.Marshal(outs2)
|
|
|
|
- } else {
|
|
|
|
- b, err = json.Marshal(outs)
|
|
|
|
- }
|
|
|
|
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
|
|
+ return writeJSON(w, http.StatusOK, outs2)
|
|
|
|
+ } else {
|
|
|
|
+ return writeJSON(w, http.StatusOK, outs)
|
|
}
|
|
}
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
}
|
|
}
|
|
|
|
|
|
func postImagesTag(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func postImagesTag(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -385,13 +356,8 @@ func postCommit(srv *Server, version float64, w http.ResponseWriter, r *http.Req
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- b, err := json.Marshal(&APIID{id})
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- w.WriteHeader(http.StatusCreated)
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusCreated, &APIID{id})
|
|
}
|
|
}
|
|
|
|
|
|
// Creates an image from Pull or from Import
|
|
// Creates an image from Pull or from Import
|
|
@@ -455,12 +421,8 @@ func getImagesSearch(srv *Server, version float64, w http.ResponseWriter, r *htt
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- b, err := json.Marshal(outs)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusOK, outs)
|
|
}
|
|
}
|
|
|
|
|
|
func postImagesInsert(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func postImagesInsert(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -485,12 +447,8 @@ func postImagesInsert(srv *Server, version float64, w http.ResponseWriter, r *ht
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- b, err := json.Marshal(&APIID{ID: imgID})
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusOK, &APIID{ID: imgID})
|
|
}
|
|
}
|
|
|
|
|
|
func postImagesPush(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func postImagesPush(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -577,13 +535,7 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r
|
|
out.Warnings = append(out.Warnings, "IPv4 forwarding is disabled.")
|
|
out.Warnings = append(out.Warnings, "IPv4 forwarding is disabled.")
|
|
}
|
|
}
|
|
|
|
|
|
- b, err := json.Marshal(out)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- w.WriteHeader(http.StatusCreated)
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+ return writeJSON(w, http.StatusCreated, out)
|
|
}
|
|
}
|
|
|
|
|
|
func postContainersRestart(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func postContainersRestart(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -639,11 +591,7 @@ func deleteImages(srv *Server, version float64, w http.ResponseWriter, r *http.R
|
|
}
|
|
}
|
|
if imgs != nil {
|
|
if imgs != nil {
|
|
if len(imgs) != 0 {
|
|
if len(imgs) != 0 {
|
|
- b, err := json.Marshal(imgs)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
|
|
+ return writeJSON(w, http.StatusOK, imgs)
|
|
} else {
|
|
} else {
|
|
return fmt.Errorf("Conflict, %s wasn't deleted", name)
|
|
return fmt.Errorf("Conflict, %s wasn't deleted", name)
|
|
}
|
|
}
|
|
@@ -706,12 +654,8 @@ func postContainersWait(srv *Server, version float64, w http.ResponseWriter, r *
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
- b, err := json.Marshal(&APIWait{StatusCode: status})
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusOK, &APIWait{StatusCode: status})
|
|
}
|
|
}
|
|
|
|
|
|
func postContainersResize(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func postContainersResize(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -858,12 +802,8 @@ func getContainersByName(srv *Server, version float64, w http.ResponseWriter, r
|
|
if err == nil {
|
|
if err == nil {
|
|
return fmt.Errorf("Conflict between containers and images")
|
|
return fmt.Errorf("Conflict between containers and images")
|
|
}
|
|
}
|
|
- b, err := json.Marshal(container)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusOK, container)
|
|
}
|
|
}
|
|
|
|
|
|
func getImagesByName(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func getImagesByName(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
@@ -881,12 +821,8 @@ func getImagesByName(srv *Server, version float64, w http.ResponseWriter, r *htt
|
|
if err == nil {
|
|
if err == nil {
|
|
return fmt.Errorf("Conflict between containers and images")
|
|
return fmt.Errorf("Conflict between containers and images")
|
|
}
|
|
}
|
|
- b, err := json.Marshal(image)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- writeJSON(w, b)
|
|
|
|
- return nil
|
|
|
|
|
|
+
|
|
|
|
+ return writeJSON(w, http.StatusOK, image)
|
|
}
|
|
}
|
|
|
|
|
|
func postBuild(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
func postBuild(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|