diff --git a/api/server/router/swarm/backend.go b/api/server/router/swarm/backend.go index a728192d63..44d6377399 100644 --- a/api/server/router/swarm/backend.go +++ b/api/server/router/swarm/backend.go @@ -24,7 +24,7 @@ type Backend interface { UpdateService(string, uint64, swarm.ServiceSpec, types.ServiceUpdateOptions, bool) (*swarm.ServiceUpdateResponse, error) RemoveService(string) error ServiceLogs(context.Context, *backend.LogSelector, *container.LogsOptions) (<-chan *backend.LogMessage, error) - GetNodes(types.NodeListOptions) ([]swarm.Node, error) + GetNodes(swarm.NodeListOptions) ([]swarm.Node, error) GetNode(string) (swarm.Node, error) UpdateNode(string, uint64, swarm.NodeSpec) error RemoveNode(string, bool) error diff --git a/api/server/router/swarm/cluster_routes.go b/api/server/router/swarm/cluster_routes.go index fa849604ef..6f77f99adc 100644 --- a/api/server/router/swarm/cluster_routes.go +++ b/api/server/router/swarm/cluster_routes.go @@ -314,7 +314,7 @@ func (sr *swarmRouter) getNodes(ctx context.Context, w http.ResponseWriter, r *h return err } - nodes, err := sr.backend.GetNodes(basictypes.NodeListOptions{Filters: filter}) + nodes, err := sr.backend.GetNodes(types.NodeListOptions{Filters: filter}) if err != nil { log.G(ctx).WithContext(ctx).WithError(err).Debug("Error getting nodes") return err diff --git a/api/types/client.go b/api/types/client.go index 3d76095161..4ab6ac687f 100644 --- a/api/types/client.go +++ b/api/types/client.go @@ -48,16 +48,6 @@ func (h *HijackedResponse) CloseWrite() error { return nil } -// NodeListOptions holds parameters to list nodes with. -type NodeListOptions struct { - Filters filters.Args -} - -// NodeRemoveOptions holds parameters to remove nodes with. -type NodeRemoveOptions struct { - Force bool -} - // ServiceCreateOptions contains the options to use when creating a service. type ServiceCreateOptions struct { // EncodedRegistryAuth is the encoded registry authorization credentials to diff --git a/api/types/swarm/node.go b/api/types/swarm/node.go index bb98d5eedc..f175b1b2c6 100644 --- a/api/types/swarm/node.go +++ b/api/types/swarm/node.go @@ -1,4 +1,5 @@ package swarm // import "github.com/docker/docker/api/types/swarm" +import "github.com/docker/docker/api/types/filters" // Node represents a node. type Node struct { @@ -137,3 +138,13 @@ const ( type Topology struct { Segments map[string]string `json:",omitempty"` } + +// NodeListOptions holds parameters to list nodes with. +type NodeListOptions struct { + Filters filters.Args +} + +// NodeRemoveOptions holds parameters to remove nodes with. +type NodeRemoveOptions struct { + Force bool +} diff --git a/api/types/types_deprecated.go b/api/types/types_deprecated.go index 4b64c31262..c57c4fd3ba 100644 --- a/api/types/types_deprecated.go +++ b/api/types/types_deprecated.go @@ -138,6 +138,16 @@ type ConfigCreateResponse = swarm.ConfigCreateResponse // Deprecated: use [swarm.ConfigListOptions]. type ConfigListOptions = swarm.ConfigListOptions +// NodeListOptions holds parameters to list nodes with. +// +// Deprecated: use [swarm.NodeListOptions]. +type NodeListOptions = swarm.NodeListOptions + +// NodeRemoveOptions holds parameters to remove nodes with. +// +// Deprecated: use [swarm.NodeRemoveOptions]. +type NodeRemoveOptions = swarm.NodeRemoveOptions + // ServiceListOptions holds parameters to list services with. // // Deprecated: use [swarm.ServiceListOptions]. diff --git a/client/client_interfaces.go b/client/client_interfaces.go index 5b35cd37bf..5668459832 100644 --- a/client/client_interfaces.go +++ b/client/client_interfaces.go @@ -155,8 +155,8 @@ type NetworkAPIClient interface { // NodeAPIClient defines API client methods for the nodes type NodeAPIClient interface { NodeInspectWithRaw(ctx context.Context, nodeID string) (swarm.Node, []byte, error) - NodeList(ctx context.Context, options types.NodeListOptions) ([]swarm.Node, error) - NodeRemove(ctx context.Context, nodeID string, options types.NodeRemoveOptions) error + NodeList(ctx context.Context, options swarm.NodeListOptions) ([]swarm.Node, error) + NodeRemove(ctx context.Context, nodeID string, options swarm.NodeRemoveOptions) error NodeUpdate(ctx context.Context, nodeID string, version swarm.Version, node swarm.NodeSpec) error } diff --git a/client/node_list.go b/client/node_list.go index 2534f4aee1..429eec2443 100644 --- a/client/node_list.go +++ b/client/node_list.go @@ -5,13 +5,12 @@ import ( "encoding/json" "net/url" - "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" "github.com/docker/docker/api/types/swarm" ) // NodeList returns the list of nodes. -func (cli *Client) NodeList(ctx context.Context, options types.NodeListOptions) ([]swarm.Node, error) { +func (cli *Client) NodeList(ctx context.Context, options swarm.NodeListOptions) ([]swarm.Node, error) { query := url.Values{} if options.Filters.Len() > 0 { diff --git a/client/node_list_test.go b/client/node_list_test.go index f565ce3557..ec1c95f45a 100644 --- a/client/node_list_test.go +++ b/client/node_list_test.go @@ -10,7 +10,6 @@ import ( "strings" "testing" - "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" "github.com/docker/docker/api/types/swarm" "github.com/docker/docker/errdefs" @@ -23,7 +22,7 @@ func TestNodeListError(t *testing.T) { client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), } - _, err := client.NodeList(context.Background(), types.NodeListOptions{}) + _, err := client.NodeList(context.Background(), swarm.NodeListOptions{}) assert.Check(t, is.ErrorType(err, errdefs.IsSystem)) } @@ -31,17 +30,17 @@ func TestNodeList(t *testing.T) { const expectedURL = "/nodes" listCases := []struct { - options types.NodeListOptions + options swarm.NodeListOptions expectedQueryParams map[string]string }{ { - options: types.NodeListOptions{}, + options: swarm.NodeListOptions{}, expectedQueryParams: map[string]string{ "filters": "", }, }, { - options: types.NodeListOptions{ + options: swarm.NodeListOptions{ Filters: filters.NewArgs( filters.Arg("label", "label1"), filters.Arg("label", "label2"), diff --git a/client/node_remove.go b/client/node_remove.go index 81f8fed6b5..07d8e65364 100644 --- a/client/node_remove.go +++ b/client/node_remove.go @@ -4,11 +4,11 @@ import ( "context" "net/url" - "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/swarm" ) // NodeRemove removes a Node. -func (cli *Client) NodeRemove(ctx context.Context, nodeID string, options types.NodeRemoveOptions) error { +func (cli *Client) NodeRemove(ctx context.Context, nodeID string, options swarm.NodeRemoveOptions) error { nodeID, err := trimID("node", nodeID) if err != nil { return err diff --git a/client/node_remove_test.go b/client/node_remove_test.go index d844cf3e2c..e8a9df966b 100644 --- a/client/node_remove_test.go +++ b/client/node_remove_test.go @@ -9,7 +9,7 @@ import ( "strings" "testing" - "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/swarm" "github.com/docker/docker/errdefs" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" @@ -20,14 +20,14 @@ func TestNodeRemoveError(t *testing.T) { client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), } - err := client.NodeRemove(context.Background(), "node_id", types.NodeRemoveOptions{Force: false}) + err := client.NodeRemove(context.Background(), "node_id", swarm.NodeRemoveOptions{Force: false}) assert.Check(t, is.ErrorType(err, errdefs.IsSystem)) - err = client.NodeRemove(context.Background(), "", types.NodeRemoveOptions{Force: false}) + err = client.NodeRemove(context.Background(), "", swarm.NodeRemoveOptions{Force: false}) assert.Check(t, is.ErrorType(err, errdefs.IsInvalidParameter)) assert.Check(t, is.ErrorContains(err, "value is empty")) - err = client.NodeRemove(context.Background(), " ", types.NodeRemoveOptions{Force: false}) + err = client.NodeRemove(context.Background(), " ", swarm.NodeRemoveOptions{Force: false}) assert.Check(t, is.ErrorType(err, errdefs.IsInvalidParameter)) assert.Check(t, is.ErrorContains(err, "value is empty")) } @@ -69,7 +69,7 @@ func TestNodeRemove(t *testing.T) { }), } - err := client.NodeRemove(context.Background(), "node_id", types.NodeRemoveOptions{Force: removeCase.force}) + err := client.NodeRemove(context.Background(), "node_id", swarm.NodeRemoveOptions{Force: removeCase.force}) assert.NilError(t, err) } } diff --git a/daemon/cluster/nodes.go b/daemon/cluster/nodes.go index fa255b4bdb..2bb95d2e20 100644 --- a/daemon/cluster/nodes.go +++ b/daemon/cluster/nodes.go @@ -3,7 +3,6 @@ package cluster // import "github.com/docker/docker/daemon/cluster" import ( "context" - apitypes "github.com/docker/docker/api/types" types "github.com/docker/docker/api/types/swarm" "github.com/docker/docker/daemon/cluster/convert" "github.com/docker/docker/errdefs" @@ -12,7 +11,7 @@ import ( ) // GetNodes returns a list of all nodes known to a cluster. -func (c *Cluster) GetNodes(options apitypes.NodeListOptions) ([]types.Node, error) { +func (c *Cluster) GetNodes(options types.NodeListOptions) ([]types.Node, error) { c.mu.RLock() defer c.mu.RUnlock() diff --git a/integration-cli/daemon/daemon_swarm.go b/integration-cli/daemon/daemon_swarm.go index e118ebda36..71e80e0668 100644 --- a/integration-cli/daemon/daemon_swarm.go +++ b/integration-cli/daemon/daemon_swarm.go @@ -178,7 +178,7 @@ func (d *Daemon) CheckLeader(ctx context.Context) func(t *testing.T) (interface{ errList := "could not get node list" - ls, err := cli.NodeList(ctx, types.NodeListOptions{}) + ls, err := cli.NodeList(ctx, swarm.NodeListOptions{}) if err != nil { return err, errList } diff --git a/testutil/daemon/node.go b/testutil/daemon/node.go index ce3141439c..32c3227a4f 100644 --- a/testutil/daemon/node.go +++ b/testutil/daemon/node.go @@ -6,7 +6,6 @@ import ( "testing" "time" - "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/swarm" "gotest.tools/v3/assert" ) @@ -39,7 +38,7 @@ func (d *Daemon) RemoveNode(ctx context.Context, t testing.TB, id string, force cli := d.NewClientT(t) defer cli.Close() - options := types.NodeRemoveOptions{ + options := swarm.NodeRemoveOptions{ Force: force, } err := cli.NodeRemove(ctx, id, options) @@ -74,7 +73,7 @@ func (d *Daemon) ListNodes(ctx context.Context, t testing.TB) []swarm.Node { cli := d.NewClientT(t) defer cli.Close() - nodes, err := cli.NodeList(ctx, types.NodeListOptions{}) + nodes, err := cli.NodeList(ctx, swarm.NodeListOptions{}) assert.NilError(t, err) return nodes