monitoring/commands: Add (ENABLE|DISABLE)_NOTIFICATIONS/DISABLE_NOTIFICATIONS_EXPIRE_TIME commands
`ToggleNotifications' is the command object for enabling/disabling host and service notifications on an Icinga instance with an optional expire time for disabling notifications. refs #6593
This commit is contained in:
parent
5474c661e1
commit
cdbd24ec99
|
@ -0,0 +1,54 @@
|
||||||
|
<?php
|
||||||
|
// {{{ICINGA_LICENSE_HEADER}}}
|
||||||
|
// {{{ICINGA_LICENSE_HEADER}}}
|
||||||
|
|
||||||
|
namespace Icinga\Module\Monitoring\Command\Instance;
|
||||||
|
|
||||||
|
use Icinga\Module\Monitoring\Command\Common\ToggleFeature;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable/disable host and service notifications on an Icinga instance
|
||||||
|
*/
|
||||||
|
class ToggleNotifications extends ToggleFeature
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The time when notifications should be re-enabled after disabling
|
||||||
|
*
|
||||||
|
* @var int|null Unix timestamp
|
||||||
|
*/
|
||||||
|
protected $expireTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable notifications with optional expire time
|
||||||
|
*
|
||||||
|
* @param int|null $expireTime The Unix timestamp when notifications should be re-enabled after disabling
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function disable($expireTime = null)
|
||||||
|
{
|
||||||
|
$this->expireTime = $expireTime !== null ? (int) $expireTime : null;
|
||||||
|
return parent::disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (non-PHPDoc)
|
||||||
|
* @see \Icinga\Module\Monitoring\Command\IcingaCommand::getCommandString() For the method documentation.
|
||||||
|
*/
|
||||||
|
public function getCommandString()
|
||||||
|
{
|
||||||
|
if ($this->enable === true) {
|
||||||
|
return 'ENABLE_NOTIFICATIONS';
|
||||||
|
}
|
||||||
|
if ($this->expireTime !== null) {
|
||||||
|
return sprintf(
|
||||||
|
'%s;%u;%u',
|
||||||
|
'DISABLE_NOTIFICATIONS_EXPIRE_TIME',
|
||||||
|
time(), // Schedule time. According to the Icinga documentation schedule time has no effect currently
|
||||||
|
// and should be set to the current timestamp.
|
||||||
|
$this->expireTime
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return 'DISABLE_NOTIFICATIONS';
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue