Line data Source code
1 : #pragma once 2 : 3 : #include "envoy/config/trace/v3/opentelemetry.pb.h" 4 : 5 : #include "source/extensions/tracers/opentelemetry/resource_detectors/resource_detector.h" 6 : 7 : namespace Envoy { 8 : namespace Extensions { 9 : namespace Tracers { 10 : namespace OpenTelemetry { 11 : 12 : constexpr absl::string_view kServiceNameKey = "service.name"; 13 : constexpr absl::string_view kDefaultServiceName = "unknown_service:envoy"; 14 : 15 : class ResourceProvider : public Logger::Loggable<Logger::Id::tracing> { 16 : public: 17 0 : virtual ~ResourceProvider() = default; 18 : 19 : /** 20 : * @brief Iterates through all loaded resource detectors and merge all the returned 21 : * resources into one. Resource merging is done according to the OpenTelemetry 22 : * resource SDK specification. @see 23 : * https://github.com/open-telemetry/opentelemetry-specification/blob/v1.24.0/specification/resource/sdk.md#merge. 24 : * 25 : * @param opentelemetry_config The OpenTelemetry configuration, which contains the configured 26 : * resource detectors. 27 : * @param context The tracer factory context. 28 : * @return Resource const The merged resource. 29 : */ 30 : virtual Resource 31 : getResource(const envoy::config::trace::v3::OpenTelemetryConfig& opentelemetry_config, 32 : Server::Configuration::TracerFactoryContext& context) const PURE; 33 : }; 34 : 35 : class ResourceProviderImpl : public ResourceProvider { 36 : public: 37 : Resource getResource(const envoy::config::trace::v3::OpenTelemetryConfig& opentelemetry_config, 38 : Server::Configuration::TracerFactoryContext& context) const override; 39 : }; 40 : 41 : } // namespace OpenTelemetry 42 : } // namespace Tracers 43 : } // namespace Extensions 44 : } // namespace Envoy