1
#pragma once
2

            
3
#include "envoy/config/core/v3/health_check.pb.h"
4
#include "envoy/extensions/filters/network/redis_proxy/v3/redis_proxy.pb.h"
5
#include "envoy/extensions/filters/network/redis_proxy/v3/redis_proxy.pb.validate.h"
6
#include "envoy/extensions/health_checkers/redis/v3/redis.pb.h"
7
#include "envoy/extensions/health_checkers/redis/v3/redis.pb.validate.h"
8
#include "envoy/server/health_checker_config.h"
9

            
10
#include "source/extensions/health_checkers/redis/redis.h"
11

            
12
namespace Envoy {
13
namespace Extensions {
14
namespace HealthCheckers {
15
namespace RedisHealthChecker {
16

            
17
/**
18
 * Config registration for the redis health checker.
19
 */
20
class RedisHealthCheckerFactory : public Server::Configuration::CustomHealthCheckerFactory {
21
public:
22
  Upstream::HealthCheckerSharedPtr
23
  createCustomHealthChecker(const envoy::config::core::v3::HealthCheck& config,
24
                            Server::Configuration::HealthCheckerFactoryContext& context) override;
25

            
26
5
  std::string name() const override { return "envoy.health_checkers.redis"; }
27
2
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
28
2
    return ProtobufTypes::MessagePtr{new envoy::extensions::health_checkers::redis::v3::Redis()};
29
2
  }
30

            
31
  absl::optional<
32
      Extensions::NetworkFilters::Common::Redis::AwsIamAuthenticator::AwsIamAuthenticatorSharedPtr>
33
      aws_iam_authenticator_;
34
};
35

            
36
DECLARE_FACTORY(RedisHealthCheckerFactory);
37

            
38
} // namespace RedisHealthChecker
39
} // namespace HealthCheckers
40
} // namespace Extensions
41
} // namespace Envoy