/** * @RDE_HEADER@ * Initialization for FileManagement * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, SLSE, 2017-04-03 */ #include "initialization.h" #include "dds_handler.h" #include #include #include #include namespace ComponentMonitor { Initialization::Initialization() : m_logger(getLogger("Initialization")) { TRACE_LOG(m_logger) << LOGFUNCTION << " START"; TRACE_LOG(m_logger) << LOGFUNCTION << " END"; } Initialization::~Initialization() { TRACE_LOG(m_logger) << LOGFUNCTION << " START"; m_checkmkHandler = nullptr; m_componentStatusHandler = nullptr; m_ddsHandler = nullptr; TRACE_LOG(m_logger) << LOGFUNCTION << " END"; } bool Initialization::initialize(const std::shared_ptr &ddsHandler) { INFO_LOG(m_logger) << LOGFUNCTION << " START"; // initialize database // empty / not required at CMO // initialize DDS m_ddsHandler = ddsHandler; DEBUG_LOG(m_logger) << LOGFUNCTION << "ddsHandler referenced"; // // setup ComponentStatusHandler // m_componentStatusHandler = std::make_shared(); // FIRST enable DTCs // DTCs could get samples... m_ddsHandler->enableDtcs(); // SECOND DELAYED real start // all dtd::XY_changed (from enabling dtcs) should not be emitted anymore QTimer::singleShot(5000, nullptr, [this]() { this->delayedInit(); }); // DO NOT initialize // // initialize CheckMk (Nagios) // m_checkmkHandler = std::make_shared(); const QString host = Settings::checkMkHost(); const int port = Settings::checkMkPort(); const int intervalSec = Settings::checkMkIntervalSec(); // // Nov 2021, Thore Poggenburg: // CheckMk prueft alle 5 min. // if (!m_checkmkHandler->initialize(host, port, intervalSec)) { ERROR_LOG(m_logger) << LOGFUNCTION << " CheckmkHandler::initialize failed"; return false; } INFO_LOG(m_logger) << LOGFUNCTION << " CheckmkHandler:initialize succesful"; QObject::connect(m_checkmkHandler.get(), &CheckmkHandler::newState, m_componentStatusHandler.get(), &ComponentStatusHandler::onNewState, Qt::UniqueConnection); // // TriggerUpdate via COMMAND 'SCHEDULE_FORCED_HOST_CHECK' // m_checkmkHandlerScheduleCheck = std::make_shared(m_ddsHandler); if (!m_checkmkHandlerScheduleCheck->initialize(host, port)) { ERROR_LOG(m_logger) << LOGFUNCTION << " CheckmkHandlerScheduleCheck::initialize failed"; return false; } INFO_LOG(m_logger) << LOGFUNCTION << " CheckmkHandlerScheduleCheck:initialize succesful"; #ifdef LTS_DEBUG // // debug purpose: // QTimer::singleShot(20000, m_checkmkHandlerScheduleCheck.get(), [this](){ qCritical() << " trigger Update"; // REF_GUEZ_ECVMAVS01, REF_GUEZ_ECVMADB01, REF_GUEZ_ECMAPWS11 m_checkmkHandlerScheduleCheck->addScheduleCheckHostnames({QStringLiteral("REF_GUEZ_ECVMAVS01")}); m_checkmkHandlerScheduleCheck->addScheduleCheckHostnames({QStringLiteral("REF_GUEZ_ECVMADB01")}); m_checkmkHandlerScheduleCheck->addScheduleCheckHostnames({QStringLiteral("REF_GUEZ_ECMAPWS11")}); m_checkmkHandlerScheduleCheck->run(1000); // msec }); #endif // LTS_DEBUG INFO_LOG(m_logger) << LOGFUNCTION << " END"; return true; } bool Initialization::delayedInit() { INFO_LOG(m_logger) << LOGFUNCTION << " START"; bool success = true; if (!m_componentStatusHandler->initialize(m_ddsHandler)) { ERROR_LOG(m_logger) << LOGFUNCTION << " initialize failed for ComponentStatusHandler"; success = false; } INFO_LOG(m_logger) << LOGFUNCTION << " ComponentStatusHandler, statusMapSize=" << m_componentStatusHandler->getHostnames().size(); m_checkmkHandler->run(); // after schedules check(s), get new status list: QObject::connect(m_checkmkHandlerScheduleCheck.get(), &CheckmkHandlerScheduleCheck::newCheckScheduled, m_checkmkHandler.get(), &CheckmkHandler::onImmediateGetStateRequested, Qt::UniqueConnection); // UpdateLastCheckTimeDirect : const bool updateLastCheckTimeDirect = Settings::updateLastCheckTimeDirect(); NOTICE_LOG(m_logger) << LOGFUNCTION << " updateLastCheckTimeDirect [bool] = " << updateLastCheckTimeDirect; if (updateLastCheckTimeDirect) { NOTICE_LOG(m_logger) << LOGFUNCTION << " updateLastCheckTimeDirect is enabled"; QObject::connect(m_checkmkHandlerScheduleCheck.get(), &CheckmkHandlerScheduleCheck::updateLastCheckTimeDirect, m_componentStatusHandler.get(), &ComponentStatusHandler::onUpdateLastCheckTimeDirect, Qt::DirectConnection); } // UpdateLastCheckTimeDirect : INFO_LOG(m_logger) << LOGFUNCTION << " END"; return success; } } // namespace ComponentMonitor