Skip to content

Commit 57119b4

Browse files
authored
chore: update docker api version (#8429)
* chore: update docker api version * revert finch's docker min latest api version * missing quotes in finch docker version * fix missing quotes in tests
1 parent f0b3e6a commit 57119b4

3 files changed

Lines changed: 19 additions & 15 deletions

File tree

samcli/lib/constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
DOCKER_MIN_API_VERSION = "1.35"
1+
DOCKER_MIN_API_VERSION = "1.44"

samcli/local/docker/container_client.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class ContainerClient(docker.DockerClient, ABC):
6262
# Initialize socket_path
6363
socket_path: Optional[str] = None
6464

65-
def __init__(self, base_url=None):
65+
def __init__(self, client_version, base_url=None):
6666
"""
6767
Initialize the container client with environment variable processing and overrides.
6868
@@ -94,7 +94,7 @@ def __init__(self, base_url=None):
9494
client_params["base_url"] = base_url
9595

9696
# Specify minimum version
97-
client_params["version"] = DOCKER_MIN_API_VERSION
97+
client_params["version"] = client_version
9898

9999
# Initialize DockerClient with processed parameters
100100
LOG.debug(f"Creating container client with parameters: {client_params}")
@@ -292,10 +292,10 @@ def __init__(self):
292292

293293
if socket_path:
294294
LOG.debug(f"Creating Docker container client with base_url={socket_path}.")
295-
super().__init__(base_url=socket_path)
295+
super().__init__(base_url=socket_path, client_version=DOCKER_MIN_API_VERSION)
296296
else:
297297
LOG.debug("Creating Docker container client from environment variable.")
298-
super().__init__()
298+
super().__init__(client_version=DOCKER_MIN_API_VERSION)
299299

300300
def get_runtime_type(self) -> str:
301301
"""
@@ -504,7 +504,9 @@ def __init__(self):
504504
return None
505505

506506
LOG.debug(f"Creating Finch container client with base_url={socket_path}")
507-
super().__init__(base_url=socket_path)
507+
super().__init__(
508+
base_url=socket_path, client_version="1.35"
509+
) # TODO: Placeholder until Finch updates to Docker's min latest version
508510

509511
def get_socket_path(self) -> str:
510512
"""

tests/unit/local/docker/test_container_client.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
ContainerArchiveImageLoadFailedException,
2323
ContainerInvalidSocketPathException,
2424
)
25+
from samcli.lib.constants import DOCKER_MIN_API_VERSION
2526

2627

2728
class BaseContainerClientTestCase(TestCase):
@@ -31,7 +32,8 @@ def setUp(self):
3132
"""Set up common test fixtures"""
3233
self.finch_socket = "unix:///tmp/finch.sock"
3334
self.docker_socket = "unix:///var/run/docker.sock"
34-
self.default_version = "1.35"
35+
self.docker_version = DOCKER_MIN_API_VERSION
36+
self.finch_version = "1.35" # TODO: Update when Finch updates to latest Docker API version
3537

3638
def create_mock_container_client(self, client_class, methods_to_bind=None):
3739
"""Create a mock container client with bound methods for testing."""
@@ -163,7 +165,7 @@ def test_init_success_no_docker_host(self, mock_docker_init):
163165
# Verify DockerClient.__init__ was called with expected parameters
164166
mock_docker_init.assert_called_once()
165167
call_kwargs = mock_docker_init.call_args.kwargs
166-
self.assertEqual(call_kwargs["version"], self.default_version)
168+
self.assertEqual(call_kwargs["version"], self.docker_version)
167169

168170
@patch("docker.DockerClient.__init__", return_value=None)
169171
def test_init_success_with_docker_host(self, mock_docker_init):
@@ -176,7 +178,7 @@ def test_init_success_with_docker_host(self, mock_docker_init):
176178
# Verify DockerClient.__init__ was called with expected parameters
177179
mock_docker_init.assert_called_once()
178180
call_kwargs = mock_docker_init.call_args.kwargs
179-
self.assertEqual(call_kwargs["version"], self.default_version)
181+
self.assertEqual(call_kwargs["version"], self.docker_version)
180182
self.assertEqual(call_kwargs["base_url"], self.docker_socket)
181183

182184
def test_init_raises_exception_when_docker_host_points_to_finch(self):
@@ -208,7 +210,7 @@ def test_init_with_various_docker_host_values(self, docker_host, mock_log, mock_
208210
# Verify DockerClient.__init__ was called with expected parameters
209211
mock_docker_init.assert_called_once()
210212
call_kwargs = mock_docker_init.call_args.kwargs
211-
self.assertEqual(call_kwargs["version"], self.default_version)
213+
self.assertEqual(call_kwargs["version"], self.docker_version)
212214
self.assertEqual(call_kwargs["base_url"], docker_host)
213215

214216
# Verify log call
@@ -678,7 +680,7 @@ def test_init_with_socket_path_success(self, mock_log, mock_docker_init):
678680
# Verify DockerClient.__init__ was called with expected parameters
679681
mock_docker_init.assert_called_once()
680682
call_kwargs = mock_docker_init.call_args.kwargs
681-
self.assertEqual(call_kwargs["version"], self.default_version)
683+
self.assertEqual(call_kwargs["version"], self.finch_version)
682684
self.assertEqual(call_kwargs["base_url"], self.finch_socket)
683685

684686
# Verify log call
@@ -719,12 +721,12 @@ class TestContainerClientBaseInit(BaseContainerClientTestCase):
719721
def test_init_no_overrides(self, mock_log, mock_docker_init):
720722
"""Test ContainerClient init with no environment overrides"""
721723
with patch.dict("os.environ", {}, clear=True):
722-
client = ConcreteContainerClient()
724+
client = ConcreteContainerClient(client_version=self.docker_version)
723725

724726
# Verify DockerClient.__init__ was called with expected parameters
725727
mock_docker_init.assert_called_once()
726728
call_kwargs = mock_docker_init.call_args.kwargs
727-
self.assertEqual(call_kwargs["version"], self.default_version)
729+
self.assertEqual(call_kwargs["version"], self.docker_version)
728730
self.assertTrue(mock_log.debug.called)
729731

730732
@patch("docker.DockerClient.__init__", return_value=None)
@@ -734,12 +736,12 @@ def test_init_with_base_url_override(self, mock_log, mock_docker_init):
734736
override_url = "unix:///tmp/finch.sock"
735737

736738
with patch.dict("os.environ", {}, clear=True):
737-
client = ConcreteContainerClient(base_url=override_url)
739+
client = ConcreteContainerClient(client_version=self.docker_version, base_url=override_url)
738740

739741
# Verify DockerClient.__init__ was called with expected parameters
740742
mock_docker_init.assert_called_once()
741743
call_kwargs = mock_docker_init.call_args.kwargs
742-
self.assertEqual(call_kwargs["version"], self.default_version)
744+
self.assertEqual(call_kwargs["version"], self.docker_version)
743745
self.assertEqual(call_kwargs["base_url"], override_url)
744746
self.assertTrue(mock_log.debug.called)
745747

0 commit comments

Comments
 (0)