Browse code

api: remove code for ContainerInspect on api v1.20

API v1.23 and older are deprecated, so we can remove the code to adjust
responses for API v1.20.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2024/01/22 02:42:07
Showing 3 changed files
... ...
@@ -14,7 +14,6 @@ import (
14 14
 	containertypes "github.com/docker/docker/api/types/container"
15 15
 	networktypes "github.com/docker/docker/api/types/network"
16 16
 	"github.com/docker/docker/api/types/versions"
17
-	"github.com/docker/docker/api/types/versions/v1p20"
18 17
 	"github.com/docker/docker/container"
19 18
 	"github.com/docker/docker/daemon/config"
20 19
 	"github.com/docker/docker/daemon/network"
... ...
@@ -29,8 +28,6 @@ import (
29 29
 // there is an error getting the data.
30 30
 func (daemon *Daemon) ContainerInspect(ctx context.Context, name string, size bool, version string) (interface{}, error) {
31 31
 	switch {
32
-	case versions.Equal(version, "1.20"):
33
-		return daemon.containerInspect120(name)
34 32
 	case versions.LessThan(version, "1.45"):
35 33
 		ctr, err := daemon.ContainerInspectCurrent(ctx, name, size)
36 34
 		if err != nil {
... ...
@@ -115,35 +112,6 @@ func (daemon *Daemon) ContainerInspectCurrent(ctx context.Context, name string,
115 115
 	}, nil
116 116
 }
117 117
 
118
-// containerInspect120 serializes the master version of a container into a json type.
119
-func (daemon *Daemon) containerInspect120(name string) (*v1p20.ContainerJSON, error) {
120
-	ctr, err := daemon.GetContainer(name)
121
-	if err != nil {
122
-		return nil, err
123
-	}
124
-
125
-	ctr.Lock()
126
-	defer ctr.Unlock()
127
-
128
-	base, err := daemon.getInspectData(&daemon.config().Config, ctr)
129
-	if err != nil {
130
-		return nil, err
131
-	}
132
-
133
-	return &v1p20.ContainerJSON{
134
-		ContainerJSONBase: base,
135
-		Mounts:            ctr.GetMountPoints(),
136
-		Config: &v1p20.ContainerConfig{
137
-			Config:          ctr.Config,
138
-			MacAddress:      ctr.Config.MacAddress, //nolint:staticcheck // ignore SA1019: field is deprecated, but still used on API < v1.44.
139
-			NetworkDisabled: ctr.Config.NetworkDisabled,
140
-			ExposedPorts:    ctr.Config.ExposedPorts,
141
-			VolumeDriver:    ctr.HostConfig.VolumeDriver,
142
-		},
143
-		NetworkSettings: daemon.getBackwardsCompatibleNetworkSettings(ctr.NetworkSettings),
144
-	}, nil
145
-}
146
-
147 118
 func (daemon *Daemon) getInspectData(daemonCfg *config.Config, container *container.Container) (*types.ContainerJSONBase, error) {
148 119
 	// make a copy to play with
149 120
 	hostConfig := *container.HostConfig
... ...
@@ -281,25 +249,6 @@ func (daemon *Daemon) ContainerExecInspect(id string) (*backend.ExecInspect, err
281 281
 	}, nil
282 282
 }
283 283
 
284
-func (daemon *Daemon) getBackwardsCompatibleNetworkSettings(settings *network.Settings) *v1p20.NetworkSettings {
285
-	result := &v1p20.NetworkSettings{
286
-		NetworkSettingsBase: types.NetworkSettingsBase{
287
-			Bridge:                 settings.Bridge,
288
-			SandboxID:              settings.SandboxID,
289
-			SandboxKey:             settings.SandboxKey,
290
-			HairpinMode:            settings.HairpinMode,
291
-			LinkLocalIPv6Address:   settings.LinkLocalIPv6Address,
292
-			LinkLocalIPv6PrefixLen: settings.LinkLocalIPv6PrefixLen,
293
-			Ports:                  settings.Ports,
294
-			SecondaryIPAddresses:   settings.SecondaryIPAddresses,
295
-			SecondaryIPv6Addresses: settings.SecondaryIPv6Addresses,
296
-		},
297
-		DefaultNetworkSettings: daemon.getDefaultNetworkSettings(settings.Networks),
298
-	}
299
-
300
-	return result
301
-}
302
-
303 284
 // getDefaultNetworkSettings creates the deprecated structure that holds the information
304 285
 // about the bridge network for a container.
305 286
 func (daemon *Daemon) getDefaultNetworkSettings(networks map[string]*network.EndpointSettings) types.DefaultNetworkSettings {
... ...
@@ -6,7 +6,6 @@ import (
6 6
 	"testing"
7 7
 
8 8
 	"github.com/docker/docker/api/types"
9
-	"github.com/docker/docker/api/types/versions/v1p20"
10 9
 	"github.com/docker/docker/client"
11 10
 	"github.com/docker/docker/integration-cli/cli"
12 11
 	"github.com/docker/docker/testutil"
... ...
@@ -31,12 +30,13 @@ func (s *DockerAPISuite) TestInspectAPIContainerResponse(c *testing.T) {
31 31
 	var cases []acase
32 32
 
33 33
 	if testEnv.DaemonInfo.OSType == "windows" {
34
+		// Windows only supports 1.25 or later
34 35
 		cases = []acase{
35 36
 			{"v1.25", append(keysBase, "Mounts")},
36 37
 		}
37 38
 	} else {
38 39
 		cases = []acase{
39
-			{"v1.20", append(keysBase, "Mounts")},
40
+			{"v1.24", append(keysBase, "Mounts")},
40 41
 		}
41 42
 	}
42 43
 
... ...
@@ -58,28 +58,6 @@ func (s *DockerAPISuite) TestInspectAPIContainerResponse(c *testing.T) {
58 58
 	}
59 59
 }
60 60
 
61
-func (s *DockerAPISuite) TestInspectAPIContainerVolumeDriverLegacy(c *testing.T) {
62
-	// No legacy implications for Windows
63
-	testRequires(c, DaemonIsLinux)
64
-	out := cli.DockerCmd(c, "run", "-d", "busybox", "true").Stdout()
65
-	cleanedContainerID := strings.TrimSpace(out)
66
-
67
-	cases := []string{"v1.20"}
68
-	for _, version := range cases {
69
-		body := getInspectBody(c, version, cleanedContainerID)
70
-
71
-		var inspectJSON map[string]interface{}
72
-		err := json.Unmarshal(body, &inspectJSON)
73
-		assert.NilError(c, err, "Unable to unmarshal body for version %s", version)
74
-
75
-		config, ok := inspectJSON["Config"]
76
-		assert.Assert(c, ok, "Unable to find 'Config'")
77
-		cfg := config.(map[string]interface{})
78
-		_, ok = cfg["VolumeDriver"]
79
-		assert.Assert(c, ok, "API version %s expected to include VolumeDriver in 'Config'", version)
80
-	}
81
-}
82
-
83 61
 func (s *DockerAPISuite) TestInspectAPIContainerVolumeDriver(c *testing.T) {
84 62
 	out := cli.DockerCmd(c, "run", "-d", "--volume-driver", "local", "busybox", "true").Stdout()
85 63
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -117,47 +95,6 @@ func (s *DockerAPISuite) TestInspectAPIImageResponse(c *testing.T) {
117 117
 	assert.Check(c, is.Contains(imageJSON.RepoTags, "busybox:mytag"))
118 118
 }
119 119
 
120
-// #17131, #17139, #17173
121
-func (s *DockerAPISuite) TestInspectAPIEmptyFieldsInConfigPre121(c *testing.T) {
122
-	// Not relevant on Windows
123
-	testRequires(c, DaemonIsLinux)
124
-	out := cli.DockerCmd(c, "run", "-d", "busybox", "true").Stdout()
125
-	cleanedContainerID := strings.TrimSpace(out)
126
-
127
-	cases := []string{"v1.20"}
128
-	for _, version := range cases {
129
-		body := getInspectBody(c, version, cleanedContainerID)
130
-
131
-		var inspectJSON map[string]interface{}
132
-		err := json.Unmarshal(body, &inspectJSON)
133
-		assert.NilError(c, err, "Unable to unmarshal body for version %s", version)
134
-		config, ok := inspectJSON["Config"]
135
-		assert.Assert(c, ok, "Unable to find 'Config'")
136
-		cfg := config.(map[string]interface{})
137
-		for _, f := range []string{"MacAddress", "NetworkDisabled", "ExposedPorts"} {
138
-			_, ok := cfg[f]
139
-			assert.Check(c, ok, "API version %s expected to include %s in 'Config'", version, f)
140
-		}
141
-	}
142
-}
143
-
144
-func (s *DockerAPISuite) TestInspectAPIBridgeNetworkSettings120(c *testing.T) {
145
-	// Not relevant on Windows, and besides it doesn't have any bridge network settings
146
-	testRequires(c, DaemonIsLinux)
147
-	out := cli.DockerCmd(c, "run", "-d", "busybox", "top").Stdout()
148
-	containerID := strings.TrimSpace(out)
149
-	cli.WaitRun(c, containerID)
150
-
151
-	body := getInspectBody(c, "v1.20", containerID)
152
-
153
-	var inspectJSON v1p20.ContainerJSON
154
-	err := json.Unmarshal(body, &inspectJSON)
155
-	assert.NilError(c, err)
156
-
157
-	settings := inspectJSON.NetworkSettings
158
-	assert.Assert(c, len(settings.IPAddress) != 0)
159
-}
160
-
161 120
 // Inspect for API v1.21 and up; see
162 121
 //
163 122
 // - https://github.com/moby/moby/issues/17131
... ...
@@ -15,7 +15,6 @@ import (
15 15
 	"time"
16 16
 
17 17
 	"github.com/docker/docker/api/types"
18
-	"github.com/docker/docker/api/types/versions/v1p20"
19 18
 	"github.com/docker/docker/integration-cli/cli"
20 19
 	"github.com/docker/docker/integration-cli/daemon"
21 20
 	"github.com/docker/docker/libnetwork/driverapi"
... ...
@@ -1015,22 +1014,14 @@ func (s *DockerCLINetworkSuite) TestInspectAPIMultipleNetworks(c *testing.T) {
1015 1015
 	cli.DockerCmd(c, "network", "connect", "mybridge1", id)
1016 1016
 	cli.DockerCmd(c, "network", "connect", "mybridge2", id)
1017 1017
 
1018
-	body := getInspectBody(c, "v1.20", id)
1019
-	var inspect120 v1p20.ContainerJSON
1020
-	err := json.Unmarshal(body, &inspect120)
1021
-	assert.NilError(c, err)
1022
-
1023
-	versionedIP := inspect120.NetworkSettings.IPAddress
1024
-
1025 1018
 	// Current API version (API v1.21 and up)
1026
-	body = getInspectBody(c, "", id)
1019
+	body := getInspectBody(c, "", id)
1027 1020
 	var inspectCurrent types.ContainerJSON
1028
-	err = json.Unmarshal(body, &inspectCurrent)
1021
+	err := json.Unmarshal(body, &inspectCurrent)
1029 1022
 	assert.NilError(c, err)
1030 1023
 	assert.Equal(c, len(inspectCurrent.NetworkSettings.Networks), 3)
1031 1024
 
1032 1025
 	bridge := inspectCurrent.NetworkSettings.Networks["bridge"]
1033
-	assert.Equal(c, bridge.IPAddress, versionedIP)
1034 1026
 	assert.Equal(c, bridge.IPAddress, inspectCurrent.NetworkSettings.IPAddress)
1035 1027
 }
1036 1028