Skip to content

Commit a620801

Browse files
committed
merged from upstream
2 parents 44b498f + 31f78c5 commit a620801

24 files changed

+579
-308
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ Increment the:
3232
* [BUILD] Upgrade to opentelemetry-proto 1.8.0
3333
[#3730](https://github.com/open-telemetry/opentelemetry-cpp/pull/3730)
3434

35+
* [CONFIGURATION] File configuration - tls
36+
[#3726](https://github.com/open-telemetry/opentelemetry-cpp/pull/3726)
37+
3538
New Features:
3639

3740
* [CONFIGURATION] Implement declarative configuration (config.yaml)

exporters/otlp/include/opentelemetry/exporters/otlp/otlp_builder_utils.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "opentelemetry/exporters/otlp/otlp_environment.h" // For OtlpHeaders
99
#include "opentelemetry/exporters/otlp/otlp_http.h"
1010
#include "opentelemetry/exporters/otlp/otlp_preferred_temporality.h"
11+
#include "opentelemetry/sdk/configuration/grpc_tls_configuration.h"
1112
#include "opentelemetry/sdk/configuration/headers_configuration.h"
1213
#include "opentelemetry/sdk/configuration/otlp_http_encoding.h"
1314
#include "opentelemetry/sdk/configuration/temporality_preference.h"
@@ -31,6 +32,9 @@ class OtlpBuilderUtils
3132

3233
static PreferredAggregationTemporality ConvertTemporalityPreference(
3334
opentelemetry::sdk::configuration::TemporalityPreference model);
35+
36+
static bool GrpcUseSsl(const std::string &endpoint,
37+
const opentelemetry::sdk::configuration::GrpcTlsConfiguration *tls);
3438
};
3539

3640
} // namespace otlp

exporters/otlp/src/otlp_builder_utils.cc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "opentelemetry/exporters/otlp/otlp_preferred_temporality.h"
1313
#include "opentelemetry/nostd/string_view.h"
1414
#include "opentelemetry/sdk/common/global_log_handler.h"
15+
#include "opentelemetry/sdk/configuration/grpc_tls_configuration.h"
1516
#include "opentelemetry/sdk/configuration/headers_configuration.h"
1617
#include "opentelemetry/sdk/configuration/otlp_http_encoding.h"
1718
#include "opentelemetry/sdk/configuration/temporality_preference.h"
@@ -118,6 +119,28 @@ PreferredAggregationTemporality OtlpBuilderUtils::ConvertTemporalityPreference(
118119
return result;
119120
}
120121

122+
bool OtlpBuilderUtils::GrpcUseSsl(
123+
const std::string &endpoint,
124+
const opentelemetry::sdk::configuration::GrpcTlsConfiguration *tls)
125+
{
126+
if (endpoint.substr(0, 6) == "https:")
127+
{
128+
return true;
129+
}
130+
131+
if (endpoint.substr(0, 5) == "http:")
132+
{
133+
return false;
134+
}
135+
136+
if (tls != nullptr)
137+
{
138+
return !tls->insecure;
139+
}
140+
141+
return true;
142+
}
143+
121144
} // namespace otlp
122145
} // namespace exporter
123146
OPENTELEMETRY_END_NAMESPACE

