1
#pragma once
2

            
3
#include <string>
4

            
5
#include "envoy/extensions/tracers/opentelemetry/resource_detectors/v3/environment_resource_detector.pb.h"
6

            
7
#include "source/extensions/tracers/opentelemetry/resource_detectors/resource_detector.h"
8

            
9
namespace Envoy {
10
namespace Extensions {
11
namespace Tracers {
12
namespace OpenTelemetry {
13

            
14
/**
15
 * Config registration for the Environment resource detector. @see ResourceDetectorFactory.
16
 */
17
class EnvironmentResourceDetectorFactory : public ResourceDetectorFactory {
18
public:
19
  /**
20
   * @brief Create a Resource Detector that reads from the OTEL_RESOURCE_ATTRIBUTES
21
   * environment variable.
22
   *
23
   * @param message The resource detector configuration.
24
   * @param context The tracer factory context.
25
   * @return ResourceDetectorPtr
26
   */
27
  ResourceDetectorPtr
28
  createResourceDetector(const Protobuf::Message& message,
29
                         Server::Configuration::ServerFactoryContext& context) override;
30

            
31
4
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
32
4
    return std::make_unique<envoy::extensions::tracers::opentelemetry::resource_detectors::v3::
33
4
                                EnvironmentResourceDetectorConfig>();
34
4
  }
35

            
36
7
  std::string name() const override {
37
7
    return "envoy.tracers.opentelemetry.resource_detectors.environment";
38
7
  }
39
};
40

            
41
DECLARE_FACTORY(EnvironmentResourceDetectorFactory);
42

            
43
} // namespace OpenTelemetry
44
} // namespace Tracers
45
} // namespace Extensions
46
} // namespace Envoy