Skip to content

Commit

Permalink
api/types: migrate NetworkInspectOptions to api/types/network
Browse files Browse the repository at this point in the history
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
  • Loading branch information
thaJeztah committed May 29, 2024
1 parent 245d121 commit 5bea0c3
Show file tree
Hide file tree
Showing 13 changed files with 57 additions and 47 deletions.
6 changes: 6 additions & 0 deletions api/types/network/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ const (
NetworkNat = "nat"
)

// InspectOptions holds parameters to inspect network.
type InspectOptions struct {
Scope string
Verbose bool
}

// ConnectOptions represents the data to be used to connect a container to the
// network.
type ConnectOptions struct {
Expand Down
6 changes: 0 additions & 6 deletions api/types/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -477,12 +477,6 @@ type NetworkCreateRequest struct {
Name string // Name is the requested name of the network.
}

// NetworkInspectOptions holds parameters to inspect network
type NetworkInspectOptions struct {
Scope string
Verbose bool
}

// DiskUsageObject represents an object type used for disk usage query filtering.
type DiskUsageObject string

Expand Down
5 changes: 5 additions & 0 deletions api/types/types_deprecated.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ type ImageRemoveOptions = image.RemoveOptions
// Deprecated: use [network.CreateResponse].
type NetworkCreateResponse = network.CreateResponse

// NetworkInspectOptions holds parameters to inspect network.
//
// Deprecated: use [network.InspectOptions].
type NetworkInspectOptions = network.InspectOptions

// NetworkConnect represents the data to be used to connect a container to the network
//
// Deprecated: use [network.ConnectOptions].
Expand Down
4 changes: 2 additions & 2 deletions client/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ type NetworkAPIClient interface {
NetworkConnect(ctx context.Context, network, container string, config *network.EndpointSettings) 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)
NetworkInspect(ctx context.Context, network string, options network.InspectOptions) (types.NetworkResource, error)
NetworkInspectWithRaw(ctx context.Context, network string, options network.InspectOptions) (types.NetworkResource, []byte, error)
NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error)
NetworkRemove(ctx context.Context, network string) error
NetworksPrune(ctx context.Context, pruneFilter filters.Args) (types.NetworksPruneReport, error)
Expand Down
5 changes: 3 additions & 2 deletions client/network_inspect.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,17 @@ import (
"net/url"

"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/network"
)

