From 6f979163ec495d9fe8e7768a0993305aacf606bc Mon Sep 17 00:00:00 2001 From: pat Date: Tue, 24 Feb 2026 18:09:01 -0500 Subject: [PATCH 1/6] update to allow sourcing from internal registry, if one is configured, by adding prefix to image name - leverages existing DOCKER_GLOBAL_IMAGE_PREFIX config --- utils/localstack_extensions/utils/docker.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/localstack_extensions/utils/docker.py b/utils/localstack_extensions/utils/docker.py index be3083d9..2843fab9 100644 --- a/utils/localstack_extensions/utils/docker.py +++ b/utils/localstack_extensions/utils/docker.py @@ -5,6 +5,7 @@ import requests from localstack.config import is_env_true +from localstack.pro.core.utils.container.registry_strategies import CustomizableRegistryStrategy from localstack_extensions.utils.h2_proxy import ( apply_http2_patches_for_grpc_support, ) @@ -103,7 +104,7 @@ def __init__( http2_ports: list[int] | None = None, tcp_ports: list[int] | None = None, ): - self.image_name = image_name + self.image_name = CustomizableRegistryStrategy().resolve(image_name) if not container_ports: raise ValueError("container_ports is required") self.container_ports = container_ports From 57ae8118bf821a465dd7c8f308363bdf7eae4640 Mon Sep 17 00:00:00 2001 From: pat Date: Tue, 24 Feb 2026 20:15:57 -0500 Subject: [PATCH 2/6] looking ahead, adding ability to specify image name, including tag, to allow usage when latest tag is blocked --- wiremock/localstack_wiremock/extension.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/wiremock/localstack_wiremock/extension.py b/wiremock/localstack_wiremock/extension.py index f69de8a4..032782ef 100644 --- a/wiremock/localstack_wiremock/extension.py +++ b/wiremock/localstack_wiremock/extension.py @@ -14,6 +14,10 @@ ENV_WIREMOCK_API_TOKEN = "WIREMOCK_API_TOKEN" # Host path to directory containing .wiremock/ (required for runner mode) ENV_WIREMOCK_CONFIG_DIR = "WIREMOCK_CONFIG_DIR" +# Override the OSS image (default: wiremock/wiremock); accepts full ref with optional tag +ENV_WIREMOCK_IMAGE = "WIREMOCK_IMAGE" +# Override the runner image (default: wiremock/wiremock-runner); accepts full ref with optional tag +ENV_WIREMOCK_IMAGE_RUNNER = "WIREMOCK_IMAGE_RUNNER" SERVICE_PORT = 8080 # Mock API port ADMIN_PORT = 9999 # Admin interface port (runner mode) @@ -29,7 +33,7 @@ class WireMockExtension(ProxiedDockerContainerExtension): def __init__(self): env_vars = {} - image_name = self.DOCKER_IMAGE + image_name = os.getenv(ENV_WIREMOCK_IMAGE) or self.DOCKER_IMAGE volumes = None container_ports = [SERVICE_PORT] health_check_path = "/__admin/health" @@ -41,7 +45,7 @@ def __init__(self): env_vars["WMC_ADMIN_PORT"] = str(ADMIN_PORT) env_vars["WMC_API_TOKEN"] = api_token env_vars["WMC_RUNNER_ENABLED"] = "true" - image_name = self.DOCKER_IMAGE_RUNNER + image_name = os.getenv(ENV_WIREMOCK_IMAGE_RUNNER) or self.DOCKER_IMAGE_RUNNER container_ports = [SERVICE_PORT, ADMIN_PORT] health_check_path = "/__/health" health_check_retries = 90 From 9c090d0a0a46794b57584282084ee6f98d971f69 Mon Sep 17 00:00:00 2001 From: pat Date: Wed, 25 Feb 2026 21:26:55 -0500 Subject: [PATCH 3/6] fix import of pro package to be dynamic based on license activation state - also updated minor version trying to ensure changes get applied --- utils/localstack_extensions/utils/docker.py | 17 +++++++++++++++-- utils/pyproject.toml | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/utils/localstack_extensions/utils/docker.py b/utils/localstack_extensions/utils/docker.py index 2843fab9..3715e268 100644 --- a/utils/localstack_extensions/utils/docker.py +++ b/utils/localstack_extensions/utils/docker.py @@ -5,7 +5,6 @@ import requests from localstack.config import is_env_true -from localstack.pro.core.utils.container.registry_strategies import CustomizableRegistryStrategy from localstack_extensions.utils.h2_proxy import ( apply_http2_patches_for_grpc_support, ) @@ -104,7 +103,21 @@ def __init__( http2_ports: list[int] | None = None, tcp_ports: list[int] | None = None, ): - self.image_name = CustomizableRegistryStrategy().resolve(image_name) + from localstack import config as ls_config + from localstack.constants import ENV_PRO_ACTIVATED + + pro_activated = is_env_true(ENV_PRO_ACTIVATED) + prefix = ls_config.DOCKER_GLOBAL_IMAGE_PREFIX + + if pro_activated: + from localstack.pro.core.utils.container.registry_strategies import CustomizableRegistryStrategy + # CustomizableRegistryStrategy.resolve() has a bug: for images in `name:tag` format + # (no namespace, e.g. `wiremock:3.0`), the colon in parts[0] causes it to treat the + # image as a registry reference and return an invalid result. Normalise first. + self.image_name = CustomizableRegistryStrategy().resolve(image_name) + else: + self.image_name = image_name + if not container_ports: raise ValueError("container_ports is required") self.container_ports = container_ports diff --git a/utils/pyproject.toml b/utils/pyproject.toml index dc45ea89..c2cf5f71 100644 --- a/utils/pyproject.toml +++ b/utils/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "localstack-extensions-utils" -version = "0.1.0" +version = "0.1.1" description = "Utility library for LocalStack Extensions" readme = {file = "README.md", content-type = "text/markdown; charset=UTF-8"} requires-python = ">=3.10" From c7a0be18f14b2706b1d8547e2f7a91d752df8a86 Mon Sep 17 00:00:00 2001 From: pat Date: Wed, 25 Feb 2026 21:32:11 -0500 Subject: [PATCH 4/6] remove extra debug line I forgot to take out and getting blocked by linter --- utils/localstack_extensions/utils/docker.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/localstack_extensions/utils/docker.py b/utils/localstack_extensions/utils/docker.py index 3715e268..8aa68ec5 100644 --- a/utils/localstack_extensions/utils/docker.py +++ b/utils/localstack_extensions/utils/docker.py @@ -107,7 +107,6 @@ def __init__( from localstack.constants import ENV_PRO_ACTIVATED pro_activated = is_env_true(ENV_PRO_ACTIVATED) - prefix = ls_config.DOCKER_GLOBAL_IMAGE_PREFIX if pro_activated: from localstack.pro.core.utils.container.registry_strategies import CustomizableRegistryStrategy From eea8c85f70960713c5cc779e99ace808cb4d575a Mon Sep 17 00:00:00 2001 From: pat Date: Wed, 25 Feb 2026 21:49:27 -0500 Subject: [PATCH 5/6] removed incorrect/no longer relevant comment --- utils/localstack_extensions/utils/docker.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/utils/localstack_extensions/utils/docker.py b/utils/localstack_extensions/utils/docker.py index 8aa68ec5..8a8d731b 100644 --- a/utils/localstack_extensions/utils/docker.py +++ b/utils/localstack_extensions/utils/docker.py @@ -110,9 +110,6 @@ def __init__( if pro_activated: from localstack.pro.core.utils.container.registry_strategies import CustomizableRegistryStrategy - # CustomizableRegistryStrategy.resolve() has a bug: for images in `name:tag` format - # (no namespace, e.g. `wiremock:3.0`), the colon in parts[0] causes it to treat the - # image as a registry reference and return an invalid result. Normalise first. self.image_name = CustomizableRegistryStrategy().resolve(image_name) else: self.image_name = image_name From e29cb3d88dc74b6ea30cd93cde68bf012bd18133 Mon Sep 17 00:00:00 2001 From: pat Date: Wed, 25 Feb 2026 21:53:45 -0500 Subject: [PATCH 6/6] more linting issues/unused code from refactor --- utils/localstack_extensions/utils/docker.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/localstack_extensions/utils/docker.py b/utils/localstack_extensions/utils/docker.py index 8a8d731b..374cb152 100644 --- a/utils/localstack_extensions/utils/docker.py +++ b/utils/localstack_extensions/utils/docker.py @@ -103,7 +103,6 @@ def __init__( http2_ports: list[int] | None = None, tcp_ports: list[int] | None = None, ): - from localstack import config as ls_config from localstack.constants import ENV_PRO_ACTIVATED pro_activated = is_env_true(ENV_PRO_ACTIVATED)