23 : data_dir_checker_(new
file::
PathChecker(DHCP_DATA_DIR,
"KEA_DHCP_DATA_DIR")),
25 configuration_(new
SrvConfig()), family_(AF_INET) {
36 return (data_dir_checker_->getPath(reset, explicit_path));
41 return (data_dir_checker_->validatePath(data_path));
49 d2_client_mgr_->setD2ClientConfig(new_config);
55 configuration_->setD2ClientConfig(new_config);
60 return (d2_client_mgr_->ddnsEnabled());
65 return (d2_client_mgr_->getD2ClientConfig());
70 return (*d2_client_mgr_);
75 if (staging_configuration_) {
76 staging_configuration_.reset();
79 configuration_->removeStatistics();
82 external_configs_.clear();
89 staging_configuration_.reset();
97 configuration_->removeStatistics();
99 if (staging_configuration_ && !configuration_->sequenceEquals(*staging_configuration_)) {
101 configuration_ = staging_configuration_;
102 staging_configuration_.reset();
106 auto now = boost::posix_time::second_clock::universal_time();
107 configuration_->setLastCommitTime(now);
110 configuration_->updateStatistics();
112 configuration_->configureLowerLevelLibraries();
117 return (configuration_);
122 if (!staging_configuration_ || configuration_->sequenceEquals(*staging_configuration_)) {
123 uint32_t sequence = configuration_->getSequence();
126 return (staging_configuration_);
133 if (!external_configs_.empty()) {
134 seq = external_configs_.rbegin()->second->getSequence() + 1;
138 external_configs_[seq] = srv_config;
164CfgMgr::mergeIntoCfg(
const SrvConfigPtr& target_config,
const uint32_t seq) {
165 auto source_config = external_configs_.find(seq);
166 if (source_config != external_configs_.end()) {
167 target_config->merge(*source_config->second);
168 external_configs_.erase(source_config);
172 "of " << seq <<
" was not found");
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
CfgMgr()
Protected constructor.
const D2ClientConfigPtr & getD2ClientConfig() const
Fetches the DHCP-DDNS configuration pointer.
D2ClientMgr & getD2ClientMgr()
Fetches the DHCP-DDNS manager.
std::string validatePath(const std::string data_path) const
Validates a file path against the supported directory for DHDP data.
void clear()
Remove current, staging, and external configurations.
SrvConfigPtr createExternalCfg()
Creates an external configuration and returns pointer to it.
void setD2ClientConfig(D2ClientConfigPtr &new_config)
Updates the DHCP-DDNS client configuration to the given value.
static CfgMgr & instance()
returns a single instance of Configuration Manager
void mergeIntoStagingCfg(const uint32_t seq)
Merges external configuration with the given sequence number into the staging configuration.
void mergeIntoCurrentCfg(const uint32_t seq)
Merges external configuration with the given sequence number into the current configuration.
SrvConfigPtr getStagingCfg()
Returns a pointer to the staging configuration.
bool ddnsEnabled()
Convenience method for checking if DHCP-DDNS updates are enabled.
std::string getDataDir(bool reset=false, const std::string explicit_path="")
Fetches the supported DHCP data directory.
void commit()
Commits the staging configuration.
void clearStagingConfiguration()
Remove staging configuration.
SrvConfigPtr getCurrentCfg()
Returns a pointer to the current configuration.
Acts as a storage vault for D2 client configuration.
D2ClientMgr isolates Kea from the details of being a D2 client.
static void setRuntimeOptionDefs(const OptionDefSpaceContainer &defs)
Copies option definitions created at runtime.
Specifies current DHCP configuration.
Embodies a supported path against which file paths can be validated.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
boost::shared_ptr< D2ClientConfig > D2ClientConfigPtr
Defines a pointer for D2ClientConfig instances.
boost::shared_ptr< SrvConfig > SrvConfigPtr
Non-const pointer to the SrvConfig.
Defines the logger used by the top-level component of kea-lfc.