19
19
20
20
from opentelemetry import trace
21
21
from opentelemetry .configuration import Configuration
22
+ from opentelemetry .instrumentation .configurator import BaseConfigurator
22
23
from opentelemetry .sdk .metrics .export import MetricsExporter
23
24
from opentelemetry .sdk .resources import Resource
24
25
from opentelemetry .sdk .trace import TracerProvider
38
39
_DEFAULT_IDS_GENERATOR = RANDOM_IDS_GENERATOR
39
40
40
41
41
- def get_ids_generator () -> str :
42
+ def _get_ids_generator () -> str :
42
43
return Configuration ().IDS_GENERATOR or _DEFAULT_IDS_GENERATOR
43
44
44
45
45
- def get_service_name () -> str :
46
+ def _get_service_name () -> str :
46
47
return Configuration ().SERVICE_NAME or ""
47
48
48
49
49
- def get_exporter_names () -> Sequence [str ]:
50
+ def _get_exporter_names () -> Sequence [str ]:
50
51
exporter = Configuration ().EXPORTER or _DEFAULT_EXPORTER
51
52
if exporter .lower ().strip () == "none" :
52
53
return []
@@ -62,10 +63,10 @@ def get_exporter_names() -> Sequence[str]:
62
63
return names
63
64
64
65
65
- def init_tracing (
66
+ def _init_tracing (
66
67
exporters : Sequence [SpanExporter ], ids_generator : trace .IdsGenerator
67
68
):
68
- service_name = get_service_name ()
69
+ service_name = _get_service_name ()
69
70
provider = TracerProvider (
70
71
resource = Resource .create ({"service.name" : service_name }),
71
72
ids_generator = ids_generator (),
@@ -85,12 +86,12 @@ def init_tracing(
85
86
)
86
87
87
88
88
- def init_metrics (exporters : Sequence [MetricsExporter ]):
89
+ def _init_metrics (exporters : Sequence [MetricsExporter ]):
89
90
if exporters :
90
91
logger .warning ("automatic metric initialization is not supported yet." )
91
92
92
93
93
- def import_tracer_provider_config_components (
94
+ def _import_tracer_provider_config_components (
94
95
selected_components , entry_point_name
95
96
) -> Sequence [Tuple [str , object ]]:
96
97
component_entry_points = {
@@ -112,15 +113,15 @@ def import_tracer_provider_config_components(
112
113
return component_impls
113
114
114
115
115
- def import_exporters (
116
+ def _import_exporters (
116
117
exporter_names : Sequence [str ],
117
118
) -> Tuple [Sequence [SpanExporter ], Sequence [MetricsExporter ]]:
118
119
trace_exporters , metric_exporters = {}, {}
119
120
120
121
for (
121
122
exporter_name ,
122
123
exporter_impl ,
123
- ) in import_tracer_provider_config_components (
124
+ ) in _import_tracer_provider_config_components (
124
125
exporter_names , "opentelemetry_exporter"
125
126
):
126
127
if issubclass (exporter_impl , SpanExporter ):
@@ -136,11 +137,11 @@ def import_exporters(
136
137
return trace_exporters , metric_exporters
137
138
138
139
139
- def import_ids_generator (ids_generator_name : str ) -> trace .IdsGenerator :
140
+ def _import_ids_generator (ids_generator_name : str ) -> trace .IdsGenerator :
140
141
# pylint: disable=unbalanced-tuple-unpacking
141
142
[
142
143
(ids_generator_name , ids_generator_impl )
143
- ] = import_tracer_provider_config_components (
144
+ ] = _import_tracer_provider_config_components (
144
145
[ids_generator_name .strip ()], "opentelemetry_ids_generator"
145
146
)
146
147
@@ -150,14 +151,19 @@ def import_ids_generator(ids_generator_name: str) -> trace.IdsGenerator:
150
151
raise RuntimeError ("{0} is not an IdsGenerator" .format (ids_generator_name ))
151
152
152
153
153
- def initialize_components ():
154
- exporter_names = get_exporter_names ()
155
- trace_exporters , metric_exporters = import_exporters (exporter_names )
156
- ids_generator_name = get_ids_generator ()
157
- ids_generator = import_ids_generator (ids_generator_name )
158
- init_tracing (trace_exporters , ids_generator )
154
+ def _initialize_components ():
155
+ exporter_names = _get_exporter_names ()
156
+ trace_exporters , metric_exporters = _import_exporters (exporter_names )
157
+ ids_generator_name = _get_ids_generator ()
158
+ ids_generator = _import_ids_generator (ids_generator_name )
159
+ _init_tracing (trace_exporters , ids_generator )
159
160
160
161
# We don't support automatic initialization for metric yet but have added
161
162
# some boilerplate in order to make sure current implementation does not
162
163
# lock us out of supporting metrics later without major surgery.
163
- init_metrics (metric_exporters )
164
+ _init_metrics (metric_exporters )
165
+
166
+
167
+ class Configurator (BaseConfigurator ):
168
+ def _configure (self , ** kwargs ):
169
+ _initialize_components ()
0 commit comments