From 3e787c52e53b4efe6811894520cf47bc5ced2920 Mon Sep 17 00:00:00 2001 From: Federico Bond Date: Tue, 30 Apr 2024 16:02:30 +1000 Subject: [PATCH] feat: configure feature flag tracing for Python services --- src/loadgenerator/locustfile.py | 3 ++- src/loadgenerator/requirements.txt | 5 +++-- src/recommendationservice/recommendation_server.py | 6 ++---- src/recommendationservice/requirements.txt | 5 +++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/loadgenerator/locustfile.py b/src/loadgenerator/locustfile.py index 77c33796c8..b4396d9f1b 100644 --- a/src/loadgenerator/locustfile.py +++ b/src/loadgenerator/locustfile.py @@ -36,7 +36,7 @@ from openfeature import api from openfeature.contrib.provider.flagd import FlagdProvider -from openfeature.exception import OpenFeatureError +from openfeature.contrib.hook.opentelemetry import TracingHook from playwright.async_api import Route, Request @@ -71,6 +71,7 @@ # Initialize Flagd provider api.set_provider(FlagdProvider(host=os.environ.get('FLAGD_HOST', 'flagd'), port=os.environ.get('FLAGD_PORT', 8013))) +api.set_hooks([TracingHook()]) def get_flagd_value(FlagName): # Initialize OpenFeature diff --git a/src/loadgenerator/requirements.txt b/src/loadgenerator/requirements.txt index 2c7f3601e1..54ff662abe 100644 --- a/src/loadgenerator/requirements.txt +++ b/src/loadgenerator/requirements.txt @@ -30,8 +30,9 @@ opentelemetry-proto==1.23.0 opentelemetry-sdk==1.23.0 opentelemetry-semantic-conventions==0.44b0 opentelemetry-util-http==0.44b0 -openfeature-sdk==0.5.0 -openfeature-provider-flagd==0.1.3 +openfeature-sdk==0.7.0 +openfeature-provider-flagd==0.1.5 +openfeature-hooks-opentelemetry==0.1.3 protobuf==4.25.2 psutil==5.9.6 pyzmq==25.1.1 diff --git a/src/recommendationservice/recommendation_server.py b/src/recommendationservice/recommendation_server.py index 652c939b4d..c7302bcac5 100644 --- a/src/recommendationservice/recommendation_server.py +++ b/src/recommendationservice/recommendation_server.py @@ -23,8 +23,7 @@ from openfeature import api from openfeature.contrib.provider.flagd import FlagdProvider -# TODO: once openfeature otel hook for python is released, this will work -# from openfeature.contrib.hooks.otel import TracingHook +from openfeature.contrib.hook.opentelemetry import TracingHook # Local import logging @@ -124,14 +123,13 @@ def must_map_env(key: str): def check_feature_flag(flag_name: str): # Initialize OpenFeature client = api.get_client() - # TODO: once openfeature otel hook for python is released, this will work - # api.add_hooks(TracingHook()) return client.get_boolean_value("recommendationServiceCacheFailure", False) if __name__ == "__main__": service_name = must_map_env('OTEL_SERVICE_NAME') api.set_provider(FlagdProvider(host=os.environ.get('FLAGD_HOST', 'flagd'), port=os.environ.get('FLAGD_PORT', 8013))) + api.add_hooks([TracingHook()]) # Initialize Traces and Metrics tracer = trace.get_tracer_provider().get_tracer(service_name) diff --git a/src/recommendationservice/requirements.txt b/src/recommendationservice/requirements.txt index 159dc1e914..129da915cd 100644 --- a/src/recommendationservice/requirements.txt +++ b/src/recommendationservice/requirements.txt @@ -4,7 +4,8 @@ opentelemetry-distro==0.43b0 opentelemetry-exporter-otlp-proto-grpc==1.22.0 python-dotenv==1.0.0 python-json-logger==2.0.7 -openfeature-sdk==0.5.0 -openfeature-provider-flagd==0.1.3 +openfeature-sdk==0.7.0 +openfeature-provider-flagd==0.1.5 +openfeature-hooks-opentelemetry==0.1.3 psutil==5.9.6 # Importing this will also import opentelemetry-instrumentation-system-metrics when running opentelemetry-bootstrap