Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add basic downtime controller and views
refs #8902
- Loading branch information
Showing
2 changed files
with
258 additions
and
0 deletions.
There are no files selected for viewing
79 changes: 79 additions & 0 deletions
79
modules/monitoring/application/controllers/DowntimeController.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
<?php | ||
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */ | ||
|
||
use Icinga\Module\Monitoring\Controller; | ||
use Icinga\Module\Monitoring\Forms\Command\Object\DeleteDowntimeCommandForm; | ||
use Icinga\Web\Url; | ||
use Icinga\Web\Widget\Tabextension\DashboardAction; | ||
|
||
/* | ||
* To change this license header, choose License Headers in Project Properties. | ||
* To change this template file, choose Tools | Templates | ||
* and open the template in the editor. | ||
*/ | ||
|
||
/** | ||
* Display detailed information about a downtime | ||
*/ | ||
class Monitoring_DowntimeController extends Controller | ||
{ | ||
protected $downtime; | ||
|
||
/** | ||
* Add tabs | ||
*/ | ||
public function init() | ||
{ | ||
$downtimeId = $this->params->get('downtime_id'); | ||
|
||
$this->downtime = $this->backend->select()->from('downtime', array( | ||
'id' => 'downtime_internal_id', | ||
'objecttype' => 'downtime_objecttype', | ||
'comment' => 'downtime_comment', | ||
'author_name' => 'downtime_author_name', | ||
'start' => 'downtime_start', | ||
'scheduled_start' => 'downtime_scheduled_start', | ||
'scheduled_end' => 'downtime_scheduled_end', | ||
'end' => 'downtime_end', | ||
'duration' => 'downtime_duration', | ||
'is_flexible' => 'downtime_is_flexible', | ||
'is_fixed' => 'downtime_is_fixed', | ||
'is_in_effect' => 'downtime_is_in_effect', | ||
'entry_time' => 'downtime_entry_time', | ||
'host_state' => 'downtime_host_state', | ||
'service_state' => 'downtime_service_state', | ||
'host_name', | ||
'host', | ||
'service', | ||
'service_description', | ||
'host_display_name', | ||
'service_display_name' | ||
))->where('downtime_internal_id', $downtimeId)->getQuery()->fetchRow(); | ||
|
||
$this->getTabs() | ||
->add( | ||
'downtime', | ||
array( | ||
'title' => $this->translate( | ||
'Display detailed information about a downtime.' | ||
), | ||
'icon' => 'plug', | ||
'label' => $this->translate('Downtime'), | ||
'url' =>'monitoring/downtimes/show' | ||
) | ||
)->activate('downtime')->extend(new DashboardAction()); | ||
} | ||
|
||
public function showAction() | ||
{ | ||
$this->view->downtime = $this->downtime; | ||
$this->view->delDowntimeForm = new DeleteDowntimeCommandForm(); | ||
$this->view->delDowntimeForm->setObjects($this->downtime); | ||
$this->view->listAllLink = Url::fromPath('monitoring/list/downtimes'); | ||
$this->view->showHostLink = Url::fromPath('monitoring/host/show') | ||
->setParam('host', $this->downtime->host); | ||
$this->view->showServiceLink = Url::fromPath('monitoring/service/show') | ||
->setParam('host', $this->downtime->host) | ||
->setParam('service', $this->downtime->service_description); | ||
} | ||
} |
179 changes: 179 additions & 0 deletions
179
modules/monitoring/application/views/scripts/downtime/show.phtml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
<?php | ||
use Icinga\Module\Monitoring\Object\Service; | ||
use Icinga\Module\Monitoring\Object\Host; | ||
|
||
if (isset($downtime->service_description)) { | ||
$isService = true; | ||
$stateName = Service::getStateText($downtime->service_state); | ||
} else { | ||
$isService = false; | ||
$stateName = Host::getStateText($downtime->host_state); | ||
} | ||
?> | ||
|
||
<div class="controls"> | ||
<?php if (! $this->compact): ?> | ||
<?= $this->tabs; ?> | ||
<?php endif ?> | ||
<h1> | ||
<?php if ($isService): ?> | ||
<?php | ||
$link = $this->link()->service( | ||
$downtime->service_description, | ||
$downtime->service_display_name, | ||
$downtime->host_name, | ||
$downtime->host_display_name | ||
); | ||
$icon = $this->icon('service', $this->translate('Service')); | ||
?> | ||
<?php else: ?> | ||
<?php | ||
$icon = $this->icon('host', $this->translate('Host')); | ||
$link = $this->link()->host($downtime->host_name, $downtime->host_display_name) | ||
?> | ||
<?php endif ?> | ||
<?= sprintf( | ||
$this->translate( | ||
'Downtime for %s', | ||
'Downtime for host or service.' | ||
), | ||
$link | ||
); ?> | ||
<?= $icon ?> | ||
</h1> | ||
</div> | ||
|
||
<div class="content" data-base-target="_next"> | ||
<small> | ||
<?php if ($downtime->is_flexible): ?> | ||
<?php if ($downtime->is_in_effect): ?> | ||
<?= sprintf( | ||
$isService | ||
? $this->translate('This flexible service downtime was started on %s at %s and lasts for %s until %s at %s.') | ||
: $this->translate('This flexible host downtime was started on %s at %s and lasts for %s until %s at %s.'), | ||
date('d.m.y', $downtime->start), | ||
date('H:i', $downtime->start), | ||
$this->format()->duration($downtime->duration), | ||
date('d.m.y', $downtime->end), | ||
date('H:i', $downtime->end) | ||
); ?> | ||
<?php else: ?> | ||
<?= sprintf( | ||
$isService | ||
? $this->translate('This flexible service downtime has been scheduled to start between %s - %s and to last for %s.') | ||
: $this->translate('This flexible host downtime has been scheduled to start between %s - %s and to last for %s.'), | ||
date('d.m.y H:i', $downtime->scheduled_start), | ||
date('d.m.y H:i', $downtime->scheduled_end), | ||
$this->format()->duration($downtime->duration) | ||
); ?> | ||
<?php endif ?> | ||
<?php else: ?> | ||
<?php if ($downtime->is_in_effect): ?> | ||
<?= sprintf( | ||
$isService | ||
? $this->translate('This fixed service downtime was started on %s at %s and expires on %s at %s.') | ||
: $this->translate('This fixed host downtime was started on %s at %s and expires on %s at %s.'), | ||
date('d.m.y', $downtime->start), | ||
date('H:i', $downtime->start), | ||
date('d.m.y', $downtime->end), | ||
date('H:i', $downtime->end) | ||
); ?> | ||
<?php else: ?> | ||
<?= sprintf( | ||
$isService | ||
? $this->translate('This fixed service downtime has been scheduled to start on %s at %s and to end on %s at %s.') | ||
: $this->translate('This fixed host downtime has been scheduled to start on %s at %s and to end on %s at %s.'), | ||
date('d.m.y', $downtime->scheduled_start), | ||
date('H:i', $downtime->scheduled_start), | ||
date('d.m.y', $downtime->scheduled_end), | ||
date('H:i', $downtime->scheduled_end) | ||
); ?> | ||
<?php endif ?> | ||
<?php endif ?> | ||
</small> | ||
<br> | ||
<br> | ||
|
||
<table class="avp newsection"> | ||
<tbody> | ||
<tr> | ||
<th><?= $this->translate('Author') ?></th> | ||
<td><?= $this->escape($this->downtime->author_name) ?></td> | ||
</tr> | ||
<tr> | ||
<th><?= $this->translate('Comments') ?></th> | ||
<td><?= $this->escape($this->downtime->comment) ?></td> | ||
</tr> | ||
<tr> | ||
<th><?= $this->translate('Scheduled start') ?></th> | ||
<td><?= date('d.m.y H:i', $this->downtime->scheduled_start) ?></td> | ||
</tr> | ||
<tr> | ||
<th><?= $this->translate('Scheduled end') ?></th> | ||
<td><?= date('d.m.y H:i', $this->downtime->scheduled_end) ?></td> | ||
</tr> | ||
<tr> | ||
<th><?= $this->translate('Is Flexible') ?></th> | ||
<td> | ||
<?= $this->escape( | ||
$this->downtime->is_flexible ? | ||
$this->translate('Yes') : $this->translate('No') | ||
); | ||
?> | ||
</td> | ||
</tr> | ||
<tr> | ||
<th><?= $this->translate('In Effect') ?></th> | ||
<td> | ||
<?= $this->escape( | ||
$this->downtime->is_in_effect ? | ||
$this->translate('Yes') : $this->translate('No') | ||
); | ||
?> | ||
</td> | ||
</tr> | ||
|
||
<?php if ($this->downtime->is_flexible && $this->downtime->is_in_effect): ?> | ||
<tr> | ||
<th><?= $this->translate('Start') ?></th> | ||
<td><?= date('d.m.y H:i', $downtime->start); ?></td> | ||
</tr> | ||
<tr> | ||
<th><?= $this->translate('End') ?></th> | ||
<td><?= date('d.m.y H:i', $downtime->end); ?></td> | ||
</tr> | ||
<?php endif; ?> | ||
<tr> | ||
<th><?= $this->translate('Duration') ?></th> | ||
<td><?= $this->format()->duration($this->escape($this->downtime->duration)); ?></td> | ||
</tr> | ||
|
||
<?php if (isset($delDowntimeForm)): // Form is unset if the current user lacks the respective permission ?> | ||
<tr class="newsection"> | ||
<th><?= $this->translate('Commands') ?></th> | ||
<td> | ||
<?php | ||
$delDowntimeForm->populate(array('downtime_id' => $downtime->id, 'redirect' => $this->listAllLink)); | ||
if (! $isService) { | ||
$delDowntimeForm->setAction( | ||
$this->url('monitoring/host/delete-downtime', | ||
array('host' => $downtime->host_name)) | ||
); | ||
} else { | ||
$delDowntimeForm->setAction( | ||
$this->url('monitoring/service/delete-downtime', array( | ||
'host' => $downtime->host_name, | ||
'service' => $downtime->service_description | ||
)) | ||
); | ||
} | ||
echo $delDowntimeForm; | ||
?> | ||
</td> | ||
</tr> | ||
<?php endif ?> | ||
</tbody> | ||
</table> | ||
|
||
</div> | ||
|