From 6dde48c77738070e1f8ec3b6afdad3158677821d Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Tue, 4 Feb 2025 21:14:31 +0000 Subject: [PATCH 01/15] Add space to logging exporter README. Make minor update to releasing.md. --- docs/releasing.md | 13 ++----------- opentelemetry-exporter-gcp-logging/README.rst | 1 + 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/docs/releasing.md b/docs/releasing.md index aa6a9f46..7d4bda63 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -89,17 +89,8 @@ with: **pointing at the first commit (a)** that was merged into main. For the example PR listed above, that creates release [`v0.11b0@4ad9ccd`](https://github.com/GoogleCloudPlatform/opentelemetry-operations-python/releases/tag/v0.11b0). -- In description, paste a changelog for the packages. I used this (probably -buggy) small script for the example PR's tag: - - ```bash - for cl in opentelemetry-*/CHANGELOG.md; do - if cl_entries=`pcregrep -M -o1 "^## Version 0\.10b0$\n\n^Released.*\n\n((?:- [\s\S]+?)*?)(?=(\s+##|\Z))" $cl` - then - echo -e "# `dirname $cl`\n$cl_entries" - fi - done - ``` + +Click the "Generate release notes" button in the UI to get an autogenerated changelog for the packages. Once the release tag is created, move the `stable` tag to point to the same commit. diff --git a/opentelemetry-exporter-gcp-logging/README.rst b/opentelemetry-exporter-gcp-logging/README.rst index 9fa6a4d9..89fa70be 100644 --- a/opentelemetry-exporter-gcp-logging/README.rst +++ b/opentelemetry-exporter-gcp-logging/README.rst @@ -35,6 +35,7 @@ Usage ----- .. code:: python + import logging from opentelemetry.exporter.cloud_logging import ( CloudLoggingExporter, From 5ddc159217ef1cae16f074eae7b4ab7d0b953085 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Wed, 4 Jun 2025 13:25:42 +0000 Subject: [PATCH 02/15] Fix byes in LogRecord bug --- .../opentelemetry/exporter/cloud_logging/__init__.py | 10 +++++++++- .../test_convert_otlp_dict_body.json | 1 + .../tests/test_cloud_logging.py | 3 ++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py index d1094f7c..d8bb4317 100644 --- a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py +++ b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py @@ -117,10 +117,18 @@ def _convert_any_value_to_string(value: Any) -> str: return "" +def _convert_bytes_to_b64(body: Mapping) -> Mapping: + for key, value in list(body.items()): + if isinstance(value, bytes): + body[key] = base64.b64encode(value).decode() + elif isinstance(value, Mapping): + body[key] = _convert_bytes_to_b64(value) + return body + def _set_payload_in_log_entry(log_entry: LogEntry, body: Any | None): struct = Struct() if isinstance(body, Mapping): - struct.update(body) + struct.update(_convert_bytes_to_b64(body)) log_entry.json_payload = struct elif isinstance(body, bytes): json_str = body.decode("utf-8", errors="replace") diff --git a/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json b/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json index 30a9ac22..f6727999 100644 --- a/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json +++ b/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json @@ -4,6 +4,7 @@ { "jsonPayload": { "kvlistValue": { + "bytes_field": "Ynl0ZXM=", "values": [ { "key": "content", diff --git a/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py b/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py index da1012e4..7c368a22 100644 --- a/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py +++ b/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py @@ -92,7 +92,8 @@ def test_convert_otlp_dict_body( "stringValue": "You're a helpful assistant." }, } - ] + ], + "bytes_field": b'bytes' } }, ), From c8edae9801aa73b4c4843cb578dfb67b37207f01 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Wed, 4 Jun 2025 13:30:00 +0000 Subject: [PATCH 03/15] Run linter --- .../src/opentelemetry/exporter/cloud_logging/__init__.py | 1 + opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py index d8bb4317..e79b39f7 100644 --- a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py +++ b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py @@ -125,6 +125,7 @@ def _convert_bytes_to_b64(body: Mapping) -> Mapping: body[key] = _convert_bytes_to_b64(value) return body + def _set_payload_in_log_entry(log_entry: LogEntry, body: Any | None): struct = Struct() if isinstance(body, Mapping): diff --git a/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py b/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py index 7c368a22..85fb592d 100644 --- a/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py +++ b/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py @@ -93,7 +93,7 @@ def test_convert_otlp_dict_body( }, } ], - "bytes_field": b'bytes' + "bytes_field": b"bytes", } }, ), From a48396793a34f72bbc24c195717e07073f68816b Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Wed, 4 Jun 2025 13:37:02 +0000 Subject: [PATCH 04/15] fix pulint --- .../src/opentelemetry/exporter/cloud_logging/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py index e79b39f7..08dee755 100644 --- a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py +++ b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py @@ -18,7 +18,7 @@ import json import logging import urllib.parse -from typing import Any, Mapping, Optional, Sequence +from typing import Any, Mapping, MutableMapping, Optional, Sequence import google.auth from google.api.monitored_resource_pb2 import ( # pylint: disable = no-name-in-module @@ -117,18 +117,18 @@ def _convert_any_value_to_string(value: Any) -> str: return "" -def _convert_bytes_to_b64(body: Mapping) -> Mapping: +def _convert_bytes_to_b64(body: MutableMapping) -> MutableMapping: for key, value in list(body.items()): if isinstance(value, bytes): body[key] = base64.b64encode(value).decode() - elif isinstance(value, Mapping): + elif isinstance(value, MutableMapping): body[key] = _convert_bytes_to_b64(value) return body def _set_payload_in_log_entry(log_entry: LogEntry, body: Any | None): struct = Struct() - if isinstance(body, Mapping): + if isinstance(body, MutableMapping): struct.update(_convert_bytes_to_b64(body)) log_entry.json_payload = struct elif isinstance(body, bytes): From b037b800c6807aea8084955b4e8219e9c2f9ac9d Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Wed, 4 Jun 2025 20:40:52 +0000 Subject: [PATCH 05/15] Respond to comments --- .../exporter/cloud_logging/__init__.py | 24 +++++++++++++------ .../test_convert_otlp_dict_body.json | 5 ++++ .../tests/test_cloud_logging.py | 1 + 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py index 08dee755..95c5fbe8 100644 --- a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py +++ b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py @@ -117,19 +117,29 @@ def _convert_any_value_to_string(value: Any) -> str: return "" -def _convert_bytes_to_b64(body: MutableMapping) -> MutableMapping: +def _convert_bytes_to_b64(body: Mapping, new_body: dict) -> dict: for key, value in list(body.items()): - if isinstance(value, bytes): - body[key] = base64.b64encode(value).decode() + if ( + isinstance(value, Sequence) + and len(value) > 0 + and isinstance(value[0], bytes) + ): + new_body[key] = [base64.b64encode(v).decode() for v in value] + elif isinstance(value, bytes): + new_body[key] = base64.b64encode(value).decode() elif isinstance(value, MutableMapping): - body[key] = _convert_bytes_to_b64(value) - return body + new_subbody = {} + new_body[key] = _convert_bytes_to_b64(value, new_subbody) + else: + new_body[key] = value + return new_body def _set_payload_in_log_entry(log_entry: LogEntry, body: Any | None): struct = Struct() - if isinstance(body, MutableMapping): - struct.update(_convert_bytes_to_b64(body)) + if isinstance(body, Mapping): + new_body = {} + struct.update(_convert_bytes_to_b64(body, new_body)) log_entry.json_payload = struct elif isinstance(body, bytes): json_str = body.decode("utf-8", errors="replace") diff --git a/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json b/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json index f6727999..9a61a846 100644 --- a/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json +++ b/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json @@ -5,6 +5,11 @@ "jsonPayload": { "kvlistValue": { "bytes_field": "Ynl0ZXM=", + "repeated_bytes_field": [ + "Ynl0ZXM=", + "Ynl0ZXM=", + "Ynl0ZXM=" + ], "values": [ { "key": "content", diff --git a/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py b/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py index 85fb592d..d8480dad 100644 --- a/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py +++ b/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py @@ -94,6 +94,7 @@ def test_convert_otlp_dict_body( } ], "bytes_field": b"bytes", + "repeated_bytes_field": [b"bytes", b"bytes", b"bytes"], } }, ), From 2da59b80f86b712f770516e2d78219aebd4221c7 Mon Sep 17 00:00:00 2001 From: DylanRussell Date: Thu, 5 Jun 2025 12:42:30 +0000 Subject: [PATCH 06/15] Update opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py Co-authored-by: Aaron Abbott --- .../src/opentelemetry/exporter/cloud_logging/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py index 95c5fbe8..c0076c20 100644 --- a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py +++ b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py @@ -135,7 +135,7 @@ def _convert_bytes_to_b64(body: Mapping, new_body: dict) -> dict: return new_body -def _set_payload_in_log_entry(log_entry: LogEntry, body: Any | None): +def _set_payload_in_log_entry(log_entry: LogEntry, body: AnyValue): struct = Struct() if isinstance(body, Mapping): new_body = {} From a65eaf24801ef50044cfe1ee06acf3a859a2f78d Mon Sep 17 00:00:00 2001 From: DylanRussell Date: Thu, 5 Jun 2025 12:42:43 +0000 Subject: [PATCH 07/15] Update opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py Co-authored-by: Aaron Abbott --- .../src/opentelemetry/exporter/cloud_logging/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py index c0076c20..9fa5bff1 100644 --- a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py +++ b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py @@ -118,7 +118,7 @@ def _convert_any_value_to_string(value: Any) -> str: def _convert_bytes_to_b64(body: Mapping, new_body: dict) -> dict: - for key, value in list(body.items()): + for key, value in body.items(): if ( isinstance(value, Sequence) and len(value) > 0 From 8618228292be3258252851e1fc442e89af59b382 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 5 Jun 2025 13:40:03 +0000 Subject: [PATCH 08/15] Address comments --- dev-constraints.txt | 4 ++-- opentelemetry-exporter-gcp-logging/setup.cfg | 1 + .../exporter/cloud_logging/__init__.py | 23 +++++++++++++------ tox.ini | 4 +++- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/dev-constraints.txt b/dev-constraints.txt index 3d445f3a..bdbb6771 100644 --- a/dev-constraints.txt +++ b/dev-constraints.txt @@ -17,5 +17,5 @@ setuptools==69.5.1 # pinned for snapshot tests. this should be bumped regularly and snapshots updated by running # tox -f py311-test -- --snapshot-update -opentelemetry-api==1.20.0 -opentelemetry-sdk==1.20.0 +opentelemetry-api==1.30.0 +opentelemetry-sdk==1.30.0 diff --git a/opentelemetry-exporter-gcp-logging/setup.cfg b/opentelemetry-exporter-gcp-logging/setup.cfg index ff52b876..39d54963 100644 --- a/opentelemetry-exporter-gcp-logging/setup.cfg +++ b/opentelemetry-exporter-gcp-logging/setup.cfg @@ -29,6 +29,7 @@ packages=find_namespace: install_requires = google-cloud-logging ~= 3.0 opentelemetry-sdk ~= 1.0 + opentelemetry-api ~= 1.2 opentelemetry-resourcedetector-gcp >= 1.5.0dev0, == 1.* [options.packages.find] diff --git a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py index 9fa5bff1..e8349805 100644 --- a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py +++ b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py @@ -50,6 +50,7 @@ from opentelemetry.sdk._logs.export import LogExporter from opentelemetry.sdk.resources import Resource from opentelemetry.trace import format_span_id, format_trace_id +from opentelemetry.util.types import AnyValue DEFAULT_MAX_ENTRY_SIZE = 256000 # 256 KB DEFAULT_MAX_REQUEST_SIZE = 10000000 # 10 MB @@ -117,19 +118,28 @@ def _convert_any_value_to_string(value: Any) -> str: return "" -def _convert_bytes_to_b64(body: Mapping, new_body: dict) -> dict: +# Be careful not to mutate original body. Make copies of anything that needs to change. +def _sanitized_body( + body: Mapping[str, AnyValue] +) -> MutableMapping[str, AnyValue]: + new_body: MutableMapping[str, AnyValue] = {} for key, value in body.items(): if ( isinstance(value, Sequence) and len(value) > 0 and isinstance(value[0], bytes) ): - new_body[key] = [base64.b64encode(v).decode() for v in value] + # Should not be possible for a non-bytes value to be present. AnyValue requires Sequence be of one type, and above + # we verified the first value is type bytes. + new_body[key] = [ + base64.b64encode(v).decode() + for v in value + if isinstance(v, bytes) + ] elif isinstance(value, bytes): new_body[key] = base64.b64encode(value).decode() - elif isinstance(value, MutableMapping): - new_subbody = {} - new_body[key] = _convert_bytes_to_b64(value, new_subbody) + elif isinstance(value, Mapping): + new_body[key] = _sanitized_body(value) else: new_body[key] = value return new_body @@ -138,8 +148,7 @@ def _convert_bytes_to_b64(body: Mapping, new_body: dict) -> dict: def _set_payload_in_log_entry(log_entry: LogEntry, body: AnyValue): struct = Struct() if isinstance(body, Mapping): - new_body = {} - struct.update(_convert_bytes_to_b64(body, new_body)) + struct.update(_sanitized_body(body)) log_entry.json_payload = struct elif isinstance(body, bytes): json_str = body.decode("utf-8", errors="replace") diff --git a/tox.ini b/tox.ini index e5192ce6..ef456faf 100644 --- a/tox.ini +++ b/tox.ini @@ -75,7 +75,9 @@ changedir = {env:PACKAGE_NAME} commands_pre = {toxinidir}/get_mock_server.sh {envbindir} -commands = pytest --junitxml={[constants]test_results_dir}/{envname}/junit.xml {posargs} +commands = + pip freeze + pytest --junitxml={[constants]test_results_dir}/{envname}/junit.xml {posargs} allowlist_externals = bash From bc83e4ae8bdf2a5b0f76c2272ef3154f9535bc6f Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 5 Jun 2025 13:41:55 +0000 Subject: [PATCH 09/15] Update constraints --- opentelemetry-exporter-gcp-logging/setup.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opentelemetry-exporter-gcp-logging/setup.cfg b/opentelemetry-exporter-gcp-logging/setup.cfg index 39d54963..00f39baa 100644 --- a/opentelemetry-exporter-gcp-logging/setup.cfg +++ b/opentelemetry-exporter-gcp-logging/setup.cfg @@ -28,8 +28,8 @@ package_dir= packages=find_namespace: install_requires = google-cloud-logging ~= 3.0 - opentelemetry-sdk ~= 1.0 - opentelemetry-api ~= 1.2 + opentelemetry-sdk ~= 1.3 + opentelemetry-api ~= 1.3 opentelemetry-resourcedetector-gcp >= 1.5.0dev0, == 1.* [options.packages.find] From a0f95e4bbf1571e78acc276ffaf27d8a71ab1fab Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 5 Jun 2025 13:49:55 +0000 Subject: [PATCH 10/15] Fix constraints --- opentelemetry-exporter-gcp-logging/setup.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opentelemetry-exporter-gcp-logging/setup.cfg b/opentelemetry-exporter-gcp-logging/setup.cfg index 00f39baa..4d08f458 100644 --- a/opentelemetry-exporter-gcp-logging/setup.cfg +++ b/opentelemetry-exporter-gcp-logging/setup.cfg @@ -28,8 +28,8 @@ package_dir= packages=find_namespace: install_requires = google-cloud-logging ~= 3.0 - opentelemetry-sdk ~= 1.3 - opentelemetry-api ~= 1.3 + opentelemetry-sdk ~= 1.30 + opentelemetry-api ~= 1.30 opentelemetry-resourcedetector-gcp >= 1.5.0dev0, == 1.* [options.packages.find] From 2ef718d88a1186c640a8319d618353a607ee3a39 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 5 Jun 2025 19:57:25 +0000 Subject: [PATCH 11/15] FIx lint issues in cloud monitoring exporter and add changelog entry --- opentelemetry-exporter-gcp-logging/CHANGELOG.md | 3 +++ .../exporter/cloud_monitoring/__init__.py | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/opentelemetry-exporter-gcp-logging/CHANGELOG.md b/opentelemetry-exporter-gcp-logging/CHANGELOG.md index 96269459..62d17618 100644 --- a/opentelemetry-exporter-gcp-logging/CHANGELOG.md +++ b/opentelemetry-exporter-gcp-logging/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +Added support for when `bytes` or `list['bytes']` is in `LogRecord.body` and +body is of type Mapping. + ## Version 1.9.0a0 Released 2025-02-03 diff --git a/opentelemetry-exporter-gcp-monitoring/src/opentelemetry/exporter/cloud_monitoring/__init__.py b/opentelemetry-exporter-gcp-monitoring/src/opentelemetry/exporter/cloud_monitoring/__init__.py index a98aab35..d3844644 100644 --- a/opentelemetry-exporter-gcp-monitoring/src/opentelemetry/exporter/cloud_monitoring/__init__.py +++ b/opentelemetry-exporter-gcp-monitoring/src/opentelemetry/exporter/cloud_monitoring/__init__.py @@ -55,6 +55,8 @@ ) from opentelemetry.sdk import version as opentelemetry_sdk_version from opentelemetry.sdk.metrics.export import ( + ExponentialHistogram, + ExponentialHistogramDataPoint, Gauge, Histogram, HistogramDataPoint, @@ -209,6 +211,12 @@ def _get_metric_descriptor( descriptor.metric_kind = MetricDescriptor.MetricKind.GAUGE elif isinstance(data, Histogram): descriptor.metric_kind = MetricDescriptor.MetricKind.CUMULATIVE + elif isinstance(data, ExponentialHistogram): + logger.warning( + "Unsupported metric data type %s, ignoring it", + type(data).__name__, + ) + return None else: # Exhaustive check _: NoReturn = data @@ -342,6 +350,10 @@ def export( continue for data_point in metric.data.data_points: + if isinstance( + data_point, ExponentialHistogramDataPoint + ): + continue labels = { _normalize_label_key(key): str(value) for key, value in ( From 55baba7723c85614fb05ef8a46dfabef5e6e38bf Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 5 Jun 2025 20:05:48 +0000 Subject: [PATCH 12/15] Bump api/sdk versions to 1.3 --- opentelemetry-exporter-gcp-logging/CHANGELOG.md | 2 +- opentelemetry-exporter-gcp-monitoring/CHANGELOG.md | 2 ++ opentelemetry-exporter-gcp-monitoring/setup.cfg | 4 ++-- opentelemetry-exporter-gcp-trace/CHANGELOG.md | 2 ++ opentelemetry-exporter-gcp-trace/setup.cfg | 4 ++-- opentelemetry-propagator-gcp/CHANGELOG.md | 2 ++ opentelemetry-resourcedetector-gcp/CHANGELOG.md | 2 ++ opentelemetry-resourcedetector-gcp/setup.cfg | 4 ++-- 8 files changed, 15 insertions(+), 7 deletions(-) diff --git a/opentelemetry-exporter-gcp-logging/CHANGELOG.md b/opentelemetry-exporter-gcp-logging/CHANGELOG.md index 62d17618..50d275c2 100644 --- a/opentelemetry-exporter-gcp-logging/CHANGELOG.md +++ b/opentelemetry-exporter-gcp-logging/CHANGELOG.md @@ -3,7 +3,7 @@ ## Unreleased Added support for when `bytes` or `list['bytes']` is in `LogRecord.body` and -body is of type Mapping. +body is of type Mapping. Update opentelemetry-api/sdk dependencies to 1.3. ## Version 1.9.0a0 diff --git a/opentelemetry-exporter-gcp-monitoring/CHANGELOG.md b/opentelemetry-exporter-gcp-monitoring/CHANGELOG.md index 5c44a87b..3ae6ce7d 100644 --- a/opentelemetry-exporter-gcp-monitoring/CHANGELOG.md +++ b/opentelemetry-exporter-gcp-monitoring/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +Update opentelemetry-api/sdk dependencies to 1.3. + ## Version 1.9.0a0 Released 2025-02-03 diff --git a/opentelemetry-exporter-gcp-monitoring/setup.cfg b/opentelemetry-exporter-gcp-monitoring/setup.cfg index a21e4380..b3b90d79 100644 --- a/opentelemetry-exporter-gcp-monitoring/setup.cfg +++ b/opentelemetry-exporter-gcp-monitoring/setup.cfg @@ -29,8 +29,8 @@ package_dir= packages=find_namespace: install_requires = google-cloud-monitoring ~= 2.0 - opentelemetry-api ~= 1.0 - opentelemetry-sdk ~= 1.0 + opentelemetry-api ~= 1.30 + opentelemetry-sdk ~= 1.30 opentelemetry-resourcedetector-gcp >= 1.5.0dev0, == 1.* [options.packages.find] diff --git a/opentelemetry-exporter-gcp-trace/CHANGELOG.md b/opentelemetry-exporter-gcp-trace/CHANGELOG.md index f3425ea5..6f3785c8 100644 --- a/opentelemetry-exporter-gcp-trace/CHANGELOG.md +++ b/opentelemetry-exporter-gcp-trace/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +Update opentelemetry-api/sdk dependencies to 1.3. + ## Version 1.9.0 Released 2025-02-03 diff --git a/opentelemetry-exporter-gcp-trace/setup.cfg b/opentelemetry-exporter-gcp-trace/setup.cfg index b898e154..52db406b 100644 --- a/opentelemetry-exporter-gcp-trace/setup.cfg +++ b/opentelemetry-exporter-gcp-trace/setup.cfg @@ -29,8 +29,8 @@ package_dir= packages=find_namespace: install_requires = google-cloud-trace ~= 1.1 - opentelemetry-api ~= 1.0 - opentelemetry-sdk ~= 1.0 + opentelemetry-api ~= 1.30 + opentelemetry-sdk ~= 1.30 opentelemetry-resourcedetector-gcp >= 1.5.0dev0, == 1.* [options.packages.find] diff --git a/opentelemetry-propagator-gcp/CHANGELOG.md b/opentelemetry-propagator-gcp/CHANGELOG.md index e5e0e0e0..ea74e2fb 100644 --- a/opentelemetry-propagator-gcp/CHANGELOG.md +++ b/opentelemetry-propagator-gcp/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +Update opentelemetry-api/sdk dependencies to 1.3. + ## Version 1.9.0 Released 2025-02-03 diff --git a/opentelemetry-resourcedetector-gcp/CHANGELOG.md b/opentelemetry-resourcedetector-gcp/CHANGELOG.md index f27d7894..5fe549ad 100644 --- a/opentelemetry-resourcedetector-gcp/CHANGELOG.md +++ b/opentelemetry-resourcedetector-gcp/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +Update opentelemetry-api/sdk dependencies to 1.3. + ## Version 1.9.0a0 Released 2025-02-03 diff --git a/opentelemetry-resourcedetector-gcp/setup.cfg b/opentelemetry-resourcedetector-gcp/setup.cfg index 47b004de..b1372b7e 100644 --- a/opentelemetry-resourcedetector-gcp/setup.cfg +++ b/opentelemetry-resourcedetector-gcp/setup.cfg @@ -28,8 +28,8 @@ package_dir= =src packages=find_namespace: install_requires = - opentelemetry-api ~= 1.0 - opentelemetry-sdk ~= 1.0 + opentelemetry-api ~= 1.30 + opentelemetry-sdk ~= 1.30 requests ~= 2.24 # TODO: remove when Python 3.7 is dropped typing_extensions ~= 4.0 From 4a18f053acc2082ade958b70c75171f8340d26ab Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Fri, 6 Jun 2025 15:39:52 +0000 Subject: [PATCH 13/15] Fix broken trace exporter test --- .../tests/test_cloud_trace_exporter.py | 2 ++ tox.ini | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opentelemetry-exporter-gcp-trace/tests/test_cloud_trace_exporter.py b/opentelemetry-exporter-gcp-trace/tests/test_cloud_trace_exporter.py index 36066553..3dcbaf6b 100644 --- a/opentelemetry-exporter-gcp-trace/tests/test_cloud_trace_exporter.py +++ b/opentelemetry-exporter-gcp-trace/tests/test_cloud_trace_exporter.py @@ -550,6 +550,7 @@ def test_extract_multiple_links(self): ), attributes={"illegal_attr_value": dict(), "int_attr_value": 123}, ) + print(link3.attributes) self.assertEqual( _extract_links([link1, link2, link3]), ProtoSpan.Links( @@ -571,6 +572,7 @@ def test_extract_multiple_links(self): "span_id": span_id2, "type": "TYPE_UNSPECIFIED", "attributes": { + "dropped_attributes_count": 1, "attribute_map": { "int_attr_value": AttributeValue(int_value=123) }, diff --git a/tox.ini b/tox.ini index ef456faf..e5192ce6 100644 --- a/tox.ini +++ b/tox.ini @@ -75,9 +75,7 @@ changedir = {env:PACKAGE_NAME} commands_pre = {toxinidir}/get_mock_server.sh {envbindir} -commands = - pip freeze - pytest --junitxml={[constants]test_results_dir}/{envname}/junit.xml {posargs} +commands = pytest --junitxml={[constants]test_results_dir}/{envname}/junit.xml {posargs} allowlist_externals = bash From a6b8c48eb0d04dbb94d28f51def3de3a630819ce Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Fri, 6 Jun 2025 15:53:47 +0000 Subject: [PATCH 14/15] Update constraints.txt --- e2e-test-server/constraints.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e-test-server/constraints.txt b/e2e-test-server/constraints.txt index f71f5048..7b384acd 100644 --- a/e2e-test-server/constraints.txt +++ b/e2e-test-server/constraints.txt @@ -23,8 +23,8 @@ importlib-metadata==6.8.0 itsdangerous==2.1.2 Jinja2==3.1.2 MarkupSafe==2.1.3 -opentelemetry-api==1.20.0 -opentelemetry-sdk==1.20.0 +opentelemetry-api==1.30.0 +opentelemetry-sdk==1.30.0 opentelemetry-semantic-conventions==0.41b0 packaging==24.1 proto-plus==1.22.3 From 445a9f2f7bce97cc76c2136f7fea528f29e62b53 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Fri, 6 Jun 2025 15:56:01 +0000 Subject: [PATCH 15/15] Update constraints again --- e2e-test-server/constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-test-server/constraints.txt b/e2e-test-server/constraints.txt index 7b384acd..6da13e31 100644 --- a/e2e-test-server/constraints.txt +++ b/e2e-test-server/constraints.txt @@ -25,7 +25,7 @@ Jinja2==3.1.2 MarkupSafe==2.1.3 opentelemetry-api==1.30.0 opentelemetry-sdk==1.30.0 -opentelemetry-semantic-conventions==0.41b0 +opentelemetry-semantic-conventions==0.51b0 packaging==24.1 proto-plus==1.22.3 protobuf==4.24.4