Add services to command controller

Move resource parameters for commands to get params.
This commit is contained in:
Marius Hein 2013-10-23 11:25:38 +02:00
parent b616b652bc
commit 2142bb59d1
2 changed files with 34 additions and 4 deletions

View File

@ -30,6 +30,8 @@
use Icinga\Application\Icinga; use Icinga\Application\Icinga;
use Icinga\Application\Config; use Icinga\Application\Config;
use Icinga\Application\Logger; use Icinga\Application\Logger;
use Icinga\Module\Monitoring\DataView\HostStatus;
use Icinga\Module\Monitoring\DataView\ServiceStatus;
use Icinga\Module\Monitoring\Form\Command\DisableNotificationWithExpireForm; use Icinga\Module\Monitoring\Form\Command\DisableNotificationWithExpireForm;
use Icinga\Module\Monitoring\Form\Command\SingleArgumentCommandForm; use Icinga\Module\Monitoring\Form\Command\SingleArgumentCommandForm;
use Icinga\Web\Form; use Icinga\Web\Form;
@ -164,25 +166,31 @@ class Monitoring_CommandController extends ActionController
private function selectCommandTargets($hostOnly = false) private function selectCommandTargets($hostOnly = false)
{ {
$query = null; $query = null;
$fields = array( $fields = array(
'host_name', 'host_name',
'host_state' 'host_state'
); );
try { try {
$hostname = $this->getParam('host', null); $hostname = $this->getParam('host', null);
$servicename = $this->getParam('service', null); $servicename = $this->getParam('service', null);
$filter = array();
if (!$hostname && !$servicename) { if (!$hostname && !$servicename) {
throw new MissingParameterException("No target given for this command"); throw new MissingParameterException("No target given for this command");
} }
if ($hostname) { if ($hostname) {
$view = \Icinga\Module\Monitoring\DataView\HostStatus::fromRequest($this->getRequest()); $view = HostStatus::fromRequest($this->_request);
} }
if ($servicename && !$hostOnly) { if ($servicename && !$hostOnly) {
$view = \Icinga\Module\Monitoring\DataView\ServiceStatus::fromRequest($this->getRequest()); $fields[] = 'service_description';
$view = ServiceStatus::fromRequest($this->_request);
} }
$query = $view->getQuery()->from("status", $fields); $query = $view->getQuery()->from("status", $fields);
return $data = $query->fetchAll(); return $data = $query->fetchAll();
} catch (\Exception $e) { } catch (\Exception $e) {

View File

@ -11,6 +11,14 @@ use Icinga\Web\Form;
*/ */
class Zend_View_Helper_CommandForm extends Zend_View_Helper_Abstract class Zend_View_Helper_CommandForm extends Zend_View_Helper_Abstract
{ {
private static $getArguments = array(
'host',
'service',
'global',
'commentid',
'downtimeid'
);
/** /**
* Creates a simple form without additional input fields * Creates a simple form without additional input fields
* *
@ -27,7 +35,21 @@ class Zend_View_Helper_CommandForm extends Zend_View_Helper_Abstract
$form->setAttrib('class', 'inline-form'); $form->setAttrib('class', 'inline-form');
$form->setRequest(Zend_Controller_Front::getInstance()->getRequest()); $form->setRequest(Zend_Controller_Front::getInstance()->getRequest());
$form->setAction($this->view->href('monitoring/command/' . $commandName));
// Filter work only from get parts. Put important
// fields in the action URL
$getParts = array();
foreach (self::$getArguments as $argumentName) {
if (array_key_exists($argumentName, $arguments) === true) {
if ($arguments[$argumentName]) {
$getParts[$argumentName] = $arguments[$argumentName];
}
unset($arguments[$argumentName]);
}
}
$form->setAction($this->view->href('monitoring/command/' . $commandName, $getParts));
foreach ($arguments as $elementName => $elementValue) { foreach ($arguments as $elementName => $elementValue) {
$hiddenField = new Zend_Form_Element_Hidden($elementName); $hiddenField = new Zend_Form_Element_Hidden($elementName);