Skip to content

Commit

Permalink
Provide reporting hook for single host/service
Browse files Browse the repository at this point in the history
  • Loading branch information
sukhwinder33445 committed Jul 17, 2023
1 parent e0c3c8e commit 08870a0
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 0 deletions.
33 changes: 33 additions & 0 deletions library/Icingadb/ProvidedHook/CreateHostSlaReport.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace Icinga\Module\Icingadb\ProvidedHook;

use Icinga\Authentication\Auth;
use Icinga\Module\Icingadb\Hook\HostActionsHook;
use Icinga\Module\Icingadb\Model\Host;
use ipl\I18n\Translation;
use ipl\Stdlib\Filter;
use ipl\Web\Filter\QueryString;
use ipl\Web\Url;
use ipl\Web\Widget\Link;

class CreateHostSlaReport extends HostActionsHook
{
use Translation;

public function getActionsForObject(Host $host): array
{
if (! Auth::getInstance()->hasPermission('reporting/reports')) {
return [];
}

$filter = QueryString::render(Filter::equal('host.name', $host->name));

return [
new Link(
$this->translate('Create Host SLA Report'),
Url::fromPath('reporting/reports/new')->addParams(['filter' => $filter, 'report' => 'host'])
)
];
}
}
36 changes: 36 additions & 0 deletions library/Icingadb/ProvidedHook/CreateServiceSlaReport.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

namespace Icinga\Module\Icingadb\ProvidedHook;

use Icinga\Authentication\Auth;
use Icinga\Module\Icingadb\Hook\ServiceActionsHook;
use Icinga\Module\Icingadb\Model\Service;
use ipl\I18n\Translation;
use ipl\Stdlib\Filter;
use ipl\Web\Filter\QueryString;
use ipl\Web\Url;
use ipl\Web\Widget\Link;

class CreateServiceSlaReport extends ServiceActionsHook
{
use Translation;

public function getActionsForObject(Service $service): array
{
if (! Auth::getInstance()->hasPermission('reporting/reports')) {
return [];
}

$filter = QueryString::render(Filter::all(
Filter::equal('service.name', $service->name),
Filter::equal('host.name', $service->host->name)
));

return [
new Link(
$this->translate('Create Service SLA Report'),
Url::fromPath('reporting/reports/new')->addParams(['filter' => $filter, 'report' => 'service'])
)
];
}
}
2 changes: 2 additions & 0 deletions run.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
$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');
}
Expand Down

0 comments on commit 08870a0

Please sign in to comment.