From 89624e09e640ff72e8e936cd1fc4e81c02b03655 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 29 May 2024 15:58:11 +0200 Subject: [PATCH] api/types: migrate NetworkCreateResponse to network.CreateResponse Migrate the type to the network package, and generate it from swagger. Signed-off-by: Sebastiaan van Stijn --- api/server/router/network/backend.go | 2 +- api/server/router/network/network_routes.go | 2 +- api/swagger.yaml | 32 +++++++++++++-------- api/types/network/create_response.go | 19 ++++++++++++ api/types/types.go | 6 ---- api/types/types_deprecated.go | 6 ++++ client/interface.go | 2 +- client/network_create.go | 5 ++-- client/network_create_test.go | 3 +- daemon/network.go | 8 ++---- hack/generate-swagger-api.sh | 4 +++ integration-cli/docker_api_network_test.go | 2 +- 12 files changed, 61 insertions(+), 30 deletions(-) create mode 100644 api/types/network/create_response.go diff --git a/api/server/router/network/backend.go b/api/server/router/network/backend.go index eaf44982e1..61b7e670ec 100644 --- a/api/server/router/network/backend.go +++ b/api/server/router/network/backend.go @@ -13,7 +13,7 @@ import ( // to provide network specific functionality. type Backend interface { GetNetworks(filters.Args, backend.NetworkListConfig) ([]types.NetworkResource, error) - CreateNetwork(nc types.NetworkCreateRequest) (*types.NetworkCreateResponse, error) + CreateNetwork(nc types.NetworkCreateRequest) (*network.CreateResponse, error) ConnectContainerToNetwork(containerName, networkName string, endpointConfig *network.EndpointSettings) error DisconnectContainerFromNetwork(containerName string, networkName string, force bool) error DeleteNetwork(networkID string) error diff --git a/api/server/router/network/network_routes.go b/api/server/router/network/network_routes.go index 5520ada530..05bc85c732 100644 --- a/api/server/router/network/network_routes.go +++ b/api/server/router/network/network_routes.go @@ -226,7 +226,7 @@ func (n *networkRouter) postNetworkCreate(ctx context.Context, w http.ResponseWr if err != nil { return err } - nw = &types.NetworkCreateResponse{ + nw = &network.CreateResponse{ ID: id, } } diff --git a/api/swagger.yaml b/api/swagger.yaml index 0a1a9da544..e4b9859b8d 100644 --- a/api/swagger.yaml +++ b/api/swagger.yaml @@ -2380,6 +2380,24 @@ definitions: type: "string" example: "10.133.77.91" + NetworkCreateResponse: + description: "OK response to NetworkCreate operation" + type: "object" + title: "NetworkCreateResponse" + x-go-name: "CreateResponse" + required: [Id, Warning] + properties: + Id: + description: "The ID of the created network." + type: "string" + x-nullable: false + example: "b5c4fc71e8022147cd25de22b22173de4e3b170134117172eb595cb91b4e7e5d" + Warning: + description: "Warnings encountered when creating the container" + type: "string" + x-nullable: false + example: "" + BuildInfo: type: "object" properties: @@ -10144,19 +10162,9 @@ paths: - "application/json" responses: 201: - description: "No error" + description: "Network created successfully" schema: - type: "object" - title: "NetworkCreateResponse" - properties: - Id: - description: "The ID of the created network." - type: "string" - Warning: - type: "string" - example: - Id: "22be93d5babb089c5aab8dbc369042fad48ff791584ca2da2100db837a1c7c30" - Warning: "" + $ref: "#/definitions/NetworkCreateResponse" 400: description: "bad parameter" schema: diff --git a/api/types/network/create_response.go b/api/types/network/create_response.go new file mode 100644 index 0000000000..c32b35bff5 --- /dev/null +++ b/api/types/network/create_response.go @@ -0,0 +1,19 @@ +package network + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +// CreateResponse NetworkCreateResponse +// +// OK response to NetworkCreate operation +// swagger:model CreateResponse +type CreateResponse struct { + + // The ID of the created network. + // Required: true + ID string `json:"Id"` + + // Warnings encountered when creating the container + // Required: true + Warning string `json:"Warning"` +} diff --git a/api/types/types.go b/api/types/types.go index 583b9cbecf..b90a060816 100644 --- a/api/types/types.go +++ b/api/types/types.go @@ -477,12 +477,6 @@ type NetworkCreateRequest struct { Name string // Name is the requested name of the network. } -// NetworkCreateResponse is the response message sent by the server for network create call -type NetworkCreateResponse struct { - ID string `json:"Id"` - Warning string -} - // NetworkConnect represents the data to be used to connect a container to the network type NetworkConnect struct { Container string diff --git a/api/types/types_deprecated.go b/api/types/types_deprecated.go index 231a5cca46..66bb00d20f 100644 --- a/api/types/types_deprecated.go +++ b/api/types/types_deprecated.go @@ -2,6 +2,7 @@ package types import ( "github.com/docker/docker/api/types/image" + "github.com/docker/docker/api/types/network" ) // ImageImportOptions holds information to import images from the client host. @@ -33,3 +34,8 @@ type ImageListOptions = image.ListOptions // // Deprecated: use [image.RemoveOptions]. type ImageRemoveOptions = image.RemoveOptions + +// NetworkCreateResponse is the response message sent by the server for network create call. +// +// Deprecated: use [network.CreateResponse]. +type NetworkCreateResponse = network.CreateResponse diff --git a/client/interface.go b/client/interface.go index 45d233f253..25fb2e2c9b 100644 --- a/client/interface.go +++ b/client/interface.go @@ -108,7 +108,7 @@ type ImageAPIClient interface { // NetworkAPIClient defines API client methods for the networks type NetworkAPIClient interface { NetworkConnect(ctx context.Context, network, container string, config *network.EndpointSettings) error - NetworkCreate(ctx context.Context, name string, options types.NetworkCreate) (types.NetworkCreateResponse, error) + NetworkCreate(ctx context.Context, name string, options types.NetworkCreate) (network.CreateResponse, error) NetworkDisconnect(ctx context.Context, network, container string, force bool) error NetworkInspect(ctx context.Context, network string, options types.NetworkInspectOptions) (types.NetworkResource, error) NetworkInspectWithRaw(ctx context.Context, network string, options types.NetworkInspectOptions) (types.NetworkResource, []byte, error) diff --git a/client/network_create.go b/client/network_create.go index d510feb3db..66f7fe8289 100644 --- a/client/network_create.go +++ b/client/network_create.go @@ -5,12 +5,13 @@ import ( "encoding/json" "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/network" "github.com/docker/docker/api/types/versions" ) // NetworkCreate creates a new network in the docker host. -func (cli *Client) NetworkCreate(ctx context.Context, name string, options types.NetworkCreate) (types.NetworkCreateResponse, error) { - var response types.NetworkCreateResponse +func (cli *Client) NetworkCreate(ctx context.Context, name string, options types.NetworkCreate) (network.CreateResponse, error) { + var response network.CreateResponse // Make sure we negotiated (if the client is configured to do so), // as code below contains API-version specific handling of options. diff --git a/client/network_create_test.go b/client/network_create_test.go index 735634a16f..ea2f712da9 100644 --- a/client/network_create_test.go +++ b/client/network_create_test.go @@ -11,6 +11,7 @@ import ( "testing" "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/network" "github.com/docker/docker/errdefs" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" @@ -50,7 +51,7 @@ func TestNetworkCreate(t *testing.T) { return nil, fmt.Errorf("expected POST method, got %s", req.Method) } - content, err := json.Marshal(types.NetworkCreateResponse{ + content, err := json.Marshal(network.CreateResponse{ ID: "network_id", Warning: "warning", }) diff --git a/daemon/network.go b/daemon/network.go index 9fcf6b1fd6..ba2b83e570 100644 --- a/daemon/network.go +++ b/daemon/network.go @@ -286,11 +286,11 @@ func (daemon *Daemon) CreateManagedNetwork(create clustertypes.NetworkCreateRequ } // CreateNetwork creates a network with the given name, driver and other optional parameters -func (daemon *Daemon) CreateNetwork(create types.NetworkCreateRequest) (*types.NetworkCreateResponse, error) { +func (daemon *Daemon) CreateNetwork(create types.NetworkCreateRequest) (*network.CreateResponse, error) { return daemon.createNetwork(&daemon.config().Config, create, "", false) } -func (daemon *Daemon) createNetwork(cfg *config.Config, create types.NetworkCreateRequest, id string, agent bool) (*types.NetworkCreateResponse, error) { +func (daemon *Daemon) createNetwork(cfg *config.Config, create types.NetworkCreateRequest, id string, agent bool) (*network.CreateResponse, error) { if runconfig.IsPreDefinedNetwork(create.Name) { return nil, PredefinedNetworkError(create.Name) } @@ -396,9 +396,7 @@ func (daemon *Daemon) createNetwork(cfg *config.Config, create types.NetworkCrea } daemon.LogNetworkEvent(n, events.ActionCreate) - return &types.NetworkCreateResponse{ - ID: n.ID(), - }, nil + return &network.CreateResponse{ID: n.ID()}, nil } func (daemon *Daemon) pluginRefCount(driver, capability string, mode int) { diff --git a/hack/generate-swagger-api.sh b/hack/generate-swagger-api.sh index 2868d8804e..cd86ff8836 100755 --- a/hack/generate-swagger-api.sh +++ b/hack/generate-swagger-api.sh @@ -26,6 +26,10 @@ swagger generate model -f api/swagger.yaml \ -n ImageDeleteResponseItem \ -n ImageSummary +swagger generate model -f api/swagger.yaml \ + -t api -m types/network --skip-validator -C api/swagger-gen.yaml \ + -n NetworkCreateResponse + swagger generate model -f api/swagger.yaml \ -t api -m types/volume --skip-validator -C api/swagger-gen.yaml \ -n Volume \ diff --git a/integration-cli/docker_api_network_test.go b/integration-cli/docker_api_network_test.go index 155e13c00c..e1d772175e 100644 --- a/integration-cli/docker_api_network_test.go +++ b/integration-cli/docker_api_network_test.go @@ -280,7 +280,7 @@ func createNetwork(c *testing.T, config types.NetworkCreateRequest, expectedStat } if expectedStatusCode == http.StatusCreated || expectedStatusCode < 0 { - var nr types.NetworkCreateResponse + var nr network.CreateResponse err = json.NewDecoder(body).Decode(&nr) assert.NilError(c, err)