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>
| ... | ... |
@@ -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 |
|