diff --git a/projects/etos_suite_runner/pyproject.toml b/projects/etos_suite_runner/pyproject.toml index d5edcf4..9a22a91 100644 --- a/projects/etos_suite_runner/pyproject.toml +++ b/projects/etos_suite_runner/pyproject.toml @@ -18,8 +18,8 @@ requires-python = ">=3.9" dependencies = [ "packageurl-python~=0.11", "cryptography>=42.0.4,<43.0.0", - "etos_lib==4.4.2", - "etos_environment_provider==5.2.1", + "etos_lib==4.5.0", + "etos_environment_provider==5.3.0", "opentelemetry-api~=1.21", "opentelemetry-exporter-otlp~=1.21", "opentelemetry-sdk~=1.21", diff --git a/projects/etos_suite_runner/src/etos_suite_runner/__init__.py b/projects/etos_suite_runner/src/etos_suite_runner/__init__.py index c921c33..2179fe1 100644 --- a/projects/etos_suite_runner/src/etos_suite_runner/__init__.py +++ b/projects/etos_suite_runner/src/etos_suite_runner/__init__.py @@ -18,26 +18,29 @@ import os from importlib.metadata import PackageNotFoundError, version +from etos_lib.logging.logger import setup_logging from opentelemetry import trace from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter -from opentelemetry.sdk.resources import SERVICE_NAME, SERVICE_NAMESPACE, SERVICE_VERSION, Resource +from opentelemetry.sdk.resources import ( + SERVICE_NAME, + SERVICE_NAMESPACE, + SERVICE_VERSION, + OTELResourceDetector, + ProcessResourceDetector, + Resource, + get_aggregated_resources, +) from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor -from etos_lib.logging.logger import setup_logging - try: VERSION = version("etos_suite_runner") except PackageNotFoundError: VERSION = "Unknown" - -BASE_DIR = os.path.dirname(os.path.relpath(__file__)) DEV = os.getenv("DEV", "false").lower() == "true" ENVIRONMENT = "development" if DEV else "production" os.environ["ENVIRONMENT_PROVIDER_DISABLE_LOGGING"] = "true" -setup_logging("ETOS Suite Runner", VERSION, ENVIRONMENT) - LOGGER = logging.getLogger(__name__) @@ -45,29 +48,35 @@ # This is needed because Suite Runner uses the cluster-level OpenTelemetry collector # instead of a sidecar collector. if os.getenv("OTEL_COLLECTOR_HOST"): - os.environ["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] = os.getenv("OTEL_COLLECTOR_HOST") -else: - if "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT" in os.environ: - LOGGER.debug("Environment variable OTEL_EXPORTER_OTLP_TRACES_ENDPOINT not used.") - LOGGER.debug("To specify an OpenTelemetry collector host use OTEL_COLLECTOR_HOST.") - del os.environ["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] + os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = os.getenv("OTEL_COLLECTOR_HOST") +elif "OTEL_EXPORTER_OTLP_ENDPOINT" in os.environ: + LOGGER.debug("Environment variable OTEL_EXPORTER_OTLP_ENDPOINT not used.") + LOGGER.debug("To specify an OpenTelemetry collector host use OTEL_COLLECTOR_HOST.") + del os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] -if os.getenv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"): - LOGGER.info( - "Using OpenTelemetry collector: %s", os.getenv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") + +if os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT"): + OTEL_RESOURCE = Resource.create( + { + SERVICE_NAME: "etos-suite-runner", + SERVICE_VERSION: VERSION, + SERVICE_NAMESPACE: ENVIRONMENT, + }, ) - PROVIDER = TracerProvider( - resource=Resource.create( - { - SERVICE_NAME: "etos-suite-runner", - SERVICE_VERSION: VERSION, - SERVICE_NAMESPACE: ENVIRONMENT, - } - ) + + OTEL_RESOURCE = get_aggregated_resources( + [OTELResourceDetector(), ProcessResourceDetector()], + ).merge(OTEL_RESOURCE) + LOGGER.info( + "Using OpenTelemetry collector: %s", + os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT"), ) + PROVIDER = TracerProvider(resource=OTEL_RESOURCE) EXPORTER = OTLPSpanExporter() PROCESSOR = BatchSpanProcessor(EXPORTER) PROVIDER.add_span_processor(PROCESSOR) trace.set_tracer_provider(PROVIDER) + setup_logging("ETOS Suite Runner", VERSION, ENVIRONMENT, OTEL_RESOURCE) else: + setup_logging("ETOS Suite Runner", VERSION, ENVIRONMENT) LOGGER.info("OpenTelemetry not enabled. OTEL_COLLECTOR_HOST not set.")