kea-custom-hooks
FeM custom hooks libraries for Kea DHCP
Config.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <exception>
4#include <istream>
5#include <map>
6#include <string>
7#include <string_view>
8#include <vector>
9
10namespace ahri
11{
12struct ConfigPrivate;
13
23class Config
24{
25public:
31 struct DBConfig
32 {
33 std::string user;
34 std::string password;
35 std::string database;
36 };
37
39 struct DBHost
40 {
41 std::string host;
42 std::string port;
43 };
44
46 struct AhriNode
47 {
48 std::string name;
49 std::string api_url{"http://localhost/"};
50 std::string kea_service{"dhcp4"};
52 };
53
55 struct Icinga2
56 {
57 std::string api_url;
58 std::string api_user;
59 std::string api_password;
60 std::string host;
61 std::map<std::string, std::string> services{{"full-sync", "ahri_full_sync"}};
62 };
63
65 struct AdminDB : public DBConfig
66 {
67 std::vector<DBHost> servers;
68 };
69
71 struct LocalDB : public DBConfig
72 {
74 };
76
82 class ParseError : public std::exception
83 {
84 public:
85 explicit ParseError(std::string message) : message(std::move(message))
86 {}
87 ParseError(const ParseError&) = default;
88 ParseError& operator=(const ParseError&) = default;
89 ParseError(ParseError&&) = default;
91 ~ParseError() override = default;
92
93 [[nodiscard]] const char* what() const noexcept override
94 {
95 return message.c_str();
96 }
97
98 private:
99 std::string message;
100 };
101
105 explicit Config(std::istream& config);
106 Config(const Config&) = delete;
107 Config& operator=(const Config&) = delete;
108 Config(Config&& o) noexcept : p_impl(o.p_impl)
109 {
110 o.p_impl = nullptr;
111 }
112 ~Config();
113
119 [[nodiscard]] const AdminDB& admindb() const;
121 [[nodiscard]] const LocalDB& localdb() const;
123 [[nodiscard]] const AhriNode& ahri_node() const;
125 [[nodiscard]] const Icinga2& icinga2() const;
127
128private:
129 ConfigPrivate* p_impl;
130};
131} // namespace ahri
Exception for errors during configuration parsing.
Definition: Config.hpp:83
ParseError & operator=(ParseError &&)=default
ParseError & operator=(const ParseError &)=default
ParseError(const ParseError &)=default
ParseError(std::string message)
Definition: Config.hpp:85
const char * what() const noexcept override
Definition: Config.hpp:93
ParseError(ParseError &&)=default
~ParseError() override=default
Configuration parser for admindb-host-reservation-importer configuration.
Definition: Config.hpp:24
Config(Config &&o) noexcept
Definition: Config.hpp:108
const AdminDB & admindb() const
Return parsed AdminDB-specific configuration.
Definition: Config.cpp:141
const Icinga2 & icinga2() const
Return parsed Icinga2 API information.
Definition: Config.cpp:151
const AhriNode & ahri_node() const
Return parsed AHRI node information.
Definition: Config.cpp:146
Config(std::istream &config)
Create an instance and parse the given std::istream as configuration file.
Definition: Config.cpp:127
const LocalDB & localdb() const
Return parsed DHCP local DB specific configuration options.
Definition: Config.cpp:136
Config(const Config &)=delete
Config & operator=(const Config &)=delete
std::unique_ptr< ahri::Config > config
Definition: init.cpp:27
AdminDB-specific configuration options.
Definition: Config.hpp:66
std::vector< DBHost > servers
Definition: Config.hpp:67
Configuration for a Kea node running ahri.
Definition: Config.hpp:47
bool icinga2_reporting_enabled
Definition: Config.hpp:51
std::string kea_service
Definition: Config.hpp:50
std::string name
Definition: Config.hpp:48
std::string api_url
Definition: Config.hpp:49
Common configuration options for a database connection.
Definition: Config.hpp:32
std::string database
Definition: Config.hpp:35
std::string user
Definition: Config.hpp:33
std::string password
Definition: Config.hpp:34
Host configuration options for a database connection.
Definition: Config.hpp:40
std::string port
Definition: Config.hpp:42
std::string host
Definition: Config.hpp:41
Configuration for a Icinga2 daemon monitoring this node.
Definition: Config.hpp:56
std::string api_password
Definition: Config.hpp:59
std::string host
Definition: Config.hpp:60
std::string api_url
Definition: Config.hpp:57
std::string api_user
Definition: Config.hpp:58
std::map< std::string, std::string > services
Definition: Config.hpp:61
DHCP local DB specific configuration options.
Definition: Config.hpp:72