]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[master] Implement set-config command in kea-dhcp4/6
authorThomas Markwalder <tmark@isc.org>
Wed, 4 Jan 2017 20:46:12 +0000 (15:46 -0500)
committerThomas Markwalder <tmark@isc.org>
Wed, 4 Jan 2017 20:46:12 +0000 (15:46 -0500)
    Merges in branch 'trac5046'

14 files changed:
1  2 
doc/guide/ctrl-channel.xml
doc/guide/dhcp4-srv.xml
doc/guide/dhcp6-srv.xml
src/bin/dhcp4/ctrl_dhcp4_srv.cc
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp4/kea_controller.cc
src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc
src/bin/dhcp4/tests/dhcp4_test_utils.cc
src/bin/dhcp4/tests/kea_controller_unittest.cc
src/bin/dhcp6/ctrl_dhcp6_srv.cc
src/bin/dhcp6/json_config_parser.cc
src/bin/dhcp6/kea_controller.cc
src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc
src/bin/dhcp6/tests/dhcp6_test_utils.cc

Simple merge
Simple merge
Simple merge
index e95ffa3de4ead1cc09d73e60a2a0412a74a3f83e,b540cfc2be96e758e19859c82e7567e6aeae8773..4eac126187dc95f70d8ae2fa6b56d078530a1093
@@@ -254,9 -317,11 +317,12 @@@ ControlledDhcpv4Srv::ControlledDhcpv4Sr
  
      /// @todo: register config-reload (see CtrlDhcpv4Srv::commandConfigReloadHandler)
  
 -    /// @todo: register libreload (see CtrlDhcpv4Srv::commandLibReloadHandler)
 -
 +    CommandMgr::instance().registerCommand("libreload",
 +        boost::bind(&ControlledDhcpv4Srv::commandLibReloadHandler, this, _1, _2));
 +
+     CommandMgr::instance().registerCommand("set-config",
+         boost::bind(&ControlledDhcpv4Srv::commandSetConfigHandler, this, _1, _2));
      CommandMgr::instance().registerCommand("leases-reclaim",
          boost::bind(&ControlledDhcpv4Srv::commandLeasesReclaimHandler, this, _1, _2));
  
@@@ -299,7 -364,7 +365,8 @@@ ControlledDhcpv4Srv::~ControlledDhcpv4S
  
          // Deregister any registered commands
          CommandMgr::instance().deregisterCommand("shutdown");
 +        CommandMgr::instance().deregisterCommand("libreload");
+         CommandMgr::instance().deregisterCommand("set-config");
          CommandMgr::instance().deregisterCommand("leases-reclaim");
          CommandMgr::instance().deregisterCommand("statistic-get");
          CommandMgr::instance().deregisterCommand("statistic-reset");
Simple merge
Simple merge
index 536b9169a7df59ae61814dc0d8944737bd2f500d,615274e5f5ac6ec90fd56ecdcdc43865370eff45..50fcbf55a95493fea34a96fada00c35fa1c0d3da
@@@ -118,9 -119,15 +120,16 @@@ public
  
          ASSERT_NO_THROW(server_.reset(new NakedControlledDhcpv4Srv()));
  
 -        ConstElementPtr config = Element::fromJSON(config_txt);
 +        ConstElementPtr config;
 +        ASSERT_NO_THROW(config = parseDHCP4(config_txt));
          ConstElementPtr answer = server_->processConfig(config);
+         // Commit the configuration so any subsequent reconfigurations
+         // will only close the command channel if its configuration has
+         // changed.
+         CfgMgr::instance().commit();
          ASSERT_TRUE(answer);
  
          int status = 0;
index 8cd9a617e0b3715334e2b312bbf4196bea25d3cd,ccdd355c1a3b886b41422c9f490dddcc3ccaf4bd..44109d18527c4995717d43d60e30d545951ad44e
@@@ -63,9 -62,7 +63,8 @@@ public
  
      ~JSONFileBackendTest() {
          LeaseMgrFactory::destroy();
-         isc::log::setDefaultLoggingOutput();
          static_cast<void>(remove(TEST_FILE));
 +        static_cast<void>(remove(TEST_INCLUDE));
      };
  
      /// @brief writes specified content to a well known file
