Skip to content

Commit e27bbf1

Browse files
committed
[CONFIGURATION] File configuration - sdk builder
1 parent 5423b91 commit e27bbf1

File tree

6 files changed

+2208
-1
lines changed

6 files changed

+2208
-1
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/context/propagation/text_map_propagator.h"
9+
#include "opentelemetry/sdk/configuration/configuration.h"
10+
#include "opentelemetry/sdk/configuration/registry.h"
11+
#include "opentelemetry/sdk/logs/logger_provider.h"
12+
#include "opentelemetry/sdk/metrics/meter_provider.h"
13+
#include "opentelemetry/sdk/resource/resource.h"
14+
#include "opentelemetry/sdk/trace/tracer_provider.h"
15+
#include "opentelemetry/version.h"
16+
17+
OPENTELEMETRY_BEGIN_NAMESPACE
18+
namespace sdk
19+
{
20+
namespace configuration
21+
{
22+
23+
class ConfiguredSdk
24+
{
25+
public:
26+
static std::unique_ptr<ConfiguredSdk> Create(
27+
std::shared_ptr<Registry> registry,
28+
const std::unique_ptr<opentelemetry::sdk::configuration::Configuration> &model);
29+
30+
ConfiguredSdk() : resource(opentelemetry::sdk::resource::Resource::GetEmpty()) {}
31+
32+
void Install();
33+
void UnInstall();
34+
35+
opentelemetry::sdk::resource::Resource resource;
36+
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> tracer_provider;
37+
std::shared_ptr<opentelemetry::context::propagation::TextMapPropagator> propagator;
38+
std::shared_ptr<opentelemetry::sdk::metrics::MeterProvider> meter_provider;
39+
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> logger_provider;
40+
};
41+
42+
} // namespace configuration
43+
} // namespace sdk
44+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 271 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,271 @@
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/always_off_sampler_configuration.h"
9+
#include "opentelemetry/sdk/configuration/base2_exponential_bucket_histogram_aggregation_configuration.h"
10+
#include "opentelemetry/sdk/configuration/batch_log_record_processor_configuration.h"
11+
#include "opentelemetry/sdk/configuration/batch_span_processor_configuration.h"
12+
#include "opentelemetry/sdk/configuration/boolean_array_attribute_value_configuration.h"
13+
#include "opentelemetry/sdk/configuration/boolean_attribute_value_configuration.h"
14+
#include "opentelemetry/sdk/configuration/configuration.h"
15+
#include "opentelemetry/sdk/configuration/configured_sdk.h"
16+
#include "opentelemetry/sdk/configuration/console_log_record_exporter_configuration.h"
17+
#include "opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h"
18+
#include "opentelemetry/sdk/configuration/double_array_attribute_value_configuration.h"
19+
#include "opentelemetry/sdk/configuration/double_attribute_value_configuration.h"
20+
#include "opentelemetry/sdk/configuration/explicit_bucket_histogram_aggregation_configuration.h"
21+
#include "opentelemetry/sdk/configuration/extension_pull_metric_exporter_configuration.h"
22+
#include "opentelemetry/sdk/configuration/extension_push_metric_exporter_configuration.h"
23+
#include "opentelemetry/sdk/configuration/extension_span_exporter_configuration.h"
24+
#include "opentelemetry/sdk/configuration/extension_span_processor_configuration.h"
25+
#include "opentelemetry/sdk/configuration/integer_array_attribute_value_configuration.h"
26+
#include "opentelemetry/sdk/configuration/integer_attribute_value_configuration.h"
27+
#include "opentelemetry/sdk/configuration/metric_reader_configuration.h"
28+
#include "opentelemetry/sdk/configuration/otlp_file_log_record_exporter_configuration.h"
29+
#include "opentelemetry/sdk/configuration/otlp_file_push_metric_exporter_configuration.h"
30+
#include "opentelemetry/sdk/configuration/otlp_file_span_exporter_configuration.h"
31+
#include "opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h"
32+
#include "opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h"
33+
#include "opentelemetry/sdk/configuration/otlp_grpc_span_exporter_configuration.h"
34+
#include "opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h"
35+
#include "opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h"
36+
#include "opentelemetry/sdk/configuration/otlp_http_span_exporter_configuration.h"
37+
#include "opentelemetry/sdk/configuration/periodic_metric_reader_configuration.h"
38+
#include "opentelemetry/sdk/configuration/prometheus_pull_metric_exporter_configuration.h"
39+
#include "opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h"
40+
#include "opentelemetry/sdk/configuration/pull_metric_reader_configuration.h"
41+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
42+
#include "opentelemetry/sdk/configuration/registry.h"
43+
#include "opentelemetry/sdk/configuration/simple_span_processor_configuration.h"
44+
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
45+
#include "opentelemetry/sdk/configuration/string_array_attribute_value_configuration.h"
46+
#include "opentelemetry/sdk/configuration/string_attribute_value_configuration.h"
47+
#include "opentelemetry/sdk/configuration/zipkin_span_exporter_configuration.h"
48+
#include "opentelemetry/sdk/logs/exporter.h"
49+
#include "opentelemetry/sdk/logs/logger_provider.h"
50+
#include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader.h"
51+
#include "opentelemetry/sdk/metrics/meter_provider.h"
52+
#include "opentelemetry/sdk/metrics/push_metric_exporter.h"
53+
#include "opentelemetry/sdk/trace/exporter.h"
54+
#include "opentelemetry/sdk/trace/processor.h"
55+
#include "opentelemetry/sdk/trace/sampler.h"
56+
#include "opentelemetry/sdk/trace/tracer_provider.h"
57+
#include "opentelemetry/trace/tracer_provider.h"
58+
#include "opentelemetry/version.h"
59+
60+
OPENTELEMETRY_BEGIN_NAMESPACE
61+
namespace sdk
62+
{
63+
namespace configuration
64+
{
65+
66+
class SdkBuilder
67+
{
68+
public:
69+
SdkBuilder(std::shared_ptr<Registry> registry) : registry_(std::move(registry)) {}
70+
SdkBuilder(SdkBuilder &&) = default;
71+
SdkBuilder(const SdkBuilder &) = default;
72+
SdkBuilder &operator=(SdkBuilder &&) = default;
73+
SdkBuilder &operator=(const SdkBuilder &other) = default;
74+
~SdkBuilder() = default;
75+
76+
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateAlwaysOffSampler(
77+
const opentelemetry::sdk::configuration::AlwaysOffSamplerConfiguration *model) const;
78+
79+
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateAlwaysOnSampler(
80+
const opentelemetry::sdk::configuration::AlwaysOnSamplerConfiguration *model) const;
81+
82+
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateJaegerRemoteSampler(
83+
const opentelemetry::sdk::configuration::JaegerRemoteSamplerConfiguration *model) const;
84+
85+
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateParentBasedSampler(
86+
const opentelemetry::sdk::configuration::ParentBasedSamplerConfiguration *model) const;
87+
88+
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateTraceIdRatioBasedSampler(
89+
const opentelemetry::sdk::configuration::TraceIdRatioBasedSamplerConfiguration *model) const;
90+
91+
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateExtensionSampler(
92+
const opentelemetry::sdk::configuration::ExtensionSamplerConfiguration *model) const;
93+
94+
std::unique_ptr<opentelemetry::sdk::trace::Sampler> CreateSampler(
95+
const std::unique_ptr<opentelemetry::sdk::configuration::SamplerConfiguration> &model) const;
96+
97+
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateOtlpHttpSpanExporter(
98+
const opentelemetry::sdk::configuration::OtlpHttpSpanExporterConfiguration *model) const;
99+
100+
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateOtlpGrpcSpanExporter(
101+
const opentelemetry::sdk::configuration::OtlpGrpcSpanExporterConfiguration *model) const;
102+
103+
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateOtlpFileSpanExporter(
104+
const opentelemetry::sdk::configuration::OtlpFileSpanExporterConfiguration *model) const;
105+
106+
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateConsoleSpanExporter(
107+
const opentelemetry::sdk::configuration::ConsoleSpanExporterConfiguration *model) const;
108+
109+
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateZipkinSpanExporter(
110+
const opentelemetry::sdk::configuration::ZipkinSpanExporterConfiguration *model) const;
111+
112+
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateExtensionSpanExporter(
113+
const opentelemetry::sdk::configuration::ExtensionSpanExporterConfiguration *model) const;
114+
115+
std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> CreateSpanExporter(
116+
const std::unique_ptr<opentelemetry::sdk::configuration::SpanExporterConfiguration> &model)
117+
const;
118+
119+
std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor> CreateBatchSpanProcessor(
120+
const opentelemetry::sdk::configuration::BatchSpanProcessorConfiguration *model) const;
121+
122+
std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor> CreateSimpleSpanProcessor(
123+
const opentelemetry::sdk::configuration::SimpleSpanProcessorConfiguration *model) const;
124+
125+
std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor> CreateExtensionSpanProcessor(
126+
const opentelemetry::sdk::configuration::ExtensionSpanProcessorConfiguration *model) const;
127+
128+
std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor> CreateSpanProcessor(
129+
const std::unique_ptr<opentelemetry::sdk::configuration::SpanProcessorConfiguration> &model)
130+
const;
131+
132+
std::unique_ptr<opentelemetry::sdk::trace::TracerProvider> CreateTracerProvider(
133+
const std::unique_ptr<opentelemetry::sdk::configuration::TracerProviderConfiguration> &model,
134+
const opentelemetry::sdk::resource::Resource &resource) const;
135+
136+
std::unique_ptr<opentelemetry::context::propagation::TextMapPropagator> CreateTextMapPropagator(
137+
const std::string &name) const;
138+
139+
std::unique_ptr<opentelemetry::context::propagation::TextMapPropagator> CreatePropagator(
140+
const std::unique_ptr<opentelemetry::sdk::configuration::PropagatorConfiguration> &model)
141+
const;
142+
143+
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreateOtlpHttpPushMetricExporter(
144+
const opentelemetry::sdk::configuration::OtlpHttpPushMetricExporterConfiguration *model)
145+
const;
146+
147+
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreateOtlpGrpcPushMetricExporter(
148+
const opentelemetry::sdk::configuration::OtlpGrpcPushMetricExporterConfiguration *model)
149+
const;
150+
151+
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreateOtlpFilePushMetricExporter(
152+
const opentelemetry::sdk::configuration::OtlpFilePushMetricExporterConfiguration *model)
153+
const;
154+
155+
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreateConsolePushMetricExporter(
156+
const opentelemetry::sdk::configuration::ConsolePushMetricExporterConfiguration *model) const;
157+
158+
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
159+
CreateExtensionPushMetricExporter(
160+
const opentelemetry::sdk::configuration::ExtensionPushMetricExporterConfiguration *model)
161+
const;
162+
163+
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreatePrometheusPullMetricExporter(
164+
const opentelemetry::sdk::configuration::PrometheusPullMetricExporterConfiguration *model)
165+
const;
166+
167+
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreateExtensionPullMetricExporter(
168+
const opentelemetry::sdk::configuration::ExtensionPullMetricExporterConfiguration *model)
169+
const;
170+
171+
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> CreatePushMetricExporter(
172+
const std::unique_ptr<opentelemetry::sdk::configuration::PushMetricExporterConfiguration>
173+
&model) const;
174+
175+
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreatePullMetricExporter(
176+
const std::unique_ptr<opentelemetry::sdk::configuration::PullMetricExporterConfiguration>
177+
&model) const;
178+
179+
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreatePeriodicMetricReader(
180+
const opentelemetry::sdk::configuration::PeriodicMetricReaderConfiguration *model) const;
181+
182+
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreatePullMetricReader(
183+
const opentelemetry::sdk::configuration::PullMetricReaderConfiguration *model) const;
184+
185+
std::unique_ptr<opentelemetry::sdk::metrics::MetricReader> CreateMetricReader(
186+
const std::unique_ptr<opentelemetry::sdk::configuration::MetricReaderConfiguration> &model)
187+
const;
188+
189+
std::unique_ptr<opentelemetry::sdk::metrics::Base2ExponentialHistogramAggregationConfig>
190+
CreateBase2ExponentialBucketHistogramAggregation(
191+
const opentelemetry::sdk::configuration::
192+
Base2ExponentialBucketHistogramAggregationConfiguration *model) const;
193+
194+
std::unique_ptr<opentelemetry::sdk::metrics::HistogramAggregationConfig>
195+
CreateExplicitBucketHistogramAggregation(
196+
const opentelemetry::sdk::configuration::ExplicitBucketHistogramAggregationConfiguration
197+
*model) const;
198+
199+
std::unique_ptr<opentelemetry::sdk::metrics::AggregationConfig> CreateAggregationConfig(
200+
const std::unique_ptr<opentelemetry::sdk::configuration::AggregationConfiguration> &model,
201+
opentelemetry::sdk::metrics::AggregationType &aggregation_type) const;
202+
203+
std::unique_ptr<opentelemetry::sdk::metrics::AttributesProcessor> CreateAttributesProcessor(
204+
const std::unique_ptr<opentelemetry::sdk::configuration::IncludeExcludeConfiguration> &model)
205+
const;
206+
207+
void AddView(
208+
opentelemetry::sdk::metrics::ViewRegistry *view_registry,
209+
const std::unique_ptr<opentelemetry::sdk::configuration::ViewConfiguration> &model) const;
210+
211+
std::unique_ptr<opentelemetry::sdk::metrics::MeterProvider> CreateMeterProvider(
212+
const std::unique_ptr<opentelemetry::sdk::configuration::MeterProviderConfiguration> &model,
213+
const opentelemetry::sdk::resource::Resource &resource) const;
214+
215+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> CreateOtlpHttpLogRecordExporter(
216+
const opentelemetry::sdk::configuration::OtlpHttpLogRecordExporterConfiguration *model) const;
217+
218+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> CreateOtlpGrpcLogRecordExporter(
219+
const opentelemetry::sdk::configuration::OtlpGrpcLogRecordExporterConfiguration *model) const;
220+
221+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> CreateOtlpFileLogRecordExporter(
222+
const opentelemetry::sdk::configuration::OtlpFileLogRecordExporterConfiguration *model) const;
223+
224+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> CreateConsoleLogRecordExporter(
225+
const opentelemetry::sdk::configuration::ConsoleLogRecordExporterConfiguration *model) const;
226+
227+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> CreateExtensionLogRecordExporter(
228+
const opentelemetry::sdk::configuration::ExtensionLogRecordExporterConfiguration *model)
229+
const;
230+
231+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> CreateLogRecordExporter(
232+
const std::unique_ptr<opentelemetry::sdk::configuration::LogRecordExporterConfiguration>
233+
&model) const;
234+
235+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor> CreateBatchLogRecordProcessor(
236+
const opentelemetry::sdk::configuration::BatchLogRecordProcessorConfiguration *model) const;
237+
238+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor> CreateSimpleLogRecordProcessor(
239+
const opentelemetry::sdk::configuration::SimpleLogRecordProcessorConfiguration *model) const;
240+
241+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor> CreateExtensionLogRecordProcessor(
242+
const opentelemetry::sdk::configuration::ExtensionLogRecordProcessorConfiguration *model)
243+
const;
244+
245+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor> CreateLogRecordProcessor(
246+
const std::unique_ptr<opentelemetry::sdk::configuration::LogRecordProcessorConfiguration>
247+
&model) const;
248+
249+
std::unique_ptr<opentelemetry::sdk::logs::LoggerProvider> CreateLoggerProvider(
250+
const std::unique_ptr<opentelemetry::sdk::configuration::LoggerProviderConfiguration> &model,
251+
const opentelemetry::sdk::resource::Resource &resource) const;
252+
253+
void SetResourceAttribute(
254+
opentelemetry::sdk::resource::ResourceAttributes &resource_attributes,
255+
const std::string &name,
256+
const opentelemetry::sdk::configuration::AttributeValueConfiguration *model) const;
257+
258+
void SetResource(opentelemetry::sdk::resource::Resource &resource,
259+
const std::unique_ptr<opentelemetry::sdk::configuration::ResourceConfiguration>
260+
&opt_model) const;
261+
262+
std::unique_ptr<ConfiguredSdk> CreateConfiguredSdk(
263+
const std::unique_ptr<opentelemetry::sdk::configuration::Configuration> &model) const;
264+
265+
private:
266+
std::shared_ptr<Registry> registry_;
267+
};
268+
269+
} // namespace configuration
270+
} // namespace sdk
271+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <stdexcept>
7+
#include <string>
8+
9+
#include "opentelemetry/version.h"
10+
11+
OPENTELEMETRY_BEGIN_NAMESPACE
12+
namespace sdk
13+
{
14+
namespace configuration
15+
{
16+
17+
class UnsupportedException : public std::runtime_error
18+
{
19+
public:
20+
UnsupportedException(const std::string &msg) : std::runtime_error(msg) {}
21+
UnsupportedException(UnsupportedException &&) = default;
22+
UnsupportedException(const UnsupportedException &) = default;
23+
UnsupportedException &operator=(UnsupportedException &&) = default;
24+
UnsupportedException &operator=(const UnsupportedException &other) = default;
25+
~UnsupportedException() override = default;
26+
};
27+
28+
} // namespace configuration
29+
} // namespace sdk
30+
OPENTELEMETRY_END_NAMESPACE

sdk/include/opentelemetry/sdk/configuration/view_selector_configuration.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
#pragma once
55

66
#include <cstdint>
7-
#include <memory>
87
#include <string>
98

109
#include "opentelemetry/sdk/configuration/instrument_type.h"

0 commit comments

Comments
 (0)