Files
qt5-legatus-legacy/Lts/Proxies/ComponentMonitor/initialization.cpp
T
2026-08-13 18:33:10 +02:00

158 lines
4.7 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Initialization for FileManagement
* $Id$
* $HeadURL$
* $Author$
* Created by Iuliana Ojog, SLSE, 2017-04-03
*/
#include "initialization.h"
#include "dds_handler.h"
#include <ComponentMonitor/cmo.hpp>
#include <ComponentMonitor/cmo_dts.h>
#include <ComponentMonitor/settings.h>
#include <QTimer>
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> &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<ComponentStatusHandler>();
// 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<CheckmkHandler>();
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<CheckmkHandlerScheduleCheck>(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