// NetworkInspect returns the information for a specific network configured in the docker host.
func (cli *Client) NetworkInspect(ctx context.Context, networkID string, options types.NetworkInspectOptions) (types.NetworkResource, error) {
func (cli *Client) NetworkInspect(ctx context.Context, networkID string, options network.InspectOptions) (types.NetworkResource, error) {
networkResource, _, err := cli.NetworkInspectWithRaw(ctx, networkID, options)
return networkResource, err
}

// NetworkInspectWithRaw returns the information for a specific network configured in the docker host and its raw representation.
func (cli *Client) NetworkInspectWithRaw(ctx context.Context, networkID string, options types.NetworkInspectOptions) (types.NetworkResource, []byte, error) {
func (cli *Client) NetworkInspectWithRaw(ctx context.Context, networkID string, options network.InspectOptions) (types.NetworkResource, []byte, error) {
if networkID == "" {
return types.NetworkResource{}, nil, objectNotFoundError{object: "network", id: networkID}
}
Expand Down
12 changes: 6 additions & 6 deletions client/network_inspect_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,16 @@ func TestNetworkInspect(t *testing.T) {

t.Run("empty ID", func(t *testing.T) {
// verify that the client does not create a request if the network-ID/name is empty.
_, err := client.NetworkInspect(context.Background(), "", types.NetworkInspectOptions{})
_, err := client.NetworkInspect(context.Background(), "", network.InspectOptions{})
assert.Check(t, is.ErrorType(err, errdefs.IsNotFound))
})
t.Run("no options", func(t *testing.T) {
r, err := client.NetworkInspect(context.Background(), "network_id", types.NetworkInspectOptions{})
r, err := client.NetworkInspect(context.Background(), "network_id", network.InspectOptions{})
assert.NilError(t, err)
assert.Equal(t, r.Name, "mynetwork")
})
t.Run("verbose", func(t *testing.T) {
r, err := client.NetworkInspect(context.Background(), "network_id", types.NetworkInspectOptions{Verbose: true})
r, err := client.NetworkInspect(context.Background(), "network_id", network.InspectOptions{Verbose: true})
assert.NilError(t, err)
assert.Equal(t, r.Name, "mynetwork")
_, ok := r.Services["web"]
Expand All @@ -87,18 +87,18 @@ func TestNetworkInspect(t *testing.T) {
}
})
t.Run("global scope", func(t *testing.T) {
_, err := client.NetworkInspect(context.Background(), "network_id", types.NetworkInspectOptions{Scope: "global"})
_, err := client.NetworkInspect(context.Background(), "network_id", network.InspectOptions{Scope: "global"})
assert.Check(t, is.ErrorContains(err, "Error: No such network: network_id"))
assert.Check(t, is.ErrorType(err, errdefs.IsNotFound))
})
t.Run("unknown network", func(t *testing.T) {
_, err := client.NetworkInspect(context.Background(), "unknown", types.NetworkInspectOptions{})
_, err := client.NetworkInspect(context.Background(), "unknown", network.InspectOptions{})
assert.Check(t, is.ErrorContains(err, "Error: No such network: unknown"))
assert.Check(t, is.ErrorType(err, errdefs.IsNotFound))
})
t.Run("server error", func(t *testing.T) {
// Just testing that an internal server error is converted correctly by the client
_, err := client.NetworkInspect(context.Background(), "test-500-response", types.NetworkInspectOptions{})
_, err := client.NetworkInspect(context.Background(), "test-500-response", network.InspectOptions{})
assert.Check(t, is.ErrorType(err, errdefs.IsSystem))
})
}
9 changes: 5 additions & 4 deletions integration-cli/docker_api_swarm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"github.com/cloudflare/cfssl/initca"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/api/types/swarm"
"github.com/docker/docker/errdefs"
"github.com/docker/docker/integration-cli/checker"
Expand Down Expand Up @@ -1026,11 +1027,11 @@ func (s *DockerSwarmSuite) TestAPINetworkInspectWithScope(c *testing.T) {
resp, err := apiclient.NetworkCreate(ctx, name, types.NetworkCreate{Driver: "overlay"})
assert.NilError(c, err)

network, err := apiclient.NetworkInspect(ctx, name, types.NetworkInspectOptions{})
nw, err := apiclient.NetworkInspect(ctx, name, network.InspectOptions{})
assert.NilError(c, err)
assert.Check(c, is.Equal("swarm", network.Scope))
assert.Check(c, is.Equal(resp.ID, network.ID))
assert.Check(c, is.Equal("swarm", nw.Scope))
assert.Check(c, is.Equal(resp.ID, nw.ID))

_, err = apiclient.NetworkInspect(ctx, name, types.NetworkInspectOptions{Scope: "local"})
_, err = apiclient.NetworkInspect(ctx, name, network.InspectOptions{Scope: "local"})
assert.Check(c, is.ErrorType(err, errdefs.IsNotFound))
}
3 changes: 2 additions & 1 deletion integration/container/daemon_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (

"github.com/docker/docker/api/types"
containertypes "github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/network"
realcontainer "github.com/docker/docker/container"
"github.com/docker/docker/integration/internal/container"
"github.com/docker/docker/testutil"
Expand Down Expand Up @@ -153,7 +154,7 @@ func TestDaemonHostGatewayIP(t *testing.T) {
assert.NilError(t, err)
assert.Assert(t, is.Len(res.Stderr(), 0))
assert.Equal(t, 0, res.ExitCode)
inspect, err := c.NetworkInspect(ctx, "bridge", types.NetworkInspectOptions{})
inspect, err := c.NetworkInspect(ctx, "bridge", network.InspectOptions{})
assert.NilError(t, err)
assert.Check(t, is.Contains(res.Stdout(), inspect.IPAM.Config[0].Gateway))
c.ContainerRemove(ctx, cID, containertypes.RemoveOptions{Force: true})
Expand Down
4 changes: 2 additions & 2 deletions integration/internal/network/states.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ package network
import (
"context"

"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/client"
"gotest.tools/v3/poll"
)

// IsRemoved verifies the network is removed.
func IsRemoved(ctx context.Context, client client.NetworkAPIClient, networkID string) func(log poll.LogT) poll.Result {
return func(log poll.LogT) poll.Result {
_, err := client.NetworkInspect(ctx, networkID, types.NetworkInspectOptions{})
_, err := client.NetworkInspect(ctx, networkID, network.InspectOptions{})
if err == nil {
return poll.Continue("waiting for network %s to be removed", networkID)
}
Expand Down
12 changes: 6 additions & 6 deletions integration/network/inspect_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package network // import "github.com/docker/docker/integration/network"
import (
"testing"

"github.com/docker/docker/api/types"
networktypes "github.com/docker/docker/api/types/network"
"github.com/docker/docker/integration/internal/network"
"github.com/docker/docker/integration/internal/swarm"
"github.com/docker/docker/testutil"
Expand Down Expand Up @@ -41,33 +41,33 @@ func TestInspectNetwork(t *testing.T) {
tests := []struct {
name string
network string
opts types.NetworkInspectOptions
opts networktypes.InspectOptions
}{
{
name: "full network id",
network: overlayID,
opts: types.NetworkInspectOptions{
opts: networktypes.InspectOptions{
Verbose: true,
},
},
{
name: "partial network id",
network: overlayID[0:11],
opts: types.NetworkInspectOptions{
opts: networktypes.InspectOptions{
Verbose: true,
},
},
{
name: "network name",
network: networkName,
opts: types.NetworkInspectOptions{
opts: networktypes.InspectOptions{
Verbose: true,
},
},
{
name: "network name and swarm scope",
network: networkName,
opts: types.NetworkInspectOptions{
opts: networktypes.InspectOptions{
Verbose: true,
Scope: "swarm",
},
Expand Down
2 changes: 1 addition & 1 deletion integration/network/network_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ func TestHostIPv4BridgeLabel(t *testing.T) {
network.WithOption("com.docker.network.host_ipv4", ipv4SNATAddr),
network.WithOption("com.docker.network.bridge.name", bridgeName),
)
out, err := c.NetworkInspect(ctx, bridgeName, types.NetworkInspectOptions{Verbose: true})
out, err := c.NetworkInspect(ctx, bridgeName, ntypes.InspectOptions{Verbose: true})
assert.NilError(t, err)
assert.Assert(t, len(out.IPAM.Config) > 0)
// Make sure the SNAT rule exists
Expand Down
31 changes: 16 additions & 15 deletions integration/network/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"time"

"github.com/docker/docker/api/types"
networktypes "github.com/docker/docker/api/types/network"
swarmtypes "github.com/docker/docker/api/types/swarm"
"github.com/docker/docker/client"
"github.com/docker/docker/integration/internal/network"
Expand Down Expand Up @@ -40,7 +41,7 @@ func TestDaemonRestartWithLiveRestore(t *testing.T) {
defer c.Close()

// Verify bridge network's subnet
out, err := c.NetworkInspect(ctx, "bridge", types.NetworkInspectOptions{})
out, err := c.NetworkInspect(ctx, "bridge", networktypes.InspectOptions{})
assert.NilError(t, err)
subnet := out.IPAM.Config[0].Subnet

Expand All @@ -50,7 +51,7 @@ func TestDaemonRestartWithLiveRestore(t *testing.T) {
"--default-address-pool", "base=175.33.0.0/16,size=24",
)

out1, err := c.NetworkInspect(ctx, "bridge", types.NetworkInspectOptions{})
out1, err := c.NetworkInspect(ctx, "bridge", networktypes.InspectOptions{})
assert.NilError(t, err)
// Make sure docker0 doesn't get override with new IP in live restore case
assert.Equal(t, out1.IPAM.Config[0].Subnet, subnet)
Expand All @@ -76,7 +77,7 @@ func TestDaemonDefaultNetworkPools(t *testing.T) {
defer c.Close()

// Verify bridge network's subnet
out, err := c.NetworkInspect(ctx, "bridge", types.NetworkInspectOptions{})
out, err := c.NetworkInspect(ctx, "bridge", networktypes.InspectOptions{})
assert.NilError(t, err)
assert.Equal(t, out.IPAM.Config[0].Subnet, "175.30.0.0/16")

Expand All @@ -85,7 +86,7 @@ func TestDaemonDefaultNetworkPools(t *testing.T) {
network.CreateNoError(ctx, t, c, name,
network.WithDriver("bridge"),
)
out, err = c.NetworkInspect(ctx, name, types.NetworkInspectOptions{})
out, err = c.NetworkInspect(ctx, name, networktypes.InspectOptions{})
assert.NilError(t, err)
assert.Equal(t, out.IPAM.Config[0].Subnet, "175.33.0.0/24")

Expand All @@ -94,7 +95,7 @@ func TestDaemonDefaultNetworkPools(t *testing.T) {
network.CreateNoError(ctx, t, c, name,
network.WithDriver("bridge"),
)
out, err = c.NetworkInspect(ctx, name, types.NetworkInspectOptions{})
out, err = c.NetworkInspect(ctx, name, networktypes.InspectOptions{})
assert.NilError(t, err)
assert.Equal(t, out.IPAM.Config[0].Subnet, "175.33.1.0/24")
delInterface(ctx, t, defaultNetworkBridge)
Expand All @@ -120,7 +121,7 @@ func TestDaemonRestartWithExistingNetwork(t *testing.T) {
)

// Verify bridge network's subnet
out, err := c.NetworkInspect(ctx, name, types.NetworkInspectOptions{})
out, err := c.NetworkInspect(ctx, name, networktypes.InspectOptions{})
assert.NilError(t, err)
networkip := out.IPAM.Config[0].Subnet

Expand All @@ -129,7 +130,7 @@ func TestDaemonRestartWithExistingNetwork(t *testing.T) {
"--default-address-pool", "base=175.30.0.0/16,size=16",
"--default-address-pool", "base=175.33.0.0/16,size=24")

out1, err := c.NetworkInspect(ctx, name, types.NetworkInspectOptions{})
out1, err := c.NetworkInspect(ctx, name, networktypes.InspectOptions{})
assert.NilError(t, err)
assert.Equal(t, out1.IPAM.Config[0].Subnet, networkip)
delInterface(ctx, t, defaultNetworkBridge)
Expand All @@ -156,7 +157,7 @@ func TestDaemonRestartWithExistingNetworkWithDefaultPoolRange(t *testing.T) {
)

// Verify bridge network's subnet
out, err := c.NetworkInspect(ctx, name, types.NetworkInspectOptions{})
out, err := c.NetworkInspect(ctx, name, networktypes.InspectOptions{})
assert.NilError(t, err)
networkip := out.IPAM.Config[0].Subnet

Expand All @@ -165,7 +166,7 @@ func TestDaemonRestartWithExistingNetworkWithDefaultPoolRange(t *testing.T) {
network.CreateNoError(ctx, t, c, name,
network.WithDriver("bridge"),
)
out, err = c.NetworkInspect(ctx, name, types.NetworkInspectOptions{})
out, err = c.NetworkInspect(ctx, name, networktypes.InspectOptions{})
assert.NilError(t, err)
networkip2 := out.IPAM.Config[0].Subnet

Expand All @@ -180,7 +181,7 @@ func TestDaemonRestartWithExistingNetworkWithDefaultPoolRange(t *testing.T) {
network.CreateNoError(ctx, t, c, name,
network.WithDriver("bridge"),
)
out1, err := c.NetworkInspect(ctx, name, types.NetworkInspectOptions{})
out1, err := c.NetworkInspect(ctx, name, networktypes.InspectOptions{})
assert.NilError(t, err)

assert.Check(t, out1.IPAM.Config[0].Subnet != networkip)
Expand Down Expand Up @@ -208,7 +209,7 @@ func TestDaemonWithBipAndDefaultNetworkPool(t *testing.T) {
defer c.Close()

// Verify bridge network's subnet
out, err := c.NetworkInspect(ctx, "bridge", types.NetworkInspectOptions{})
out, err := c.NetworkInspect(ctx, "bridge", networktypes.InspectOptions{})
assert.NilError(t, err)
// Make sure BIP IP doesn't get override with new default address pool .
assert.Equal(t, out.IPAM.Config[0].Subnet, "172.60.0.0/16")
Expand Down Expand Up @@ -289,7 +290,7 @@ func TestServiceRemoveKeepsIngressNetwork(t *testing.T) {

// Ensure that "ingress" is not removed or corrupted
time.Sleep(10 * time.Second)
netInfo, err := c.NetworkInspect(ctx, ingressNet, types.NetworkInspectOptions{
netInfo, err := c.NetworkInspect(ctx, ingressNet, networktypes.InspectOptions{
Verbose: true,
Scope: "swarm",
})
Expand All @@ -303,7 +304,7 @@ func TestServiceRemoveKeepsIngressNetwork(t *testing.T) {
//nolint:unused // for some reason, the "unused" linter marks this function as "unused"
func swarmIngressReady(ctx context.Context, client client.NetworkAPIClient) func(log poll.LogT) poll.Result {
return func(log poll.LogT) poll.Result {
netInfo, err := client.NetworkInspect(ctx, ingressNet, types.NetworkInspectOptions{
netInfo, err := client.NetworkInspect(ctx, ingressNet, networktypes.InspectOptions{
Verbose: true,
Scope: "swarm",
})
Expand Down Expand Up @@ -435,7 +436,7 @@ func TestServiceWithDefaultAddressPoolInit(t *testing.T) {
_, _, err := cli.ServiceInspectWithRaw(ctx, serviceID, types.ServiceInspectOptions{})
assert.NilError(t, err)

out, err := cli.NetworkInspect(ctx, overlayID, types.NetworkInspectOptions{Verbose: true})
out, err := cli.NetworkInspect(ctx, overlayID, networktypes.InspectOptions{Verbose: true})
assert.NilError(t, err)
t.Logf("%s: NetworkInspect: %+v", t.Name(), out)
assert.Assert(t, len(out.IPAM.Config) > 0)
Expand All @@ -446,7 +447,7 @@ func TestServiceWithDefaultAddressPoolInit(t *testing.T) {
assert.Equal(t, out.IPAM.Config[0].Subnet, "20.20.1.0/24")

// Also inspect ingress network and make sure its in the same subnet
out, err = cli.NetworkInspect(ctx, "ingress", types.NetworkInspectOptions{Verbose: true})
out, err = cli.NetworkInspect(ctx, "ingress", networktypes.InspectOptions{Verbose: true})
assert.NilError(t, err)
assert.Assert(t, len(out.IPAM.Config) > 0)
assert.Equal(t, out.IPAM.Config[0].Subnet, "20.20.0.0/24")
Expand Down
5 changes: 3 additions & 2 deletions integration/service/update_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (

"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
networktypes "github.com/docker/docker/api/types/network"
swarmtypes "github.com/docker/docker/api/types/swarm"
"github.com/docker/docker/client"
"github.com/docker/docker/integration/internal/network"
Expand Down Expand Up @@ -221,7 +222,7 @@ func TestServiceUpdateNetwork(t *testing.T) {

poll.WaitOn(t, swarm.RunningTasksCount(ctx, cli, serviceID, instances), swarm.ServicePoll)
service := getService(ctx, t, cli, serviceID)
netInfo, err := cli.NetworkInspect(ctx, testNet, types.NetworkInspectOptions{
netInfo, err := cli.NetworkInspect(ctx, testNet, networktypes.InspectOptions{
Verbose: true,
Scope: "swarm",
})
Expand All @@ -234,7 +235,7 @@ func TestServiceUpdateNetwork(t *testing.T) {
assert.NilError(t, err)
poll.WaitOn(t, serviceIsUpdated(ctx, cli, serviceID), swarm.ServicePoll)

netInfo, err = cli.NetworkInspect(ctx, testNet, types.NetworkInspectOptions{
netInfo, err = cli.NetworkInspect(ctx, testNet, networktypes.InspectOptions{
Verbose: true,
Scope: "swarm",
})
Expand Down

0 comments on commit 5bea0c3

Please sign in to comment.