mirror of
https://github.com/Icinga/icingadb-web.git
synced 2026-05-28 04:36:06 -04:00
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.
(cherry picked from commit 04e0428888)
32 lines
1.5 KiB
PHP
32 lines
1.5 KiB
PHP
<?php
|
|
|
|
/* Icinga DB Web | (c) 2020 Icinga GmbH | GPLv2 */
|
|
|
|
/** @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();
|
|
}
|