Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit bef7fbd

Browse files
authored
Polish before release (#30)
1 parent c277296 commit bef7fbd

4 files changed

Lines changed: 54 additions & 66 deletions

File tree

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ pip install opentelemetry-exporter-dynatrace-metrics
2323
The general setup of OpenTelemetry Python is explained in the official [Getting Started Guide](https://open-telemetry.github.io/opentelemetry-python/getting-started.html#add-metrics).
2424

2525
```python
26-
2726
# setup metrics export pipeline
2827
metrics.set_meter_provider(MeterProvider(
29-
# configure Exporter/MetricReader combination with a 5000ms export
30-
# interval, endpoint url and API token.
31-
metric_readers=[configure_dynatrace_metrics_export(
28+
# configure Exporter/MetricReader combination with a 5000ms export
29+
# interval, endpoint url and API token.
30+
metric_readers=[
31+
configure_dynatrace_metrics_export(
3232
export_interval_millis=5000,
3333
endpoint_url=endpoint_url,
3434
api_token=api_token)
35-
]))
35+
]))
3636

3737
# get a meter
3838
meter = metrics.get_meter(__name__)

src/dynatrace/opentelemetry/metrics/export/__init__.py

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,24 @@
1414

1515
from typing import Mapping, Optional
1616

17-
import opentelemetry.sdk.metrics as metrics
17+
from dynatrace.opentelemetry.metrics.export._exporter import (
18+
_DynatraceMetricsExporter,
19+
)
1820
from opentelemetry.sdk.metrics.export import (
19-
AggregationTemporality,
2021
PeriodicExportingMetricReader,
21-
MetricReader
22-
)
23-
24-
from dynatrace.opentelemetry.metrics.export._exporter import (
25-
_DynatraceMetricsExporter
22+
MetricReader,
2623
)
2724

28-
VERSION = "0.3.0-rc2"
29-
30-
_DYNATRACE_TEMPORALITY_PREFERENCE = {
31-
metrics.Counter: AggregationTemporality.DELTA,
32-
metrics.UpDownCounter: AggregationTemporality.CUMULATIVE,
33-
metrics.Histogram: AggregationTemporality.DELTA,
34-
metrics.ObservableCounter: AggregationTemporality.DELTA,
35-
metrics.ObservableUpDownCounter: AggregationTemporality.CUMULATIVE,
36-
metrics.ObservableGauge: AggregationTemporality.CUMULATIVE,
37-
}
25+
VERSION = "0.3.0"
3826

3927

4028
def configure_dynatrace_metrics_export(
41-
endpoint_url: Optional[str] = None,
42-
api_token: Optional[str] = None,
43-
prefix: Optional[str] = None,
44-
default_dimensions: Optional[Mapping[str, str]] = None,
45-
export_dynatrace_metadata: Optional[bool] = False,
46-
export_interval_millis: Optional[float] = None
29+
endpoint_url: Optional[str] = None,
30+
api_token: Optional[str] = None,
31+
prefix: Optional[str] = None,
32+
default_dimensions: Optional[Mapping[str, str]] = None,
33+
export_dynatrace_metadata: Optional[bool] = False,
34+
export_interval_millis: Optional[float] = None
4735
) -> MetricReader:
4836
"""
4937
Configures and creates a PeriodicExportingMetricReader and
@@ -91,6 +79,5 @@ def configure_dynatrace_metrics_export(
9179
prefix=prefix,
9280
default_dimensions=default_dimensions,
9381
export_dynatrace_metadata=export_dynatrace_metadata,
94-
preferred_temporality=_DYNATRACE_TEMPORALITY_PREFERENCE,
9582
)
9683
)

src/dynatrace/opentelemetry/metrics/export/_exporter.py

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,36 @@
1313
# limitations under the License.
1414

1515
import logging
16-
from typing import Mapping, Optional, Dict
16+
from typing import Mapping, Optional
1717

1818
import requests
1919
from dynatrace.metric.utils import (
2020
DynatraceMetricsSerializer,
21-
MetricError, DynatraceMetricsApiConstants
21+
MetricError,
22+
DynatraceMetricsApiConstants,
23+
)
24+
from dynatrace.opentelemetry.metrics.export._factory import (
25+
_OTelDynatraceMetricsFactory,
2226
)
2327
from opentelemetry.sdk.metrics.export import (
2428
MetricExporter,
2529
MetricExportResult,
26-
MetricsData
30+
MetricsData,
2731
)
28-
from opentelemetry.sdk.metrics._internal.aggregation import (
32+
33+
import opentelemetry.sdk.metrics as metrics
34+
from opentelemetry.sdk.metrics.export import (
2935
AggregationTemporality,
3036
)
31-
from opentelemetry.sdk.metrics.view import Aggregation
3237

33-
from dynatrace.opentelemetry.metrics.export._factory import (
34-
_OTelDynatraceMetricsFactory
35-
)
38+
_DYNATRACE_TEMPORALITY_PREFERENCE = {
39+
metrics.Counter: AggregationTemporality.DELTA,
40+
metrics.UpDownCounter: AggregationTemporality.CUMULATIVE,
41+
metrics.Histogram: AggregationTemporality.DELTA,
42+
metrics.ObservableCounter: AggregationTemporality.DELTA,
43+
metrics.ObservableUpDownCounter: AggregationTemporality.CUMULATIVE,
44+
metrics.ObservableGauge: AggregationTemporality.CUMULATIVE,
45+
}
3646

3747

3848
class _DynatraceMetricsExporter(MetricExporter):
@@ -45,19 +55,17 @@ class _DynatraceMetricsExporter(MetricExporter):
4555
"""
4656

4757
def __init__(
48-
self,
49-
endpoint_url: Optional[str] = None,
50-
api_token: Optional[str] = None,
51-
prefix: Optional[str] = None,
52-
default_dimensions: Optional[Mapping[str, str]] = None,
53-
export_dynatrace_metadata: Optional[bool] = False,
54-
preferred_temporality: Dict[type, AggregationTemporality] = None,
55-
preferred_aggregation: Dict[
56-
type, Aggregation
57-
] = None,
58+
self,
59+
endpoint_url: Optional[str] = None,
60+
api_token: Optional[str] = None,
61+
prefix: Optional[str] = None,
62+
default_dimensions: Optional[Mapping[str, str]] = None,
63+
export_dynatrace_metadata: Optional[bool] = False,
5864
):
59-
super().__init__(preferred_temporality=preferred_temporality,
60-
preferred_aggregation=preferred_aggregation)
65+
super().__init__(
66+
preferred_temporality=_DYNATRACE_TEMPORALITY_PREFERENCE,
67+
preferred_aggregation=None
68+
)
6169
self.__logger = logging.getLogger(__name__)
6270

6371
if endpoint_url:

test/test_exporter.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,20 @@
1111
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
14+
1415
import math
1516
import re
1617
import unittest
17-
from unittest import mock
18-
19-
import requests
20-
2118
from typing import Sequence, Union
19+
from unittest import mock
2220
from unittest.mock import patch
2321

22+
import requests
23+
from dynatrace.opentelemetry.metrics.export import (
24+
_DynatraceMetricsExporter,
25+
configure_dynatrace_metrics_export,
26+
)
2427
from opentelemetry.sdk.metrics import MeterProvider
25-
from opentelemetry.sdk.metrics.view import View
2628
from opentelemetry.sdk.metrics.export import (
2729
Metric,
2830
MetricExportResult,
@@ -35,18 +37,13 @@
3537
DataT,
3638
ResourceMetrics,
3739
ScopeMetrics,
38-
HistogramDataPoint
40+
HistogramDataPoint,
3941
)
42+
from opentelemetry.sdk.metrics.view import View
4043
from opentelemetry.sdk.resources import Resource
4144
from opentelemetry.sdk.util.instrumentation import InstrumentationScope
4245
from parameterized import parameterized
4346

44-
from dynatrace.opentelemetry.metrics.export import (
45-
_DynatraceMetricsExporter,
46-
_DYNATRACE_TEMPORALITY_PREFERENCE,
47-
configure_dynatrace_metrics_export
48-
)
49-
5047

5148
class AnyStringMatching(str):
5249
def __eq__(self, other):
@@ -490,9 +487,7 @@ def test_multiple_records(self, mock_post):
490487
def test_view(self, mock_post):
491488
mock_post.return_value = self._get_session_response()
492489

493-
exporter = _DynatraceMetricsExporter(
494-
preferred_temporality=_DYNATRACE_TEMPORALITY_PREFERENCE,
495-
)
490+
exporter = _DynatraceMetricsExporter()
496491

497492
metric_reader = PeriodicExportingMetricReader(
498493
export_interval_millis=3600000,
@@ -536,7 +531,6 @@ def test_configuration_default(self):
536531
prefix=None,
537532
default_dimensions=None,
538533
export_dynatrace_metadata=False,
539-
preferred_temporality=_DYNATRACE_TEMPORALITY_PREFERENCE,
540534
)
541535
mock_reader.assert_called_once_with(
542536
export_interval_millis=None,
@@ -568,7 +562,6 @@ def test_configuration_custom(self):
568562
prefix="otel.python.test",
569563
default_dimensions={"defaultKey": "defaultValue"},
570564
export_dynatrace_metadata=True,
571-
preferred_temporality=_DYNATRACE_TEMPORALITY_PREFERENCE,
572565
)
573566
mock_reader.assert_called_once_with(
574567
export_interval_millis=100,

0 commit comments

Comments
 (0)