From b379df852be7a27a17ac85f3eb8946c9d3e960c9 Mon Sep 17 00:00:00 2001 From: Tomek Mrugalski Date: Wed, 26 Apr 2017 15:03:39 +0200 Subject: [PATCH] [5253] Logging information is now written in config-write. Conflicts: src/lib/process/d_controller.cc --- src/lib/process/d_controller.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/lib/process/d_controller.cc b/src/lib/process/d_controller.cc index b325404638..ac7a8df502 100644 --- a/src/lib/process/d_controller.cc +++ b/src/lib/process/d_controller.cc @@ -448,6 +448,28 @@ DControllerBase::configWriteHandler(const std::string&, // Ok, it's time to write the file. size_t size = 0; + ElementPtr cfg = process_->getCfgMgr()->getContext()->toElement(); + + // Logging storage is messed up in CA. During its configuration (see + // DControllerBase::configFromFile() it calls Daemon::configureLogger() + // that stores the logging info in isc::dhcp::CfgMgr::getStagingCfg(). + // This is later moved to getCurrentCfg() when the configuration is + // commited. All control-agent specific configuration is stored in + // a structure accessible by process_->getCfgMgr()->getContext(). Note + // logging information is not stored there. + // + // As a result, we need to extract the CA configuration from one + // place and logging from another. + ConstElementPtr loginfo = isc::dhcp::CfgMgr::instance().getCurrentCfg()->toElement(); + if (loginfo) { + // If there was a config stored in dhcp::CfgMgr, try to get Logging info from it. + loginfo = loginfo->get("Logging"); + } + if (loginfo) { + // If there is some logging information, add it to our config. + cfg->set("Logging", loginfo); + } + try { size = writeConfigFile(filename); } catch (const isc::Exception& ex) { -- 2.47.2