diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ff4a5224f..58b6b66a2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,10 @@ Increment the: longer injects a default `service.name`, since neither is part of the configuration model. Use the `service` detector or set the attributes in the configuration file instead. + +* [CONFIGURATION/BUILD] Break up OTLP builder utils into gRPC and HTTP utils + [#4533](https://github.com/open-telemetry/opentelemetry-cpp/pull/4533) + * [CONFIGURATION] Add a resource detector extension example [#4419](https://github.com/open-telemetry/opentelemetry-cpp/issues/4419) diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 4354a29fd8..e46dacaa85 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -814,13 +814,32 @@ elif [[ "$1" == "bazel.legacy.test" ]]; then bazel $BAZEL_STARTUP_OPTIONS test $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/otlp/... -//exporters/prometheus/... exit 0 elif [[ "$1" == "bazel.noexcept" ]]; then - # there are some exceptions and error handling code from the Prometheus Client - # as well as Opentracing shim (due to some third party code in its Opentracing dependency) - # that make this test always fail. Ignore these packages in the noexcept test here. - # Set the api:with_cxx_stdlib=none because C++17 std::variant::get<> throws + # The following directories and targets use exceptions and are excluded. + # TODO: create an exception handling policy that defines which components allow excecptions. + + NOEXCEPT_EXCLUDES=( + -//exporters/prometheus/... + -//examples/prometheus/... + -//opentracing-shim/... + -//examples/configuration/... + -//sdk/src/configuration/... + -//sdk/test/configuration/... + -//resource_detectors/... + -//exporters/otlp:otlp_builder_utils + -//exporters/otlp:otlp_grpc_span_exporter_builder + -//exporters/otlp:otlp_grpc_log_record_exporter_builder + -//exporters/otlp:otlp_grpc_metric_exporter_builder + -//exporters/otlp:otlp_http_span_exporter_builder + -//exporters/otlp:otlp_http_log_record_exporter_builder + -//exporters/otlp:otlp_http_metric_exporter_builder + -//exporters/otlp:otlp_file_span_exporter_builder + -//exporters/otlp:otlp_file_log_record_exporter_builder + -//exporters/otlp:otlp_file_metric_exporter_builder + ) - bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions --//api:with_cxx_stdlib=none $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... -//resource_detectors/... - bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions --//api:with_cxx_stdlib=none $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... -//resource_detectors/... + # Set the api:with_cxx_stdlib=none because C++17 std::variant::get<> throws + bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions --//api:with_cxx_stdlib=none $BAZEL_OPTIONS_ASYNC -- //... "${NOEXCEPT_EXCLUDES[@]}" + bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions --//api:with_cxx_stdlib=none $BAZEL_TEST_OPTIONS_ASYNC -- //... "${NOEXCEPT_EXCLUDES[@]}" exit 0 elif [[ "$1" == "bazel.nortti" ]]; then # there are some exceptions and error handling code from the Prometheus Client diff --git a/examples/configuration/custom_log_record_exporter.cc b/examples/configuration/custom_log_record_exporter.cc index 6dc096741a..23322cbba7 100644 --- a/examples/configuration/custom_log_record_exporter.cc +++ b/examples/configuration/custom_log_record_exporter.cc @@ -6,6 +6,7 @@ #include "opentelemetry/sdk/common/exporter_utils.h" #include "opentelemetry/sdk/common/global_log_handler.h" #include "opentelemetry/sdk/logs/read_write_log_record.h" +#include "opentelemetry/sdk/logs/recordable.h" #include "custom_log_record_exporter.h" diff --git a/examples/configuration/custom_log_record_exporter_builder.cc b/examples/configuration/custom_log_record_exporter_builder.cc index 43b79ddd9f..545c926cdf 100644 --- a/examples/configuration/custom_log_record_exporter_builder.cc +++ b/examples/configuration/custom_log_record_exporter_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/sdk/configuration/document_node.h" #include "opentelemetry/sdk/configuration/extension_log_record_exporter_configuration.h" #include "opentelemetry/sdk/configuration/registry.h" +#include "opentelemetry/sdk/logs/exporter.h" #include "custom_log_record_exporter.h" #include "custom_log_record_exporter_builder.h" diff --git a/examples/configuration/custom_log_record_processor_builder.cc b/examples/configuration/custom_log_record_processor_builder.cc index bae53a3ed6..a2f84af516 100644 --- a/examples/configuration/custom_log_record_processor_builder.cc +++ b/examples/configuration/custom_log_record_processor_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/sdk/configuration/document_node.h" #include "opentelemetry/sdk/configuration/extension_log_record_processor_configuration.h" #include "opentelemetry/sdk/configuration/registry.h" +#include "opentelemetry/sdk/logs/processor.h" #include "custom_log_record_processor.h" #include "custom_log_record_processor_builder.h" diff --git a/examples/configuration/custom_pull_metric_exporter_builder.cc b/examples/configuration/custom_pull_metric_exporter_builder.cc index df753b0b64..f2ef58687a 100644 --- a/examples/configuration/custom_pull_metric_exporter_builder.cc +++ b/examples/configuration/custom_pull_metric_exporter_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/sdk/configuration/document_node.h" #include "opentelemetry/sdk/configuration/extension_pull_metric_exporter_configuration.h" #include "opentelemetry/sdk/configuration/registry.h" +#include "opentelemetry/sdk/metrics/metric_reader.h" #include "custom_pull_metric_exporter.h" #include "custom_pull_metric_exporter_builder.h" diff --git a/examples/configuration/custom_push_metric_exporter_builder.cc b/examples/configuration/custom_push_metric_exporter_builder.cc index 90aa5132ed..25967e6ad1 100644 --- a/examples/configuration/custom_push_metric_exporter_builder.cc +++ b/examples/configuration/custom_push_metric_exporter_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/sdk/configuration/document_node.h" #include "opentelemetry/sdk/configuration/extension_push_metric_exporter_configuration.h" #include "opentelemetry/sdk/configuration/registry.h" +#include "opentelemetry/sdk/metrics/push_metric_exporter.h" #include "custom_push_metric_exporter.h" #include "custom_push_metric_exporter_builder.h" diff --git a/examples/configuration/custom_resource_detector_builder.cc b/examples/configuration/custom_resource_detector_builder.cc index f9127a6c0e..0b03eec969 100644 --- a/examples/configuration/custom_resource_detector_builder.cc +++ b/examples/configuration/custom_resource_detector_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/sdk/configuration/document_node.h" #include "opentelemetry/sdk/configuration/extension_resource_detector_configuration.h" #include "opentelemetry/sdk/configuration/registry.h" +#include "opentelemetry/sdk/resource/resource_detector.h" #include "custom_resource_detector.h" #include "custom_resource_detector_builder.h" diff --git a/examples/configuration/custom_sampler_builder.cc b/examples/configuration/custom_sampler_builder.cc index 7c5d98915c..4f6c6a96c9 100644 --- a/examples/configuration/custom_sampler_builder.cc +++ b/examples/configuration/custom_sampler_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/sdk/configuration/document_node.h" #include "opentelemetry/sdk/configuration/extension_sampler_configuration.h" #include "opentelemetry/sdk/configuration/registry.h" +#include "opentelemetry/sdk/trace/sampler.h" #include "custom_sampler.h" #include "custom_sampler_builder.h" diff --git a/examples/configuration/custom_span_exporter.cc b/examples/configuration/custom_span_exporter.cc index e9145f02e0..6863aaeafd 100644 --- a/examples/configuration/custom_span_exporter.cc +++ b/examples/configuration/custom_span_exporter.cc @@ -5,6 +5,7 @@ #include "opentelemetry/sdk/common/exporter_utils.h" #include "opentelemetry/sdk/common/global_log_handler.h" +#include "opentelemetry/sdk/trace/recordable.h" #include "opentelemetry/sdk/trace/span_data.h" #include "custom_span_exporter.h" diff --git a/examples/configuration/custom_span_exporter_builder.cc b/examples/configuration/custom_span_exporter_builder.cc index 72cae15cda..82a565b77b 100644 --- a/examples/configuration/custom_span_exporter_builder.cc +++ b/examples/configuration/custom_span_exporter_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/sdk/configuration/document_node.h" #include "opentelemetry/sdk/configuration/extension_span_exporter_configuration.h" #include "opentelemetry/sdk/configuration/registry.h" +#include "opentelemetry/sdk/trace/exporter.h" #include "custom_span_exporter.h" #include "custom_span_exporter_builder.h" diff --git a/examples/configuration/custom_span_processor_builder.cc b/examples/configuration/custom_span_processor_builder.cc index ce3b61a2e0..70f6d15c17 100644 --- a/examples/configuration/custom_span_processor_builder.cc +++ b/examples/configuration/custom_span_processor_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/sdk/configuration/document_node.h" #include "opentelemetry/sdk/configuration/extension_span_processor_configuration.h" #include "opentelemetry/sdk/configuration/registry.h" +#include "opentelemetry/sdk/trace/processor.h" #include "custom_span_processor.h" #include "custom_span_processor_builder.h" diff --git a/exporters/otlp/BUILD b/exporters/otlp/BUILD index e8a64887c3..ad9ac5d294 100644 --- a/exporters/otlp/BUILD +++ b/exporters/otlp/BUILD @@ -28,6 +28,7 @@ cc_library( ], hdrs = [ "include/opentelemetry/exporters/otlp/otlp_environment.h", + "include/opentelemetry/exporters/otlp/otlp_preferred_temporality.h", ], strip_include_prefix = "include", tags = ["otlp"], @@ -81,8 +82,9 @@ cc_library( strip_include_prefix = "include", tags = ["otlp"], deps = [ - ":otlp_http_client", - ":otlp_recordable", + ":otlp_common", + "//sdk/src/common:global_log_handler", + "//sdk/src/configuration:configuration_core", ], ) @@ -114,6 +116,7 @@ cc_library( deps = [ ":otlp_common", "//ext:headers", + "//sdk:headers", "//sdk/src/common:global_log_handler", "@com_github_grpc_grpc//:grpc++", "@com_github_opentelemetry_proto//:common_proto_cc", @@ -176,6 +179,7 @@ cc_library( "src/otlp_grpc_span_builder.cc", ], hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_grpc_builder_utils.h", "include/opentelemetry/exporters/otlp/otlp_grpc_span_builder.h", ], defines = ["ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW"], @@ -187,6 +191,8 @@ cc_library( deps = [ ":otlp_builder_utils", ":otlp_grpc_exporter", + "//sdk/src/common:global_log_handler", + "//sdk/src/configuration:configuration_core", ], ) @@ -267,6 +273,7 @@ cc_library( "src/otlp_http_span_builder.cc", ], hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_http_builder_utils.h", "include/opentelemetry/exporters/otlp/otlp_http_span_builder.h", ], strip_include_prefix = "include", @@ -277,6 +284,7 @@ cc_library( deps = [ ":otlp_builder_utils", ":otlp_http_exporter", + "//sdk/src/configuration:configuration_core", ], ) @@ -353,6 +361,7 @@ cc_library( ], deps = [ ":otlp_file_exporter", + "//sdk/src/configuration:configuration_core", ], ) @@ -396,6 +405,7 @@ cc_library( "src/otlp_grpc_push_metric_builder.cc", ], hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_grpc_builder_utils.h", "include/opentelemetry/exporters/otlp/otlp_grpc_push_metric_builder.h", ], defines = ["ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW"], @@ -407,6 +417,8 @@ cc_library( deps = [ ":otlp_builder_utils", ":otlp_grpc_metric_exporter", + "//sdk/src/common:global_log_handler", + "//sdk/src/configuration:configuration_core", ], ) @@ -446,6 +458,7 @@ cc_library( "src/otlp_http_push_metric_builder.cc", ], hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_http_builder_utils.h", "include/opentelemetry/exporters/otlp/otlp_http_push_metric_builder.h", ], strip_include_prefix = "include", @@ -456,6 +469,7 @@ cc_library( deps = [ ":otlp_builder_utils", ":otlp_http_metric_exporter", + "//sdk/src/configuration:configuration_core", ], ) @@ -505,6 +519,7 @@ cc_library( deps = [ ":otlp_builder_utils", ":otlp_file_metric_exporter", + "//sdk/src/configuration:configuration_core", ], ) @@ -544,6 +559,7 @@ cc_library( "src/otlp_http_log_record_builder.cc", ], hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_http_builder_utils.h", "include/opentelemetry/exporters/otlp/otlp_http_log_record_builder.h", ], strip_include_prefix = "include", @@ -554,6 +570,7 @@ cc_library( deps = [ ":otlp_builder_utils", ":otlp_http_log_record_exporter", + "//sdk/src/configuration:configuration_core", ], ) @@ -601,8 +618,8 @@ cc_library( "otlp_file_log", ], deps = [ - ":otlp_builder_utils", ":otlp_file_log_record_exporter", + "//sdk/src/configuration:configuration_core", ], ) @@ -645,6 +662,7 @@ cc_library( "src/otlp_grpc_log_record_builder.cc", ], hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_grpc_builder_utils.h", "include/opentelemetry/exporters/otlp/otlp_grpc_log_record_builder.h", ], defines = ["ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW"], @@ -656,6 +674,8 @@ cc_library( deps = [ ":otlp_builder_utils", ":otlp_grpc_log_record_exporter", + "//sdk/src/common:global_log_handler", + "//sdk/src/configuration:configuration_core", ], ) diff --git a/exporters/otlp/CMakeLists.txt b/exporters/otlp/CMakeLists.txt index b63ab23eca..bb2d0c503f 100644 --- a/exporters/otlp/CMakeLists.txt +++ b/exporters/otlp/CMakeLists.txt @@ -76,7 +76,7 @@ target_include_directories( target_link_libraries( opentelemetry_exporter_otlp_builder_utils - PUBLIC opentelemetry_otlp_recordable opentelemetry_configuration_core) + PUBLIC opentelemetry_otlp_common opentelemetry_configuration_core) if(OTELCPP_INSTALL) opentelemetry_add_pkgconfig( @@ -93,8 +93,7 @@ if(OTELCPP_INSTALL) opentelemetry_add_pkgconfig( exporter_otlp_builder_utils "OpenTelemetry OTLP - Builder Utils" - "Common utilities for OTLP exporter builders." - "opentelemetry_otlp_recordable") + "Common utilities for OTLP exporter builders." "opentelemetry_otlp_common") endif() if(OTELCPP_WITH_OTLP_GRPC) @@ -181,10 +180,16 @@ if(OTELCPP_WITH_OTLP_GRPC) PROPERTIES EXPORT_NAME otlp_grpc_exporter_builder) set_target_version(opentelemetry_exporter_otlp_grpc_builder) + target_include_directories( + opentelemetry_exporter_otlp_grpc_builder + PUBLIC "$" + "$") + target_link_libraries( opentelemetry_exporter_otlp_grpc_builder - PUBLIC opentelemetry_exporter_otlp_grpc - PRIVATE opentelemetry_exporter_otlp_builder_utils) + PUBLIC opentelemetry_configuration_core opentelemetry_trace + PRIVATE opentelemetry_exporter_otlp_grpc + opentelemetry_exporter_otlp_builder_utils) list(APPEND OPENTELEMETRY_OTLP_GRPC_BUILDER_TARGETS opentelemetry_exporter_otlp_grpc_builder) @@ -224,10 +229,16 @@ if(OTELCPP_WITH_OTLP_GRPC) PROPERTIES EXPORT_NAME otlp_grpc_log_record_exporter_builder) set_target_version(opentelemetry_exporter_otlp_grpc_log_builder) + target_include_directories( + opentelemetry_exporter_otlp_grpc_log_builder + PUBLIC "$" + "$") + target_link_libraries( opentelemetry_exporter_otlp_grpc_log_builder - PUBLIC opentelemetry_exporter_otlp_grpc_log - PRIVATE opentelemetry_exporter_otlp_builder_utils) + PUBLIC opentelemetry_configuration_core opentelemetry_logs + PRIVATE opentelemetry_exporter_otlp_grpc_log + opentelemetry_exporter_otlp_builder_utils) list(APPEND OPENTELEMETRY_OTLP_GRPC_BUILDER_TARGETS opentelemetry_exporter_otlp_grpc_log_builder) @@ -267,10 +278,16 @@ if(OTELCPP_WITH_OTLP_GRPC) PROPERTIES EXPORT_NAME otlp_grpc_metric_exporter_builder) set_target_version(opentelemetry_exporter_otlp_grpc_metric_builder) + target_include_directories( + opentelemetry_exporter_otlp_grpc_metric_builder + PUBLIC "$" + "$") + target_link_libraries( opentelemetry_exporter_otlp_grpc_metric_builder - PUBLIC opentelemetry_exporter_otlp_grpc_metrics - PRIVATE opentelemetry_exporter_otlp_builder_utils) + PUBLIC opentelemetry_configuration_core opentelemetry_metrics + PRIVATE opentelemetry_exporter_otlp_grpc_metrics + opentelemetry_exporter_otlp_builder_utils) list(APPEND OPENTELEMETRY_OTLP_GRPC_BUILDER_TARGETS opentelemetry_exporter_otlp_grpc_metric_builder) @@ -291,7 +308,7 @@ if(OTELCPP_WITH_OTLP_GRPC) exporter_otlp_grpc_builder "OpenTelemetry OTLP - gRPC Span Builder" "Builder for OTLP gRPC span exporter." - "opentelemetry_exporter_otlp_grpc opentelemetry_exporter_otlp_builder_utils" + "opentelemetry_exporter_otlp_grpc opentelemetry_exporter_otlp_builder_utils opentelemetry_configuration_core" ) opentelemetry_add_pkgconfig( @@ -305,7 +322,7 @@ if(OTELCPP_WITH_OTLP_GRPC) exporter_otlp_grpc_log_builder "OpenTelemetry OTLP - gRPC Log Builder" "Builder for OTLP gRPC log record exporter." - "opentelemetry_exporter_otlp_grpc_log opentelemetry_exporter_otlp_builder_utils" + "opentelemetry_exporter_otlp_grpc_log opentelemetry_exporter_otlp_builder_utils opentelemetry_configuration_core" ) opentelemetry_add_pkgconfig( @@ -319,7 +336,7 @@ if(OTELCPP_WITH_OTLP_GRPC) exporter_otlp_grpc_metric_builder "OpenTelemetry OTLP - gRPC Metric Builder" "Builder for OTLP gRPC metric exporter." - "opentelemetry_exporter_otlp_grpc_metrics opentelemetry_exporter_otlp_builder_utils" + "opentelemetry_exporter_otlp_grpc_metrics opentelemetry_exporter_otlp_builder_utils opentelemetry_configuration_core" ) endif() @@ -390,10 +407,16 @@ if(OTELCPP_WITH_OTLP_HTTP) PROPERTIES EXPORT_NAME otlp_http_exporter_builder) set_target_version(opentelemetry_exporter_otlp_http_builder) + target_include_directories( + opentelemetry_exporter_otlp_http_builder + PUBLIC "$" + "$") + target_link_libraries( opentelemetry_exporter_otlp_http_builder - PUBLIC opentelemetry_exporter_otlp_http - PRIVATE opentelemetry_exporter_otlp_builder_utils) + PUBLIC opentelemetry_configuration_core opentelemetry_trace + PRIVATE opentelemetry_exporter_otlp_http + opentelemetry_exporter_otlp_builder_utils) list(APPEND OPENTELEMETRY_OTLP_HTTP_BUILDER_TARGETS opentelemetry_exporter_otlp_http_builder) @@ -433,10 +456,16 @@ if(OTELCPP_WITH_OTLP_HTTP) PROPERTIES EXPORT_NAME otlp_http_log_record_exporter_builder) set_target_version(opentelemetry_exporter_otlp_http_log_builder) + target_include_directories( + opentelemetry_exporter_otlp_http_log_builder + PUBLIC "$" + "$") + target_link_libraries( opentelemetry_exporter_otlp_http_log_builder - PUBLIC opentelemetry_exporter_otlp_http_log - PRIVATE opentelemetry_exporter_otlp_builder_utils) + PUBLIC opentelemetry_configuration_core opentelemetry_logs + PRIVATE opentelemetry_exporter_otlp_http_log + opentelemetry_exporter_otlp_builder_utils) list(APPEND OPENTELEMETRY_OTLP_HTTP_BUILDER_TARGETS opentelemetry_exporter_otlp_http_log_builder) @@ -476,10 +505,16 @@ if(OTELCPP_WITH_OTLP_HTTP) PROPERTIES EXPORT_NAME otlp_http_metric_exporter_builder) set_target_version(opentelemetry_exporter_otlp_http_metric_builder) + target_include_directories( + opentelemetry_exporter_otlp_http_metric_builder + PUBLIC "$" + "$") + target_link_libraries( opentelemetry_exporter_otlp_http_metric_builder - PUBLIC opentelemetry_exporter_otlp_http_metric - PRIVATE opentelemetry_exporter_otlp_builder_utils) + PUBLIC opentelemetry_configuration_core opentelemetry_metrics + PRIVATE opentelemetry_exporter_otlp_http_metric + opentelemetry_exporter_otlp_builder_utils) list(APPEND OPENTELEMETRY_OTLP_HTTP_BUILDER_TARGETS opentelemetry_exporter_otlp_http_metric_builder) @@ -500,7 +535,7 @@ if(OTELCPP_WITH_OTLP_HTTP) exporter_otlp_http_builder "OpenTelemetry OTLP - HTTP Span Builder" "Builder for OTLP HTTP span exporter." - "opentelemetry_exporter_otlp_http opentelemetry_exporter_otlp_builder_utils" + "opentelemetry_exporter_otlp_http opentelemetry_exporter_otlp_builder_utils opentelemetry_configuration_core" ) opentelemetry_add_pkgconfig( @@ -514,7 +549,7 @@ if(OTELCPP_WITH_OTLP_HTTP) exporter_otlp_http_log_builder "OpenTelemetry OTLP - HTTP Log Builder" "Builder for OTLP HTTP log record exporter." - "opentelemetry_exporter_otlp_http_log opentelemetry_exporter_otlp_builder_utils" + "opentelemetry_exporter_otlp_http_log opentelemetry_exporter_otlp_builder_utils opentelemetry_configuration_core" ) opentelemetry_add_pkgconfig( @@ -528,7 +563,7 @@ if(OTELCPP_WITH_OTLP_HTTP) exporter_otlp_http_metric_builder "OpenTelemetry OTLP - HTTP Metric Builder" "Builder for OTLP HTTP metric exporter." - "opentelemetry_exporter_otlp_http_metric opentelemetry_exporter_otlp_builder_utils" + "opentelemetry_exporter_otlp_http_metric opentelemetry_exporter_otlp_builder_utils opentelemetry_configuration_core" ) endif() @@ -593,10 +628,15 @@ if(OTELCPP_WITH_OTLP_FILE) PROPERTIES EXPORT_NAME otlp_file_exporter_builder) set_target_version(opentelemetry_exporter_otlp_file_builder) + target_include_directories( + opentelemetry_exporter_otlp_file_builder + PUBLIC "$" + "$") + target_link_libraries( opentelemetry_exporter_otlp_file_builder - PUBLIC opentelemetry_exporter_otlp_file - PRIVATE opentelemetry_exporter_otlp_builder_utils) + PUBLIC opentelemetry_configuration_core opentelemetry_trace + PRIVATE opentelemetry_exporter_otlp_file) list(APPEND OPENTELEMETRY_OTLP_FILE_BUILDER_TARGETS opentelemetry_exporter_otlp_file_builder) @@ -636,10 +676,15 @@ if(OTELCPP_WITH_OTLP_FILE) PROPERTIES EXPORT_NAME otlp_file_log_record_exporter_builder) set_target_version(opentelemetry_exporter_otlp_file_log_builder) + target_include_directories( + opentelemetry_exporter_otlp_file_log_builder + PUBLIC "$" + "$") + target_link_libraries( opentelemetry_exporter_otlp_file_log_builder - PUBLIC opentelemetry_exporter_otlp_file_log - PRIVATE opentelemetry_exporter_otlp_builder_utils) + PUBLIC opentelemetry_configuration_core opentelemetry_logs + PRIVATE opentelemetry_exporter_otlp_file_log) list(APPEND OPENTELEMETRY_OTLP_FILE_BUILDER_TARGETS opentelemetry_exporter_otlp_file_log_builder) @@ -679,10 +724,16 @@ if(OTELCPP_WITH_OTLP_FILE) PROPERTIES EXPORT_NAME otlp_file_metric_exporter_builder) set_target_version(opentelemetry_exporter_otlp_file_metric_builder) + target_include_directories( + opentelemetry_exporter_otlp_file_metric_builder + PUBLIC "$" + "$") + target_link_libraries( opentelemetry_exporter_otlp_file_metric_builder - PUBLIC opentelemetry_exporter_otlp_file_metric - PRIVATE opentelemetry_exporter_otlp_builder_utils) + PUBLIC opentelemetry_configuration_core opentelemetry_metrics + PRIVATE opentelemetry_exporter_otlp_file_metric + opentelemetry_exporter_otlp_builder_utils) list(APPEND OPENTELEMETRY_OTLP_FILE_BUILDER_TARGETS opentelemetry_exporter_otlp_file_metric_builder) @@ -700,11 +751,9 @@ if(OTELCPP_WITH_OTLP_FILE) ) opentelemetry_add_pkgconfig( - exporter_otlp_file_builder - "OpenTelemetry OTLP - File Span Builder" + exporter_otlp_file_builder "OpenTelemetry OTLP - File Span Builder" "Builder for OTLP file span exporter." - "opentelemetry_exporter_otlp_file opentelemetry_exporter_otlp_builder_utils" - ) + "opentelemetry_exporter_otlp_file opentelemetry_configuration_core") opentelemetry_add_pkgconfig( exporter_otlp_file_log @@ -714,11 +763,9 @@ if(OTELCPP_WITH_OTLP_FILE) ) opentelemetry_add_pkgconfig( - exporter_otlp_file_log_builder - "OpenTelemetry OTLP - File Log Builder" + exporter_otlp_file_log_builder "OpenTelemetry OTLP - File Log Builder" "Builder for OTLP file log record exporter." - "opentelemetry_exporter_otlp_file_log opentelemetry_exporter_otlp_builder_utils" - ) + "opentelemetry_exporter_otlp_file_log opentelemetry_configuration_core") opentelemetry_add_pkgconfig( exporter_otlp_file_metric @@ -731,7 +778,7 @@ if(OTELCPP_WITH_OTLP_FILE) exporter_otlp_file_metric_builder "OpenTelemetry OTLP - File Metric Builder" "Builder for OTLP file metric exporter." - "opentelemetry_exporter_otlp_file_metric opentelemetry_exporter_otlp_builder_utils" + "opentelemetry_exporter_otlp_file_metric opentelemetry_exporter_otlp_builder_utils opentelemetry_configuration_core" ) endif() diff --git a/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_builder_utils.h b/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_builder_utils.h index 36638fd11a..bc6fa46089 100644 --- a/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_builder_utils.h +++ b/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_builder_utils.h @@ -6,11 +6,8 @@ #include #include "opentelemetry/exporters/otlp/otlp_environment.h" // For OtlpHeaders -#include "opentelemetry/exporters/otlp/otlp_http.h" #include "opentelemetry/exporters/otlp/otlp_preferred_temporality.h" -#include "opentelemetry/sdk/configuration/grpc_tls_configuration.h" #include "opentelemetry/sdk/configuration/headers_configuration.h" -#include "opentelemetry/sdk/configuration/otlp_http_encoding.h" #include "opentelemetry/sdk/configuration/temporality_preference.h" #include "opentelemetry/version.h" @@ -23,18 +20,12 @@ namespace otlp class OtlpBuilderUtils { public: - static HttpRequestContentType ConvertOtlpHttpEncoding( - opentelemetry::sdk::configuration::OtlpHttpEncoding model); - static OtlpHeaders ConvertHeadersConfigurationModel( const opentelemetry::sdk::configuration::HeadersConfiguration *model, const std::string &headers_list); static PreferredAggregationTemporality ConvertTemporalityPreference( opentelemetry::sdk::configuration::TemporalityPreference model); - - static bool GrpcUseSsl(const std::string &endpoint, - const opentelemetry::sdk::configuration::GrpcTlsConfiguration *tls); }; } // namespace otlp diff --git a/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_grpc_builder_utils.h b/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_grpc_builder_utils.h new file mode 100644 index 0000000000..ee809e3682 --- /dev/null +++ b/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_grpc_builder_utils.h @@ -0,0 +1,55 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/common/global_log_handler.h" +#include "opentelemetry/sdk/configuration/grpc_tls_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace exporter +{ +namespace otlp +{ + +class OtlpGrpcBuilderUtils +{ +public: + static bool GrpcUseSsl(const std::string &endpoint, + const opentelemetry::sdk::configuration::GrpcTlsConfiguration *tls) + { + if (endpoint.substr(0, 6) == "https:") + { + return true; + } + + if (endpoint.substr(0, 5) == "http:") + { + if (tls && !tls->insecure) + { + OTEL_INTERNAL_LOG_WARN( + "[Otlp Grpc Exporter] endpoint is http but tls.insecure is false: using insecure " + "connection"); + } + return false; + } + + if (tls != nullptr) + { + return !tls->insecure; + } + + OTEL_INTERNAL_LOG_DEBUG( + "[Otlp Grpc Exporter] endpoint does not specify http or https and tls is not configured. " + "Using secure connection by default. To use an insecure connection, set tls.insecure to " + "true."); + return true; + } +}; + +} // namespace otlp +} // namespace exporter +OPENTELEMETRY_END_NAMESPACE diff --git a/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_http_builder_utils.h b/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_http_builder_utils.h new file mode 100644 index 0000000000..407f31c22a --- /dev/null +++ b/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_http_builder_utils.h @@ -0,0 +1,35 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/exporters/otlp/otlp_http.h" +#include "opentelemetry/sdk/configuration/otlp_http_encoding.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace exporter +{ +namespace otlp +{ + +class OtlpHttpBuilderUtils +{ +public: + static HttpRequestContentType ConvertOtlpHttpEncoding( + opentelemetry::sdk::configuration::OtlpHttpEncoding model) + { + switch (model) + { + case opentelemetry::sdk::configuration::OtlpHttpEncoding::json: + return exporter::otlp::HttpRequestContentType::kJson; + case opentelemetry::sdk::configuration::OtlpHttpEncoding::protobuf: + default: + return exporter::otlp::HttpRequestContentType::kBinary; + } + } +}; + +} // namespace otlp +} // namespace exporter +OPENTELEMETRY_END_NAMESPACE diff --git a/exporters/otlp/src/otlp_builder_utils.cc b/exporters/otlp/src/otlp_builder_utils.cc index cb113334d5..84dd89d52c 100644 --- a/exporters/otlp/src/otlp_builder_utils.cc +++ b/exporters/otlp/src/otlp_builder_utils.cc @@ -8,13 +8,10 @@ #include "opentelemetry/common/kv_properties.h" #include "opentelemetry/exporters/otlp/otlp_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_environment.h" -#include "opentelemetry/exporters/otlp/otlp_http.h" #include "opentelemetry/exporters/otlp/otlp_preferred_temporality.h" #include "opentelemetry/nostd/string_view.h" #include "opentelemetry/sdk/common/global_log_handler.h" -#include "opentelemetry/sdk/configuration/grpc_tls_configuration.h" #include "opentelemetry/sdk/configuration/headers_configuration.h" -#include "opentelemetry/sdk/configuration/otlp_http_encoding.h" #include "opentelemetry/sdk/configuration/temporality_preference.h" #include "opentelemetry/version.h" @@ -24,24 +21,6 @@ namespace exporter namespace otlp { -HttpRequestContentType OtlpBuilderUtils::ConvertOtlpHttpEncoding( - opentelemetry::sdk::configuration::OtlpHttpEncoding model) -{ - auto result = exporter::otlp::HttpRequestContentType::kBinary; - - switch (model) - { - case opentelemetry::sdk::configuration::OtlpHttpEncoding::protobuf: - result = exporter::otlp::HttpRequestContentType::kBinary; - break; - case opentelemetry::sdk::configuration::OtlpHttpEncoding::json: - result = exporter::otlp::HttpRequestContentType::kJson; - break; - } - - return result; -} - OtlpHeaders OtlpBuilderUtils::ConvertHeadersConfigurationModel( const opentelemetry::sdk::configuration::HeadersConfiguration *model, const std::string &headers_list) @@ -119,38 +98,6 @@ PreferredAggregationTemporality OtlpBuilderUtils::ConvertTemporalityPreference( return result; } -bool OtlpBuilderUtils::GrpcUseSsl( - const std::string &endpoint, - const opentelemetry::sdk::configuration::GrpcTlsConfiguration *tls) -{ - if (endpoint.substr(0, 6) == "https:") - { - return true; - } - - if (endpoint.substr(0, 5) == "http:") - { - if (tls && !tls->insecure) - { - OTEL_INTERNAL_LOG_WARN( - "[Otlp Grpc Exporter] endpoint is http but tls.insecure is false: using insecure " - "connection"); - } - return false; - } - - if (tls != nullptr) - { - return !tls->insecure; - } - - OTEL_INTERNAL_LOG_DEBUG( - "[Otlp Grpc Exporter] endpoint does not specify http or https and tls is not configured. " - "Using secure connection by default. To use an insecure connection, set tls.insecure to " - "true."); - return true; -} - } // namespace otlp } // namespace exporter OPENTELEMETRY_END_NAMESPACE diff --git a/exporters/otlp/src/otlp_grpc_log_record_builder.cc b/exporters/otlp/src/otlp_grpc_log_record_builder.cc index 3b774fea97..014b523977 100644 --- a/exporters/otlp/src/otlp_grpc_log_record_builder.cc +++ b/exporters/otlp/src/otlp_grpc_log_record_builder.cc @@ -7,6 +7,7 @@ #include #include "opentelemetry/exporters/otlp/otlp_builder_utils.h" +#include "opentelemetry/exporters/otlp/otlp_grpc_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_grpc_log_record_builder.h" #include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_options.h" @@ -42,7 +43,7 @@ std::unique_ptr OtlpGrpcLogRecordBu options.endpoint = model->endpoint; - options.use_ssl_credentials = OtlpBuilderUtils::GrpcUseSsl(options.endpoint, tls); + options.use_ssl_credentials = OtlpGrpcBuilderUtils::GrpcUseSsl(options.endpoint, tls); if (tls != nullptr) { diff --git a/exporters/otlp/src/otlp_grpc_push_metric_builder.cc b/exporters/otlp/src/otlp_grpc_push_metric_builder.cc index 59fc7efb26..23a758690b 100644 --- a/exporters/otlp/src/otlp_grpc_push_metric_builder.cc +++ b/exporters/otlp/src/otlp_grpc_push_metric_builder.cc @@ -7,6 +7,7 @@ #include #include "opentelemetry/exporters/otlp/otlp_builder_utils.h" +#include "opentelemetry/exporters/otlp/otlp_grpc_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_grpc_metric_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_grpc_metric_exporter_options.h" #include "opentelemetry/exporters/otlp/otlp_grpc_push_metric_builder.h" @@ -49,7 +50,7 @@ std::unique_ptr OtlpGrpcPushMet options.endpoint = model->endpoint; - options.use_ssl_credentials = OtlpBuilderUtils::GrpcUseSsl(options.endpoint, tls); + options.use_ssl_credentials = OtlpGrpcBuilderUtils::GrpcUseSsl(options.endpoint, tls); if (tls != nullptr) { diff --git a/exporters/otlp/src/otlp_grpc_span_builder.cc b/exporters/otlp/src/otlp_grpc_span_builder.cc index ea512109e6..cb36ca76c0 100644 --- a/exporters/otlp/src/otlp_grpc_span_builder.cc +++ b/exporters/otlp/src/otlp_grpc_span_builder.cc @@ -7,6 +7,7 @@ #include #include "opentelemetry/exporters/otlp/otlp_builder_utils.h" +#include "opentelemetry/exporters/otlp/otlp_grpc_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_grpc_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_grpc_exporter_options.h" #include "opentelemetry/exporters/otlp/otlp_grpc_span_builder.h" @@ -42,7 +43,7 @@ std::unique_ptr OtlpGrpcSpanBuilder::Bu options.endpoint = model->endpoint; - options.use_ssl_credentials = OtlpBuilderUtils::GrpcUseSsl(options.endpoint, tls); + options.use_ssl_credentials = OtlpGrpcBuilderUtils::GrpcUseSsl(options.endpoint, tls); if (tls != nullptr) { diff --git a/exporters/otlp/src/otlp_http_log_record_builder.cc b/exporters/otlp/src/otlp_http_log_record_builder.cc index 5d0914db6b..08c50495b5 100644 --- a/exporters/otlp/src/otlp_http_log_record_builder.cc +++ b/exporters/otlp/src/otlp_http_log_record_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/exporters/otlp/otlp_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_http.h" +#include "opentelemetry/exporters/otlp/otlp_http_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_http_log_record_builder.h" #include "opentelemetry/exporters/otlp/otlp_http_log_record_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h" @@ -38,7 +39,7 @@ std::unique_ptr OtlpHttpLogRecordBu const auto *tls = model->tls.get(); options.url = model->endpoint; - options.content_type = OtlpBuilderUtils::ConvertOtlpHttpEncoding(model->encoding); + options.content_type = OtlpHttpBuilderUtils::ConvertOtlpHttpEncoding(model->encoding); options.json_bytes_mapping = JsonBytesMappingKind::kHexId; options.use_json_name = false; options.console_debug = false; diff --git a/exporters/otlp/src/otlp_http_push_metric_builder.cc b/exporters/otlp/src/otlp_http_push_metric_builder.cc index cb380c1a27..6a62bfbb34 100644 --- a/exporters/otlp/src/otlp_http_push_metric_builder.cc +++ b/exporters/otlp/src/otlp_http_push_metric_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/exporters/otlp/otlp_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_http.h" +#include "opentelemetry/exporters/otlp/otlp_http_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_http_metric_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h" #include "opentelemetry/exporters/otlp/otlp_http_push_metric_builder.h" @@ -49,7 +50,7 @@ std::unique_ptr OtlpHttpPushMet const auto *tls = model->tls.get(); options.url = model->endpoint; - options.content_type = OtlpBuilderUtils::ConvertOtlpHttpEncoding(model->encoding); + options.content_type = OtlpHttpBuilderUtils::ConvertOtlpHttpEncoding(model->encoding); options.json_bytes_mapping = JsonBytesMappingKind::kHexId; options.use_json_name = false; options.console_debug = false; diff --git a/exporters/otlp/src/otlp_http_span_builder.cc b/exporters/otlp/src/otlp_http_span_builder.cc index e0a94c2f8f..920b1d898d 100644 --- a/exporters/otlp/src/otlp_http_span_builder.cc +++ b/exporters/otlp/src/otlp_http_span_builder.cc @@ -8,6 +8,7 @@ #include "opentelemetry/exporters/otlp/otlp_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_http.h" +#include "opentelemetry/exporters/otlp/otlp_http_builder_utils.h" #include "opentelemetry/exporters/otlp/otlp_http_exporter_factory.h" #include "opentelemetry/exporters/otlp/otlp_http_exporter_options.h" #include "opentelemetry/exporters/otlp/otlp_http_span_builder.h" @@ -38,7 +39,7 @@ std::unique_ptr OtlpHttpSpanBuilder::Bu const auto *tls = model->tls.get(); options.url = model->endpoint; - options.content_type = OtlpBuilderUtils::ConvertOtlpHttpEncoding(model->encoding); + options.content_type = OtlpHttpBuilderUtils::ConvertOtlpHttpEncoding(model->encoding); options.json_bytes_mapping = JsonBytesMappingKind::kHexId; options.use_json_name = false; options.console_debug = false; diff --git a/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt b/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt index 1cee07979f..45f4e3f274 100644 --- a/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt +++ b/install/test/cmake/component_tests/exporters_otlp_common/CMakeLists.txt @@ -18,6 +18,7 @@ add_executable(exporters_otlp_common_test target_link_libraries( exporters_otlp_common_test PRIVATE opentelemetry-cpp::otlp_common opentelemetry-cpp::proto - opentelemetry-cpp::otlp_recordable GTest::gtest GTest::gtest_main) + opentelemetry-cpp::otlp_recordable + opentelemetry-cpp::otlp_builder_utils GTest::gtest GTest::gtest_main) gtest_discover_tests(exporters_otlp_common_test) diff --git a/install/test/src/test_exporters_otlp_common.cc b/install/test/src/test_exporters_otlp_common.cc index b63025bf53..0e6a940527 100644 --- a/install/test/src/test_exporters_otlp_common.cc +++ b/install/test/src/test_exporters_otlp_common.cc @@ -17,6 +17,7 @@ #include "opentelemetry/exporters/otlp/protobuf_include_suffix.h" // IWYU pragma: keep // clang-format on +#include #include #include #include @@ -165,3 +166,22 @@ TEST(ExportersOtlpCommon, ExportMetricsServiceRequest) EXPECT_EQ("scope_key", scope_attributes_proto.key()); EXPECT_EQ("scope_value", scope_attributes_proto.value().string_value()); } + +TEST(ExportersOtlpCommon, OtlpBuilderUtilsConvertHeadersConfigurationModel) +{ + opentelemetry::sdk::configuration::HeadersConfiguration headers_config; + headers_config.kv_map["k1"] = "v1"; + + auto headers = + otlp_exporter::OtlpBuilderUtils::ConvertHeadersConfigurationModel(&headers_config, "k2=v2"); + + ASSERT_EQ(headers.size(), 2); +} + +TEST(ExportersOtlpCommon, OtlpBuilderUtilsConvertTemporalityPreference) +{ + auto temporality = otlp_exporter::OtlpBuilderUtils::ConvertTemporalityPreference( + opentelemetry::sdk::configuration::TemporalityPreference::delta); + + EXPECT_EQ(temporality, otlp_exporter::PreferredAggregationTemporality::kDelta); +} diff --git a/install/test/src/test_exporters_otlp_grpc.cc b/install/test/src/test_exporters_otlp_grpc.cc index e0360c1647..faa7979c06 100644 --- a/install/test/src/test_exporters_otlp_grpc.cc +++ b/install/test/src/test_exporters_otlp_grpc.cc @@ -8,6 +8,9 @@ #include #include +#include +#include + #include #include #include @@ -97,3 +100,14 @@ TEST(ExportersOtlpGrpcBuilderInstall, OtlpGrpcLogRecordBuilder) auto exporter = builder->Build(&model); ASSERT_TRUE(exporter != nullptr); } + +TEST(ExportersOtlpGrpcBuilderInstall, OtlpGrpcBuilderUtilsGrpcUseSsl) +{ + opentelemetry::sdk::configuration::GrpcTlsConfiguration tls; + tls.insecure = true; + + EXPECT_FALSE(opentelemetry::exporter::otlp::OtlpGrpcBuilderUtils::GrpcUseSsl( + "http://localhost:4317", &tls)); + EXPECT_TRUE(opentelemetry::exporter::otlp::OtlpGrpcBuilderUtils::GrpcUseSsl( + "https://localhost:4317", &tls)); +} diff --git a/install/test/src/test_exporters_otlp_http.cc b/install/test/src/test_exporters_otlp_http.cc index 4c6a4c4469..bf6584f760 100644 --- a/install/test/src/test_exporters_otlp_http.cc +++ b/install/test/src/test_exporters_otlp_http.cc @@ -7,6 +7,8 @@ #include #include +#include + #include #include #include @@ -83,3 +85,15 @@ TEST(ExportersOtlpHttpBuilderInstall, OtlpHttpLogRecordBuilder) auto exporter = builder->Build(&model); ASSERT_TRUE(exporter != nullptr); } + +TEST(ExportersOtlpHttpBuilderInstall, OtlpHttpBuilderUtilsConvertOtlpHttpEncoding) +{ + using opentelemetry::exporter::otlp::HttpRequestContentType; + using opentelemetry::exporter::otlp::OtlpHttpBuilderUtils; + using opentelemetry::sdk::configuration::OtlpHttpEncoding; + + EXPECT_EQ(OtlpHttpBuilderUtils::ConvertOtlpHttpEncoding(OtlpHttpEncoding::json), + HttpRequestContentType::kJson); + EXPECT_EQ(OtlpHttpBuilderUtils::ConvertOtlpHttpEncoding(OtlpHttpEncoding::protobuf), + HttpRequestContentType::kBinary); +}