icingadb-web/run.php
Eric Lippmann 04e0428888
Some checks are pending
L10n Update / update (push) Waiting to run
CI / PHP (push) Waiting to run
Loosen monitoring module integration (#1346)
For compatibility reasons, Icinga DB Web also applies hooks provided
for the monitoring module, so existing modules do not need to implement
new hook interfaces. The code paths that consume these hooks are already
guarded by installation checks, so no hook is applied if the `monitoring`
module is not installed.

Previously, when the `monitoring` module was not enabled, Icinga DB Web
would search module directories manually to register its autoloader,
logging an error if the module could not be located. This produced
noise in setups where the `monitoring` module is simply not installed.

The autoloader registration now uses the module manager directly and
is skipped entirely if the `monitoring` module is not installed.
2026-03-25 22:08:07 +01:00

33 lines
1.5 KiB
PHP

<?php
// SPDX-FileCopyrightText: 2019 Icinga GmbH <https://icinga.com>
// SPDX-License-Identifier: GPL-3.0-or-later
/** @var $this \Icinga\Application\Modules\Module */
$this->provideHook('ApplicationState');
$this->provideHook('X509/Sni');
$this->provideHook('health', 'IcingaHealth');
$this->provideHook('health', 'RedisHealth');
$this->provideHook('Reporting/Report', 'Reporting/HostSlaReport');
$this->provideHook('Reporting/Report', 'Reporting/TotalHostSlaReport');
$this->provideHook('Reporting/Report', 'Reporting/ServiceSlaReport');
$this->provideHook('Reporting/Report', 'Reporting/TotalServiceSlaReport');
if ($this::exists('notifications')) {
$this->provideHook('Notifications/v1/Source');
}
if ($this::exists('reporting')) {
$this->provideHook('Icingadb/HostActions', 'CreateHostSlaReport');
$this->provideHook('Icingadb/ServiceActions', 'CreateServiceSlaReport');
$this->provideHook('Icingadb/HostsDetailExtension', 'CreateHostsSlaReport');
$this->provideHook('Icingadb/ServicesDetailExtension', 'CreateServicesSlaReport');
}
if (! $this::exists('monitoring') && $this->app->getModuleManager()->hasInstalled('monitoring')) {
// For compatibility reasons, Icinga DB Web also supports hooks originally written for the monitoring module.
// This requires the monitoring module to be either enabled or installed.
// If it is only installed, its autoloader must be registered manually to resolve monitoring module hook classes.
$this->app->getModuleManager()->getModule('monitoring', assertLoaded: false)->registerAutoloader();
}