std::string
Memfile_LeaseMgr::initLeaseFilePath(Universe u) {
+ bool persist = true;
+ try {
+ std::string persist_str = getParameter("persist");
+ if (persist_str == "no") {
+ persist = false;
+ }
+ } catch (const Exception& ex) {
+ persist = true;
+ }
+ if (!persist) {
+ return ("");
+ }
+
std::string param_name = (u == V4 ? "leasefile4" : "leasefile6");
std::string lease_file;
try {
/// initialize the location of the lease file. If the lease file is not
/// specified, the method will use the default location for the universe
/// (v4 or v6) selected. If the location is specified in the map as empty
- /// it will set the empty location, which implies that leases belonging to
- /// the specified universe will not be written to disk.
+ /// or the "persist" parameter is set to "no" it will set the empty
+ /// location, which implies that leases belonging to the specified universe
+ /// will not be written to disk.
///
/// @param u Universe (v4 or v6)
/// @param parameters Map holding parameters of the Lease Manager, passed to
/// @brief Holds the pointer to the DHCPv6 lease file IO.
boost::shared_ptr<CSVLeaseFile6> lease_file6_;
+
};
}; // end of isc::dhcp namespace
initFqdn("", false, false);
- factory_.create("type=memfile leasefile4= leasefile6=");
+ factory_.create("type=memfile persist=no");
}
/// @brief Configures a subnet and adds one pool to it.
subnet_->addPool(pool_);
cfg_mgr.addSubnet4(subnet_);
- factory_.create("type=memfile leasefile4= leasefile6=");
+ factory_.create("type=memfile persist=no");
}
/// @brief checks if Lease4 matches expected configuration
}, isc::dhcp::NoLeaseManager);
// Set up the parser to open the memfile database.
- const char* config[] = {"type", "memfile", "leasefile4", "",
- "leasefile6", "", NULL};
+ const char* config[] = {"type", "memfile", "persist", "no", NULL};
string json_config = toJson(config);
+
ConstElementPtr json_elements = Element::fromJSON(json_config);
EXPECT_TRUE(json_elements);
EXPECT_NO_THROW(parser.build(json_elements));
// Ensure that the access string is as expected.
- EXPECT_EQ(std::string("type=memfile"), parser.getDbAccessString());
+ EXPECT_EQ(std::string("persist=no type=memfile"), parser.getDbAccessString());
// Committal of the parser changes should open the database.
EXPECT_NO_THROW(parser.commit());
TEST_F(MemfileLeaseMgrTest, constructor) {
LeaseMgr::ParameterMap pmap;
- pmap["leasefile4"] = "";
- pmap["leasefile6"] = "";
+ pmap["persist"] = "no";
boost::scoped_ptr<Memfile_LeaseMgr> lease_mgr;
ASSERT_NO_THROW(lease_mgr.reset(new Memfile_LeaseMgr(pmap)));
EXPECT_EQ(pmap["leasefile6"],
lease_mgr->getLeaseFilePath(Memfile_LeaseMgr::V6));
- pmap["leasefile4"] = "";
- pmap["leasefile6"] = "";
+ pmap["persist"] = "no";
lease_mgr.reset(new Memfile_LeaseMgr(pmap));
EXPECT_TRUE(lease_mgr->getLeaseFilePath(Memfile_LeaseMgr::V4).empty());
EXPECT_TRUE(lease_mgr->getLeaseFilePath(Memfile_LeaseMgr::V6).empty());
EXPECT_TRUE(lease_mgr->persistLeases(Memfile_LeaseMgr::V4));
EXPECT_TRUE(lease_mgr->persistLeases(Memfile_LeaseMgr::V6));
- // Specify empty names of the lease files. This should disable writes
- // of leases to disk.
- pmap["leasefile4"] = "";
- pmap["leasefile6"] = "";
+ // This should disable writes of leases to disk.
+ pmap["persist"] = "no";
lease_mgr.reset(new Memfile_LeaseMgr(pmap));
EXPECT_FALSE(lease_mgr->persistLeases(Memfile_LeaseMgr::V4));
EXPECT_FALSE(lease_mgr->persistLeases(Memfile_LeaseMgr::V6));