Skip to content

Commit c61a712

Browse files
authored
Remove service name (#1669)
1 parent 75c7371 commit c61a712

File tree

16 files changed

+119
-99
lines changed

16 files changed

+119
-99
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2020
([#1500](https://github.com/open-telemetry/opentelemetry-python/pull/1500))
2121

2222
### Changed
23+
- remove `service_name` from constructor of jaeger and opencensus exporters and
24+
use of env variable `OTEL_PYTHON_SERVICE_NAME`
25+
([#1669])(https://github.com/open-telemetry/opentelemetry-python/pull/1669)
2326
- Rename `IdsGenerator` to `IdGenerator`
2427
([#1651](https://github.com/open-telemetry/opentelemetry-python/pull/1651))
2528
- Make TracerProvider's resource attribute private

docs/examples/opencensus-exporter-tracer/collector.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@
2121
from opentelemetry.sdk.trace import TracerProvider
2222
from opentelemetry.sdk.trace.export import BatchSpanProcessor
2323

24-
exporter = OpenCensusSpanExporter(
25-
service_name="basic-service", endpoint="localhost:55678"
26-
)
24+
exporter = OpenCensusSpanExporter(endpoint="localhost:55678")
2725

2826
trace.set_tracer_provider(TracerProvider())
2927
tracer = trace.get_tracer(__name__)

docs/getting_started/jaeger_example.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,18 @@
1515
# jaeger_example.py
1616
from opentelemetry import trace
1717
from opentelemetry.exporter import jaeger
18+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
1819
from opentelemetry.sdk.trace import TracerProvider
1920
from opentelemetry.sdk.trace.export import BatchSpanProcessor
2021

21-
trace.set_tracer_provider(TracerProvider())
22+
trace.set_tracer_provider(
23+
TracerProvider(
24+
resource=Resource.create({SERVICE_NAME: "my-helloworld-service"})
25+
)
26+
)
2227

2328
jaeger_exporter = jaeger.JaegerExporter(
24-
service_name="my-helloworld-service",
25-
agent_host_name="localhost",
26-
agent_port=6831,
29+
agent_host_name="localhost", agent_port=6831,
2730
)
2831

2932
trace.get_tracer_provider().add_span_processor(

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
# create a JaegerExporter
1212
jaeger_exporter = jaeger.JaegerExporter(
13-
service_name="my-helloworld-service",
1413
# configure agent
1514
agent_host_name="localhost",
1615
agent_port=6831,
@@ -29,7 +28,6 @@
2928
# `EXPORTER_JAEGER_CERTIFICATE` with file containing creds.
3029

3130
# jaeger_exporter = jaeger.JaegerExporter(
32-
# service_name="my-helloworld-service",
3331
# collector_endpoint="localhost:14250",
3432
# insecure=True,
3533
# transport_format="protobuf",

exporter/opentelemetry-exporter-jaeger/src/opentelemetry/exporter/jaeger/__init__.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
3737
# create a JaegerExporter
3838
jaeger_exporter = jaeger.JaegerExporter(
39-
service_name='my-helloworld-service',
4039
# configure agent
4140
agent_host_name='localhost',
4241
agent_port=6831,
@@ -81,6 +80,7 @@
8180

8281
from grpc import ChannelCredentials, insecure_channel, secure_channel
8382

83+
from opentelemetry import trace
8484
from opentelemetry.exporter.jaeger import util
8585
from opentelemetry.exporter.jaeger.gen import model_pb2
8686
from opentelemetry.exporter.jaeger.gen.collector_pb2 import PostSpansRequest
@@ -100,6 +100,7 @@
100100
OTEL_EXPORTER_JAEGER_PASSWORD,
101101
OTEL_EXPORTER_JAEGER_USER,
102102
)
103+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
103104
from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult
104105

105106
DEFAULT_AGENT_HOST_NAME = "localhost"
@@ -118,8 +119,6 @@ class JaegerExporter(SpanExporter):
118119
"""Jaeger span exporter for OpenTelemetry.
119120
120121
Args:
121-
service_name: Service that logged an annotation in a trace.Classifier
122-
when query for spans.
123122
agent_host_name: The host name of the Jaeger-Agent.
124123
agent_port: The port of the Jaeger-Agent.
125124
collector_endpoint: The endpoint of the Jaeger collector that uses
@@ -137,7 +136,6 @@ class JaegerExporter(SpanExporter):
137136

138137
def __init__(
139138
self,
140-
service_name: str,
141139
agent_host_name: Optional[str] = None,
142140
agent_port: Optional[int] = None,
143141
collector_endpoint: Optional[str] = None,
@@ -149,7 +147,6 @@ def __init__(
149147
max_tag_value_length: Optional[int] = None,
150148
udp_split_oversized_batches: bool = None,
151149
):
152-
self.service_name = service_name
153150
self._max_tag_value_length = max_tag_value_length
154151
self.agent_host_name = _parameter_setter(
155152
param=agent_host_name,
@@ -203,6 +200,12 @@ def __init__(
203200
if transport_format
204201
else TRANSPORT_FORMAT_THRIFT
205202
)
203+
tracer_provider = trace.get_tracer_provider()
204+
self.service_name = (
205+
tracer_provider.resource.attributes[SERVICE_NAME]
206+
if getattr(tracer_provider, "resource", None)
207+
else Resource.create().attributes.get(SERVICE_NAME)
208+
)
206209

207210
@property
208211
def _collector_grpc_client(self) -> Optional[CollectorServiceStub]:
@@ -243,6 +246,7 @@ def _collector_http_client(self) -> Optional[Collector]:
243246
return self._collector
244247

245248
def export(self, spans) -> SpanExportResult:
249+
246250
translator = Translate(spans)
247251
if self.transport_format == TRANSPORT_FORMAT_PROTOBUF:
248252
pb_translator = ProtobufTranslator(

exporter/opentelemetry-exporter-jaeger/tests/test_jaeger_exporter_protobuf.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@
3232
from opentelemetry.sdk.environment_variables import (
3333
OTEL_EXPORTER_JAEGER_CERTIFICATE,
3434
OTEL_EXPORTER_JAEGER_ENDPOINT,
35+
OTEL_RESOURCE_ATTRIBUTES,
3536
)
36-
from opentelemetry.sdk.trace import Resource
37+
from opentelemetry.sdk.trace import Resource, TracerProvider
3738
from opentelemetry.sdk.util.instrumentation import InstrumentationInfo
3839
from opentelemetry.trace.status import Status, StatusCode
3940

@@ -51,6 +52,7 @@ def setUp(self):
5152
self._test_span = trace._Span("test_span", context=context)
5253
self._test_span.start()
5354
self._test_span.end()
55+
5456
# pylint: disable=protected-access
5557

5658
def test_constructor_by_environment_variables(self):
@@ -66,20 +68,18 @@ def test_constructor_by_environment_variables(self):
6668
OTEL_EXPORTER_JAEGER_ENDPOINT: collector_endpoint,
6769
OTEL_EXPORTER_JAEGER_CERTIFICATE: os.path.dirname(__file__)
6870
+ "/certs/cred.cert",
71+
OTEL_RESOURCE_ATTRIBUTES: "service.name=my-opentelemetry-jaeger",
6972
},
7073
)
7174

7275
env_patch.start()
73-
74-
exporter = JaegerExporter(
75-
service_name=service, transport_format="protobuf"
76-
)
77-
76+
provider = TracerProvider(resource=Resource.create({}))
77+
trace_api.set_tracer_provider(provider)
78+
exporter = JaegerExporter(transport_format="protobuf")
7879
self.assertEqual(exporter.service_name, service)
7980
self.assertIsNotNone(exporter._collector_grpc_client)
8081
self.assertEqual(exporter.collector_endpoint, collector_endpoint)
8182
self.assertIsNotNone(exporter.credentials)
82-
8383
env_patch.stop()
8484

8585
# pylint: disable=too-many-locals,too-many-statements

exporter/opentelemetry-exporter-jaeger/tests/test_jaeger_exporter_thrift.py

Lines changed: 49 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import unittest
1717
from unittest import mock
18+
from unittest.mock import patch
1819

1920
# pylint:disable=no-name-in-module
2021
# pylint:disable=import-error
@@ -31,7 +32,8 @@
3132
OTEL_EXPORTER_JAEGER_PASSWORD,
3233
OTEL_EXPORTER_JAEGER_USER,
3334
)
34-
from opentelemetry.sdk.trace import Resource
35+
from opentelemetry.sdk.resources import SERVICE_NAME
36+
from opentelemetry.sdk.trace import Resource, TracerProvider
3537
from opentelemetry.sdk.util.instrumentation import InstrumentationInfo
3638
from opentelemetry.trace import SpanKind
3739
from opentelemetry.trace.status import Status, StatusCode
@@ -51,14 +53,21 @@ def setUp(self):
5153
self._test_span.end()
5254
# pylint: disable=protected-access
5355

56+
@patch("opentelemetry.exporter.jaeger.trace._TRACER_PROVIDER", None)
5457
def test_constructor_default(self):
5558
# pylint: disable=protected-access
5659
"""Test the default values assigned by constructor."""
5760
service_name = "my-service-name"
5861
agent_host_name = "localhost"
5962
agent_port = 6831
60-
exporter = jaeger_exporter.JaegerExporter(service_name)
6163

64+
trace_api.set_tracer_provider(
65+
TracerProvider(
66+
resource=Resource.create({SERVICE_NAME: "my-service-name"})
67+
)
68+
)
69+
70+
exporter = jaeger_exporter.JaegerExporter()
6271
self.assertEqual(exporter.service_name, service_name)
6372
self.assertEqual(exporter.agent_host_name, agent_host_name)
6473
self.assertEqual(exporter.agent_port, agent_port)
@@ -69,6 +78,7 @@ def test_constructor_default(self):
6978
self.assertTrue(exporter._agent_client is not None)
7079
self.assertIsNone(exporter._max_tag_value_length)
7180

81+
@patch("opentelemetry.exporter.jaeger.trace._TRACER_PROVIDER", None)
7282
def test_constructor_explicit(self):
7383
# pylint: disable=protected-access
7484
"""Test the constructor passing all the options."""
@@ -81,17 +91,22 @@ def test_constructor_explicit(self):
8191
username = "username"
8292
password = "password"
8393
auth = (username, password)
94+
trace_api.set_tracer_provider(
95+
TracerProvider(
96+
resource=Resource.create(
97+
{SERVICE_NAME: "my-opentelemetry-jaeger"}
98+
)
99+
)
100+
)
84101

85102
exporter = jaeger_exporter.JaegerExporter(
86-
service_name=service,
87103
agent_host_name=agent_host_name,
88104
agent_port=agent_port,
89105
collector_endpoint=collector_endpoint,
90106
username=username,
91107
password=password,
92108
max_tag_value_length=42,
93109
)
94-
95110
self.assertEqual(exporter.service_name, service)
96111
self.assertEqual(exporter.agent_host_name, agent_host_name)
97112
self.assertEqual(exporter.agent_port, agent_port)
@@ -108,6 +123,7 @@ def test_constructor_explicit(self):
108123
self.assertTrue(exporter._collector_http_client.auth is None)
109124
self.assertEqual(exporter._max_tag_value_length, 42)
110125

126+
@patch("opentelemetry.exporter.jaeger.trace._TRACER_PROVIDER", None)
111127
def test_constructor_by_environment_variables(self):
112128
# pylint: disable=protected-access
113129
"""Test the constructor using Environment Variables."""
@@ -133,10 +149,16 @@ def test_constructor_by_environment_variables(self):
133149
},
134150
)
135151

136-
environ_patcher.start()
137-
138-
exporter = jaeger_exporter.JaegerExporter(service_name=service)
152+
trace_api.set_tracer_provider(
153+
TracerProvider(
154+
resource=Resource.create(
155+
{SERVICE_NAME: "my-opentelemetry-jaeger"}
156+
)
157+
)
158+
)
139159

160+
environ_patcher.start()
161+
exporter = jaeger_exporter.JaegerExporter()
140162
self.assertEqual(exporter.service_name, service)
141163
self.assertEqual(exporter.agent_host_name, agent_host_name)
142164
self.assertEqual(exporter.agent_port, int(agent_port))
@@ -152,9 +174,17 @@ def test_constructor_by_environment_variables(self):
152174
exporter.password = None
153175
self.assertNotEqual(exporter._collector_http_client, collector)
154176
self.assertTrue(exporter._collector_http_client.auth is None)
155-
156177
environ_patcher.stop()
157178

179+
@patch("opentelemetry.exporter.jaeger.trace._TRACER_PROVIDER", None)
180+
def test_constructor_with_no_traceprovider_resource(self):
181+
182+
"""Test the constructor when there is no resource attached to trace_provider"""
183+
184+
exporter = jaeger_exporter.JaegerExporter()
185+
186+
self.assertEqual(exporter.service_name, "unknown_service")
187+
158188
def test_nsec_to_usec_round(self):
159189
# pylint: disable=protected-access
160190
nsec_to_usec_round = jaeger_exporter.translate._nsec_to_usec_round
@@ -426,10 +456,19 @@ def test_translate_to_jaeger(self):
426456

427457
self.assertEqual(spans, expected_spans)
428458

459+
@patch("opentelemetry.exporter.jaeger.trace._TRACER_PROVIDER", None)
429460
def test_export(self):
461+
430462
"""Test that agent and/or collector are invoked"""
463+
464+
trace_api.set_tracer_provider(
465+
TracerProvider(
466+
resource=Resource.create({SERVICE_NAME: "text_export"})
467+
)
468+
)
469+
431470
exporter = jaeger_exporter.JaegerExporter(
432-
"test_export", agent_host_name="localhost", agent_port=6318
471+
agent_host_name="localhost", agent_port=6318
433472
)
434473

435474
# just agent is configured now
@@ -448,6 +487,7 @@ def test_export(self):
448487
exporter.export((self._test_span,))
449488
self.assertEqual(agent_client_mock.emit.call_count, 1)
450489
self.assertEqual(collector_mock.submit.call_count, 1)
490+
# trace_api._TRACER_PROVIDER = None
451491

452492
def test_agent_client(self):
453493
agent_client = jaeger_exporter.AgentClientUDP(

exporter/opentelemetry-exporter-opencensus/src/opentelemetry/exporter/opencensus/trace_exporter/__init__.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
from opencensus.proto.trace.v1 import trace_pb2
2626

2727
import opentelemetry.exporter.opencensus.util as utils
28+
from opentelemetry import trace
29+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
2830
from opentelemetry.sdk.trace import ReadableSpan
2931
from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult
3032

@@ -39,18 +41,19 @@ class OpenCensusSpanExporter(SpanExporter):
3941
4042
Args:
4143
endpoint: OpenCensus Collector receiver endpoint.
42-
service_name: Name of Collector service.
4344
host_name: Host name.
4445
client: TraceService client stub.
4546
"""
4647

4748
def __init__(
48-
self,
49-
endpoint=DEFAULT_ENDPOINT,
50-
service_name=None,
51-
host_name=None,
52-
client=None,
49+
self, endpoint=DEFAULT_ENDPOINT, host_name=None, client=None,
5350
):
51+
tracer_provider = trace.get_tracer_provider()
52+
service_name = (
53+
tracer_provider.resource.attributes[SERVICE_NAME]
54+
if getattr(tracer_provider, "resource", None)
55+
else Resource.create().attributes.get(SERVICE_NAME)
56+
)
5457
self.endpoint = endpoint
5558
if client is None:
5659
self.channel = grpc.insecure_channel(self.endpoint)

exporter/opentelemetry-exporter-opencensus/tests/test_otcollector_trace_exporter.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
translate_to_collector,
2727
)
2828
from opentelemetry.sdk import trace
29+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
30+
from opentelemetry.sdk.trace import TracerProvider
2931
from opentelemetry.sdk.trace.export import SpanExportResult
3032
from opentelemetry.trace import TraceFlags
3133

@@ -38,21 +40,23 @@ def test_constructor(self):
3840
"opentelemetry.exporter.opencensus.util.get_node",
3941
side_effect=mock_get_node,
4042
)
41-
service_name = "testServiceName"
43+
trace_api.set_tracer_provider(
44+
TracerProvider(
45+
resource=Resource.create({SERVICE_NAME: "testServiceName"})
46+
)
47+
)
48+
4249
host_name = "testHostName"
4350
client = grpc.insecure_channel("")
4451
endpoint = "testEndpoint"
4552
with patch:
4653
exporter = OpenCensusSpanExporter(
47-
service_name=service_name,
48-
host_name=host_name,
49-
endpoint=endpoint,
50-
client=client,
54+
host_name=host_name, endpoint=endpoint, client=client,
5155
)
5256

5357
self.assertIs(exporter.client, client)
5458
self.assertEqual(exporter.endpoint, endpoint)
55-
mock_get_node.assert_called_with(service_name, host_name)
59+
mock_get_node.assert_called_with("testServiceName", host_name)
5660

5761
def test_get_collector_span_kind(self):
5862
result = utils.get_collector_span_kind(trace_api.SpanKind.SERVER)

0 commit comments

Comments
 (0)