Skip to content

Commit

Permalink
feat: configure feature flag tracing for Python services
Browse files Browse the repository at this point in the history
  • Loading branch information
federicobond committed Apr 30, 2024
1 parent faa5104 commit 3e787c5
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 9 deletions.
3 changes: 2 additions & 1 deletion src/loadgenerator/locustfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions src/loadgenerator/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 2 additions & 4 deletions src/recommendationservice/recommendation_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
5 changes: 3 additions & 2 deletions src/recommendationservice/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 3e787c5

Please sign in to comment.