Skip to content

Commit c7c9343

Browse files
authored
[CONFIGURATION] Break the configuration_core dependency on the SDK metrics library (#4554)
1 parent af98d87 commit c7c9343

9 files changed

Lines changed: 907 additions & 941 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ Increment the:
4040
* [CONFIGURATION] Cleanup build targets and docs
4141
[#4486](https://github.com/open-telemetry/opentelemetry-cpp/pull/4486)
4242

43+
* [CONFIGURATION] Break the configuration_core dependency on SDK metrics
44+
[#4554](https://github.com/open-telemetry/opentelemetry-cpp/pull/4554)
45+
4346
* [BUGFIX] Complete an OTLP HTTP request that its client ends with
4447
`Destroyed`, `ReadError` or `WriteError`, rather than logging the state
4548
and leaving the caller waiting
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/sdk/configuration/include_exclude_configuration.h"
9+
#include "opentelemetry/sdk/configuration/meter_configurator_configuration.h"
10+
#include "opentelemetry/sdk/configuration/metric_reader_configuration.h"
11+
#include "opentelemetry/sdk/configuration/registry.h"
12+
#include "opentelemetry/sdk/configuration/view_configuration.h"
13+
#include "opentelemetry/sdk/instrumentationscope/scope_configurator.h"
14+
#include "opentelemetry/sdk/metrics/meter_config.h"
15+
#include "opentelemetry/sdk/metrics/metric_reader.h"
16+
#include "opentelemetry/sdk/metrics/view/attributes_processor.h"
17+
#include "opentelemetry/sdk/metrics/view/view_registry.h"
18+
#include "opentelemetry/version.h"
19+
20+
OPENTELEMETRY_BEGIN_NAMESPACE
21+
namespace sdk
22+
{
23+
namespace configuration
24+
{
25+
26+
/**
27+
* Common utility functions for building metrics SDK components from configuration models.
28+
*/
29+
class MetricsBuilderUtils
30+
{
31+
public:
32+
static std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreateMetricReader(
33+
const Registry *registry,
34+
const std::unique_ptr<MetricReaderConfiguration> &model);
35+
36+
static void AddView(opentelemetry::sdk::metrics::ViewRegistry *view_registry,
37+
const std::unique_ptr<ViewConfiguration> &model);
38+
39+
static std::unique_ptr<opentelemetry::sdk::metrics::AttributesProcessor>
40+
CreateAttributesProcessor(const std::unique_ptr<IncludeExcludeConfiguration> &model);
41+
42+
static std::unique_ptr<opentelemetry::sdk::instrumentationscope::ScopeConfigurator<
43+
opentelemetry::sdk::metrics::MeterConfig>>
44+
CreateMeterConfigurator(const Registry *registry,
45+
const std::unique_ptr<MeterConfiguratorConfiguration> &model);
46+
};
47+
48+
} // namespace configuration
49+
} // namespace sdk
50+
OPENTELEMETRY_END_NAMESPACE

‎sdk/include/opentelemetry/sdk/configuration/sdk_builder.h‎

Lines changed: 0 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,6 @@
6161
#include "opentelemetry/sdk/logs/exporter.h"
6262
#include "opentelemetry/sdk/logs/logger_config.h"
6363
#include "opentelemetry/sdk/logs/logger_provider.h"
64-
#include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader.h"
65-
#include "opentelemetry/sdk/metrics/meter_config.h"
66-
#include "opentelemetry/sdk/metrics/meter_provider.h"
67-
#include "opentelemetry/sdk/metrics/push_metric_exporter.h"
6864
#include "opentelemetry/sdk/resource/resource_detector.h"
6965
#include "opentelemetry/sdk/trace/exporter.h"
7066
#include "opentelemetry/sdk/trace/processor.h"
@@ -172,82 +168,6 @@ class SdkBuilder
172168
const std::unique_ptr<opentelemetry::sdk::configuration::PropagatorConfiguration> &model)
173169
const;
174170

175-
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreateOtlpHttpPushMetricExporter(
176-
const opentelemetry::sdk::configuration::OtlpHttpPushMetricExporterConfiguration *model)
177-
const;
178-
179-
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreateOtlpGrpcPushMetricExporter(
180-
const opentelemetry::sdk::configuration::OtlpGrpcPushMetricExporterConfiguration *model)
181-
const;
182-
183-
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreateOtlpFilePushMetricExporter(
184-
const opentelemetry::sdk::configuration::OtlpFilePushMetricExporterConfiguration *model)
185-
const;
186-
187-
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreateConsolePushMetricExporter(
188-
const opentelemetry::sdk::configuration::ConsolePushMetricExporterConfiguration *model) const;
189-
190-
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
191-
CreateExtensionPushMetricExporter(
192-
const opentelemetry::sdk::configuration::ExtensionPushMetricExporterConfiguration *model)
193-
const;
194-
195-
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreatePrometheusPullMetricExporter(
196-
const opentelemetry::sdk::configuration::PrometheusPullMetricExporterConfiguration *model)
197-
const;
198-
199-
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreateExtensionPullMetricExporter(
200-
const opentelemetry::sdk::configuration::ExtensionPullMetricExporterConfiguration *model)
201-
const;
202-
203-
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreatePushMetricExporter(
204-
const std::unique_ptr<opentelemetry::sdk::configuration::PushMetricExporterConfiguration>
205-
&model) const;
206-
207-
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreatePullMetricExporter(
208-
const std::unique_ptr<opentelemetry::sdk::configuration::PullMetricExporterConfiguration>
209-
&model) const;
210-
211-
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreatePeriodicMetricReader(
212-
const opentelemetry::sdk::configuration::PeriodicMetricReaderConfiguration *model) const;
213-
214-
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreatePullMetricReader(
215-
const opentelemetry::sdk::configuration::PullMetricReaderConfiguration *model) const;
216-
217-
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreateMetricReader(
218-
const std::unique_ptr<opentelemetry::sdk::configuration::MetricReaderConfiguration> &model)
219-
const;
220-
221-
std::unique_ptr<opentelemetry::sdk::metrics::Base2ExponentialHistogramAggregationConfig>
222-
CreateBase2ExponentialBucketHistogramAggregation(
223-
const opentelemetry::sdk::configuration::
224-
Base2ExponentialBucketHistogramAggregationConfiguration *model) const;
225-
226-
std::unique_ptr<opentelemetry::sdk::metrics::HistogramAggregationConfig>
227-
CreateExplicitBucketHistogramAggregation(
228-
const opentelemetry::sdk::configuration::ExplicitBucketHistogramAggregationConfiguration
229-
*model) const;
230-
231-
std::unique_ptr<opentelemetry::sdk::metrics::AggregationConfig> CreateAggregationConfig(
232-
const std::unique_ptr<opentelemetry::sdk::configuration::AggregationConfiguration> &model,
233-
opentelemetry::sdk::metrics::AggregationType &aggregation_type) const;
234-
235-
std::unique_ptr<opentelemetry::sdk::metrics::AttributesProcessor> CreateAttributesProcessor(
236-
const std::unique_ptr<opentelemetry::sdk::configuration::IncludeExcludeConfiguration> &model)
237-
const;
238-
239-
void AddView(
240-
opentelemetry::sdk::metrics::ViewRegistry *view_registry,
241-
const std::unique_ptr<opentelemetry::sdk::configuration::ViewConfiguration> &model) const;
242-
243-
std::unique_ptr<opentelemetry::sdk::instrumentationscope::ScopeConfigurator<
244-
opentelemetry::sdk::metrics::MeterConfig>>
245-
CreateMeterConfigurator(const std::unique_ptr<MeterConfiguratorConfiguration> &model) const;
246-
247-
std::unique_ptr<opentelemetry::sdk::metrics::MeterProvider> CreateMeterProvider(
248-
const std::unique_ptr<opentelemetry::sdk::configuration::MeterProviderConfiguration> &model,
249-
const opentelemetry::sdk::resource::Resource &resource) const;
250-
251171
std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> CreateOtlpHttpLogRecordExporter(
252172
const opentelemetry::sdk::configuration::OtlpHttpLogRecordExporterConfiguration *model) const;
253173

‎sdk/src/configuration/BUILD‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ cc_library(
2424
"//sdk:headers",
2525
"//sdk/src/common:wildcard_match",
2626
"//sdk/src/logs",
27-
"//sdk/src/metrics",
2827
"//sdk/src/resource",
2928
"//sdk/src/trace",
3029
],
@@ -56,7 +55,10 @@ cc_library(
5655

5756
cc_library(
5857
name = "configuration_metrics_builders",
59-
srcs = ["metrics_builders.cc"],
58+
srcs = [
59+
"metrics_builder_utils.cc",
60+
"metrics_builders.cc",
61+
],
6062
include_prefix = "src/configuration",
6163
deps = [
6264
":configuration_core",

‎sdk/src/configuration/CMakeLists.txt‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ target_include_directories(
2828
target_link_libraries(
2929
opentelemetry_configuration_core
3030
PUBLIC opentelemetry_api opentelemetry_common opentelemetry_resources
31-
opentelemetry_trace opentelemetry_metrics opentelemetry_logs)
31+
opentelemetry_trace opentelemetry_logs)
3232

3333
# Trace SDK component builders
3434
add_library(opentelemetry_configuration_trace_builders trace_builders.cc)
@@ -63,7 +63,8 @@ target_link_libraries(
6363
PUBLIC opentelemetry_logs opentelemetry_configuration_core)
6464

6565
# Metrics SDK component builders
66-
add_library(opentelemetry_configuration_metrics_builders metrics_builders.cc)
66+
add_library(opentelemetry_configuration_metrics_builders
67+
metrics_builder_utils.cc metrics_builders.cc)
6768

6869
set_target_properties(opentelemetry_configuration_metrics_builders
6970
PROPERTIES EXPORT_NAME configuration_metrics_builders)
@@ -93,9 +94,9 @@ target_include_directories(
9394
target_link_libraries(
9495
opentelemetry_configuration_registry_factory
9596
PUBLIC opentelemetry_configuration_core
96-
PRIVATE opentelemetry_configuration_trace_builders
97-
opentelemetry_configuration_metrics_builders
98-
opentelemetry_configuration_logs_builders)
97+
opentelemetry_configuration_trace_builders
98+
opentelemetry_configuration_metrics_builders
99+
opentelemetry_configuration_logs_builders)
99100

100101
if(OPENTELEMETRY_INSTALL)
101102
opentelemetry_add_pkgconfig(

0 commit comments

Comments
 (0)