From 5cf018162e9a19d6bebd11031b692e542000f1c0 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Thu, 12 Jun 2025 21:24:04 +0200 Subject: [PATCH 1/3] [CONFIGURATION] File configuration - metric model --- ...nsole_push_metric_exporter_configuration.h | 33 ++++++++++++ .../metric_producer_configuration.h | 30 +++++++++++ .../metric_reader_configuration.h | 30 +++++++++++ .../metric_reader_configuration_visitor.h | 29 +++++++++++ ..._file_push_metric_exporter_configuration.h | 40 +++++++++++++++ ..._grpc_push_metric_exporter_configuration.h | 49 ++++++++++++++++++ ..._http_push_metric_exporter_configuration.h | 50 +++++++++++++++++++ .../periodic_metric_reader_configuration.h | 42 ++++++++++++++++ ...theus_pull_metric_exporter_configuration.h | 42 ++++++++++++++++ .../pull_metric_exporter_configuration.h | 26 ++++++++++ ...ll_metric_exporter_configuration_visitor.h | 29 +++++++++++ .../pull_metric_reader_configuration.h | 41 +++++++++++++++ .../push_metric_exporter_configuration.h | 28 +++++++++++ ...sh_metric_exporter_configuration_visitor.h | 35 +++++++++++++ 14 files changed, 504 insertions(+) create mode 100644 sdk/include/opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/metric_producer_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/otlp_file_push_metric_exporter_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/pull_metric_reader_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration.h create mode 100644 sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h diff --git a/sdk/include/opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h new file mode 100644 index 0000000000..16b5bea296 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/configuration/headers_configuration.h" +#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/common.json +// YAML-NODE: Console +class ConsolePushMetricExporterConfiguration : public PushMetricExporterConfiguration +{ +public: + ConsolePushMetricExporterConfiguration() = default; + ~ConsolePushMetricExporterConfiguration() override = default; + + void Accept(PushMetricExporterConfigurationVisitor *visitor) const override + { + visitor->VisitConsole(this); + } +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/metric_producer_configuration.h b/sdk/include/opentelemetry/sdk/configuration/metric_producer_configuration.h new file mode 100644 index 0000000000..9e8fb8e411 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/metric_producer_configuration.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 +{ +class MetricProducerConfigurationVisitor; + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: MetricProducer +class MetricProducerConfiguration +{ +public: + MetricProducerConfiguration() = default; + virtual ~MetricProducerConfiguration() = default; + + virtual void Accept(MetricProducerConfigurationVisitor *visitor) const = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration.h b/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration.h new file mode 100644 index 0000000000..466cb57fd5 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration.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 +{ +class MetricReaderConfigurationVisitor; + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: MetricReader +class MetricReaderConfiguration +{ +public: + MetricReaderConfiguration() = default; + virtual ~MetricReaderConfiguration() = default; + + virtual void Accept(MetricReaderConfigurationVisitor *visitor) const = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h new file mode 100644 index 0000000000..83b74c1b0b --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h @@ -0,0 +1,29 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +class PeriodicMetricReaderConfiguration; +class PullMetricReaderConfiguration; + +class MetricReaderConfigurationVisitor +{ +public: + MetricReaderConfigurationVisitor() = default; + virtual ~MetricReaderConfigurationVisitor() = default; + + virtual void VisitPeriodic(const PeriodicMetricReaderConfiguration *model) = 0; + virtual void VisitPull(const PullMetricReaderConfiguration *model) = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE 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 new file mode 100644 index 0000000000..45bb64c7eb --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_file_push_metric_exporter_configuration.h @@ -0,0 +1,40 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/exporter_default_histogram_aggregation.h" +#include "opentelemetry/sdk/configuration/headers_configuration.h" +#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: ExperimentalOtlpFileMetricExporter +class OtlpFilePushMetricExporterConfiguration : public PushMetricExporterConfiguration +{ +public: + OtlpFilePushMetricExporterConfiguration() = default; + ~OtlpFilePushMetricExporterConfiguration() override = default; + + void Accept(PushMetricExporterConfigurationVisitor *visitor) const override + { + visitor->VisitOtlpFile(this); + } + + std::string output_stream; + std::string temporality_preference; // FIXME: enum + enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE 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 new file mode 100644 index 0000000000..34f15d1dff --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h @@ -0,0 +1,49 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/exporter_default_histogram_aggregation.h" +#include "opentelemetry/sdk/configuration/headers_configuration.h" +#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: OtlpGrpcMetricExporter +class OtlpGrpcPushMetricExporterConfiguration : public PushMetricExporterConfiguration +{ +public: + OtlpGrpcPushMetricExporterConfiguration() = default; + ~OtlpGrpcPushMetricExporterConfiguration() override = default; + + void Accept(PushMetricExporterConfigurationVisitor *visitor) const override + { + visitor->VisitOtlpGrpc(this); + } + + std::string endpoint; + std::string certificate_file; + std::string client_key_file; + std::string client_certificate_file; + std::unique_ptr headers; + std::string headers_list; + std::string compression; + size_t timeout{0}; + bool insecure{false}; + std::string temporality_preference; // FIXME: enum + enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE 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 new file mode 100644 index 0000000000..81d7af86cb --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h @@ -0,0 +1,50 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/exporter_default_histogram_aggregation.h" +#include "opentelemetry/sdk/configuration/headers_configuration.h" +#include "opentelemetry/sdk/configuration/otlp_http_encoding.h" +#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: OtlpHttpMetricExporter +class OtlpHttpPushMetricExporterConfiguration : public PushMetricExporterConfiguration +{ +public: + OtlpHttpPushMetricExporterConfiguration() = default; + ~OtlpHttpPushMetricExporterConfiguration() override = default; + + void Accept(PushMetricExporterConfigurationVisitor *visitor) const override + { + visitor->VisitOtlpHttp(this); + } + + std::string endpoint; + std::string certificate_file; + std::string client_key_file; + std::string client_certificate_file; + std::unique_ptr headers; + std::string headers_list; + std::string compression; + size_t timeout{0}; + enum_otlp_http_encoding encoding{protobuf}; + std::string temporality_preference; // FIXME: enum + enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h b/sdk/include/opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h new file mode 100644 index 0000000000..0167d481fa --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h @@ -0,0 +1,42 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/metric_producer_configuration.h" +#include "opentelemetry/sdk/configuration/metric_reader_configuration.h" +#include "opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h" +#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: PeriodicMetricReader +class PeriodicMetricReaderConfiguration : public MetricReaderConfiguration +{ +public: + PeriodicMetricReaderConfiguration() = default; + ~PeriodicMetricReaderConfiguration() override = default; + + void Accept(MetricReaderConfigurationVisitor *visitor) const override + { + visitor->VisitPeriodic(this); + } + + size_t interval{0}; + size_t timeout{0}; + std::unique_ptr exporter; + std::vector> producers; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h new file mode 100644 index 0000000000..e743feff76 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h @@ -0,0 +1,42 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/headers_configuration.h" +#include "opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: Prometheus +class PrometheusPullMetricExporterConfiguration : public PullMetricExporterConfiguration +{ +public: + PrometheusPullMetricExporterConfiguration() = default; + ~PrometheusPullMetricExporterConfiguration() override = default; + + void Accept(PullMetricExporterConfigurationVisitor *visitor) const override + { + visitor->VisitPrometheus(this); + } + + std::string host; + size_t port{0}; + bool without_units{false}; + bool without_type_suffix{false}; + bool without_scope_info{false}; + // FIXME: with_resource_constant_labels; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h new file mode 100644 index 0000000000..9fda353948 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h @@ -0,0 +1,26 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ +class PullMetricExporterConfigurationVisitor; + +class PullMetricExporterConfiguration +{ +public: + PullMetricExporterConfiguration() = default; + virtual ~PullMetricExporterConfiguration() = default; + + virtual void Accept(PullMetricExporterConfigurationVisitor *visitor) const = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h new file mode 100644 index 0000000000..1904db5954 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h @@ -0,0 +1,29 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +class PrometheusPullMetricExporterConfiguration; +class ExtensionPullMetricExporterConfiguration; + +class PullMetricExporterConfigurationVisitor +{ +public: + PullMetricExporterConfigurationVisitor() = default; + virtual ~PullMetricExporterConfigurationVisitor() = default; + + virtual void VisitPrometheus(const PrometheusPullMetricExporterConfiguration *model) = 0; + virtual void VisitExtension(const ExtensionPullMetricExporterConfiguration *model) = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/pull_metric_reader_configuration.h b/sdk/include/opentelemetry/sdk/configuration/pull_metric_reader_configuration.h new file mode 100644 index 0000000000..d87b1db453 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/pull_metric_reader_configuration.h @@ -0,0 +1,41 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/metric_producer_configuration.h" +#include "opentelemetry/sdk/configuration/metric_reader_configuration.h" +#include "opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h" +#include "opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: PullMetricReader +class PullMetricReaderConfiguration : public MetricReaderConfiguration +{ +public: + PullMetricReaderConfiguration() = default; + ~PullMetricReaderConfiguration() override = default; + + void Accept(MetricReaderConfigurationVisitor *visitor) const override + { + visitor->VisitPull(this); + } + + std::unique_ptr exporter; + std::vector> producers; + // FIXME: cardinality_limits +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration.h new file mode 100644 index 0000000000..15133b7ee8 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration.h @@ -0,0 +1,28 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ +class PushMetricExporterConfigurationVisitor; + +// YAML-SCHEMA: schema/meter_provider.json +// YAML-NODE: PushMetricExporter +class PushMetricExporterConfiguration +{ +public: + PushMetricExporterConfiguration() = default; + virtual ~PushMetricExporterConfiguration() = default; + + virtual void Accept(PushMetricExporterConfigurationVisitor *visitor) const = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h new file mode 100644 index 0000000000..f9c655fa01 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h @@ -0,0 +1,35 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +class OtlpHttpPushMetricExporterConfiguration; +class OtlpGrpcPushMetricExporterConfiguration; +class OtlpFilePushMetricExporterConfiguration; +class ConsolePushMetricExporterConfiguration; +class ExtensionPushMetricExporterConfiguration; + +class PushMetricExporterConfigurationVisitor +{ +public: + PushMetricExporterConfigurationVisitor() = default; + virtual ~PushMetricExporterConfigurationVisitor() = default; + + virtual void VisitOtlpHttp(const OtlpHttpPushMetricExporterConfiguration *model) = 0; + virtual void VisitOtlpGrpc(const OtlpGrpcPushMetricExporterConfiguration *model) = 0; + virtual void VisitOtlpFile(const OtlpFilePushMetricExporterConfiguration *model) = 0; + virtual void VisitConsole(const ConsolePushMetricExporterConfiguration *model) = 0; + virtual void VisitExtension(const ExtensionPushMetricExporterConfiguration *model) = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE From 86dc419e1834ef1d408591c066812b33193e5f6c Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Fri, 27 Jun 2025 17:20:21 +0200 Subject: [PATCH 2/3] Refresh code from PR #2518, to fix review comments (clang-tidy) --- .../console_push_metric_exporter_configuration.h | 3 --- .../sdk/configuration/metric_producer_configuration.h | 10 ++++++---- .../sdk/configuration/metric_reader_configuration.h | 10 ++++++---- .../metric_reader_configuration_visitor.h | 7 ++++++- .../otlp_file_push_metric_exporter_configuration.h | 5 +---- .../otlp_grpc_push_metric_exporter_configuration.h | 7 ++----- .../otlp_http_push_metric_exporter_configuration.h | 7 ++----- .../periodic_metric_reader_configuration.h | 7 ++----- .../prometheus_pull_metric_exporter_configuration.h | 5 +---- .../configuration/pull_metric_exporter_configuration.h | 7 ++++++- .../pull_metric_exporter_configuration_visitor.h | 10 ++++++++-- .../configuration/pull_metric_reader_configuration.h | 3 --- .../configuration/push_metric_exporter_configuration.h | 7 ++++++- .../push_metric_exporter_configuration_visitor.h | 10 ++++++++-- 14 files changed, 54 insertions(+), 44 deletions(-) diff --git a/sdk/include/opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h index 16b5bea296..e36e3a961f 100644 --- a/sdk/include/opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h @@ -19,9 +19,6 @@ namespace configuration class ConsolePushMetricExporterConfiguration : public PushMetricExporterConfiguration { public: - ConsolePushMetricExporterConfiguration() = default; - ~ConsolePushMetricExporterConfiguration() override = default; - void Accept(PushMetricExporterConfigurationVisitor *visitor) const override { visitor->VisitConsole(this); diff --git a/sdk/include/opentelemetry/sdk/configuration/metric_producer_configuration.h b/sdk/include/opentelemetry/sdk/configuration/metric_producer_configuration.h index 9e8fb8e411..bdfaab1388 100644 --- a/sdk/include/opentelemetry/sdk/configuration/metric_producer_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/metric_producer_configuration.h @@ -3,8 +3,6 @@ #pragma once -#include - #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -19,8 +17,12 @@ class MetricProducerConfigurationVisitor; class MetricProducerConfiguration { public: - MetricProducerConfiguration() = default; - virtual ~MetricProducerConfiguration() = default; + MetricProducerConfiguration() = default; + MetricProducerConfiguration(MetricProducerConfiguration &&) = default; + MetricProducerConfiguration(const MetricProducerConfiguration &) = default; + MetricProducerConfiguration &operator=(MetricProducerConfiguration &&) = default; + MetricProducerConfiguration &operator=(const MetricProducerConfiguration &other) = default; + virtual ~MetricProducerConfiguration() = default; virtual void Accept(MetricProducerConfigurationVisitor *visitor) const = 0; }; diff --git a/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration.h b/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration.h index 466cb57fd5..d038a9f760 100644 --- a/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration.h @@ -3,8 +3,6 @@ #pragma once -#include - #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -19,8 +17,12 @@ class MetricReaderConfigurationVisitor; class MetricReaderConfiguration { public: - MetricReaderConfiguration() = default; - virtual ~MetricReaderConfiguration() = default; + MetricReaderConfiguration() = default; + MetricReaderConfiguration(MetricReaderConfiguration &&) = default; + MetricReaderConfiguration(const MetricReaderConfiguration &) = default; + MetricReaderConfiguration &operator=(MetricReaderConfiguration &&) = default; + MetricReaderConfiguration &operator=(const MetricReaderConfiguration &other) = default; + virtual ~MetricReaderConfiguration() = default; virtual void Accept(MetricReaderConfigurationVisitor *visitor) const = 0; }; diff --git a/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h index 83b74c1b0b..412935be43 100644 --- a/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h +++ b/sdk/include/opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h @@ -17,7 +17,12 @@ class PullMetricReaderConfiguration; class MetricReaderConfigurationVisitor { public: - MetricReaderConfigurationVisitor() = default; + MetricReaderConfigurationVisitor() = default; + MetricReaderConfigurationVisitor(MetricReaderConfigurationVisitor &&) = default; + MetricReaderConfigurationVisitor(const MetricReaderConfigurationVisitor &) = default; + MetricReaderConfigurationVisitor &operator=(MetricReaderConfigurationVisitor &&) = default; + MetricReaderConfigurationVisitor &operator=(const MetricReaderConfigurationVisitor &other) = + default; virtual ~MetricReaderConfigurationVisitor() = default; virtual void VisitPeriodic(const PeriodicMetricReaderConfiguration *model) = 0; 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 45bb64c7eb..dae68fd19f 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 @@ -5,7 +5,7 @@ #include -#include "opentelemetry/sdk/configuration/exporter_default_histogram_aggregation.h" +#include "opentelemetry/sdk/configuration/default_histogram_aggregation.h" #include "opentelemetry/sdk/configuration/headers_configuration.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h" @@ -22,9 +22,6 @@ namespace configuration class OtlpFilePushMetricExporterConfiguration : public PushMetricExporterConfiguration { public: - OtlpFilePushMetricExporterConfiguration() = default; - ~OtlpFilePushMetricExporterConfiguration() override = default; - void Accept(PushMetricExporterConfigurationVisitor *visitor) const override { visitor->VisitOtlpFile(this); 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 34f15d1dff..3a7dbf5aaf 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 @@ -6,7 +6,7 @@ #include #include -#include "opentelemetry/sdk/configuration/exporter_default_histogram_aggregation.h" +#include "opentelemetry/sdk/configuration/default_histogram_aggregation.h" #include "opentelemetry/sdk/configuration/headers_configuration.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h" @@ -23,9 +23,6 @@ namespace configuration class OtlpGrpcPushMetricExporterConfiguration : public PushMetricExporterConfiguration { public: - OtlpGrpcPushMetricExporterConfiguration() = default; - ~OtlpGrpcPushMetricExporterConfiguration() override = default; - void Accept(PushMetricExporterConfigurationVisitor *visitor) const override { visitor->VisitOtlpGrpc(this); @@ -38,7 +35,7 @@ class OtlpGrpcPushMetricExporterConfiguration : public PushMetricExporterConfigu std::unique_ptr headers; std::string headers_list; std::string compression; - size_t timeout{0}; + std::size_t timeout{0}; bool insecure{false}; std::string temporality_preference; // FIXME: enum enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; 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 81d7af86cb..d54f48e9a1 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 @@ -6,7 +6,7 @@ #include #include -#include "opentelemetry/sdk/configuration/exporter_default_histogram_aggregation.h" +#include "opentelemetry/sdk/configuration/default_histogram_aggregation.h" #include "opentelemetry/sdk/configuration/headers_configuration.h" #include "opentelemetry/sdk/configuration/otlp_http_encoding.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" @@ -24,9 +24,6 @@ namespace configuration class OtlpHttpPushMetricExporterConfiguration : public PushMetricExporterConfiguration { public: - OtlpHttpPushMetricExporterConfiguration() = default; - ~OtlpHttpPushMetricExporterConfiguration() override = default; - void Accept(PushMetricExporterConfigurationVisitor *visitor) const override { visitor->VisitOtlpHttp(this); @@ -39,7 +36,7 @@ class OtlpHttpPushMetricExporterConfiguration : public PushMetricExporterConfigu std::unique_ptr headers; std::string headers_list; std::string compression; - size_t timeout{0}; + std::size_t timeout{0}; enum_otlp_http_encoding encoding{protobuf}; std::string temporality_preference; // FIXME: enum enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; diff --git a/sdk/include/opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h b/sdk/include/opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h index 0167d481fa..ac38cb6206 100644 --- a/sdk/include/opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h @@ -23,16 +23,13 @@ namespace configuration class PeriodicMetricReaderConfiguration : public MetricReaderConfiguration { public: - PeriodicMetricReaderConfiguration() = default; - ~PeriodicMetricReaderConfiguration() override = default; - void Accept(MetricReaderConfigurationVisitor *visitor) const override { visitor->VisitPeriodic(this); } - size_t interval{0}; - size_t timeout{0}; + std::size_t interval{0}; + std::size_t timeout{0}; std::unique_ptr exporter; std::vector> producers; }; diff --git a/sdk/include/opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h index e743feff76..99b4fbcc85 100644 --- a/sdk/include/opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h @@ -21,16 +21,13 @@ namespace configuration class PrometheusPullMetricExporterConfiguration : public PullMetricExporterConfiguration { public: - PrometheusPullMetricExporterConfiguration() = default; - ~PrometheusPullMetricExporterConfiguration() override = default; - void Accept(PullMetricExporterConfigurationVisitor *visitor) const override { visitor->VisitPrometheus(this); } std::string host; - size_t port{0}; + std::size_t port{0}; bool without_units{false}; bool without_type_suffix{false}; bool without_scope_info{false}; diff --git a/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h index 9fda353948..8351d81c18 100644 --- a/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h @@ -15,7 +15,12 @@ class PullMetricExporterConfigurationVisitor; class PullMetricExporterConfiguration { public: - PullMetricExporterConfiguration() = default; + PullMetricExporterConfiguration() = default; + PullMetricExporterConfiguration(PullMetricExporterConfiguration &&) = default; + PullMetricExporterConfiguration(const PullMetricExporterConfiguration &) = default; + PullMetricExporterConfiguration &operator=(PullMetricExporterConfiguration &&) = default; + PullMetricExporterConfiguration &operator=(const PullMetricExporterConfiguration &other) = + default; virtual ~PullMetricExporterConfiguration() = default; virtual void Accept(PullMetricExporterConfigurationVisitor *visitor) const = 0; diff --git a/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h index 1904db5954..bbc40ab058 100644 --- a/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h +++ b/sdk/include/opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h @@ -17,8 +17,14 @@ class ExtensionPullMetricExporterConfiguration; class PullMetricExporterConfigurationVisitor { public: - PullMetricExporterConfigurationVisitor() = default; - virtual ~PullMetricExporterConfigurationVisitor() = default; + PullMetricExporterConfigurationVisitor() = default; + PullMetricExporterConfigurationVisitor(PullMetricExporterConfigurationVisitor &&) = default; + PullMetricExporterConfigurationVisitor(const PullMetricExporterConfigurationVisitor &) = default; + PullMetricExporterConfigurationVisitor &operator=(PullMetricExporterConfigurationVisitor &&) = + default; + PullMetricExporterConfigurationVisitor &operator=( + const PullMetricExporterConfigurationVisitor &other) = default; + virtual ~PullMetricExporterConfigurationVisitor() = default; virtual void VisitPrometheus(const PrometheusPullMetricExporterConfiguration *model) = 0; virtual void VisitExtension(const ExtensionPullMetricExporterConfiguration *model) = 0; diff --git a/sdk/include/opentelemetry/sdk/configuration/pull_metric_reader_configuration.h b/sdk/include/opentelemetry/sdk/configuration/pull_metric_reader_configuration.h index d87b1db453..de317689ce 100644 --- a/sdk/include/opentelemetry/sdk/configuration/pull_metric_reader_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/pull_metric_reader_configuration.h @@ -23,9 +23,6 @@ namespace configuration class PullMetricReaderConfiguration : public MetricReaderConfiguration { public: - PullMetricReaderConfiguration() = default; - ~PullMetricReaderConfiguration() override = default; - void Accept(MetricReaderConfigurationVisitor *visitor) const override { visitor->VisitPull(this); diff --git a/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration.h index 15133b7ee8..4776a96027 100644 --- a/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration.h @@ -17,7 +17,12 @@ class PushMetricExporterConfigurationVisitor; class PushMetricExporterConfiguration { public: - PushMetricExporterConfiguration() = default; + PushMetricExporterConfiguration() = default; + PushMetricExporterConfiguration(PushMetricExporterConfiguration &&) = default; + PushMetricExporterConfiguration(const PushMetricExporterConfiguration &) = default; + PushMetricExporterConfiguration &operator=(PushMetricExporterConfiguration &&) = default; + PushMetricExporterConfiguration &operator=(const PushMetricExporterConfiguration &other) = + default; virtual ~PushMetricExporterConfiguration() = default; virtual void Accept(PushMetricExporterConfigurationVisitor *visitor) const = 0; diff --git a/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h index f9c655fa01..b43b2baf8e 100644 --- a/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h +++ b/sdk/include/opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h @@ -20,8 +20,14 @@ class ExtensionPushMetricExporterConfiguration; class PushMetricExporterConfigurationVisitor { public: - PushMetricExporterConfigurationVisitor() = default; - virtual ~PushMetricExporterConfigurationVisitor() = default; + PushMetricExporterConfigurationVisitor() = default; + PushMetricExporterConfigurationVisitor(PushMetricExporterConfigurationVisitor &&) = default; + PushMetricExporterConfigurationVisitor(const PushMetricExporterConfigurationVisitor &) = default; + PushMetricExporterConfigurationVisitor &operator=(PushMetricExporterConfigurationVisitor &&) = + default; + PushMetricExporterConfigurationVisitor &operator=( + const PushMetricExporterConfigurationVisitor &other) = default; + virtual ~PushMetricExporterConfigurationVisitor() = default; virtual void VisitOtlpHttp(const OtlpHttpPushMetricExporterConfiguration *model) = 0; virtual void VisitOtlpGrpc(const OtlpGrpcPushMetricExporterConfiguration *model) = 0; From 64d52c183b225f74d00cc621e3eb30449b0e673c Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Sat, 28 Jun 2025 20:50:11 +0200 Subject: [PATCH 3/3] Fixed TODO for enum temporality_preference --- ..._file_push_metric_exporter_configuration.h | 3 ++- ..._grpc_push_metric_exporter_configuration.h | 3 ++- ..._http_push_metric_exporter_configuration.h | 3 ++- .../configuration/temporality_preference.h | 25 +++++++++++++++++++ 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 sdk/include/opentelemetry/sdk/configuration/temporality_preference.h 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 dae68fd19f..48f27434b5 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 @@ -9,6 +9,7 @@ #include "opentelemetry/sdk/configuration/headers_configuration.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h" +#include "opentelemetry/sdk/configuration/temporality_preference.h" #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -28,7 +29,7 @@ class OtlpFilePushMetricExporterConfiguration : public PushMetricExporterConfigu } std::string output_stream; - std::string temporality_preference; // FIXME: enum + enum_temporality_preference temporality_preference{cumulative}; enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; }; 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 3a7dbf5aaf..8a3ec69de2 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 @@ -10,6 +10,7 @@ #include "opentelemetry/sdk/configuration/headers_configuration.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h" +#include "opentelemetry/sdk/configuration/temporality_preference.h" #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -37,7 +38,7 @@ class OtlpGrpcPushMetricExporterConfiguration : public PushMetricExporterConfigu std::string compression; std::size_t timeout{0}; bool insecure{false}; - std::string temporality_preference; // FIXME: enum + enum_temporality_preference temporality_preference{cumulative}; enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; }; 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 d54f48e9a1..bfac17be4e 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 @@ -11,6 +11,7 @@ #include "opentelemetry/sdk/configuration/otlp_http_encoding.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h" #include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h" +#include "opentelemetry/sdk/configuration/temporality_preference.h" #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -38,7 +39,7 @@ class OtlpHttpPushMetricExporterConfiguration : public PushMetricExporterConfigu std::string compression; std::size_t timeout{0}; enum_otlp_http_encoding encoding{protobuf}; - std::string temporality_preference; // FIXME: enum + enum_temporality_preference temporality_preference{cumulative}; enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram}; }; diff --git a/sdk/include/opentelemetry/sdk/configuration/temporality_preference.h b/sdk/include/opentelemetry/sdk/configuration/temporality_preference.h new file mode 100644 index 0000000000..0b80aa6e3b --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/temporality_preference.h @@ -0,0 +1,25 @@ +// 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_temporality_preference : std::uint8_t +{ + cumulative, + delta, + low_memory +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE