return (!pid_lock.isLocked() || pid_file.check());
}
+ElementPtr
+Memfile_LeaseMgr::getStatus() const {
+ std::string file_name;
+ if (lease_file4_) {
+ file_name = lease_file4_->getFilename();
+ } else if (lease_file6_) {
+ file_name = lease_file6_->getFilename();
+ } else {
+ return (ElementPtr());
+ }
+ if (file_name.empty()) {
+ // Should not happen.
+ return (ElementPtr());
+ }
+ ElementPtr status = Element::createMap();
+ status->set("csv-lease-file", Element::create(file_name));
+ return (status);
+}
+
std::string
Memfile_LeaseMgr::appendSuffix(const std::string& file_name,
const LFCFileType& file_type) {
/// @return True if LFC is running, false otherwise (memfile only).
static bool isLFCProcessRunning(const std::string file_name, Universe u);
+ /// @brief Return status information.
+ ///
+ /// @return Null or a map with the lease file name to add to
+ /// status-get command output.
+ virtual data::ElementPtr getStatus() const override;
+
//@}
/// @name Public type and method used to determine file names for LFC.
EXPECT_NO_THROW(lease_mgr.reset(new Memfile_LeaseMgr(pmap)));
EXPECT_TRUE(lease_mgr->getExtendedInfoTablesEnabled());
+ // Persist is false so no csv file.
+ EXPECT_FALSE(lease_mgr->getStatus());
+
// Expecting that persist parameter is yes or no. Everything other than
// that is wrong.
pmap["lfc-interval"] = "10";
ASSERT_NO_THROW(lease_mgr.reset(new Memfile_LeaseMgr(pmap)));
EXPECT_EQ(lease_mgr->getLeaseFilePath(Memfile_LeaseMgr::V6),
"/tmp/leasefile6_1.csv");
+ ConstElementPtr status = lease_mgr->getStatus();
+ ASSERT_TRUE(status);
+ EXPECT_EQ(status->str(),
+ "{ \"csv-lease-file\": \"/tmp/leasefile6_1.csv\" }");
}
/// @brief Verifies that the supported path may be overridden with
ASSERT_NO_THROW(lease_mgr.reset(new Memfile_LeaseMgr(pmap)));
EXPECT_EQ(lease_mgr->getLeaseFilePath(Memfile_LeaseMgr::V6),
"/tmp/leasefile6_1.csv");
+ ConstElementPtr status = lease_mgr->getStatus();
+ ASSERT_TRUE(status);
+ EXPECT_EQ(status->str(),
+ "{ \"csv-lease-file\": \"/tmp/leasefile6_1.csv\" }");
}
/// @brief Checks if there is no lease manager NoLeaseManager is thrown.
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_FALSE(lease_mgr->getStatus());
}
/// @brief Check if the persistLeases correctly checks that leases should not be written