Skip to content

Commit 3115481

Browse files
jeremydvosspvaneck
andauthored
Distro Release 1.6.4: Fix instrumentation migration bug. (Azure#38371)
* Distro release 1.6.4 * Fixed bug * Update broken docs links * Update sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md Co-authored-by: Paul Van Eck <[email protected]> * Update sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md Co-authored-by: Paul Van Eck <[email protected]> * Update all otel dependencies * Updated tests * lint --------- Co-authored-by: Paul Van Eck <[email protected]>
1 parent 5df5807 commit 3115481

File tree

6 files changed

+56
-35
lines changed

6 files changed

+56
-35
lines changed

sdk/monitor/azure-monitor-opentelemetry-exporter/README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -683,26 +683,26 @@ contact [[email protected]](mailto:[email protected]) with any additio
683683
[opentelemetry_spec]: https://opentelemetry.io/
684684
[instrumentation_library]: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#instrumentation-libraries
685685
[log_concept]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/overview.md#log-signal
686-
[log_record]: https://opentelemetry-python.readthedocs.io/en/stable/sdk/_logs.html#opentelemetry.sdk._logs.LogRecord
687-
[logger]: https://opentelemetry-python.readthedocs.io/en/stable/sdk/_logs.html#opentelemetry.sdk._logs.Logger
688-
[logger_provider]: https://opentelemetry-python.readthedocs.io/en/stable/sdk/_logs.html#opentelemetry.sdk._logs.LoggerProvider
689-
[log_record_processor]: https://opentelemetry-python.readthedocs.io/en/stable/sdk/_logs.html#opentelemetry.sdk._logs.LogRecordProcessor
690-
[logging_handler]: https://opentelemetry-python.readthedocs.io/en/stable/sdk/_logs.html#opentelemetry.sdk._logs.LoggingHandler
686+
[log_record]: https://opentelemetry-python.readthedocs.io/en/latest/sdk/_logs.html#opentelemetry.sdk._logs.LogRecord
687+
[logger]: https://opentelemetry-python.readthedocs.io/en/latest/sdk/_logs.html#opentelemetry.sdk._logs.Logger
688+
[logger_provider]: https://opentelemetry-python.readthedocs.io/en/latest/sdk/_logs.html#opentelemetry.sdk._logs.LoggerProvider
689+
[log_record_processor]: https://opentelemetry-python.readthedocs.io/en/latest/sdk/_logs.html#opentelemetry.sdk._logs.LogRecordProcessor
690+
[logging_handler]: https://opentelemetry-python.readthedocs.io/en/latest/sdk/_logs.html#opentelemetry.sdk._logs.LoggingHandler
691691
[log_reference]: https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/logs/_exporter.py
692-
[ot_logging_sdk]: https://opentelemetry-python.readthedocs.io/en/stable/sdk/_logs.html
692+
[ot_logging_sdk]: https://opentelemetry-python.readthedocs.io/en/latest/sdk/_logs.html
693693
[metric_concept]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/overview.md#metric-signal
694694
[measurement]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md#measurement
695695
[instrument]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md#instrument
696696
[meter]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md#meter
697697
[meter_provider]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md#meterprovider
698698
[metric_reader]:https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#metricreader
699699
[metric_reference]: https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/metrics/_exporter.py
700-
[ot_metrics_sdk]: https://opentelemetry-python.readthedocs.io/en/stable/sdk/metrics.html
700+
[ot_metrics_sdk]: https://opentelemetry-python.readthedocs.io/en/latest/sdk/metrics.html
701701
[trace_concept]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/overview.md#tracing-signal
702-
[span]: https://opentelemetry-python.readthedocs.io/en/stable/api/trace.html?highlight=TracerProvider#opentelemetry.trace.Span
703-
[tracer]: https://opentelemetry-python.readthedocs.io/en/stable/api/trace.html?highlight=TracerProvider#opentelemetry.trace.Tracer
704-
[tracer_provider]: https://opentelemetry-python.readthedocs.io/en/stable/api/trace.html?highlight=TracerProvider#opentelemetry.trace.TracerProvider
705-
[span_processor]: https://opentelemetry-python.readthedocs.io/en/stable/_modules/opentelemetry/sdk/trace.html?highlight=SpanProcessor#
702+
[span]: https://opentelemetry-python.readthedocs.io/en/latest/api/trace.html?highlight=TracerProvider#opentelemetry.trace.Span
703+
[tracer]: https://opentelemetry-python.readthedocs.io/en/latest/api/trace.html?highlight=TracerProvider#opentelemetry.trace.Tracer
704+
[tracer_provider]: https://opentelemetry-python.readthedocs.io/en/latest/api/trace.html?highlight=TracerProvider#opentelemetry.trace.TracerProvider
705+
[span_processor]: https://opentelemetry-python.readthedocs.io/en/latest/_modules/opentelemetry/sdk/trace.html?highlight=SpanProcessor#
706706
[trace_reference]: https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/trace/_exporter.py
707-
[ot_tracing_sdk]: https://opentelemetry-python.readthedocs.io/en/stable/sdk/trace.html
707+
[ot_tracing_sdk]: https://opentelemetry-python.readthedocs.io/en/latest/sdk/trace.html
708708
[sampler_ref]: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/sdk.md#sampling

sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
# Release History
22

3-
## 1.6.4 (Unreleased)
4-
5-
### Features Added
6-
7-
### Breaking Changes
3+
## 1.6.4 (2024-11-06)
84

95
### Bugs Fixed
106

11-
### Other Changes
7+
- Fixed bug caused by migration from pkg_resources to importlib-metadata
8+
([#38371](https://github.com/Azure/azure-sdk-for-python/pull/38371))
129

1310
## 1.6.3 (2024-11-04)
1411

sdk/monitor/azure-monitor-opentelemetry/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ contact [[email protected]](mailto:[email protected]) with any additio
223223
[ot_metric_reader]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#metricreader
224224
[ot_python_docs]: https://opentelemetry.io/docs/instrumentation/python/
225225
[ot_sdk_python]: https://github.com/open-telemetry/opentelemetry-python
226-
[ot_sdk_python_metric_reader]: https://opentelemetry-python.readthedocs.io/en/stable/sdk/metrics.export.html#opentelemetry.sdk.metrics.export.MetricReader
226+
[ot_sdk_python_metric_reader]: https://opentelemetry-python.readthedocs.io/en/latest/sdk/metrics.export.html#opentelemetry.sdk.metrics.export.MetricReader
227227
[ot_span_processor]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#span-processor
228228
[ot_view]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#view
229229
[ot_sdk_python_view_examples]: https://github.com/open-telemetry/opentelemetry-python/tree/main/docs/examples/metrics/views

sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_configure.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Licensed under the MIT License. See License in the project root for
44
# license information.
55
# --------------------------------------------------------------------------
6+
from functools import cached_property
67
from logging import getLogger
78
from typing import Dict, List, cast
89

@@ -23,7 +24,11 @@
2324
from opentelemetry.sdk.trace import TracerProvider
2425
from opentelemetry.sdk.trace.export import BatchSpanProcessor
2526
from opentelemetry.trace import set_tracer_provider
26-
from pkg_resources import iter_entry_points # type: ignore
27+
from opentelemetry.util._importlib_metadata import (
28+
EntryPoint,
29+
distributions,
30+
entry_points,
31+
)
2732

2833
from azure.core.settings import settings
2934
from azure.core.tracing.ext.opentelemetry_span import OpenTelemetrySpan
@@ -185,9 +190,27 @@ def _setup_live_metrics(configurations):
185190
enable_live_metrics(**configurations)
186191

187192

193+
class _EntryPointDistFinder:
194+
@cached_property
195+
def _mapping(self):
196+
return {self._key_for(ep): dist for dist in distributions() for ep in dist.entry_points}
197+
198+
def dist_for(self, entry_point: EntryPoint):
199+
dist = getattr(entry_point, "dist", None)
200+
if dist:
201+
return dist
202+
203+
return self._mapping.get(self._key_for(entry_point))
204+
205+
@staticmethod
206+
def _key_for(entry_point: EntryPoint):
207+
return f"{entry_point.group}:{entry_point.name}:{entry_point.value}"
208+
209+
188210
def _setup_instrumentations(configurations: Dict[str, ConfigurationValue]):
211+
entry_point_finder = _EntryPointDistFinder()
189212
# use pkg_resources for now until https://github.com/open-telemetry/opentelemetry-python/pull/3168 is merged
190-
for entry_point in iter_entry_points("opentelemetry_instrumentor"):
213+
for entry_point in entry_points(group="opentelemetry_instrumentor"):
191214
lib_name = entry_point.name
192215
if lib_name not in _ALL_SUPPORTED_INSTRUMENTED_LIBRARIES:
193216
continue
@@ -196,7 +219,8 @@ def _setup_instrumentations(configurations: Dict[str, ConfigurationValue]):
196219
continue
197220
try:
198221
# Check if dependent libraries/version are installed
199-
conflict = get_dist_dependency_conflicts(entry_point.dist) # type: ignore
222+
entry_point_dist = entry_point_finder.dist_for(entry_point) # type: ignore
223+
conflict = get_dist_dependency_conflicts(entry_point_dist) # type: ignore
200224
if conflict:
201225
_logger.debug(
202226
"Skipping instrumentation %s: %s",

sdk/monitor/azure-monitor-opentelemetry/setup.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,15 @@
8484
"azure-core<2.0.0,>=1.28.0",
8585
"azure-core-tracing-opentelemetry~=1.0.0b11",
8686
"azure-monitor-opentelemetry-exporter~=1.0.0b31",
87-
"opentelemetry-instrumentation-django~=0.48b0",
88-
"opentelemetry-instrumentation-fastapi~=0.48b0",
89-
"opentelemetry-instrumentation-flask~=0.48b0",
90-
"opentelemetry-instrumentation-psycopg2~=0.48b0",
91-
"opentelemetry-instrumentation-requests~=0.48b0",
92-
"opentelemetry-instrumentation-urllib~=0.48b0",
93-
"opentelemetry-instrumentation-urllib3~=0.48b0",
87+
"opentelemetry-instrumentation-django~=0.49b0",
88+
"opentelemetry-instrumentation-fastapi~=0.49b0",
89+
"opentelemetry-instrumentation-flask~=0.49b0",
90+
"opentelemetry-instrumentation-psycopg2~=0.49b0",
91+
"opentelemetry-instrumentation-requests~=0.49b0",
92+
"opentelemetry-instrumentation-urllib~=0.49b0",
93+
"opentelemetry-instrumentation-urllib3~=0.49b0",
9494
"opentelemetry-resource-detector-azure~=0.1.4",
95-
"opentelemetry-sdk~=1.27",
95+
"opentelemetry-sdk~=1.28",
9696
],
9797
entry_points={
9898
"opentelemetry_distro": [

sdk/monitor/azure-monitor-opentelemetry/tests/test_configure.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ def test_setup_live_metrics(
463463
@patch("azure.monitor.opentelemetry._configure._ALL_SUPPORTED_INSTRUMENTED_LIBRARIES", ("test_instr2"))
464464
@patch("azure.monitor.opentelemetry._configure._is_instrumentation_enabled")
465465
@patch("azure.monitor.opentelemetry._configure.get_dist_dependency_conflicts")
466-
@patch("azure.monitor.opentelemetry._configure.iter_entry_points")
466+
@patch("azure.monitor.opentelemetry._configure.entry_points")
467467
def test_setup_instrumentations_lib_not_supported(
468468
self,
469469
iter_mock,
@@ -490,7 +490,7 @@ def test_setup_instrumentations_lib_not_supported(
490490
@patch("azure.monitor.opentelemetry._configure._setup_additional_azure_sdk_instrumentations")
491491
@patch("azure.monitor.opentelemetry._configure._ALL_SUPPORTED_INSTRUMENTED_LIBRARIES", ("azure_sdk"))
492492
@patch("azure.monitor.opentelemetry._configure._is_instrumentation_enabled")
493-
@patch("azure.monitor.opentelemetry._configure.iter_entry_points")
493+
@patch("azure.monitor.opentelemetry._configure.entry_points")
494494
def test_setup_instrumentations_additional_azure(
495495
self,
496496
iter_mock,
@@ -509,7 +509,7 @@ def test_setup_instrumentations_additional_azure(
509509
@patch("azure.monitor.opentelemetry._configure._is_instrumentation_enabled")
510510
@patch("azure.monitor.opentelemetry._configure._logger")
511511
@patch("azure.monitor.opentelemetry._configure.get_dist_dependency_conflicts")
512-
@patch("azure.monitor.opentelemetry._configure.iter_entry_points")
512+
@patch("azure.monitor.opentelemetry._configure.entry_points")
513513
def test_setup_instrumentations_conflict(
514514
self,
515515
iter_mock,
@@ -536,7 +536,7 @@ def test_setup_instrumentations_conflict(
536536
@patch("azure.monitor.opentelemetry._configure._is_instrumentation_enabled")
537537
@patch("azure.monitor.opentelemetry._configure._logger")
538538
@patch("azure.monitor.opentelemetry._configure.get_dist_dependency_conflicts")
539-
@patch("azure.monitor.opentelemetry._configure.iter_entry_points")
539+
@patch("azure.monitor.opentelemetry._configure.entry_points")
540540
def test_setup_instrumentations_exception(
541541
self,
542542
iter_mock,
@@ -565,7 +565,7 @@ def test_setup_instrumentations_exception(
565565
@patch("azure.monitor.opentelemetry._configure._is_instrumentation_enabled")
566566
@patch("azure.monitor.opentelemetry._configure._logger")
567567
@patch("azure.monitor.opentelemetry._configure.get_dist_dependency_conflicts")
568-
@patch("azure.monitor.opentelemetry._configure.iter_entry_points")
568+
@patch("azure.monitor.opentelemetry._configure.entry_points")
569569
def test_setup_instrumentations_disabled(
570570
self,
571571
iter_mock,

0 commit comments

Comments
 (0)