1919
2020from opentelemetry import trace
2121from opentelemetry .configuration import Configuration
22+ from opentelemetry .instrumentation .configurator import BaseConfigurator
2223from opentelemetry .sdk .metrics .export import MetricsExporter
2324from opentelemetry .sdk .resources import Resource
2425from opentelemetry .sdk .trace import TracerProvider
3839_DEFAULT_IDS_GENERATOR = RANDOM_IDS_GENERATOR
3940
4041
41- def get_ids_generator () -> str :
42+ def _get_ids_generator () -> str :
4243 return Configuration ().IDS_GENERATOR or _DEFAULT_IDS_GENERATOR
4344
4445
45- def get_service_name () -> str :
46+ def _get_service_name () -> str :
4647 return Configuration ().SERVICE_NAME or ""
4748
4849
49- def get_exporter_names () -> Sequence [str ]:
50+ def _get_exporter_names () -> Sequence [str ]:
5051 exporter = Configuration ().EXPORTER or _DEFAULT_EXPORTER
5152 if exporter .lower ().strip () == "none" :
5253 return []
@@ -62,10 +63,10 @@ def get_exporter_names() -> Sequence[str]:
6263 return names
6364
6465
65- def init_tracing (
66+ def _init_tracing (
6667 exporters : Sequence [SpanExporter ], ids_generator : trace .IdsGenerator
6768):
68- service_name = get_service_name ()
69+ service_name = _get_service_name ()
6970 provider = TracerProvider (
7071 resource = Resource .create ({"service.name" : service_name }),
7172 ids_generator = ids_generator (),
@@ -85,12 +86,12 @@ def init_tracing(
8586 )
8687
8788
88- def init_metrics (exporters : Sequence [MetricsExporter ]):
89+ def _init_metrics (exporters : Sequence [MetricsExporter ]):
8990 if exporters :
9091 logger .warning ("automatic metric initialization is not supported yet." )
9192
9293
93- def import_tracer_provider_config_components (
94+ def _import_tracer_provider_config_components (
9495 selected_components , entry_point_name
9596) -> Sequence [Tuple [str , object ]]:
9697 component_entry_points = {
@@ -112,15 +113,15 @@ def import_tracer_provider_config_components(
112113 return component_impls
113114
114115
115- def import_exporters (
116+ def _import_exporters (
116117 exporter_names : Sequence [str ],
117118) -> Tuple [Sequence [SpanExporter ], Sequence [MetricsExporter ]]:
118119 trace_exporters , metric_exporters = {}, {}
119120
120121 for (
121122 exporter_name ,
122123 exporter_impl ,
123- ) in import_tracer_provider_config_components (
124+ ) in _import_tracer_provider_config_components (
124125 exporter_names , "opentelemetry_exporter"
125126 ):
126127 if issubclass (exporter_impl , SpanExporter ):
@@ -136,11 +137,11 @@ def import_exporters(
136137 return trace_exporters , metric_exporters
137138
138139
139- def import_ids_generator (ids_generator_name : str ) -> trace .IdsGenerator :
140+ def _import_ids_generator (ids_generator_name : str ) -> trace .IdsGenerator :
140141 # pylint: disable=unbalanced-tuple-unpacking
141142 [
142143 (ids_generator_name , ids_generator_impl )
143- ] = import_tracer_provider_config_components (
144+ ] = _import_tracer_provider_config_components (
144145 [ids_generator_name .strip ()], "opentelemetry_ids_generator"
145146 )
146147
@@ -150,14 +151,19 @@ def import_ids_generator(ids_generator_name: str) -> trace.IdsGenerator:
150151 raise RuntimeError ("{0} is not an IdsGenerator" .format (ids_generator_name ))
151152
152153
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 )
159160
160161 # We don't support automatic initialization for metric yet but have added
161162 # some boilerplate in order to make sure current implementation does not
162163 # 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