summaryrefslogtreecommitdiffstats
path: root/run.php
blob: b4c8032222fd37a589402f3357f1274d936c43e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?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('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')) {
    $modulePath = null;
    foreach ($this->app->getModuleManager()->getModuleDirs() as $path) {
        $pathToTest = join(DIRECTORY_SEPARATOR, [$path, 'monitoring']);
        if (file_exists($pathToTest)) {
            $modulePath = $pathToTest;
            break;
        }
    }

    if ($modulePath === null) {
        Icinga\Application\Logger::error('Unable to locate monitoring module');
    } else {
        // Ensure we can load some classes/interfaces for compatibility with legacy hooks
        $this->app->getLoader()->registerNamespace(
            'Icinga\\Module\\Monitoring',
            join(DIRECTORY_SEPARATOR, [$modulePath, 'library', 'Monitoring']),
            join(DIRECTORY_SEPARATOR, [$modulePath, 'application'])
        );
    }
}