From cc4c739e78d77b813cb5c8a7d41c0578c1a68ac1 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Sun, 29 Jun 2025 01:22:53 +0200 Subject: [PATCH 1/6] [CONFIGURATION] File configuration - meter aggregation model --- .../configuration/aggregation_configuration.h | 32 ++++++++++++ .../aggregation_configuration_visitor.h | 44 ++++++++++++++++ ...cket_histogram_aggregation_configuration.h | 33 ++++++++++++ .../default_aggregation_configuration.h | 29 +++++++++++ .../default_histogram_aggregation.h | 24 +++++++++ .../drop_aggregation_configuration.h | 26 ++++++++++ ...cket_histogram_aggregation_configuration.h | 34 +++++++++++++ .../last_value_aggregation_configuration.h | 29 +++++++++++ .../meter_provider_configuration.h | 32 ++++++++++++ .../sum_aggregation_configuration.h | 26 ++++++++++ .../sdk/configuration/view_configuration.h | 29 +++++++++++ .../view_selector_configuration.h | 50 +++++++++++++++++++ .../configuration/view_stream_configuration.h | 33 ++++++++++++ 13 files changed, 421 insertions(+) create mode 100644 sdk/include/opentelemetry/sdk/configuration/aggregation_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/aggregation_configuration_visitor.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/base2_exponential_bucket_histogram_aggregation_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/default_aggregation_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/default_histogram_aggregation.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/drop_aggregation_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/explicit_bucket_histogram_aggregation_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/last_value_aggregation_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/meter_provider_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/sum_aggregation_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/view_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/view_stream_configuration.h diff --git a/sdk/include/opentelemetry/sdk/configuration/aggregation_configuration.h b/sdk/include/opentelemetry/sdk/configuration/aggregation_configuration.h new file mode 100644 index 0000000000..8be26c3e51 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/aggregation_configuration.h @@ -0,0 +1,32 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ +class AggregationConfigurationVisitor; + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: aggregation +class AggregationConfiguration +{ +public: + AggregationConfiguration() = default; + AggregationConfiguration(AggregationConfiguration &&) = default; + AggregationConfiguration(const AggregationConfiguration &) = default; + AggregationConfiguration &operator=(AggregationConfiguration &&) = default; + AggregationConfiguration &operator=(const AggregationConfiguration &other) = default; + virtual ~AggregationConfiguration() = default; + + virtual void Accept(AggregationConfigurationVisitor *visitor) const = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/aggregation_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/aggregation_configuration_visitor.h new file mode 100644 index 0000000000..3311ec1e19 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/aggregation_configuration_visitor.h @@ -0,0 +1,44 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +class Base2ExponentialBucketHistogramAggregationConfiguration; +class DefaultAggregationConfiguration; +class DropAggregationConfiguration; +class ExplicitBucketHistogramAggregationConfiguration; +class LastValueAggregationConfiguration; +class SumAggregationConfiguration; + +class AggregationConfigurationVisitor +{ +public: + AggregationConfigurationVisitor() = default; + AggregationConfigurationVisitor(AggregationConfigurationVisitor &&) = default; + AggregationConfigurationVisitor(const AggregationConfigurationVisitor &) = default; + AggregationConfigurationVisitor &operator=(AggregationConfigurationVisitor &&) = default; + AggregationConfigurationVisitor &operator=(const AggregationConfigurationVisitor &other) = + default; + virtual ~AggregationConfigurationVisitor() = default; + + virtual void VisitBase2ExponentialBucketHistogram( + const Base2ExponentialBucketHistogramAggregationConfiguration *model) = 0; + virtual void VisitDefault(const DefaultAggregationConfiguration *model) = 0; + virtual void VisitDrop(const DropAggregationConfiguration *model) = 0; + virtual void VisitExplicitBucketHistogram( + const ExplicitBucketHistogramAggregationConfiguration *model) = 0; + virtual void VisitLastValue(const LastValueAggregationConfiguration *model) = 0; + virtual void VisitSum(const SumAggregationConfiguration *model) = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/base2_exponential_bucket_histogram_aggregation_configuration.h b/sdk/include/opentelemetry/sdk/configuration/base2_exponential_bucket_histogram_aggregation_configuration.h new file mode 100644 index 0000000000..86d87f8393 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/base2_exponential_bucket_histogram_aggregation_configuration.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/configuration/aggregation_configuration.h" +#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: base2_exponential_bucket_histogram +class Base2ExponentialBucketHistogramAggregationConfiguration : public AggregationConfiguration +{ +public: + void Accept(AggregationConfigurationVisitor *visitor) const override + { + visitor->VisitBase2ExponentialBucketHistogram(this); + } + + std::size_t max_scale{0}; + std::size_t max_size{0}; + bool record_min_max{false}; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/default_aggregation_configuration.h b/sdk/include/opentelemetry/sdk/configuration/default_aggregation_configuration.h new file mode 100644 index 0000000000..357578a211 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/default_aggregation_configuration.h @@ -0,0 +1,29 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/configuration/aggregation_configuration.h" +#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: default +class DefaultAggregationConfiguration : public AggregationConfiguration +{ +public: + void Accept(AggregationConfigurationVisitor *visitor) const override + { + visitor->VisitDefault(this); + } +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/default_histogram_aggregation.h b/sdk/include/opentelemetry/sdk/configuration/default_histogram_aggregation.h new file mode 100644 index 0000000000..73ee11d38c --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/default_histogram_aggregation.h @@ -0,0 +1,24 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +enum enum_default_histogram_aggregation : std::uint8_t +{ + explicit_bucket_histogram, + base2_exponential_bucket_histogram +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/drop_aggregation_configuration.h b/sdk/include/opentelemetry/sdk/configuration/drop_aggregation_configuration.h new file mode 100644 index 0000000000..ea752dc99f --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/drop_aggregation_configuration.h @@ -0,0 +1,26 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/configuration/aggregation_configuration.h" +#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: drop +class DropAggregationConfiguration : public AggregationConfiguration +{ +public: + void Accept(AggregationConfigurationVisitor *visitor) const override { visitor->VisitDrop(this); } +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/explicit_bucket_histogram_aggregation_configuration.h b/sdk/include/opentelemetry/sdk/configuration/explicit_bucket_histogram_aggregation_configuration.h new file mode 100644 index 0000000000..122e84d034 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/explicit_bucket_histogram_aggregation_configuration.h @@ -0,0 +1,34 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/aggregation_configuration.h" +#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: explicit_bucket_histogram +class ExplicitBucketHistogramAggregationConfiguration : public AggregationConfiguration +{ +public: + void Accept(AggregationConfigurationVisitor *visitor) const override + { + visitor->VisitExplicitBucketHistogram(this); + } + + std::vector boundaries; + bool record_min_max{false}; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/last_value_aggregation_configuration.h b/sdk/include/opentelemetry/sdk/configuration/last_value_aggregation_configuration.h new file mode 100644 index 0000000000..e528ee4b85 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/last_value_aggregation_configuration.h @@ -0,0 +1,29 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/configuration/aggregation_configuration.h" +#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: last_value +class LastValueAggregationConfiguration : public AggregationConfiguration +{ +public: + void Accept(AggregationConfigurationVisitor *visitor) const override + { + visitor->VisitLastValue(this); + } +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/meter_provider_configuration.h b/sdk/include/opentelemetry/sdk/configuration/meter_provider_configuration.h new file mode 100644 index 0000000000..6f57de4150 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/meter_provider_configuration.h @@ -0,0 +1,32 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/metric_reader_configuration.h" +#include "opentelemetry/sdk/configuration/view_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: MeterProvider +class MeterProviderConfiguration +{ +public: + std::vector> readers; + std::vector> views; + // FIXME: exemplar_filter + // FIXME: meter_configurator +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/sum_aggregation_configuration.h b/sdk/include/opentelemetry/sdk/configuration/sum_aggregation_configuration.h new file mode 100644 index 0000000000..b6907db69c --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/sum_aggregation_configuration.h @@ -0,0 +1,26 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/configuration/aggregation_configuration.h" +#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: sum +class SumAggregationConfiguration : public AggregationConfiguration +{ +public: + void Accept(AggregationConfigurationVisitor *visitor) const override { visitor->VisitSum(this); } +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/view_configuration.h b/sdk/include/opentelemetry/sdk/configuration/view_configuration.h new file mode 100644 index 0000000000..7fa632c663 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/view_configuration.h @@ -0,0 +1,29 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/view_selector_configuration.h" +#include "opentelemetry/sdk/configuration/view_stream_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: View +class ViewConfiguration +{ +public: + std::unique_ptr selector; + std::unique_ptr stream; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h b/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h new file mode 100644 index 0000000000..9da455389b --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h @@ -0,0 +1,50 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include +#include + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +enum enum_instrument_type : std::uint8_t +{ + counter, + histogram, + observable_counter, + observable_gauge, + observable_up_down_counter, + up_down_counter +}; + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: ViewSelector +class ViewSelectorConfiguration +{ +public: + ViewSelectorConfiguration() = default; + ViewSelectorConfiguration(ViewSelectorConfiguration &&) = default; + ViewSelectorConfiguration(const ViewSelectorConfiguration &) = default; + ViewSelectorConfiguration &operator=(ViewSelectorConfiguration &&) = default; + ViewSelectorConfiguration &operator=(const ViewSelectorConfiguration &other) = default; + ~ViewSelectorConfiguration() = default; + + std::string instrument_name; + enum_instrument_type instrument_type{counter}; + std::string unit; + std::string meter_name; + std::string meter_version; + std::string meter_schema_url; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/view_stream_configuration.h b/sdk/include/opentelemetry/sdk/configuration/view_stream_configuration.h new file mode 100644 index 0000000000..d71586d928 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/view_stream_configuration.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include +#include + +#include "opentelemetry/sdk/configuration/aggregation_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: ViewStream +class ViewStreamConfiguration +{ +public: + std::string name; + std::string description; + std::unique_ptr aggregation; + std::size_t aggregation_cardinality_limit; + std::vector attribute_keys; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE From 8b490df21ed5ebbe342ff187a90cb723edf9fb3b Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Fri, 4 Jul 2025 23:06:44 +0200 Subject: [PATCH 2/6] Refresh code from PR #2518, cleanup --- .../sdk/configuration/view_stream_configuration.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdk/include/opentelemetry/sdk/configuration/view_stream_configuration.h b/sdk/include/opentelemetry/sdk/configuration/view_stream_configuration.h index d71586d928..006c83d460 100644 --- a/sdk/include/opentelemetry/sdk/configuration/view_stream_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/view_stream_configuration.h @@ -8,6 +8,7 @@ #include #include "opentelemetry/sdk/configuration/aggregation_configuration.h" +#include "opentelemetry/sdk/configuration/include_exclude_configuration.h" #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -25,7 +26,7 @@ class ViewStreamConfiguration std::string description; std::unique_ptr aggregation; std::size_t aggregation_cardinality_limit; - std::vector attribute_keys; + std::unique_ptr attribute_keys; }; } // namespace configuration From 59b667829fb14c10e5c171dc8b05fe20a7f5213f Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Sat, 5 Jul 2025 01:08:22 +0200 Subject: [PATCH 3/6] Merge cleanup --- .../sdk/configuration/instrument_type.h | 30 +++++++++++++++++++ .../view_selector_configuration.h | 13 ++------ 2 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 sdk/include/opentelemetry/sdk/configuration/instrument_type.h diff --git a/sdk/include/opentelemetry/sdk/configuration/instrument_type.h b/sdk/include/opentelemetry/sdk/configuration/instrument_type.h new file mode 100644 index 0000000000..49fd52f435 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/instrument_type.h @@ -0,0 +1,30 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: InstrumentType +enum class InstrumentType : std::uint8_t +{ + counter, + histogram, + observable_counter, + observable_gauge, + observable_up_down_counter, + up_down_counter +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h b/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h index 9da455389b..e83462a400 100644 --- a/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h @@ -7,6 +7,7 @@ #include #include +#include "opentelemetry/sdk/configuration/instrument_type.h" #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -15,16 +16,6 @@ namespace sdk namespace configuration { -enum enum_instrument_type : std::uint8_t -{ - counter, - histogram, - observable_counter, - observable_gauge, - observable_up_down_counter, - up_down_counter -}; - // YAML-SCHEMA: schema/meter_provider.json // YAML-NODE: ViewSelector class ViewSelectorConfiguration @@ -38,7 +29,7 @@ class ViewSelectorConfiguration ~ViewSelectorConfiguration() = default; std::string instrument_name; - enum_instrument_type instrument_type{counter}; + InstrumentType instrument_type{InstrumentType::counter}; std::string unit; std::string meter_name; std::string meter_version; From c12c797e1fc4d7522e0813ed655b0e9239e1e031 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Sat, 5 Jul 2025 01:14:19 +0200 Subject: [PATCH 4/6] Code review comments, enum naming --- .../otlp_file_push_metric_exporter_configuration.h | 5 +++-- .../otlp_grpc_push_metric_exporter_configuration.h | 5 +++-- .../otlp_http_push_metric_exporter_configuration.h | 7 ++++--- .../sdk/configuration/temporality_preference.h | 4 +++- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/sdk/include/opentelemetry/sdk/configuration/otlp_file_push_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/otlp_file_push_metric_exporter_configuration.h index 48f27434b5..03b75ef593 100644 --- a/sdk/include/opentelemetry/sdk/configuration/otlp_file_push_metric_exporter_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_file_push_metric_exporter_configuration.h @@ -29,8 +29,9 @@ class OtlpFilePushMetricExporterConfiguration : public PushMetricExporterConfigu } std::string output_stream; - enum_temporality_preference temporality_preference{cumulative}; - enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; + TemporalityPreference temporality_preference{TemporalityPreference::cumulative}; + DefaultHistogramAggregation default_histogram_aggregation{ + DefaultHistogramAggregation::explicit_bucket_histogram}; }; } // namespace configuration diff --git a/sdk/include/opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h index 8a3ec69de2..f0264d323f 100644 --- a/sdk/include/opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h @@ -38,8 +38,9 @@ class OtlpGrpcPushMetricExporterConfiguration : public PushMetricExporterConfigu std::string compression; std::size_t timeout{0}; bool insecure{false}; - enum_temporality_preference temporality_preference{cumulative}; - enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; + TemporalityPreference temporality_preference{TemporalityPreference::cumulative}; + DefaultHistogramAggregation default_histogram_aggregation{ + DefaultHistogramAggregation::explicit_bucket_histogram}; }; } // namespace configuration diff --git a/sdk/include/opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h index bfac17be4e..eb8aac1ca1 100644 --- a/sdk/include/opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h @@ -38,9 +38,10 @@ class OtlpHttpPushMetricExporterConfiguration : public PushMetricExporterConfigu std::string headers_list; std::string compression; std::size_t timeout{0}; - enum_otlp_http_encoding encoding{protobuf}; - enum_temporality_preference temporality_preference{cumulative}; - enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; + OtlpHttpEncoding encoding{OtlpHttpEncoding::protobuf}; + TemporalityPreference temporality_preference{TemporalityPreference::cumulative}; + DefaultHistogramAggregation default_histogram_aggregation{ + DefaultHistogramAggregation::explicit_bucket_histogram}; }; } // namespace configuration diff --git a/sdk/include/opentelemetry/sdk/configuration/temporality_preference.h b/sdk/include/opentelemetry/sdk/configuration/temporality_preference.h index 0b80aa6e3b..d5f81d0f45 100644 --- a/sdk/include/opentelemetry/sdk/configuration/temporality_preference.h +++ b/sdk/include/opentelemetry/sdk/configuration/temporality_preference.h @@ -13,7 +13,9 @@ namespace sdk namespace configuration { -enum enum_temporality_preference : std::uint8_t +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: ExporterTemporalityPreference +enum class TemporalityPreference : std::uint8_t { cumulative, delta, From 70be6a1085c49ff83ca81266523f8961353288d4 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Sun, 6 Jul 2025 11:32:30 +0200 Subject: [PATCH 5/6] Refresh code from PR #2518, to fix review comments (enum) --- .../sdk/configuration/default_histogram_aggregation.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sdk/include/opentelemetry/sdk/configuration/default_histogram_aggregation.h b/sdk/include/opentelemetry/sdk/configuration/default_histogram_aggregation.h index 73ee11d38c..420f2daba9 100644 --- a/sdk/include/opentelemetry/sdk/configuration/default_histogram_aggregation.h +++ b/sdk/include/opentelemetry/sdk/configuration/default_histogram_aggregation.h @@ -13,7 +13,9 @@ namespace sdk namespace configuration { -enum enum_default_histogram_aggregation : std::uint8_t +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: ExporterDefaultHistogramAggregation +enum class DefaultHistogramAggregation : std::uint8_t { explicit_bucket_histogram, base2_exponential_bucket_histogram From c8e2cd34b9e432013888c3e7f9e2017d5ce722b7 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Sun, 6 Jul 2025 11:38:26 +0200 Subject: [PATCH 6/6] Refresh code from PR #2518, to fix review comments. --- .../sdk/configuration/view_selector_configuration.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h b/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h index e83462a400..7c47bdd1d3 100644 --- a/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h @@ -21,13 +21,6 @@ namespace configuration class ViewSelectorConfiguration { public: - ViewSelectorConfiguration() = default; - ViewSelectorConfiguration(ViewSelectorConfiguration &&) = default; - ViewSelectorConfiguration(const ViewSelectorConfiguration &) = default; - ViewSelectorConfiguration &operator=(ViewSelectorConfiguration &&) = default; - ViewSelectorConfiguration &operator=(const ViewSelectorConfiguration &other) = default; - ~ViewSelectorConfiguration() = default; - std::string instrument_name; InstrumentType instrument_type{InstrumentType::counter}; std::string unit;