From 2e3ca48bbef158c937bca023c15a3921993c57bb Mon Sep 17 00:00:00 2001 From: Giovanni Grano Date: Wed, 25 Sep 2024 19:15:56 -0400 Subject: [PATCH] rework optional reading of the specs --- localstack-core/localstack/aws/handlers/validation.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/localstack-core/localstack/aws/handlers/validation.py b/localstack-core/localstack/aws/handlers/validation.py index cc931320453ee..1e219c03eaa46 100644 --- a/localstack-core/localstack/aws/handlers/validation.py +++ b/localstack-core/localstack/aws/handlers/validation.py @@ -73,7 +73,10 @@ class OpenAPIValidator(Handler): open_apis: list["OpenAPI"] def __init__(self) -> None: - # avoid to load the specs if we don't have to perform any validation + self._load_specs() + + def _load_specs(self) -> None: + """Load the openapi spec plugins iff at least one between request and response validation is set.""" if not (config.OPENAPI_VALIDATE_REQUEST or config.OPENAPI_VALIDATE_RESPONSE): return specs = PluginManager("localstack.openapi.spec").load_all() @@ -92,6 +95,7 @@ def __call__(self, chain: HandlerChain, context: RequestContext, response: Respo if not config.OPENAPI_VALIDATE_REQUEST: return + hasattr(self, "open_apis") or self._load_specs() path = context.request.path if path.startswith(f"{INTERNAL_RESOURCE_PATH}/") or path.startswith("/_aws/"): @@ -119,6 +123,7 @@ def __call__(self, chain: HandlerChain, context: RequestContext, response: Respo if not config.OPENAPI_VALIDATE_RESPONSE: return + hasattr(self, "open_apis") or self._load_specs() path = context.request.path if path.startswith(f"{INTERNAL_RESOURCE_PATH}/") or path.startswith("/_aws/"):