diff --git a/src/workflows/util/zocalo/configuration.py b/src/workflows/util/zocalo/configuration.py index 359fe37..33585c1 100644 --- a/src/workflows/util/zocalo/configuration.py +++ b/src/workflows/util/zocalo/configuration.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import ClassVar, TypedDict + from marshmallow import fields from zocalo.configuration import PluginSchema @@ -11,21 +13,25 @@ class OTEL: """A Zocalo configuration plugin to pre-populate OTELTracing config defaults""" + class _OTELConfig(TypedDict, total=False): + endpoint: str + timeout: int + + # Store configuration for access by services + config: ClassVar[_OTELConfig] = {} + class Schema(PluginSchema): host = fields.Str(required=True) port = fields.Int(required=True) timeout = fields.Int(required=False, load_default=10) - # Store configuration for access by services - config = {} - @staticmethod def activate(configuration): # Build the full endpoint URL endpoint = f"https://{configuration['host']}:{configuration['port']}/v1/traces" OTEL.config["endpoint"] = endpoint OTEL.config["timeout"] = configuration.get("timeout", 10) - return OTEL.config + return dict(OTEL.config) class Stomp: @@ -48,6 +54,7 @@ def activate(configuration): ("prefix", "--stomp-prfx"), ]: StompTransport.defaults[target] = configuration[cfgoption] + return dict(StompTransport.defaults) class Pika: @@ -70,6 +77,7 @@ def activate(configuration): ("vhost", "--rabbit-vhost"), ]: PikaTransport.defaults[target] = configuration[cfgoption] + return dict(PikaTransport.defaults) class DefaultTransport: