|
@@ -2,9 +2,7 @@ package swarm // import "github.com/docker/docker/api/server/router/swarm"
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
- "encoding/json"
|
|
|
"fmt"
|
|
|
- "io"
|
|
|
"net/http"
|
|
|
"strconv"
|
|
|
|
|
@@ -21,11 +19,8 @@ import (
|
|
|
|
|
|
func (sr *swarmRouter) initCluster(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var req types.InitRequest
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &req); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
version := httputils.VersionFromContext(ctx)
|
|
|
|
|
@@ -48,11 +43,8 @@ func (sr *swarmRouter) initCluster(ctx context.Context, w http.ResponseWriter, r
|
|
|
|
|
|
func (sr *swarmRouter) joinCluster(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var req types.JoinRequest
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &req); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
return sr.backend.Join(req)
|
|
|
}
|
|
@@ -78,11 +70,8 @@ func (sr *swarmRouter) inspectCluster(ctx context.Context, w http.ResponseWriter
|
|
|
|
|
|
func (sr *swarmRouter) updateCluster(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var swarm types.Spec
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&swarm); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &swarm); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
rawVersion := r.URL.Query().Get("version")
|
|
@@ -132,11 +121,8 @@ func (sr *swarmRouter) updateCluster(ctx context.Context, w http.ResponseWriter,
|
|
|
|
|
|
func (sr *swarmRouter) unlockCluster(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var req types.UnlockRequest
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &req); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
if err := sr.backend.UnlockSwarm(req); err != nil {
|
|
@@ -216,11 +202,8 @@ func (sr *swarmRouter) getService(ctx context.Context, w http.ResponseWriter, r
|
|
|
|
|
|
func (sr *swarmRouter) createService(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var service types.ServiceSpec
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&service); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &service); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
// Get returns "" if the header does not exist
|
|
@@ -243,11 +226,8 @@ func (sr *swarmRouter) createService(ctx context.Context, w http.ResponseWriter,
|
|
|
|
|
|
func (sr *swarmRouter) updateService(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var service types.ServiceSpec
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&service); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &service); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
rawVersion := r.URL.Query().Get("version")
|
|
@@ -341,11 +321,8 @@ func (sr *swarmRouter) getNode(ctx context.Context, w http.ResponseWriter, r *ht
|
|
|
|
|
|
func (sr *swarmRouter) updateNode(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var node types.NodeSpec
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&node); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &node); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
rawVersion := r.URL.Query().Get("version")
|
|
@@ -423,11 +400,8 @@ func (sr *swarmRouter) getSecrets(ctx context.Context, w http.ResponseWriter, r
|
|
|
|
|
|
func (sr *swarmRouter) createSecret(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var secret types.SecretSpec
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&secret); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &secret); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
version := httputils.VersionFromContext(ctx)
|
|
|
if secret.Templating != nil && versions.LessThan(version, "1.37") {
|
|
@@ -464,11 +438,8 @@ func (sr *swarmRouter) getSecret(ctx context.Context, w http.ResponseWriter, r *
|
|
|
|
|
|
func (sr *swarmRouter) updateSecret(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var secret types.SecretSpec
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&secret); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &secret); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
rawVersion := r.URL.Query().Get("version")
|
|
@@ -500,11 +471,8 @@ func (sr *swarmRouter) getConfigs(ctx context.Context, w http.ResponseWriter, r
|
|
|
|
|
|
func (sr *swarmRouter) createConfig(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var config types.ConfigSpec
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&config); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &config); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
version := httputils.VersionFromContext(ctx)
|
|
@@ -542,11 +510,8 @@ func (sr *swarmRouter) getConfig(ctx context.Context, w http.ResponseWriter, r *
|
|
|
|
|
|
func (sr *swarmRouter) updateConfig(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
var config types.ConfigSpec
|
|
|
- if err := json.NewDecoder(r.Body).Decode(&config); err != nil {
|
|
|
- if err == io.EOF {
|
|
|
- return errdefs.InvalidParameter(errors.New("got EOF while reading request body"))
|
|
|
- }
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
+ if err := httputils.ReadJSON(r, &config); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
rawVersion := r.URL.Query().Get("version")
|