mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #26576 from allencloud/change-cluster-response-status-code
update response status code for cluster request
This commit is contained in:
commit
a58b5830b1
5 changed files with 125 additions and 33 deletions
|
@ -65,7 +65,8 @@ func (sr *swarmRouter) updateCluster(ctx context.Context, w http.ResponseWriter,
|
||||||
rawVersion := r.URL.Query().Get("version")
|
rawVersion := r.URL.Query().Get("version")
|
||||||
version, err := strconv.ParseUint(rawVersion, 10, 64)
|
version, err := strconv.ParseUint(rawVersion, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Invalid swarm version '%s': %s", rawVersion, err.Error())
|
err := fmt.Errorf("invalid swarm version '%s': %v", rawVersion, err)
|
||||||
|
return errors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var flags types.UpdateFlags
|
var flags types.UpdateFlags
|
||||||
|
@ -73,7 +74,8 @@ func (sr *swarmRouter) updateCluster(ctx context.Context, w http.ResponseWriter,
|
||||||
if value := r.URL.Query().Get("rotateWorkerToken"); value != "" {
|
if value := r.URL.Query().Get("rotateWorkerToken"); value != "" {
|
||||||
rot, err := strconv.ParseBool(value)
|
rot, err := strconv.ParseBool(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid value for rotateWorkerToken: %s", value)
|
err := fmt.Errorf("invalid value for rotateWorkerToken: %s", value)
|
||||||
|
return errors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
flags.RotateWorkerToken = rot
|
flags.RotateWorkerToken = rot
|
||||||
|
@ -82,7 +84,8 @@ func (sr *swarmRouter) updateCluster(ctx context.Context, w http.ResponseWriter,
|
||||||
if value := r.URL.Query().Get("rotateManagerToken"); value != "" {
|
if value := r.URL.Query().Get("rotateManagerToken"); value != "" {
|
||||||
rot, err := strconv.ParseBool(value)
|
rot, err := strconv.ParseBool(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid value for rotateManagerToken: %s", value)
|
err := fmt.Errorf("invalid value for rotateManagerToken: %s", value)
|
||||||
|
return errors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
flags.RotateManagerToken = rot
|
flags.RotateManagerToken = rot
|
||||||
|
@ -91,7 +94,7 @@ func (sr *swarmRouter) updateCluster(ctx context.Context, w http.ResponseWriter,
|
||||||
if value := r.URL.Query().Get("rotateManagerUnlockKey"); value != "" {
|
if value := r.URL.Query().Get("rotateManagerUnlockKey"); value != "" {
|
||||||
rot, err := strconv.ParseBool(value)
|
rot, err := strconv.ParseBool(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid value for rotateManagerUnlockKey: %s", value)
|
return errors.NewBadRequestError(fmt.Errorf("invalid value for rotateManagerUnlockKey: %s", value))
|
||||||
}
|
}
|
||||||
|
|
||||||
flags.RotateManagerUnlockKey = rot
|
flags.RotateManagerUnlockKey = rot
|
||||||
|
@ -184,7 +187,8 @@ func (sr *swarmRouter) updateService(ctx context.Context, w http.ResponseWriter,
|
||||||
rawVersion := r.URL.Query().Get("version")
|
rawVersion := r.URL.Query().Get("version")
|
||||||
version, err := strconv.ParseUint(rawVersion, 10, 64)
|
version, err := strconv.ParseUint(rawVersion, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Invalid service version '%s': %s", rawVersion, err.Error())
|
err := fmt.Errorf("invalid service version '%s': %v", rawVersion, err)
|
||||||
|
return errors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get returns "" if the header does not exist
|
// Get returns "" if the header does not exist
|
||||||
|
@ -294,7 +298,8 @@ func (sr *swarmRouter) updateNode(ctx context.Context, w http.ResponseWriter, r
|
||||||
rawVersion := r.URL.Query().Get("version")
|
rawVersion := r.URL.Query().Get("version")
|
||||||
version, err := strconv.ParseUint(rawVersion, 10, 64)
|
version, err := strconv.ParseUint(rawVersion, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Invalid node version '%s': %s", rawVersion, err.Error())
|
err := fmt.Errorf("invalid node version '%s': %v", rawVersion, err)
|
||||||
|
return errors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sr.backend.UpdateNode(vars["id"], version, node); err != nil {
|
if err := sr.backend.UpdateNode(vars["id"], version, node); err != nil {
|
||||||
|
|
111
api/swagger.yaml
111
api/swagger.yaml
|
@ -6730,10 +6730,22 @@ paths:
|
||||||
type: "array"
|
type: "array"
|
||||||
items:
|
items:
|
||||||
$ref: "#/definitions/Node"
|
$ref: "#/definitions/Node"
|
||||||
|
400:
|
||||||
|
description: "bad parameter"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
404:
|
||||||
|
description: "no such node"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
500:
|
500:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "filters"
|
- name: "filters"
|
||||||
in: "query"
|
in: "query"
|
||||||
|
@ -6765,6 +6777,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
@ -6786,6 +6802,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
@ -6813,6 +6833,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
@ -6877,10 +6901,18 @@ paths:
|
||||||
UpdatedAt: "2016-08-15T16:32:09.623207604Z"
|
UpdatedAt: "2016-08-15T16:32:09.623207604Z"
|
||||||
Version:
|
Version:
|
||||||
Index: 51
|
Index: 51
|
||||||
|
404:
|
||||||
|
description: "no such swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
500:
|
500:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
tags: ["Swarm"]
|
tags: ["Swarm"]
|
||||||
/swarm/init:
|
/swarm/init:
|
||||||
post:
|
post:
|
||||||
|
@ -6900,14 +6932,14 @@ paths:
|
||||||
description: "bad parameter"
|
description: "bad parameter"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
406:
|
|
||||||
description: "node is already part of a swarm"
|
|
||||||
schema:
|
|
||||||
$ref: "#/definitions/ErrorResponse"
|
|
||||||
500:
|
500:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is already part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "body"
|
- name: "body"
|
||||||
in: "body"
|
in: "body"
|
||||||
|
@ -7073,6 +7105,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
tags: ["Swarm"]
|
tags: ["Swarm"]
|
||||||
/swarm/unlock:
|
/swarm/unlock:
|
||||||
post:
|
post:
|
||||||
|
@ -7101,6 +7137,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
tags: ["Swarm"]
|
tags: ["Swarm"]
|
||||||
/services:
|
/services:
|
||||||
get:
|
get:
|
||||||
|
@ -7117,6 +7157,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "filters"
|
- name: "filters"
|
||||||
in: "query"
|
in: "query"
|
||||||
|
@ -7151,6 +7195,10 @@ paths:
|
||||||
example:
|
example:
|
||||||
ID: "ak7w3gjqoa3kuz8xcpnyy0pvl"
|
ID: "ak7w3gjqoa3kuz8xcpnyy0pvl"
|
||||||
Warning: "unable to pin image doesnotexist:latest to digest: image library/doesnotexist:latest not found"
|
Warning: "unable to pin image doesnotexist:latest to digest: image library/doesnotexist:latest not found"
|
||||||
|
400:
|
||||||
|
description: "bad parameter"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
403:
|
403:
|
||||||
description: "network is not eligible for services"
|
description: "network is not eligible for services"
|
||||||
schema:
|
schema:
|
||||||
|
@ -7164,7 +7212,7 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
503:
|
503:
|
||||||
description: "server error or node is not part of a swarm"
|
description: "node is not part of a swarm"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
|
@ -7246,6 +7294,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
@ -7267,6 +7319,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
@ -7285,6 +7341,10 @@ paths:
|
||||||
description: "no error"
|
description: "no error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ImageDeleteResponse"
|
$ref: "#/definitions/ImageDeleteResponse"
|
||||||
|
400:
|
||||||
|
description: "bad parameter"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
404:
|
404:
|
||||||
description: "no such service"
|
description: "no such service"
|
||||||
schema:
|
schema:
|
||||||
|
@ -7293,6 +7353,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
@ -7381,6 +7445,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
@ -7550,11 +7618,14 @@ paths:
|
||||||
Gateway: "10.255.0.1"
|
Gateway: "10.255.0.1"
|
||||||
Addresses:
|
Addresses:
|
||||||
- "10.255.0.5/16"
|
- "10.255.0.5/16"
|
||||||
|
|
||||||
500:
|
500:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "filters"
|
- name: "filters"
|
||||||
in: "query"
|
in: "query"
|
||||||
|
@ -7588,6 +7659,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
@ -7620,6 +7695,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "filters"
|
- name: "filters"
|
||||||
in: "query"
|
in: "query"
|
||||||
|
@ -7648,10 +7727,6 @@ paths:
|
||||||
type: "string"
|
type: "string"
|
||||||
example:
|
example:
|
||||||
ID: "ktnbjxoalbkvbvedmg1urrz8h"
|
ID: "ktnbjxoalbkvbvedmg1urrz8h"
|
||||||
406:
|
|
||||||
description: "server error or node is not part of a swarm"
|
|
||||||
schema:
|
|
||||||
$ref: "#/definitions/ErrorResponse"
|
|
||||||
409:
|
409:
|
||||||
description: "name conflicts with an existing object"
|
description: "name conflicts with an existing object"
|
||||||
schema:
|
schema:
|
||||||
|
@ -7660,6 +7735,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "body"
|
- name: "body"
|
||||||
in: "body"
|
in: "body"
|
||||||
|
@ -7696,14 +7775,14 @@ paths:
|
||||||
description: "secret not found"
|
description: "secret not found"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
406:
|
|
||||||
description: "node is not part of a swarm"
|
|
||||||
schema:
|
|
||||||
$ref: "#/definitions/ErrorResponse"
|
|
||||||
500:
|
500:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
@ -7727,6 +7806,10 @@ paths:
|
||||||
description: "server error"
|
description: "server error"
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/definitions/ErrorResponse"
|
$ref: "#/definitions/ErrorResponse"
|
||||||
|
503:
|
||||||
|
description: "node is not part of a swarm"
|
||||||
|
schema:
|
||||||
|
$ref: "#/definitions/ErrorResponse"
|
||||||
parameters:
|
parameters:
|
||||||
- name: "id"
|
- name: "id"
|
||||||
in: "path"
|
in: "path"
|
||||||
|
|
|
@ -268,7 +268,7 @@ func (c *Cluster) Init(req types.InitRequest) (string, error) {
|
||||||
c.mu.Unlock()
|
c.mu.Unlock()
|
||||||
|
|
||||||
if err := validateAndSanitizeInitRequest(&req); err != nil {
|
if err := validateAndSanitizeInitRequest(&req); err != nil {
|
||||||
return "", err
|
return "", apierrors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
listenHost, listenPort, err := resolveListenAddr(req.ListenAddr)
|
listenHost, listenPort, err := resolveListenAddr(req.ListenAddr)
|
||||||
|
@ -363,7 +363,7 @@ func (c *Cluster) Join(req types.JoinRequest) error {
|
||||||
c.mu.Unlock()
|
c.mu.Unlock()
|
||||||
|
|
||||||
if err := validateAndSanitizeJoinRequest(&req); err != nil {
|
if err := validateAndSanitizeJoinRequest(&req); err != nil {
|
||||||
return err
|
return apierrors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
listenHost, listenPort, err := resolveListenAddr(req.ListenAddr)
|
listenHost, listenPort, err := resolveListenAddr(req.ListenAddr)
|
||||||
|
@ -628,7 +628,7 @@ func (c *Cluster) Update(version uint64, spec types.Spec, flags types.UpdateFlag
|
||||||
// will be used to swarmkit.
|
// will be used to swarmkit.
|
||||||
clusterSpec, err := convert.SwarmSpecToGRPC(spec)
|
clusterSpec, err := convert.SwarmSpecToGRPC(spec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return apierrors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = state.controlClient.UpdateCluster(
|
_, err = state.controlClient.UpdateCluster(
|
||||||
|
@ -891,7 +891,7 @@ func (c *Cluster) CreateService(s types.ServiceSpec, encodedAuth string) (*apity
|
||||||
|
|
||||||
serviceSpec, err := convert.ServiceSpecToGRPC(s)
|
serviceSpec, err := convert.ServiceSpecToGRPC(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, apierrors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctnr := serviceSpec.Task.GetContainer()
|
ctnr := serviceSpec.Task.GetContainer()
|
||||||
|
@ -976,7 +976,7 @@ func (c *Cluster) UpdateService(serviceIDOrName string, version uint64, spec typ
|
||||||
|
|
||||||
serviceSpec, err := convert.ServiceSpecToGRPC(spec)
|
serviceSpec, err := convert.ServiceSpecToGRPC(spec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, apierrors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
currentService, err := getService(ctx, state.controlClient, serviceIDOrName)
|
currentService, err := getService(ctx, state.controlClient, serviceIDOrName)
|
||||||
|
@ -1194,7 +1194,7 @@ func (c *Cluster) GetNodes(options apitypes.NodeListOptions) ([]types.Node, erro
|
||||||
return nodes, nil
|
return nodes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetNode returns a node based on an ID or name.
|
// GetNode returns a node based on an ID.
|
||||||
func (c *Cluster) GetNode(input string) (types.Node, error) {
|
func (c *Cluster) GetNode(input string) (types.Node, error) {
|
||||||
c.mu.RLock()
|
c.mu.RLock()
|
||||||
defer c.mu.RUnlock()
|
defer c.mu.RUnlock()
|
||||||
|
@ -1226,7 +1226,7 @@ func (c *Cluster) UpdateNode(input string, version uint64, spec types.NodeSpec)
|
||||||
|
|
||||||
nodeSpec, err := convert.NodeSpecToGRPC(spec)
|
nodeSpec, err := convert.NodeSpecToGRPC(spec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return apierrors.NewBadRequestError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, cancel := c.getRequestContext()
|
ctx, cancel := c.getRequestContext()
|
||||||
|
|
|
@ -3,6 +3,7 @@ package cluster
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/errors"
|
||||||
swarmapi "github.com/docker/swarmkit/api"
|
swarmapi "github.com/docker/swarmkit/api"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
@ -14,7 +15,7 @@ func getSwarm(ctx context.Context, c swarmapi.ControlClient) (*swarmapi.Cluster,
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(rl.Clusters) == 0 {
|
if len(rl.Clusters) == 0 {
|
||||||
return nil, fmt.Errorf("swarm not found")
|
return nil, errors.NewRequestNotFoundError(errNoSwarm)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: assume one cluster only
|
// TODO: assume one cluster only
|
||||||
|
@ -38,7 +39,8 @@ func getNode(ctx context.Context, c swarmapi.ControlClient, input string) (*swar
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(rl.Nodes) == 0 {
|
if len(rl.Nodes) == 0 {
|
||||||
return nil, fmt.Errorf("node %s not found", input)
|
err := fmt.Errorf("node %s not found", input)
|
||||||
|
return nil, errors.NewRequestNotFoundError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if l := len(rl.Nodes); l > 1 {
|
if l := len(rl.Nodes); l > 1 {
|
||||||
|
@ -66,7 +68,8 @@ func getService(ctx context.Context, c swarmapi.ControlClient, input string) (*s
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(rl.Services) == 0 {
|
if len(rl.Services) == 0 {
|
||||||
return nil, fmt.Errorf("service %s not found", input)
|
err := fmt.Errorf("service %s not found", input)
|
||||||
|
return nil, errors.NewRequestNotFoundError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if l := len(rl.Services); l > 1 {
|
if l := len(rl.Services); l > 1 {
|
||||||
|
@ -95,7 +98,8 @@ func getTask(ctx context.Context, c swarmapi.ControlClient, input string) (*swar
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(rl.Tasks) == 0 {
|
if len(rl.Tasks) == 0 {
|
||||||
return nil, fmt.Errorf("task %s not found", input)
|
err := fmt.Errorf("task %s not found", input)
|
||||||
|
return nil, errors.NewRequestNotFoundError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if l := len(rl.Tasks); l > 1 {
|
if l := len(rl.Tasks); l > 1 {
|
||||||
|
|
|
@ -962,7 +962,7 @@ func (s *DockerSwarmSuite) TestAPISwarmInvalidAddress(c *check.C) {
|
||||||
}
|
}
|
||||||
status, _, err := d.SockRequest("POST", "/swarm/init", req)
|
status, _, err := d.SockRequest("POST", "/swarm/init", req)
|
||||||
c.Assert(err, checker.IsNil)
|
c.Assert(err, checker.IsNil)
|
||||||
c.Assert(status, checker.Equals, http.StatusInternalServerError)
|
c.Assert(status, checker.Equals, http.StatusBadRequest)
|
||||||
|
|
||||||
req2 := swarm.JoinRequest{
|
req2 := swarm.JoinRequest{
|
||||||
ListenAddr: "0.0.0.0:2377",
|
ListenAddr: "0.0.0.0:2377",
|
||||||
|
@ -970,7 +970,7 @@ func (s *DockerSwarmSuite) TestAPISwarmInvalidAddress(c *check.C) {
|
||||||
}
|
}
|
||||||
status, _, err = d.SockRequest("POST", "/swarm/join", req2)
|
status, _, err = d.SockRequest("POST", "/swarm/join", req2)
|
||||||
c.Assert(err, checker.IsNil)
|
c.Assert(err, checker.IsNil)
|
||||||
c.Assert(status, checker.Equals, http.StatusInternalServerError)
|
c.Assert(status, checker.Equals, http.StatusBadRequest)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DockerSwarmSuite) TestAPISwarmForceNewCluster(c *check.C) {
|
func (s *DockerSwarmSuite) TestAPISwarmForceNewCluster(c *check.C) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue