Skip to content

Commit 7194bed

Browse files
committed
use SAM_DOCKER_API_VERSION to control docer api version
1 parent 9f08b90 commit 7194bed

3 files changed

Lines changed: 21 additions & 2 deletions

File tree

samcli/cli/global_config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ class GlobalConfig(metaclass=Singleton):
6565
# Env var used by docker client to specify which socket to use
6666
DOCKER_HOST_ENV_VAR: str = "DOCKER_HOST"
6767

68+
# Env var used to override docker API version to use
69+
DOCKER_API_ENV_VAR: str = "SAM_DOCKER_API_VERSION"
70+
6871
# Static singleton instance
6972

7073
_access_lock: threading.RLock

samcli/lib/constants.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
DOCKER_MIN_API_VERSION = "1.35"
2-
DOCKER_MIN_API_VERSION_FALLBACK = "1.44"
1+
import os
2+
from samcli.cli.global_config import GlobalConfig
3+
DOCKER_MIN_API_VERSION = os.environ.get(GlobalConfig.DOCKER_API_ENV_VAR, "1.35")
4+
DOCKER_MIN_API_VERSION_FALLBACK = "1.44"

tests/unit/local/docker/test_container_client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import docker
1414
from parameterized import parameterized
1515

16+
from samcli.cli.global_config import GlobalConfig
1617
from samcli.local.docker.container_client import (
1718
ContainerClient,
1819
DockerContainerClient,
@@ -749,6 +750,19 @@ def test_init_with_base_url_override(self, mock_log, mock_docker_init):
749750
self.assertEqual(call_kwargs["base_url"], override_url)
750751
self.assertTrue(mock_log.debug.called)
751752

753+
@patch("docker.DockerClient.__init__", return_value=None)
754+
def test_init_with_base_url_override(self, mock_log, mock_docker_init):
755+
"""Test ContainerClient init with base_url override"""
756+
override_api = "1.51"
757+
758+
with patch.dict("os.environ", {GlobalConfig.DOCKER_API_ENV_VAR: override_api}, clear=True):
759+
client = ConcreteContainerClient()
760+
761+
# Verify DockerClient.__init__ was called with expected parameters
762+
mock_docker_init.assert_called_once()
763+
call_kwargs = mock_docker_init.call_args.kwargs
764+
self.assertEqual(call_kwargs["version"], override_api)
765+
752766

753767
class TestContainerClientBaseClass(TestCase):
754768
"""Test the ContainerClient base class methods"""

0 commit comments

Comments
 (0)