diff --git a/ddtrace/debugging/_products/code_origin/span.py b/ddtrace/debugging/_products/code_origin/span.py index 274e2c1a12a..e4ed054698c 100644 --- a/ddtrace/debugging/_products/code_origin/span.py +++ b/ddtrace/debugging/_products/code_origin/span.py @@ -1,3 +1,5 @@ +import enum + from ddtrace.internal.products import manager as product_manager from ddtrace.settings._core import ValueSource from ddtrace.settings.code_origin import config @@ -14,6 +16,12 @@ def post_preload(): pass +def _start(): + from ddtrace.debugging._origin.span import SpanCodeOriginProcessorEntry + + SpanCodeOriginProcessorEntry.enable() + + def start(): if config.span.enabled: from ddtrace.debugging._origin.span import SpanCodeOriginProcessorEntry @@ -33,6 +41,12 @@ def restart(join=False): pass +def _stop(): + from ddtrace.debugging._origin.span import SpanCodeOriginProcessorEntry + + SpanCodeOriginProcessorEntry.disable() + + def stop(join=False): if config.span.enabled: from ddtrace.debugging._origin.span import SpanCodeOriginProcessorEntry @@ -48,3 +62,13 @@ def stop(join=False): def at_exit(join=False): stop(join=join) + + +class APMCapabilities(enum.IntFlag): + APM_TRACING_ENABLE_CODE_ORIGIN = 1 << 40 + + +def apm_tracing_rc(lib_config, _config): + if (enabled := lib_config.get("code_origin_enabled")) is not None: + should_start = (config.span.spec.enabled.full_name not in config.source or config.span.enabled) and enabled + _start() if should_start else _stop() diff --git a/releasenotes/notes/feat-co-in-product-enablement-6b70fc52d62721fa.yaml b/releasenotes/notes/feat-co-in-product-enablement-6b70fc52d62721fa.yaml new file mode 100644 index 00000000000..b6adaf07128 --- /dev/null +++ b/releasenotes/notes/feat-co-in-product-enablement-6b70fc52d62721fa.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + code origin: added support for in-product enablement.