index 0d9f7331c67ea6b2ca16b02ff99ac61bedac4d26,f2c558e0c1e076bc7c9c2de1b16d2eb6803be7ae..11c2122a0e8f798f842e4f0d73e7c8a84a183247
@@@ -116,6 -178,6 +178,8 @@@ ControlledDhcpv6Srv::processCommand(con
          if (command == "shutdown") {
              return (srv->commandShutdownHandler(command, args));
  
++        /// @todo: register config-reload (see CtrlDhcpv6Srv::commandConfigReloadHandler)
++
          } else if (command == "libreload") {
              return (srv->commandLibReloadHandler(command, args));
  
@@@ -279,11 -344,13 +346,12 @@@ ControlledDhcpv6Srv::ControlledDhcpv6Sr
      CommandMgr::instance().registerCommand("shutdown",
          boost::bind(&ControlledDhcpv6Srv::commandShutdownHandler, this, _1, _2));
  
--    /// @todo: register config-reload (see CtrlDhcpv4Srv::commandConfigReloadHandler)
 +    CommandMgr::instance().registerCommand("libreload",
 +        boost::bind(&ControlledDhcpv6Srv::commandLibReloadHandler, this, _1, _2));
  
 -    /// @todo: register libreload (see CtrlDhcpv4Srv::commandLibReloadHandler)
 -
+     CommandMgr::instance().registerCommand("set-config",
+         boost::bind(&ControlledDhcpv6Srv::commandSetConfigHandler, this, _1, _2));
      CommandMgr::instance().registerCommand("leases-reclaim",
          boost::bind(&ControlledDhcpv6Srv::commandLeasesReclaimHandler, this, _1, _2));
  
@@@ -326,7 -393,7 +394,8 @@@ ControlledDhcpv6Srv::~ControlledDhcpv6S
  
          // Deregister any registered commands
          CommandMgr::instance().deregisterCommand("shutdown");
 +        CommandMgr::instance().deregisterCommand("libreload");
+         CommandMgr::instance().deregisterCommand("set-config");
          CommandMgr::instance().deregisterCommand("leases-reclaim");
          CommandMgr::instance().deregisterCommand("statistic-get");
          CommandMgr::instance().deregisterCommand("statistic-reset");
Simple merge
Simple merge
index efd2098f55ad25f2a3a0701fcd407064b859c94e,12647f96eee66e296f1f450b7d71e2ee361b02ed..aa03ca333e0de68a7f1bebe650a1095e43f2aaa6
@@@ -145,9 -148,15 +148,15 @@@ public
  
          ASSERT_NO_THROW(server_.reset(new NakedControlledDhcpv6Srv()));
  
 -        ConstElementPtr config = Element::fromJSON(config_txt);
 -
 +        ConstElementPtr config;
 +        ASSERT_NO_THROW(config = parseDHCP6(config_txt));
          ConstElementPtr answer = server_->processConfig(config);
+         // Commit the configuration so any subsequent reconfigurations
+         // will only close the command channel if its configuration has
+         // changed.
+         CfgMgr::instance().commit();
          ASSERT_TRUE(answer);
  
          int status = 0;
@@@ -310,10 -329,9 +319,10 @@@ TEST_F(CtrlDhcpv6SrvTest, configReload
          "    \"pools\": [ { \"pool\": \"2001:db8:3::/80\" } ],"
          "    \"subnet\": \"2001:db8:3::/64\" "
          " } ],"
-         "\"valid-lifetime\": 4000 }";
+         "\"valid-lifetime\": 4000 }}";
  
 -    ElementPtr config = Element::fromJSON(config_txt);
 +    ConstElementPtr config;
-     ASSERT_NO_THROW(config = parseDHCP6(config_txt));
++    ASSERT_NO_THROW(config = parseJSON(config_txt));
  
      // Make sure there are no subnets configured.
      CfgMgr::instance().clear();