1
#pragma once
2

            
3
#include <string>
4

            
5
#include "envoy/extensions/tracers/opentelemetry/resource_detectors/v3/dynatrace_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 Dynatrace resource detector. @see ResourceDetectorFactory.
16
 */
17
class DynatraceResourceDetectorFactory : public ResourceDetectorFactory {
18
public:
19
  /**
20
   * @brief Creates a Resource Detector that reads from the Dynatrace enrichment files.
21
   *
22
   * @see
23
   * https://docs.dynatrace.com/docs/shortlink/enrichment-files#oneagent-virtual-files
24
   *
25
   * @param message The resource detector configuration.
26
   * @param context The tracer factory context.
27
   * @return ResourceDetectorPtr
28
   */
29
  ResourceDetectorPtr
30
  createResourceDetector(const Protobuf::Message& message,
31
                         Server::Configuration::ServerFactoryContext& context) override;
32

            
33
5
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
34
5
    return std::make_unique<envoy::extensions::tracers::opentelemetry::resource_detectors::v3::
35
5
                                DynatraceResourceDetectorConfig>();
36
5
  }
37

            
38
14
  std::string name() const override {
39
14
    return "envoy.tracers.opentelemetry.resource_detectors.dynatrace";
40
14
  }
41
};
42

            
43
DECLARE_FACTORY(DynatraceResourceDetectorFactory);
44

            
45
} // namespace OpenTelemetry
46
} // namespace Tracers
47
} // namespace Extensions
48
} // namespace Envoy