6262#include " opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h"
6363#include " opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h"
6464#include " opentelemetry/sdk/configuration/otlp_grpc_span_exporter_configuration.h"
65+ #include " opentelemetry/sdk/configuration/otlp_http_encoding.h"
6566#include " opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h"
6667#include " opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h"
6768#include " opentelemetry/sdk/configuration/otlp_http_span_exporter_configuration.h"
@@ -101,6 +102,22 @@ namespace configuration
101102// FIXME: proper sizing
102103constexpr size_t MAX_SAMPLER_DEPTH = 10 ;
103104
105+ static OtlpHttpEncoding ParseOtlpHttpEncoding (const std::string &name)
106+ {
107+ if (name == " protobuf" )
108+ {
109+ return OtlpHttpEncoding::protobuf;
110+ }
111+
112+ if (name == " json" )
113+ {
114+ return OtlpHttpEncoding::json;
115+ }
116+
117+ OTEL_INTERNAL_LOG_ERROR (" OtlpHttpEncoding: name = " << name);
118+ throw InvalidSchemaException (" Illegal OtlpHttpEncoding" );
119+ }
120+
104121static std::unique_ptr<StringArrayConfiguration> ParseStringArrayConfiguration (
105122 const std::unique_ptr<DocumentNode> &node)
106123{
@@ -199,7 +216,9 @@ ParseOtlpHttpLogRecordExporterConfiguration(const std::unique_ptr<DocumentNode>
199216 model->headers_list = node->GetString (" headers_list" , " " );
200217 model->compression = node->GetString (" compression" , " " );
201218 model->timeout = node->GetInteger (" timeout" , 10000 );
202- // FIXME: encoding
219+
220+ std::string encoding = node->GetString (" encoding" , " protobuf" );
221+ model->encoding = ParseOtlpHttpEncoding (encoding);
203222
204223 return model;
205224}
@@ -487,13 +506,17 @@ ParseOtlpHttpPushMetricExporterConfiguration(const std::unique_ptr<DocumentNode>
487506 model->compression = node->GetString (" compression" , " " );
488507 model->timeout = node->GetInteger (" timeout" , 10000 );
489508
490- std::string temporality_preference = node->GetString (" temporality_preference" , " " );
509+ std::string temporality_preference = node->GetString (" temporality_preference" , " cumulative " );
491510 model->temporality_preference = ParseTemporalityPreference (temporality_preference);
492511
493- std::string default_histogram_aggregation = node->GetString (" default_histogram_aggregation" , " " );
512+ std::string default_histogram_aggregation =
513+ node->GetString (" default_histogram_aggregation" , " explicit_bucket_histogram" );
494514 model->default_histogram_aggregation =
495515 ParseDefaultHistogramAggregation (default_histogram_aggregation);
496516
517+ std::string encoding = node->GetString (" encoding" , " protobuf" );
518+ model->encoding = ParseOtlpHttpEncoding (encoding);
519+
497520 return model;
498521}
499522
@@ -519,10 +542,11 @@ ParseOtlpGrpcPushMetricExporterConfiguration(const std::unique_ptr<DocumentNode>
519542 model->compression = node->GetString (" compression" , " " );
520543 model->timeout = node->GetInteger (" timeout" , 10000 );
521544
522- std::string temporality_preference = node->GetString (" temporality_preference" , " " );
545+ std::string temporality_preference = node->GetString (" temporality_preference" , " cumulative " );
523546 model->temporality_preference = ParseTemporalityPreference (temporality_preference);
524547
525- std::string default_histogram_aggregation = node->GetString (" default_histogram_aggregation" , " " );
548+ std::string default_histogram_aggregation =
549+ node->GetString (" default_histogram_aggregation" , " explicit_bucket_histogram" );
526550 model->default_histogram_aggregation =
527551 ParseDefaultHistogramAggregation (default_histogram_aggregation);
528552
@@ -540,10 +564,11 @@ ParseOtlpFilePushMetricExporterConfiguration(const std::unique_ptr<DocumentNode>
540564
541565 model->output_stream = node->GetString (" output_stream" , " " );
542566
543- std::string temporality_preference = node->GetString (" temporality_preference" , " " );
567+ std::string temporality_preference = node->GetString (" temporality_preference" , " cumulative " );
544568 model->temporality_preference = ParseTemporalityPreference (temporality_preference);
545569
546- std::string default_histogram_aggregation = node->GetString (" default_histogram_aggregation" , " " );
570+ std::string default_histogram_aggregation =
571+ node->GetString (" default_histogram_aggregation" , " explicit_bucket_histogram" );
547572 model->default_histogram_aggregation =
548573 ParseDefaultHistogramAggregation (default_histogram_aggregation);
549574
@@ -556,6 +581,8 @@ ParseConsolePushMetricExporterConfiguration(const std::unique_ptr<DocumentNode>
556581 std::unique_ptr<ConsolePushMetricExporterConfiguration> model (
557582 new ConsolePushMetricExporterConfiguration);
558583
584+ // FIXME-CONFIG: https://github.com/open-telemetry/opentelemetry-configuration/issues/242
585+
559586 return model;
560587}
561588
@@ -845,8 +872,8 @@ ParseBase2ExponentialBucketHistogramAggregationConfiguration(
845872 std::unique_ptr<Base2ExponentialBucketHistogramAggregationConfiguration> model (
846873 new Base2ExponentialBucketHistogramAggregationConfiguration);
847874
848- model->max_scale = node->GetInteger (" max_scale" , 0 ); // FIXME: default ?
849- model->max_size = node->GetInteger (" max_size" , 0 ); // FIXME: default ?
875+ model->max_scale = node->GetInteger (" max_scale" , 20 );
876+ model->max_size = node->GetInteger (" max_size" , 160 );
850877 model->record_min_max = node->GetBoolean (" record_min_max" , true );
851878
852879 return model;
@@ -971,11 +998,20 @@ static std::unique_ptr<MeterProviderConfiguration> ParseMeterProviderConfigurati
971998 model->readers .push_back (ParseMetricReaderConfiguration (*it));
972999 }
9731000
974- child = node->GetRequiredChildNode (" views" );
1001+ if (model->readers .size () == 0 )
1002+ {
1003+ OTEL_INTERNAL_LOG_ERROR (" ParseMeterProviderConfiguration: 0 readers " );
1004+ throw InvalidSchemaException (" Illegal readers" );
1005+ }
9751006
976- for (auto it = child->begin (); it != child->end (); ++it)
1007+ child = node->GetChildNode (" views" );
1008+
1009+ if (child != nullptr )
9771010 {
978- model->views .push_back (ParseViewConfiguration (*it));
1011+ for (auto it = child->begin (); it != child->end (); ++it)
1012+ {
1013+ model->views .push_back (ParseViewConfiguration (*it));
1014+ }
9791015 }
9801016
9811017 return model;
@@ -1047,6 +1083,7 @@ static std::unique_ptr<JaegerRemoteSamplerConfiguration> ParseJaegerRemoteSample
10471083 std::unique_ptr<DocumentNode> child;
10481084
10491085 // Unclear if endpoint and interval are required/optional
1086+ // FIXME-CONFIG: https://github.com/open-telemetry/opentelemetry-configuration/issues/238
10501087 OTEL_INTERNAL_LOG_ERROR (" JaegerRemoteSamplerConfiguration: FIXME" );
10511088
10521089 model->endpoint = node->GetString (" endpoint" , " FIXME" );
@@ -1213,6 +1250,9 @@ static std::unique_ptr<OtlpHttpSpanExporterConfiguration> ParseOtlpHttpSpanExpor
12131250 model->compression = node->GetString (" compression" , " " );
12141251 model->timeout = node->GetInteger (" timeout" , 10000 );
12151252
1253+ std::string encoding = node->GetString (" encoding" , " protobuf" );
1254+ model->encoding = ParseOtlpHttpEncoding (encoding);
1255+
12161256 return model;
12171257}
12181258
0 commit comments