Skip to content

Commit dc1ef09

Browse files
lzchencnnradams
authored andcommitted
Merge branch 'master' into exclude_lists
2 parents 54bb85c + 2a9c3ac commit dc1ef09

File tree

20 files changed

+178
-39
lines changed

20 files changed

+178
-39
lines changed

.github/workflows/publish.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ jobs:
2525
# might have already been updated, this would be bad.
2626
- name: Publish to TestPyPI
2727
env:
28-
TWINE_USERNAME: ${{ secrets.test_pypi_username }}
29-
TWINE_PASSWORD: ${{ secrets.test_pypi_password }}
28+
TWINE_USERNAME: '__token__'
29+
TWINE_PASSWORD: ${{ secrets.test_pypi_token }}
3030
run: |
3131
twine upload --repository testpypi --skip-existing --verbose dist/*
3232
- name: Publish to PyPI

ext/opentelemetry-ext-boto/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
## Unreleased
44

5+
- ext/boto and ext/botocore: fails to export spans via jaeger
6+
([#866](https://github.com/open-telemetry/opentelemetry-python/pull/866))
7+
58
## 0.9b0
69

710
Released 2020-06-10
811

912
- Initial release
13+

ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252

5353
from opentelemetry.ext.boto.version import __version__
5454
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
55+
from opentelemetry.sdk.trace import Resource
5556
from opentelemetry.trace import SpanKind, get_tracer
5657

5758
logger = logging.getLogger(__name__)
@@ -123,9 +124,14 @@ def _common_request( # pylint: disable=too-many-locals
123124
) as span:
124125
if args:
125126
http_method = args[0]
126-
span.resource = "%s.%s" % (endpoint_name, http_method.lower())
127+
span.resource = Resource(
128+
labels={
129+
"endpoint": endpoint_name,
130+
"http_method": http_method.lower(),
131+
}
132+
)
127133
else:
128-
span.resource = endpoint_name
134+
span.resource = Resource(labels={"endpoint": endpoint_name})
129135

130136
add_span_arg_tags(
131137
span, endpoint_name, args, args_name, traced_args,

ext/opentelemetry-ext-boto/tests/test_boto_instrumentation.py

+40-9
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
)
2828

2929
from opentelemetry.ext.boto import BotoInstrumentor
30+
from opentelemetry.sdk.resources import Resource
3031
from opentelemetry.test.test_base import TestBase
3132

3233

@@ -69,7 +70,12 @@ def test_ec2_client(self):
6970
span = spans[1]
7071
self.assertEqual(span.attributes["aws.operation"], "RunInstances")
7172
assert_span_http_status_code(span, 200)
72-
self.assertEqual(span.resource, "ec2.runinstances")
73+
self.assertEqual(
74+
span.resource,
75+
Resource(
76+
labels={"endpoint": "ec2", "http_method": "runinstances"}
77+
),
78+
)
7379
self.assertEqual(span.attributes["http.method"], "POST")
7480
self.assertEqual(span.attributes["aws.region"], "us-west-2")
7581
self.assertEqual(span.name, "ec2.command")
@@ -123,7 +129,10 @@ def test_s3_client(self):
123129
self.assertEqual(len(spans), 3)
124130
span = spans[2]
125131
assert_span_http_status_code(span, 200)
126-
self.assertEqual(span.resource, "s3.head")
132+
self.assertEqual(
133+
span.resource,
134+
Resource(labels={"endpoint": "s3", "http_method": "head"}),
135+
)
127136
self.assertEqual(span.attributes["http.method"], "HEAD")
128137
self.assertEqual(span.attributes["aws.operation"], "head_bucket")
129138
self.assertEqual(span.name, "s3.command")
@@ -135,7 +144,10 @@ def test_s3_client(self):
135144
spans = self.memory_exporter.get_finished_spans()
136145
assert spans
137146
span = spans[2]
138-
self.assertEqual(span.resource, "s3.head")
147+
self.assertEqual(
148+
span.resource,
149+
Resource(labels={"endpoint": "s3", "http_method": "head"}),
150+
)
139151

140152
@mock_s3_deprecated
141153
def test_s3_put(self):
@@ -152,15 +164,24 @@ def test_s3_put(self):
152164
self.assertEqual(len(spans), 3)
153165
self.assertEqual(spans[0].attributes["aws.operation"], "create_bucket")
154166
assert_span_http_status_code(spans[0], 200)
155-
self.assertEqual(spans[0].resource, "s3.put")
167+
self.assertEqual(
168+
spans[0].resource,
169+
Resource(labels={"endpoint": "s3", "http_method": "put"}),
170+
)
156171
# get bucket
157172
self.assertEqual(spans[1].attributes["aws.operation"], "head_bucket")
158-
self.assertEqual(spans[1].resource, "s3.head")
173+
self.assertEqual(
174+
spans[1].resource,
175+
Resource(labels={"endpoint": "s3", "http_method": "head"}),
176+
)
159177
# put object
160178
self.assertEqual(
161179
spans[2].attributes["aws.operation"], "_send_file_internal"
162180
)
163-
self.assertEqual(spans[2].resource, "s3.put")
181+
self.assertEqual(
182+
spans[2].resource,
183+
Resource(labels={"endpoint": "s3", "http_method": "put"}),
184+
)
164185

165186
@mock_lambda_deprecated
166187
def test_unpatch(self):
@@ -200,7 +221,10 @@ def test_lambda_client(self):
200221
self.assertEqual(len(spans), 2)
201222
span = spans[0]
202223
assert_span_http_status_code(span, 200)
203-
self.assertEqual(span.resource, "lambda.get")
224+
self.assertEqual(
225+
span.resource,
226+
Resource(labels={"endpoint": "lambda", "http_method": "get"}),
227+
)
204228
self.assertEqual(span.attributes["http.method"], "GET")
205229
self.assertEqual(span.attributes["aws.region"], "us-east-2")
206230
self.assertEqual(span.attributes["aws.operation"], "list_functions")
@@ -214,7 +238,12 @@ def test_sts_client(self):
214238
spans = self.memory_exporter.get_finished_spans()
215239
assert spans
216240
span = spans[0]
217-
self.assertEqual(span.resource, "sts.getfederationtoken")
241+
self.assertEqual(
242+
span.resource,
243+
Resource(
244+
labels={"endpoint": "sts", "http_method": "getfederationtoken"}
245+
),
246+
)
218247
self.assertEqual(span.attributes["aws.region"], "us-west-2")
219248
self.assertEqual(
220249
span.attributes["aws.operation"], "GetFederationToken"
@@ -238,5 +267,7 @@ def test_elasticache_client(self):
238267
spans = self.memory_exporter.get_finished_spans()
239268
assert spans
240269
span = spans[0]
241-
self.assertEqual(span.resource, "elasticache")
270+
self.assertEqual(
271+
span.resource, Resource(labels={"endpoint": "elasticcache"})
272+
)
242273
self.assertEqual(span.attributes["aws.region"], "us-west-2")

ext/opentelemetry-ext-botocore/CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## Unreleased
44

5+
- ext/boto and ext/botocore: fails to export spans via jaeger
6+
([#866](https://github.com/open-telemetry/opentelemetry-python/pull/866))
7+
58
## 0.9b0
69

710
Released 2020-06-10

ext/opentelemetry-ext-botocore/src/opentelemetry/ext/botocore/__init__.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858

5959
from opentelemetry.ext.botocore.version import __version__
6060
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
61+
from opentelemetry.sdk.trace import Resource
6162
from opentelemetry.trace import SpanKind, get_tracer
6263

6364
logger = logging.getLogger(__name__)
@@ -98,10 +99,15 @@ def _patched_api_call(self, original_func, instance, args, kwargs):
9899
operation = None
99100
if args:
100101
operation = args[0]
101-
span.resource = "%s.%s" % (endpoint_name, operation.lower())
102+
span.resource = Resource(
103+
labels={
104+
"endpoint": endpoint_name,
105+
"operation": operation.lower(),
106+
}
107+
)
102108

103109
else:
104-
span.resource = endpoint_name
110+
span.resource = Resource(labels={"endpoint": endpoint_name})
105111

106112
add_span_arg_tags(
107113
span,

ext/opentelemetry-ext-botocore/tests/test_botocore_instrumentation.py

+43-9
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
)
1111

1212
from opentelemetry.ext.botocore import BotocoreInstrumentor
13+
from opentelemetry.sdk.resources import Resource
1314
from opentelemetry.test.test_base import TestBase
1415

1516

@@ -49,7 +50,12 @@ def test_traced_client(self):
4950
self.assertEqual(span.attributes["aws.region"], "us-west-2")
5051
self.assertEqual(span.attributes["aws.operation"], "DescribeInstances")
5152
assert_span_http_status_code(span, 200)
52-
self.assertEqual(span.resource, "ec2.describeinstances")
53+
self.assertEqual(
54+
span.resource,
55+
Resource(
56+
labels={"endpoint": "ec2", "operation": "describeinstances"}
57+
),
58+
)
5359
self.assertEqual(span.name, "ec2.command")
5460

5561
@mock_ec2
@@ -73,7 +79,10 @@ def test_s3_client(self):
7379
self.assertEqual(len(spans), 2)
7480
self.assertEqual(span.attributes["aws.operation"], "ListBuckets")
7581
assert_span_http_status_code(span, 200)
76-
self.assertEqual(span.resource, "s3.listbuckets")
82+
self.assertEqual(
83+
span.resource,
84+
Resource(labels={"endpoint": "s3", "operation": "listbuckets"}),
85+
)
7786

7887
# testing for span error
7988
self.memory_exporter.get_finished_spans()
@@ -82,7 +91,10 @@ def test_s3_client(self):
8291
spans = self.memory_exporter.get_finished_spans()
8392
assert spans
8493
span = spans[2]
85-
self.assertEqual(span.resource, "s3.listobjects")
94+
self.assertEqual(
95+
span.resource,
96+
Resource(labels={"endpoint": "s3", "operation": "listobjects"}),
97+
)
8698

8799
@mock_s3
88100
def test_s3_put(self):
@@ -97,9 +109,15 @@ def test_s3_put(self):
97109
self.assertEqual(len(spans), 2)
98110
self.assertEqual(span.attributes["aws.operation"], "CreateBucket")
99111
assert_span_http_status_code(span, 200)
100-
self.assertEqual(span.resource, "s3.createbucket")
112+
self.assertEqual(
113+
span.resource,
114+
Resource(labels={"endpoint": "s3", "operation": "createbucket"}),
115+
)
101116
self.assertEqual(spans[1].attributes["aws.operation"], "PutObject")
102-
self.assertEqual(spans[1].resource, "s3.putobject")
117+
self.assertEqual(
118+
spans[1].resource,
119+
Resource(labels={"endpoint": "s3", "operation": "putobject"}),
120+
)
103121
self.assertEqual(spans[1].attributes["params.Key"], str(params["Key"]))
104122
self.assertEqual(
105123
spans[1].attributes["params.Bucket"], str(params["Bucket"])
@@ -119,7 +137,10 @@ def test_sqs_client(self):
119137
self.assertEqual(span.attributes["aws.region"], "us-east-1")
120138
self.assertEqual(span.attributes["aws.operation"], "ListQueues")
121139
assert_span_http_status_code(span, 200)
122-
self.assertEqual(span.resource, "sqs.listqueues")
140+
self.assertEqual(
141+
span.resource,
142+
Resource(labels={"endpoint": "sqs", "operation": "listqueues"}),
143+
)
123144

124145
@mock_kinesis
125146
def test_kinesis_client(self):
@@ -136,7 +157,12 @@ def test_kinesis_client(self):
136157
self.assertEqual(span.attributes["aws.region"], "us-east-1")
137158
self.assertEqual(span.attributes["aws.operation"], "ListStreams")
138159
assert_span_http_status_code(span, 200)
139-
self.assertEqual(span.resource, "kinesis.liststreams")
160+
self.assertEqual(
161+
span.resource,
162+
Resource(
163+
labels={"endpoint": "kinesis", "operation": "liststreams"}
164+
),
165+
)
140166

141167
@mock_kinesis
142168
def test_unpatch(self):
@@ -176,7 +202,12 @@ def test_lambda_client(self):
176202
self.assertEqual(span.attributes["aws.region"], "us-east-1")
177203
self.assertEqual(span.attributes["aws.operation"], "ListFunctions")
178204
assert_span_http_status_code(span, 200)
179-
self.assertEqual(span.resource, "lambda.listfunctions")
205+
self.assertEqual(
206+
span.resource,
207+
Resource(
208+
labels={"endpoint": "lambda", "operation": "listfunctions"}
209+
),
210+
)
180211

181212
@mock_kms
182213
def test_kms_client(self):
@@ -191,7 +222,10 @@ def test_kms_client(self):
191222
self.assertEqual(span.attributes["aws.region"], "us-east-1")
192223
self.assertEqual(span.attributes["aws.operation"], "ListKeys")
193224
assert_span_http_status_code(span, 200)
194-
self.assertEqual(span.resource, "kms.listkeys")
225+
self.assertEqual(
226+
span.resource,
227+
Resource(labels={"endpoint": "kms", "operation": "listkeys"}),
228+
)
195229

196230
# checking for protection on sts against security leak
197231
self.assertTrue("params" not in span.attributes.keys())

ext/opentelemetry-ext-datadog/setup.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ package_dir=
4040
packages=find_namespace:
4141
install_requires =
4242
ddtrace>=0.34.0
43-
opentelemetry-api==0.11.dev0
44-
opentelemetry-sdk==0.11.dev0
43+
opentelemetry-api == 0.11.dev0
44+
opentelemetry-sdk == 0.11.dev0
4545

4646
[options.packages.find]
4747
where = src

ext/opentelemetry-ext-mysql/CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## Unreleased
44

5+
- bugfix: Fix auto-instrumentation entry point for mysql
6+
([#858](https://github.com/open-telemetry/opentelemetry-python/pull/858))
7+
58
## 0.7b1
69

710
Released 2020-05-12

ext/opentelemetry-ext-mysql/setup.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,4 @@ where = src
5555

5656
[options.entry_points]
5757
opentelemetry_instrumentor =
58-
mysql = opentelemetry.ext.pymysql:MySQLInstrumentor
58+
mysql = opentelemetry.ext.mysql:MySQLInstrumentor

opentelemetry-api/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ Released 2020-06-10
1616
([#764](https://github.com/open-telemetry/opentelemetry-python/pull/764))
1717
- Add SumObserver and UpDownSumObserver in metrics
1818
([#789](https://github.com/open-telemetry/opentelemetry-python/pull/789))
19+
- Log a warning when replacing the global Tracer/Meter provider
20+
([#856](https://github.com/open-telemetry/opentelemetry-python/pull/856))
1921

2022
## 0.8b0
2123

opentelemetry-api/src/opentelemetry/configuration/__init__.py

+5-6
Original file line numberDiff line numberDiff line change
@@ -142,19 +142,18 @@ def __new__(cls) -> "Configuration":
142142
def __getattr__(self, name: str) -> Optional[ConfigValue]:
143143
return self._config_map.get(name)
144144

145-
def __setattr__(self, key: str, val: ConfigValue) -> None:
146-
if key == "_config_map":
147-
super().__setattr__(key, val)
145+
def __setattr__(self, name: str, value: ConfigValue) -> None:
146+
if name not in self._config_map.keys():
147+
self._config_map[name] = value
148148
else:
149-
raise AttributeError(key)
149+
raise AttributeError(name)
150150

151151
def get(self, name: str, default: _T) -> _T:
152152
"""Use this typed method for dynamic access instead of `getattr`
153153
154154
:rtype: str or bool or int or float or None
155155
"""
156-
val = self._config_map.get(name, default)
157-
return val
156+
return self._config_map.get(name, default)
158157

159158
@classmethod
160159
def _reset(cls) -> None:

opentelemetry-api/src/opentelemetry/metrics/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,10 @@ def get_meter(
460460
def set_meter_provider(meter_provider: MeterProvider) -> None:
461461
"""Sets the current global :class:`~.MeterProvider` object."""
462462
global _METER_PROVIDER # pylint: disable=global-statement
463+
464+
if _METER_PROVIDER is not None:
465+
logger.warning("Overriding current MeterProvider")
466+
463467
_METER_PROVIDER = meter_provider
464468

465469

opentelemetry-api/src/opentelemetry/trace/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,10 @@ def get_tracer(
463463
def set_tracer_provider(tracer_provider: TracerProvider) -> None:
464464
"""Sets the current global :class:`~.TracerProvider` object."""
465465
global _TRACER_PROVIDER # pylint: disable=global-statement
466+
467+
if _TRACER_PROVIDER is not None:
468+
logger.warning("Overriding current TracerProvider")
469+
466470
_TRACER_PROVIDER = tracer_provider
467471

468472

0 commit comments

Comments
 (0)