1
#include "source/extensions/tracers/opentelemetry/resource_detectors/dynatrace/config.h"
2

            
3
#include "envoy/extensions/tracers/opentelemetry/resource_detectors/v3/dynatrace_resource_detector.pb.h"
4
#include "envoy/extensions/tracers/opentelemetry/resource_detectors/v3/dynatrace_resource_detector.pb.validate.h"
5

            
6
#include "source/common/config/utility.h"
7
#include "source/extensions/tracers/opentelemetry/resource_detectors/dynatrace/dynatrace_metadata_file_reader.h"
8
#include "source/extensions/tracers/opentelemetry/resource_detectors/dynatrace/dynatrace_resource_detector.h"
9

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

            
15
ResourceDetectorPtr DynatraceResourceDetectorFactory::createResourceDetector(
16
2
    const Protobuf::Message& message, Server::Configuration::ServerFactoryContext& context) {
17

            
18
2
  auto mptr = Envoy::Config::Utility::translateAnyToFactoryConfig(
19
2
      dynamic_cast<const Protobuf::Any&>(message), context.messageValidationVisitor(), *this);
20

            
21
2
  const auto& proto_config = MessageUtil::downcastAndValidate<
22
2
      const envoy::extensions::tracers::opentelemetry::resource_detectors::v3::
23
2
          DynatraceResourceDetectorConfig&>(*mptr, context.messageValidationVisitor());
24

            
25
2
  DynatraceMetadataFileReaderPtr reader = std::make_unique<DynatraceMetadataFileReaderImpl>();
26
2
  return std::make_unique<DynatraceResourceDetector>(proto_config, std::move(reader));
27
2
}
28

            
29
/**
30
 * Static registration for the Dynatrace resource detector factory. @see RegisterFactory.
31
 */
32
REGISTER_FACTORY(DynatraceResourceDetectorFactory, ResourceDetectorFactory);
33

            
34
} // namespace OpenTelemetry
35
} // namespace Tracers
36
} // namespace Extensions
37
} // namespace Envoy