From 02ee176e9c66f8d279c6344b10a7cc26ef454962 Mon Sep 17 00:00:00 2001 From: Diego Hurtado Date: Wed, 15 Nov 2023 19:11:38 -0600 Subject: [PATCH] WIP need to fix the handling of multiple batch/simple processors --- prototypes/python/pyproject.toml | 12 +-- prototypes/python/requirements.txt | 9 --- .../_internal/schema_paths_functions.py | 78 +++++++++++++++---- 3 files changed, 70 insertions(+), 29 deletions(-) diff --git a/prototypes/python/pyproject.toml b/prototypes/python/pyproject.toml index 6575d22..b1e5a6f 100644 --- a/prototypes/python/pyproject.toml +++ b/prototypes/python/pyproject.toml @@ -27,11 +27,13 @@ classifiers = [ ] dependencies = [ "opentelemetry-api", -] - -[project.optional-dependencies] -test = [ - "pytest" + "opentelemetry-sdk", + "opentelemetry-exporter-otlp", + "opentelemetry-exporter-jaeger", + "opentelemetry-exporter-zipkin", + "jsonschema", + "pyyaml", + "jsonref" ] [project.urls] diff --git a/prototypes/python/requirements.txt b/prototypes/python/requirements.txt index 28fa2e8..d0f5095 100644 --- a/prototypes/python/requirements.txt +++ b/prototypes/python/requirements.txt @@ -1,12 +1,3 @@ -jsonschema -pyyaml -opentelemetry-api -opentelemetry-sdk -opentelemetry-exporter-otlp -opentelemetry-exporter-jaeger -opentelemetry-exporter-zipkin pytest pdbpp ipdb -referencing -jsonref diff --git a/prototypes/python/src/opentelemetry/configuration/_internal/schema_paths_functions.py b/prototypes/python/src/opentelemetry/configuration/_internal/schema_paths_functions.py index d9e3dcc..359dd4f 100644 --- a/prototypes/python/src/opentelemetry/configuration/_internal/schema_paths_functions.py +++ b/prototypes/python/src/opentelemetry/configuration/_internal/schema_paths_functions.py @@ -1,3 +1,14 @@ +from ipdb import set_trace +from opentelemetry.sdk.resources import Resource +from opentelemetry.sdk.trace.export import BatchSpanProcessor +from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import ( + OTLPSpanExporter as GRPCOTLPSpanExporter +) +from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( + OTLPSpanExporter as HTTPOTLPSpanExporter +) +from urllib.parse import urlparse + # flake8: noqa: E501 @@ -17,6 +28,7 @@ def logger_provider( def logger_provider_processors( + # FIXME this should be able to handle multiple batch and simple processors batch: object = None, simple: object = None, **kwargs @@ -302,7 +314,7 @@ def tracer_provider( processors: list = None, sampler: object = None, ): - pass + set_trace() def tracer_provider_processors( @@ -310,7 +322,18 @@ def tracer_provider_processors( simple: object = None, **kwargs ): - pass + + set_trace() + + processors = [] + + if batch is not None: + processors.append(batch) + + if simple is not None: + processors.append(simple) + + return processors def tracer_provider_processors_batch( @@ -320,7 +343,13 @@ def tracer_provider_processors_batch( max_queue_size: int = None, schedule_delay: int = None, ): - pass + return BatchSpanProcessor( + exporter, + max_queue_size=max_queue_size, + schedule_delay_millis=schedule_delay, + max_export_batch_size=max_export_batch_size, + export_timeout_millis=export_timeout + ) def tracer_provider_processors_batch_exporter( @@ -329,7 +358,7 @@ def tracer_provider_processors_batch_exporter( zipkin: object = None, **kwargs ): - pass + return console or otlp or zipkin def tracer_provider_processors_batch_exporter_otlp( @@ -342,32 +371,51 @@ def tracer_provider_processors_batch_exporter_otlp( headers: object = None, timeout: int = None, ): - pass + + protocol = urlparse(protocol).scheme + + if protocol.startswith("http"): + exporter_class = HTTPOTLPSpanExporter + + else: + exporter_class = GRPCOTLPSpanExporter + + return exporter_class( + endpoint=endpoint, + # insecure=None, + # FIXME somehow create credentials here + # from grpc.credentials import create_credentials + # credentials=create_credentials() + headers=headers, + timeout=timeout, + # compression=compression + ) def tracer_provider_processors_batch_exporter_otlp_headers( **kwargs ): - pass + return kwargs def tracer_provider_processors_batch_exporter_console( ): - pass + set_trace() def tracer_provider_processors_batch_exporter_zipkin( endpoint: str, timeout: int = None, ): - pass + set_trace() def tracer_provider_processors_simple( exporter: object, ): - pass + set_trace() + return "simple" def tracer_provider_processors_simple_exporter( @@ -376,7 +424,7 @@ def tracer_provider_processors_simple_exporter( zipkin: object = None, **kwargs ): - pass + set_trace() def tracer_provider_processors_simple_exporter_otlp( @@ -389,26 +437,26 @@ def tracer_provider_processors_simple_exporter_otlp( headers: object = None, timeout: int = None, ): - pass + set_trace() def tracer_provider_processors_simple_exporter_otlp_headers( **kwargs ): - pass + set_trace() def tracer_provider_processors_simple_exporter_console( ): - pass + set_trace() def tracer_provider_processors_simple_exporter_zipkin( endpoint: str, timeout: int = None, ): - pass + set_trace() def tracer_provider_limits( @@ -419,7 +467,7 @@ def tracer_provider_limits( link_attribute_count_limit: int = None, link_count_limit: int = None, ): - pass + set_trace() def resource(