Skip to content

Commit 73473ef

Browse files
committed
exporters, use model parameters.
1 parent c9e4d27 commit 73473ef

23 files changed

+421
-32
lines changed

exporters/otlp/CMakeLists.txt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,25 @@ target_link_libraries(opentelemetry_otlp_recordable PUBLIC opentelemetry_logs)
3535
target_link_libraries(opentelemetry_otlp_recordable
3636
PUBLIC opentelemetry_metrics)
3737

38+
#
39+
# opentelemetry_exporter_otlp_builder_utils
40+
#
41+
42+
add_library(opentelemetry_exporter_otlp_builder_utils
43+
${OPENTELEMETRY_OTLP_TARGETS_LIB_TYPE} src/otlp_builder_utils.cc)
44+
45+
set_target_properties(opentelemetry_exporter_otlp_builder_utils
46+
PROPERTIES EXPORT_NAME otlp_builder_utils)
47+
set_target_version(opentelemetry_exporter_otlp_builder_utils)
48+
49+
target_include_directories(
50+
opentelemetry_exporter_otlp_builder_utils
51+
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
52+
"$<INSTALL_INTERFACE:include>")
53+
54+
target_link_libraries(opentelemetry_exporter_otlp_builder_utils
55+
PUBLIC opentelemetry_otlp_recordable)
56+
3857
if(WITH_OTLP_GRPC)
3958
if(NOT DEFINED grpc_lib_type)
4059
message(
@@ -275,6 +294,8 @@ if(WITH_OTLP_HTTP)
275294

276295
target_link_libraries(opentelemetry_exporter_otlp_http_builder
277296
PUBLIC opentelemetry_exporter_otlp_http)
297+
target_link_libraries(opentelemetry_exporter_otlp_http_builder
298+
PUBLIC opentelemetry_exporter_otlp_builder_utils)
278299

279300
list(APPEND OPENTELEMETRY_OTLP_HTTP_BUILDER_TARGETS
280301
opentelemetry_exporter_otlp_http_builder)
@@ -316,6 +337,8 @@ if(WITH_OTLP_HTTP)
316337

317338
target_link_libraries(opentelemetry_exporter_otlp_http_log_builder
318339
PUBLIC opentelemetry_exporter_otlp_http_log)
340+
target_link_libraries(opentelemetry_exporter_otlp_http_log_builder
341+
PUBLIC opentelemetry_exporter_otlp_builder_utils)
319342

320343
list(APPEND OPENTELEMETRY_OTLP_HTTP_BUILDER_TARGETS
321344
opentelemetry_exporter_otlp_http_log_builder)
@@ -357,6 +380,8 @@ if(WITH_OTLP_HTTP)
357380

358381
target_link_libraries(opentelemetry_exporter_otlp_http_metric_builder
359382
PUBLIC opentelemetry_exporter_otlp_http_metric)
383+
target_link_libraries(opentelemetry_exporter_otlp_http_metric_builder
384+
PUBLIC opentelemetry_exporter_otlp_builder_utils)
360385

361386
list(APPEND OPENTELEMETRY_OTLP_HTTP_BUILDER_TARGETS
362387
opentelemetry_exporter_otlp_http_metric_builder)
@@ -528,6 +553,9 @@ otel_add_component(
528553
PATTERN
529554
"*.h"
530555
PATTERN
556+
"otlp_builder_utils*.h"
557+
EXCLUDE
558+
PATTERN
531559
"otlp_http*.h"
532560
EXCLUDE
533561
PATTERN
@@ -537,6 +565,19 @@ otel_add_component(
537565
"otlp_file*.h"
538566
EXCLUDE)
539567

568+
otel_add_component(
569+
COMPONENT
570+
exporter_otlp_builder_utils
571+
TARGETS
572+
opentelemetry_exporter_otlp_builder_utils
573+
FILES_DIRECTORY
574+
"include/opentelemetry/exporters/otlp"
575+
FILES_DESTINATION
576+
"include/opentelemetry/exporters"
577+
FILES_MATCHING
578+
PATTERN
579+
"otlp_builder_utils.h")
580+
540581
if(WITH_OTLP_GRPC)
541582
otel_add_component(
542583
COMPONENT
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/exporters/otlp/otlp_environment.h" // For OtlpHeaders
9+
#include "opentelemetry/exporters/otlp/otlp_http.h"
10+
#include "opentelemetry/exporters/otlp/otlp_preferred_temporality.h"
11+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
12+
#include "opentelemetry/sdk/configuration/otlp_http_encoding.h"
13+
#include "opentelemetry/sdk/configuration/temporality_preference.h"
14+
#include "opentelemetry/version.h"
15+
16+
OPENTELEMETRY_BEGIN_NAMESPACE
17+
namespace exporter
18+
{
19+
namespace otlp
20+
{
21+
22+
class OtlpBuilderUtils
23+
{
24+
public:
25+
static HttpRequestContentType ConvertOtlpHttpEncoding(
26+
opentelemetry::sdk::configuration::OtlpHttpEncoding model);
27+
28+
static OtlpHeaders ConvertHeadersConfigurationModel(
29+
const opentelemetry::sdk::configuration::HeadersConfiguration *model,
30+
const std::string &headers_list);
31+
32+
static PreferredAggregationTemporality ConvertTemporalityPreference(
33+
opentelemetry::sdk::configuration::TemporalityPreference model);
34+
};
35+
36+
} // namespace otlp
37+
} // namespace exporter
38+
OPENTELEMETRY_END_NAMESPACE

exporters/otlp/include/opentelemetry/exporters/otlp/otlp_grpc_exporter_options.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ namespace otlp
2323
*/
2424
struct OPENTELEMETRY_EXPORT OtlpGrpcExporterOptions : public OtlpGrpcClientOptions
2525
{
26+
/** Lookup environment variables. */
2627
OtlpGrpcExporterOptions();
28+
/** No defaults. */
29+
OtlpGrpcExporterOptions(void *);
2730
OtlpGrpcExporterOptions(const OtlpGrpcExporterOptions &) = default;
2831
OtlpGrpcExporterOptions(OtlpGrpcExporterOptions &&) = default;
2932
OtlpGrpcExporterOptions &operator=(const OtlpGrpcExporterOptions &) = default;

exporters/otlp/include/opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_options.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ namespace otlp
2323
*/
2424
struct OPENTELEMETRY_EXPORT OtlpGrpcLogRecordExporterOptions : public OtlpGrpcClientOptions
2525
{
26+
/** Lookup environment variables. */
2627
OtlpGrpcLogRecordExporterOptions();
28+
/** No defaults. */
29+
OtlpGrpcLogRecordExporterOptions(void *);
2730
OtlpGrpcLogRecordExporterOptions(const OtlpGrpcLogRecordExporterOptions &) = default;
2831
OtlpGrpcLogRecordExporterOptions(OtlpGrpcLogRecordExporterOptions &&) = default;
2932
OtlpGrpcLogRecordExporterOptions &operator=(const OtlpGrpcLogRecordExporterOptions &) = default;

exporters/otlp/include/opentelemetry/exporters/otlp/otlp_grpc_metric_exporter_options.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ namespace otlp
2424
*/
2525
struct OPENTELEMETRY_EXPORT OtlpGrpcMetricExporterOptions : public OtlpGrpcClientOptions
2626
{
27+
/** Lookup environment variables. */
2728
OtlpGrpcMetricExporterOptions();
29+
/** No defaults. */
30+
OtlpGrpcMetricExporterOptions(void *);
2831
OtlpGrpcMetricExporterOptions(const OtlpGrpcMetricExporterOptions &) = default;
2932
OtlpGrpcMetricExporterOptions(OtlpGrpcMetricExporterOptions &&) = default;
3033
OtlpGrpcMetricExporterOptions &operator=(const OtlpGrpcMetricExporterOptions &) = default;

exporters/otlp/include/opentelemetry/exporters/otlp/otlp_http_exporter_options.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ struct OPENTELEMETRY_EXPORT OtlpHttpExporterOptions
3535
/** Lookup environment variables. */
3636
OtlpHttpExporterOptions();
3737
/** No defaults. */
38-
OtlpHttpExporterOptions(void * /* raw */);
38+
OtlpHttpExporterOptions(void *);
3939
OtlpHttpExporterOptions(const OtlpHttpExporterOptions &) = default;
4040
OtlpHttpExporterOptions(OtlpHttpExporterOptions &&) = default;
4141
OtlpHttpExporterOptions &operator=(const OtlpHttpExporterOptions &) = default;

exporters/otlp/include/opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ namespace otlp
3232
*/
3333
struct OPENTELEMETRY_EXPORT OtlpHttpLogRecordExporterOptions
3434
{
35+
/** Lookup environment variables. */
3536
OtlpHttpLogRecordExporterOptions();
37+
/** No defaults. */
38+
OtlpHttpLogRecordExporterOptions(void *);
3639
OtlpHttpLogRecordExporterOptions(const OtlpHttpLogRecordExporterOptions &) = default;
3740
OtlpHttpLogRecordExporterOptions(OtlpHttpLogRecordExporterOptions &&) = default;
3841
OtlpHttpLogRecordExporterOptions &operator=(const OtlpHttpLogRecordExporterOptions &) = default;

exporters/otlp/include/opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ namespace otlp
3333
*/
3434
struct OPENTELEMETRY_EXPORT OtlpHttpMetricExporterOptions
3535
{
36+
/** Lookup environment variables. */
3637
OtlpHttpMetricExporterOptions();
38+
/** No defaults. */
39+
OtlpHttpMetricExporterOptions(void *);
3740
OtlpHttpMetricExporterOptions(const OtlpHttpMetricExporterOptions &) = default;
3841
OtlpHttpMetricExporterOptions(OtlpHttpMetricExporterOptions &&) = default;
3942
OtlpHttpMetricExporterOptions &operator=(const OtlpHttpMetricExporterOptions &) = default;
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include "opentelemetry/exporters/otlp/otlp_builder_utils.h"
5+
#include "opentelemetry/common/kv_properties.h"
6+
#include "opentelemetry/sdk/common/global_log_handler.h"
7+
#include "opentelemetry/version.h"
8+
9+
OPENTELEMETRY_BEGIN_NAMESPACE
10+
namespace exporter
11+
{
12+
namespace otlp
13+
{
14+
15+
HttpRequestContentType OtlpBuilderUtils::ConvertOtlpHttpEncoding(
16+
opentelemetry::sdk::configuration::OtlpHttpEncoding model)
17+
{
18+
auto result = exporter::otlp::HttpRequestContentType::kBinary;
19+
20+
switch (model)
21+
{
22+
case opentelemetry::sdk::configuration::OtlpHttpEncoding::protobuf:
23+
result = exporter::otlp::HttpRequestContentType::kBinary;
24+
case opentelemetry::sdk::configuration::OtlpHttpEncoding::json:
25+
result = exporter::otlp::HttpRequestContentType::kJson;
26+
}
27+
28+
return result;
29+
}
30+
31+
OtlpHeaders OtlpBuilderUtils::ConvertHeadersConfigurationModel(
32+
const opentelemetry::sdk::configuration::HeadersConfiguration *model,
33+
const std::string &headers_list)
34+
{
35+
OtlpHeaders headers;
36+
37+
// First, scan headers_list, which has low priority.
38+
if (headers_list.size() > 0)
39+
{
40+
opentelemetry::common::KeyValueStringTokenizer tokenizer{headers_list};
41+
42+
opentelemetry::nostd::string_view header_key;
43+
opentelemetry::nostd::string_view header_value;
44+
bool header_valid = true;
45+
46+
while (tokenizer.next(header_valid, header_key, header_value))
47+
{
48+
if (header_valid)
49+
{
50+
std::string key(header_key);
51+
std::string value(header_value);
52+
53+
if (headers.find(key) == headers.end())
54+
{
55+
headers.emplace(std::make_pair(std::move(key), std::move(value)));
56+
}
57+
else
58+
{
59+
OTEL_INTERNAL_LOG_WARN("Found duplicate key in headers_list");
60+
}
61+
}
62+
else
63+
{
64+
OTEL_INTERNAL_LOG_WARN("Found invalid key/value pair in headers_list");
65+
}
66+
}
67+
}
68+
69+
// Second, scan headers, which has high priority.
70+
for (const auto &kv : model->kv_map)
71+
{
72+
const auto &search = headers.find(kv.first);
73+
if (search != headers.end())
74+
{
75+
headers.erase(search);
76+
}
77+
78+
headers.emplace(std::make_pair(kv.first, kv.second));
79+
}
80+
81+
return headers;
82+
}
83+
84+
PreferredAggregationTemporality OtlpBuilderUtils::ConvertTemporalityPreference(
85+
opentelemetry::sdk::configuration::TemporalityPreference model)
86+
{
87+
auto result = exporter::otlp::PreferredAggregationTemporality::kCumulative;
88+
89+
switch (model)
90+
{
91+
case opentelemetry::sdk::configuration::TemporalityPreference::cumulative:
92+
result = exporter::otlp::PreferredAggregationTemporality::kCumulative;
93+
case opentelemetry::sdk::configuration::TemporalityPreference::delta:
94+
result = exporter::otlp::PreferredAggregationTemporality::kDelta;
95+
case opentelemetry::sdk::configuration::TemporalityPreference::low_memory:
96+
result = exporter::otlp::PreferredAggregationTemporality::kLowMemory;
97+
}
98+
99+
return result;
100+
}
101+
102+
} // namespace otlp
103+
} // namespace exporter
104+
OPENTELEMETRY_END_NAMESPACE

exporters/otlp/src/otlp_file_log_record_builder.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> OtlpFileLogRecordBu
2929
const opentelemetry::sdk::configuration::OtlpFileLogRecordExporterConfiguration * /* model */)
3030
const
3131
{
32-
// FIXME, use model
3332
OtlpFileLogRecordExporterOptions options;
33+
34+
// FIXME: unclear how to map model->output_stream to a OtlpFileClientBackendOptions
35+
3436
return OtlpFileLogRecordExporterFactory::Create(options);
3537
}
3638

0 commit comments

Comments
 (0)