exporters/otlp/src/otlp_grpc_log_record_builder.cc

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "opentelemetry/exporters/otlp/otlp_grpc_log_record_builder.h"
1111
#include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_factory.h"
1212
#include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_options.h"
13+
#include "opentelemetry/sdk/configuration/grpc_tls_configuration.h"
1314
#include "opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_builder.h"
1415
#include "opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h"
1516
#include "opentelemetry/sdk/configuration/registry.h"
@@ -33,14 +34,20 @@ std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> OtlpGrpcLogRecordBu
3334
{
3435
OtlpGrpcLogRecordExporterOptions options(nullptr);
3536

36-
options.endpoint = model->endpoint;
37-
options.use_ssl_credentials = !model->insecure;
37+
const auto *tls = model->tls.get();
3838

39-
options.ssl_credentials_cacert_path = model->certificate_file;
39+
options.endpoint = model->endpoint;
40+
41+
options.use_ssl_credentials = OtlpBuilderUtils::GrpcUseSsl(options.endpoint, tls);
42+
43+
if (tls != nullptr)
44+
{
45+
options.ssl_credentials_cacert_path = tls->certificate_file;
4046
#ifdef ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW
41-
options.ssl_client_key_path = model->client_key_file;
42-
options.ssl_client_cert_path = model->client_certificate_file;
47+
options.ssl_client_key_path = tls->client_key_file;
48+
options.ssl_client_cert_path = tls->client_certificate_file;
4349
#endif
50+
}
4451

4552
options.timeout = std::chrono::duration_cast<std::chrono::system_clock::duration>(
4653
std::chrono::seconds{model->timeout});

exporters/otlp/src/otlp_grpc_push_metric_builder.cc

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "opentelemetry/exporters/otlp/otlp_grpc_metric_exporter_factory.h"
1111
#include "opentelemetry/exporters/otlp/otlp_grpc_metric_exporter_options.h"
1212
#include "opentelemetry/exporters/otlp/otlp_grpc_push_metric_builder.h"
13+
#include "opentelemetry/sdk/configuration/grpc_tls_configuration.h"
1314
#include "opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_builder.h"
1415
#include "opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h"
1516
#include "opentelemetry/sdk/configuration/registry.h"
@@ -33,14 +34,20 @@ std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> OtlpGrpcPushMet
3334
{
3435
OtlpGrpcMetricExporterOptions options(nullptr);
3536

36-
options.endpoint = model->endpoint;
37-
options.use_ssl_credentials = !model->insecure;
37+
const auto *tls = model->tls.get();
3838

39-
options.ssl_credentials_cacert_path = model->certificate_file;
39+
options.endpoint = model->endpoint;
40+
41+
options.use_ssl_credentials = OtlpBuilderUtils::GrpcUseSsl(options.endpoint, tls);
42+
43+
if (tls != nullptr)
44+
{
45+
options.ssl_credentials_cacert_path = tls->certificate_file;
4046
#ifdef ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW
41-
options.ssl_client_key_path = model->client_key_file;
42-
options.ssl_client_cert_path = model->client_certificate_file;
47+
options.ssl_client_key_path = tls->client_key_file;
48+
options.ssl_client_cert_path = tls->client_certificate_file;
4349
#endif
50+
}
4451

4552
options.timeout = std::chrono::duration_cast<std::chrono::system_clock::duration>(
4653
std::chrono::seconds{model->timeout});

exporters/otlp/src/otlp_grpc_span_builder.cc

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "opentelemetry/exporters/otlp/otlp_grpc_exporter_factory.h"
1111
#include "opentelemetry/exporters/otlp/otlp_grpc_exporter_options.h"
1212
#include "opentelemetry/exporters/otlp/otlp_grpc_span_builder.h"
13+
#include "opentelemetry/sdk/configuration/grpc_tls_configuration.h"
1314
#include "opentelemetry/sdk/configuration/otlp_grpc_span_exporter_builder.h"
1415
#include "opentelemetry/sdk/configuration/otlp_grpc_span_exporter_configuration.h"
1516
#include "opentelemetry/sdk/configuration/registry.h"
@@ -33,14 +34,20 @@ std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> OtlpGrpcSpanBuilder::Bu
3334
{
3435
OtlpGrpcExporterOptions options(nullptr);
3536

36-
options.endpoint = model->endpoint;
37-
options.use_ssl_credentials = !model->insecure;
37+
const auto *tls = model->tls.get();
3838

39-
options.ssl_credentials_cacert_path = model->certificate_file;
39+
options.endpoint = model->endpoint;
40+
41+
options.use_ssl_credentials = OtlpBuilderUtils::GrpcUseSsl(options.endpoint, tls);
42+
43+
if (tls != nullptr)
44+
{
45+
options.ssl_credentials_cacert_path = tls->certificate_file;
4046
#ifdef ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW
41-
options.ssl_client_key_path = model->client_key_file;
42-
options.ssl_client_cert_path = model->client_certificate_file;
47+
options.ssl_client_key_path = tls->client_key_file;
48+
options.ssl_client_cert_path = tls->client_certificate_file;
4349
#endif
50+
}
4451

4552
options.timeout = std::chrono::duration_cast<std::chrono::system_clock::duration>(
4653
std::chrono::seconds{model->timeout});

exporters/otlp/src/otlp_http_log_record_builder.cc

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "opentelemetry/exporters/otlp/otlp_http_log_record_builder.h"
1212
#include "opentelemetry/exporters/otlp/otlp_http_log_record_exporter_factory.h"
1313
#include "opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h"
14+
#include "opentelemetry/sdk/configuration/http_tls_configuration.h"
1415
#include "opentelemetry/sdk/configuration/otlp_http_log_record_exporter_builder.h"
1516
#include "opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h"
1617
#include "opentelemetry/sdk/configuration/registry.h"
@@ -34,6 +35,8 @@ std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> OtlpHttpLogRecordBu
3435
{
3536
OtlpHttpLogRecordExporterOptions options(nullptr);
3637

38+
const auto *tls = model->tls.get();
39+
3740
options.url = model->endpoint;
3841
options.content_type = OtlpBuilderUtils::ConvertOtlpHttpEncoding(model->encoding);
3942
options.json_bytes_mapping = JsonBytesMappingKind::kHexId;
@@ -44,10 +47,15 @@ std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> OtlpHttpLogRecordBu
4447
options.http_headers =
4548
OtlpBuilderUtils::ConvertHeadersConfigurationModel(model->headers.get(), model->headers_list);
4649
options.ssl_insecure_skip_verify = false;
47-
options.ssl_ca_cert_path = model->certificate_file;
48-
options.ssl_client_key_path = model->client_key_file;
49-
options.ssl_client_cert_path = model->client_certificate_file;
50-
options.compression = model->compression;
50+
51+
if (tls != nullptr)
52+
{
53+
options.ssl_ca_cert_path = tls->certificate_file;
54+
options.ssl_client_key_path = tls->client_key_file;
55+
options.ssl_client_cert_path = tls->client_certificate_file;
56+
}
57+
58+
options.compression = model->compression;
5159

5260
return OtlpHttpLogRecordExporterFactory::Create(options);
5361
}

exporters/otlp/src/otlp_http_push_metric_builder.cc

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "opentelemetry/exporters/otlp/otlp_http_metric_exporter_factory.h"
1212
#include "opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h"
1313
#include "opentelemetry/exporters/otlp/otlp_http_push_metric_builder.h"
14+
#include "opentelemetry/sdk/configuration/http_tls_configuration.h"
1415
#include "opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_builder.h"
1516
#include "opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h"
1617
#include "opentelemetry/sdk/configuration/registry.h"
@@ -34,6 +35,8 @@ std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> OtlpHttpPushMet
3435
{
3536
OtlpHttpMetricExporterOptions options(nullptr);
3637

38+
const auto *tls = model->tls.get();
39+
3740
options.url = model->endpoint;
3841
options.content_type = OtlpBuilderUtils::ConvertOtlpHttpEncoding(model->encoding);
3942
options.json_bytes_mapping = JsonBytesMappingKind::kHexId;
@@ -46,10 +49,15 @@ std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> OtlpHttpPushMet
4649
options.aggregation_temporality =
4750
OtlpBuilderUtils::ConvertTemporalityPreference(model->temporality_preference);
4851
options.ssl_insecure_skip_verify = false;
49-
options.ssl_ca_cert_path = model->certificate_file;
50-
options.ssl_client_key_path = model->client_key_file;
51-
options.ssl_client_cert_path = model->client_certificate_file;
52-
options.compression = model->compression;
52+
53+
if (tls != nullptr)
54+
{
55+
options.ssl_ca_cert_path = tls->certificate_file;
56+
options.ssl_client_key_path = tls->client_key_file;
57+
options.ssl_client_cert_path = tls->client_certificate_file;
58+
}
59+
60+
options.compression = model->compression;
5361

5462
return OtlpHttpMetricExporterFactory::Create(options);
5563
}

exporters/otlp/src/otlp_http_span_builder.cc

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "opentelemetry/exporters/otlp/otlp_http_exporter_factory.h"
1212
#include "opentelemetry/exporters/otlp/otlp_http_exporter_options.h"
1313
#include "opentelemetry/exporters/otlp/otlp_http_span_builder.h"
14+
#include "opentelemetry/sdk/configuration/http_tls_configuration.h"
1415
#include "opentelemetry/sdk/configuration/otlp_http_span_exporter_builder.h"
1516
#include "opentelemetry/sdk/configuration/otlp_http_span_exporter_configuration.h"
1617
#include "opentelemetry/sdk/configuration/registry.h"
@@ -34,6 +35,8 @@ std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> OtlpHttpSpanBuilder::Bu
3435
{
3536
OtlpHttpExporterOptions options(nullptr);
3637

38+
const auto *tls = model->tls.get();
39+
3740
options.url = model->endpoint;
3841
options.content_type = OtlpBuilderUtils::ConvertOtlpHttpEncoding(model->encoding);
3942
options.json_bytes_mapping = JsonBytesMappingKind::kHexId;
@@ -44,10 +47,15 @@ std::unique_ptr<opentelemetry::sdk::trace::SpanExporter> OtlpHttpSpanBuilder::Bu
4447
options.http_headers =
4548
OtlpBuilderUtils::ConvertHeadersConfigurationModel(model->headers.get(), model->headers_list);
4649
options.ssl_insecure_skip_verify = false;
47-
options.ssl_ca_cert_path = model->certificate_file;
48-
options.ssl_client_key_path = model->client_key_file;
49-
options.ssl_client_cert_path = model->client_certificate_file;
50-
options.compression = model->compression;
50+
51+
if (tls != nullptr)
52+
{
53+
options.ssl_ca_cert_path = tls->certificate_file;
54+
options.ssl_client_key_path = tls->client_key_file;
55+
options.ssl_client_cert_path = tls->client_certificate_file;
56+
}
57+
58+
options.compression = model->compression;
5159

5260
return OtlpHttpExporterFactory::Create(options);
5361
}

0 commit comments

Comments
 (0)