Skip to content

Commit ed25287

Browse files
Rename TracerSource to TracerProvider (open-telemetry#441)
Following discussion in open-telemetry#434, align the name with the specification. Co-authored-by: Chris Kleinknecht <libc@google.com>
1 parent 52fcd2f commit ed25287

File tree

33 files changed

+196
-193
lines changed

33 files changed

+196
-193
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ pip install -e ./ext/opentelemetry-ext-{integration}
5151

5252
```python
5353
from opentelemetry import trace
54-
from opentelemetry.sdk.trace import TracerSource
54+
from opentelemetry.sdk.trace import TracerProvider
5555
from opentelemetry.sdk.trace.export import ConsoleSpanExporter
5656
from opentelemetry.sdk.trace.export import SimpleExportSpanProcessor
5757

58-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
59-
trace.tracer_source().add_span_processor(
58+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
59+
trace.tracer_provider().add_span_processor(
6060
SimpleExportSpanProcessor(ConsoleSpanExporter())
6161
)
6262
tracer = trace.get_tracer(__name__)

examples/basic_tracer/tracer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import os
1818

1919
from opentelemetry import trace
20-
from opentelemetry.sdk.trace import TracerSource
20+
from opentelemetry.sdk.trace import TracerProvider
2121
from opentelemetry.sdk.trace.export import (
2222
BatchExportSpanProcessor,
2323
ConsoleSpanExporter,
@@ -36,7 +36,7 @@
3636

3737
# The preferred tracer implementation must be set, as the opentelemetry-api
3838
# defines the interface with a no-op implementation.
39-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
39+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
4040

4141
# We tell OpenTelemetry who it is that is creating spans. In this case, we have
4242
# no real name (no setup.py), so we make one up. If we had a version, we would
@@ -46,7 +46,7 @@
4646
# SpanExporter receives the spans and send them to the target location.
4747
span_processor = BatchExportSpanProcessor(exporter)
4848

49-
trace.tracer_source().add_span_processor(span_processor)
49+
trace.tracer_provider().add_span_processor(span_processor)
5050
with tracer.start_as_current_span("foo"):
5151
with tracer.start_as_current_span("bar"):
5252
with tracer.start_as_current_span("baz"):

examples/http/server.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from opentelemetry import trace
2323
from opentelemetry.ext import http_requests
2424
from opentelemetry.ext.wsgi import OpenTelemetryMiddleware
25-
from opentelemetry.sdk.trace import TracerSource
25+
from opentelemetry.sdk.trace import TracerProvider
2626
from opentelemetry.sdk.trace.export import (
2727
BatchExportSpanProcessor,
2828
ConsoleSpanExporter,
@@ -41,17 +41,17 @@
4141

4242
# The preferred tracer implementation must be set, as the opentelemetry-api
4343
# defines the interface with a no-op implementation.
44-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
44+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
4545
tracer = trace.get_tracer(__name__)
4646

4747
# SpanExporter receives the spans and send them to the target location.
4848
span_processor = BatchExportSpanProcessor(exporter)
49-
trace.tracer_source().add_span_processor(span_processor)
49+
trace.tracer_provider().add_span_processor(span_processor)
5050

5151
# Integrations are the glue that binds the OpenTelemetry API and the
5252
# frameworks and libraries that are used together, automatically creating
5353
# Spans and propagating context as appropriate.
54-
http_requests.enable(trace.tracer_source())
54+
http_requests.enable(trace.tracer_provider())
5555
app = flask.Flask(__name__)
5656
app.wsgi_app = OpenTelemetryMiddleware(app.wsgi_app)
5757

examples/http/tracer_client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from opentelemetry import trace
2222
from opentelemetry.ext import http_requests
23-
from opentelemetry.sdk.trace import TracerSource
23+
from opentelemetry.sdk.trace import TracerProvider
2424
from opentelemetry.sdk.trace.export import (
2525
BatchExportSpanProcessor,
2626
ConsoleSpanExporter,
@@ -39,15 +39,15 @@
3939

4040
# The preferred tracer implementation must be set, as the opentelemetry-api
4141
# defines the interface with a no-op implementation.
42-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
43-
tracer_source = trace.tracer_source()
42+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
43+
tracer_provider = trace.tracer_provider()
4444

4545
# SpanExporter receives the spans and send them to the target location.
4646
span_processor = BatchExportSpanProcessor(exporter)
47-
tracer_source.add_span_processor(span_processor)
47+
tracer_provider.add_span_processor(span_processor)
4848

4949
# Integrations are the glue that binds the OpenTelemetry API and the
5050
# frameworks and libraries that are used together, automatically creating
5151
# Spans and propagating context as appropriate.
52-
http_requests.enable(tracer_source)
52+
http_requests.enable(tracer_provider)
5353
response = requests.get(url="http://127.0.0.1:5000/")

examples/opentelemetry-example-app/src/opentelemetry_example_app/flask_example.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import opentelemetry.ext.http_requests
2424
from opentelemetry import trace
2525
from opentelemetry.ext.flask import instrument_app
26-
from opentelemetry.sdk.trace import TracerSource
26+
from opentelemetry.sdk.trace import TracerProvider
2727

2828

2929
def configure_opentelemetry(flask_app: flask.Flask):
@@ -45,15 +45,17 @@ def configure_opentelemetry(flask_app: flask.Flask):
4545
# The preferred implementation of these objects must be set,
4646
# as the opentelemetry-api defines the interface with a no-op
4747
# implementation.
48-
trace.set_preferred_tracer_source_implementation(lambda _: TracerSource())
48+
trace.set_preferred_tracer_provider_implementation(
49+
lambda _: TracerProvider()
50+
)
4951

5052
# Next, we need to configure how the values that are used by
5153
# traces and metrics are propagated (such as what specific headers
5254
# carry this value).
5355
# Integrations are the glue that binds the OpenTelemetry API
5456
# and the frameworks and libraries that are used together, automatically
5557
# creating Spans and propagating context as appropriate.
56-
opentelemetry.ext.http_requests.enable(trace.tracer_source())
58+
opentelemetry.ext.http_requests.enable(trace.tracer_provider())
5759
instrument_app(flask_app)
5860

5961

examples/opentracing/main.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
from opentelemetry import trace
44
from opentelemetry.ext import opentracing_shim
55
from opentelemetry.ext.jaeger import JaegerSpanExporter
6-
from opentelemetry.sdk.trace import TracerSource
6+
from opentelemetry.sdk.trace import TracerProvider
77
from opentelemetry.sdk.trace.export import SimpleExportSpanProcessor
88
from rediscache import RedisCache
99

1010
# Configure the tracer using the default implementation
11-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
12-
tracer_source = trace.tracer_source()
11+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
12+
tracer_provider = trace.tracer_provider()
1313

1414
# Configure the tracer to export traces to Jaeger
1515
jaeger_exporter = JaegerSpanExporter(
@@ -18,11 +18,11 @@
1818
agent_port=6831,
1919
)
2020
span_processor = SimpleExportSpanProcessor(jaeger_exporter)
21-
tracer_source.add_span_processor(span_processor)
21+
tracer_provider.add_span_processor(span_processor)
2222

2323
# Create an OpenTracing shim. This implements the OpenTracing tracer API, but
2424
# forwards calls to the underlying OpenTelemetry tracer.
25-
opentracing_tracer = opentracing_shim.create_tracer(tracer_source)
25+
opentracing_tracer = opentracing_shim.create_tracer(tracer_provider)
2626

2727
# Our example caching library expects an OpenTracing-compliant tracer.
2828
redis_cache = RedisCache(opentracing_tracer)

ext/opentelemetry-ext-dbapi/README.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ Usage
1111
.. code:: python
1212
1313
import mysql.connector
14-
from opentelemetry.trace import tracer_source
14+
from opentelemetry.trace import tracer_provider
1515
from opentelemetry.ext.dbapi import trace_integration
1616
17-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
17+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
1818
tracer = trace.get_tracer(__name__)
1919
# Ex: mysql.connector
20-
trace_integration(tracer_source(), mysql.connector, "connect", "mysql")
20+
trace_integration(tracer_provider(), mysql.connector, "connect", "mysql")
2121
2222
2323
References

ext/opentelemetry-ext-docker-tests/tests/pymongo/test_pymongo_functional.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from opentelemetry import trace as trace_api
2222
from opentelemetry.ext.pymongo import trace_integration
23-
from opentelemetry.sdk.trace import Span, Tracer, TracerSource
23+
from opentelemetry.sdk.trace import Span, Tracer, TracerProvider
2424
from opentelemetry.sdk.trace.export import SimpleExportSpanProcessor
2525
from opentelemetry.sdk.trace.export.in_memory_span_exporter import (
2626
InMemorySpanExporter,
@@ -35,11 +35,11 @@
3535
class TestFunctionalPymongo(unittest.TestCase):
3636
@classmethod
3737
def setUpClass(cls):
38-
cls._tracer_source = TracerSource()
39-
cls._tracer = Tracer(cls._tracer_source, None)
38+
cls._tracer_provider = TracerProvider()
39+
cls._tracer = Tracer(cls._tracer_provider, None)
4040
cls._span_exporter = InMemorySpanExporter()
4141
cls._span_processor = SimpleExportSpanProcessor(cls._span_exporter)
42-
cls._tracer_source.add_span_processor(cls._span_processor)
42+
cls._tracer_provider.add_span_processor(cls._span_processor)
4343
trace_integration(cls._tracer)
4444
client = MongoClient(
4545
MONGODB_HOST, MONGODB_PORT, serverSelectionTimeoutMS=2000

ext/opentelemetry-ext-http-requests/README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ Usage
2222
2323
import requests
2424
import opentelemetry.ext.http_requests
25-
from opentelemetry.trace import tracer_source
25+
from opentelemetry.trace import tracer_provider
2626
27-
opentelemetry.ext.http_requests.enable(tracer_source())
27+
opentelemetry.ext.http_requests.enable(tracer_provider())
2828
response = requests.get(url='https://www.example.org/')
2929
3030
Limitations

ext/opentelemetry-ext-http-requests/src/opentelemetry/ext/http_requests/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
# if the SDK/tracer is already using `requests` they may, in theory, bypass our
3333
# instrumentation when using `import from`, etc. (currently we only instrument
3434
# a instance method so the probability for that is very low).
35-
def enable(tracer_source):
35+
def enable(tracer_provider):
3636
"""Enables tracing of all requests calls that go through
3737
:code:`requests.session.Session.request` (this includes
3838
:code:`requests.get`, etc.)."""
@@ -47,7 +47,7 @@ def enable(tracer_source):
4747
# Guard against double instrumentation
4848
disable()
4949

50-
tracer = tracer_source.get_tracer(__name__, __version__)
50+
tracer = tracer_provider.get_tracer(__name__, __version__)
5151

5252
wrapped = Session.request
5353

ext/opentelemetry-ext-http-requests/tests/test_requests_integration.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ class TestRequestsIntegration(unittest.TestCase):
2929
# TODO: Copy & paste from test_wsgi_middleware
3030
def setUp(self):
3131
self.span_attrs = {}
32-
self.tracer_source = trace.DefaultTracerSource()
32+
self.tracer_provider = trace.DefaultTracerProvider()
3333
self.tracer = trace.DefaultTracer()
3434
self.get_tracer_patcher = mock.patch.object(
35-
self.tracer_source,
35+
self.tracer_provider,
3636
"get_tracer",
3737
autospec=True,
3838
spec_set=True,
@@ -70,7 +70,7 @@ def setspanattr(key, value):
7070
self.start_as_current_span = self.start_span_patcher.start()
7171
self.send = self.send_patcher.start()
7272

73-
opentelemetry.ext.http_requests.enable(self.tracer_source)
73+
opentelemetry.ext.http_requests.enable(self.tracer_provider)
7474
distver = pkg_resources.get_distribution(
7575
"opentelemetry-ext-http-requests"
7676
).version

ext/opentelemetry-ext-jaeger/README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ gRPC is still not supported by this implementation.
3232
3333
from opentelemetry import trace
3434
from opentelemetry.ext import jaeger
35-
from opentelemetry.sdk.trace import TracerSource
35+
from opentelemetry.sdk.trace import TracerProvider
3636
from opentelemetry.sdk.trace.export import BatchExportSpanProcessor
3737
38-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
38+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
3939
tracer = trace.get_tracer(__name__)
4040
4141
# create a JaegerSpanExporter

ext/opentelemetry-ext-jaeger/examples/jaeger_exporter_example.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
from opentelemetry import trace
44
from opentelemetry.ext import jaeger
5-
from opentelemetry.sdk.trace import TracerSource
5+
from opentelemetry.sdk.trace import TracerProvider
66
from opentelemetry.sdk.trace.export import BatchExportSpanProcessor
77

8-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
8+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
99
tracer = trace.get_tracer(__name__)
1010

1111
# create a JaegerSpanExporter
@@ -26,7 +26,7 @@
2626
span_processor = BatchExportSpanProcessor(jaeger_exporter)
2727

2828
# add to the tracer factory
29-
trace.tracer_source().add_span_processor(span_processor)
29+
trace.tracer_provider().add_span_processor(span_processor)
3030

3131
# create some spans for testing
3232
with tracer.start_as_current_span("foo") as foo:

ext/opentelemetry-ext-mysql/README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ Usage
1212
.. code:: python
1313
1414
import mysql.connector
15-
from opentelemetry.trace import tracer_source
15+
from opentelemetry.trace import tracer_provider
1616
from opentelemetry.ext.mysql import trace_integration
1717
18-
trace_integration(tracer_source())
18+
trace_integration(tracer_provider())
1919
cnx = mysql.connector.connect(database='MySQL_Database')
2020
cursor = cnx.cursor()
2121
cursor.execute("INSERT INTO test (testField) VALUES (123)"

ext/opentelemetry-ext-opentracing-shim/src/opentelemetry/ext/opentracing_shim/__init__.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
import time
3030
3131
from opentelemetry import trace
32-
from opentelemetry.sdk.trace import TracerSource
32+
from opentelemetry.sdk.trace import TracerProvider
3333
from opentelemetry.ext.opentracing_shim import create_tracer
3434
3535
# Tell OpenTelemetry which Tracer implementation to use.
36-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
36+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
3737
3838
# Create an OpenTelemetry Tracer.
3939
otel_tracer = trace.get_tracer(__name__)
@@ -97,15 +97,15 @@
9797
logger = logging.getLogger(__name__)
9898

9999

100-
def create_tracer(otel_tracer_source):
100+
def create_tracer(otel_tracer_provider):
101101
"""Creates a :class:`TracerShim` object from the provided OpenTelemetry
102-
:class:`opentelemetry.trace.TracerSource`.
102+
:class:`opentelemetry.trace.TracerProvider`.
103103
104104
The returned :class:`TracerShim` is an implementation of
105105
:class:`opentracing.Tracer` using OpenTelemetry under the hood.
106106
107107
Args:
108-
otel_tracer_source: A :class:`opentelemetry.trace.TracerSource` to be
108+
otel_tracer_provider: A :class:`opentelemetry.trace.TracerProvider` to be
109109
used for constructing the :class:`TracerShim`. A tracer from this
110110
source will be used to perform the actual tracing when user code is
111111
instrumented using the OpenTracing API.
@@ -114,7 +114,7 @@ def create_tracer(otel_tracer_source):
114114
The created :class:`TracerShim`.
115115
"""
116116

117-
return TracerShim(otel_tracer_source.get_tracer(__name__, __version__))
117+
return TracerShim(otel_tracer_provider.get_tracer(__name__, __version__))
118118

119119

120120
class SpanContextShim(opentracing.SpanContext):

ext/opentelemetry-ext-opentracing-shim/tests/test_shim.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from opentelemetry import propagators, trace
2525
from opentelemetry.context.propagation.httptextformat import HTTPTextFormat
2626
from opentelemetry.ext.opentracing_shim import util
27-
from opentelemetry.sdk.trace import TracerSource
27+
from opentelemetry.sdk.trace import TracerProvider
2828

2929

3030
class TestShim(TestCase):
@@ -33,16 +33,16 @@ class TestShim(TestCase):
3333
def setUp(self):
3434
"""Create an OpenTelemetry tracer and a shim before every test case."""
3535

36-
self.shim = opentracingshim.create_tracer(trace.tracer_source())
36+
self.shim = opentracingshim.create_tracer(trace.tracer_provider())
3737

3838
@classmethod
3939
def setUpClass(cls):
4040
"""Set preferred tracer implementation only once rather than before
4141
every test method.
4242
"""
4343

44-
trace.set_preferred_tracer_source_implementation(
45-
lambda T: TracerSource()
44+
trace.set_preferred_tracer_provider_implementation(
45+
lambda T: TracerProvider()
4646
)
4747

4848
# Save current propagator to be restored on teardown.

ext/opentelemetry-ext-psycopg2/README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ Usage
1212
.. code:: python
1313
import psycopg2
1414
from opentelemetry import trace
15-
from opentelemetry.sdk.trace import TracerSource
15+
from opentelemetry.sdk.trace import TracerProvider
1616
from opentelemetry.trace.ext.psycopg2 import trace_integration
1717
18-
trace.set_preferred_tracer_source_implementation(lambda T: TracerSource())
18+
trace.set_preferred_tracer_provider_implementation(lambda T: TracerProvider())
1919
tracer = trace.get_tracer(__name__)
2020
trace_integration(tracer)
2121
cnx = psycopg2.connect(database='Database')

ext/opentelemetry-ext-pymongo/README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ Usage
1212
.. code:: python
1313
1414
from pymongo import MongoClient
15-
from opentelemetry.trace import tracer_source
15+
from opentelemetry.trace import tracer_provider
1616
from opentelemetry.trace.ext.pymongo import trace_integration
1717
18-
trace_integration(tracer_source())
18+
trace_integration(tracer_provider())
1919
client = MongoClient()
2020
db = client["MongoDB_Database"]
2121
collection = db["MongoDB_Collection"]

0 commit comments

Comments
 (0)