From 1c5bf36538fe359b49857163a727f32d45fb6deb Mon Sep 17 00:00:00 2001 From: Alexander Fuhr Date: Tue, 4 Aug 2015 13:25:17 +0200 Subject: [PATCH 1/4] Host(s)-/Service(s)Controller: Set the form backend refs #9672 --- modules/monitoring/application/controllers/HostController.php | 1 + modules/monitoring/application/controllers/HostsController.php | 1 + modules/monitoring/application/controllers/ServiceController.php | 1 + .../monitoring/application/controllers/ServicesController.php | 1 + 4 files changed, 4 insertions(+) diff --git a/modules/monitoring/application/controllers/HostController.php b/modules/monitoring/application/controllers/HostController.php index a7659726e..ffc7fcdd3 100644 --- a/modules/monitoring/application/controllers/HostController.php +++ b/modules/monitoring/application/controllers/HostController.php @@ -167,6 +167,7 @@ class Monitoring_HostController extends MonitoredObjectController $this->assertPermission('monitoring/command/process-check-result'); $form = new ProcessCheckResultCommandForm(); + $form->setBackend($this->backend); $form->setTitle($this->translate('Submit Passive Host Check Result')); $this->handleCommandForm($form); } diff --git a/modules/monitoring/application/controllers/HostsController.php b/modules/monitoring/application/controllers/HostsController.php index 740b5cb5c..9a753adec 100644 --- a/modules/monitoring/application/controllers/HostsController.php +++ b/modules/monitoring/application/controllers/HostsController.php @@ -226,6 +226,7 @@ class Monitoring_HostsController extends Controller $this->assertPermission('monitoring/command/process-check-result'); $form = new ProcessCheckResultCommandForm(); + $form->setBackend($this->backend); $form->setTitle($this->translate('Submit Passive Host Check Results')); $this->handleCommandForm($form); } diff --git a/modules/monitoring/application/controllers/ServiceController.php b/modules/monitoring/application/controllers/ServiceController.php index d9ed0d36b..cf7c4807c 100644 --- a/modules/monitoring/application/controllers/ServiceController.php +++ b/modules/monitoring/application/controllers/ServiceController.php @@ -122,6 +122,7 @@ class Monitoring_ServiceController extends MonitoredObjectController $this->assertPermission('monitoring/command/process-check-result'); $form = new ProcessCheckResultCommandForm(); + $form->setBackend($this->backend); $form->setTitle($this->translate('Submit Passive Service Check Result')); $this->handleCommandForm($form); } diff --git a/modules/monitoring/application/controllers/ServicesController.php b/modules/monitoring/application/controllers/ServicesController.php index faebcd11c..18c427f86 100644 --- a/modules/monitoring/application/controllers/ServicesController.php +++ b/modules/monitoring/application/controllers/ServicesController.php @@ -242,6 +242,7 @@ class Monitoring_ServicesController extends Controller $this->assertPermission('monitoring/command/process-check-result'); $form = new ProcessCheckResultCommandForm(); + $form->setBackend($this->backend); $form->setTitle($this->translate('Submit Passive Service Check Results')); $this->handleCommandForm($form); } From dfbcc066a7157dda58427787aa577282c7b2417e Mon Sep 17 00:00:00 2001 From: Alexander Fuhr Date: Tue, 4 Aug 2015 13:28:32 +0200 Subject: [PATCH 2/4] MonitoringBackend: Implement the getProgramVersion method refs #9672 --- .../library/Monitoring/Backend/MonitoringBackend.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/monitoring/library/Monitoring/Backend/MonitoringBackend.php b/modules/monitoring/library/Monitoring/Backend/MonitoringBackend.php index 012b7c110..6ee534b17 100644 --- a/modules/monitoring/library/Monitoring/Backend/MonitoringBackend.php +++ b/modules/monitoring/library/Monitoring/Backend/MonitoringBackend.php @@ -331,4 +331,14 @@ class MonitoringBackend implements Selectable, Queryable, ConnectionInterface array_push($parts, 'Query', ucfirst(strtolower($query)) . 'Query'); return implode('\\', $parts); } + + /** + * Fetch and return the program version of the current instance + * + * @return string + */ + public function getProgramVersion() + { + return $this->select()->from('programstatus', array('program_version'))->fetchOne(); + } } From 18f382e85e51e54cc9506a4e9d6fc94685216085 Mon Sep 17 00:00:00 2001 From: Alexander Fuhr Date: Tue, 4 Aug 2015 13:30:46 +0200 Subject: [PATCH 3/4] ProcessCheckResultCommandForm: Use getHostMultiOptions method refs #9672 --- .../Object/ProcessCheckResultCommandForm.php | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/monitoring/application/forms/Command/Object/ProcessCheckResultCommandForm.php b/modules/monitoring/application/forms/Command/Object/ProcessCheckResultCommandForm.php index ec80a539f..6b566bbd6 100644 --- a/modules/monitoring/application/forms/Command/Object/ProcessCheckResultCommandForm.php +++ b/modules/monitoring/application/forms/Command/Object/ProcessCheckResultCommandForm.php @@ -52,11 +52,7 @@ class ProcessCheckResultCommandForm extends ObjectsCommandForm 'required' => true, 'label' => $this->translate('Status'), 'description' => $this->translate('The state this check result should report'), - 'multiOptions' => $object->getType() === $object::TYPE_HOST ? array( - ProcessCheckResultCommand::HOST_UP => $this->translate('UP', 'icinga.state'), - ProcessCheckResultCommand::HOST_DOWN => $this->translate('DOWN', 'icinga.state'), - ProcessCheckResultCommand::HOST_UNREACHABLE => $this->translate('UNREACHABLE', 'icinga.state') - ) : array( + 'multiOptions' => $object->getType() === $object::TYPE_HOST ? $this->getHostMultiOptions() : array( ProcessCheckResultCommand::SERVICE_OK => $this->translate('OK', 'icinga.state'), ProcessCheckResultCommand::SERVICE_WARNING => $this->translate('WARNING', 'icinga.state'), ProcessCheckResultCommand::SERVICE_CRITICAL => $this->translate('CRITICAL', 'icinga.state'), @@ -115,4 +111,23 @@ class ProcessCheckResultCommandForm extends ObjectsCommandForm return true; } + + /** + * Returns the available host options based on the program version + * + * @return array + */ + protected function getHostMultiOptions() + { + $options = array( + ProcessCheckResultCommand::HOST_UP => $this->translate('UP', 'icinga.state'), + ProcessCheckResultCommand::HOST_DOWN => $this->translate('DOWN', 'icinga.state') + ); + + if (! preg_match('~^v2\.\d+\.\d+.*$~', $this->getBackend()->getProgramVersion())) { + $options[ProcessCheckResultCommand::HOST_UNREACHABLE] = $this->translate('UNREACHABLE', 'icinga.state'); + } + + return $options; + } } From b5ae4599fd790eba178edcba644c3513501e2e0c Mon Sep 17 00:00:00 2001 From: Alexander Fuhr Date: Tue, 4 Aug 2015 13:54:30 +0200 Subject: [PATCH 4/4] ProcessCheckResultCommandForm: Use substr instead of pregmatch refs #9672 --- .../forms/Command/Object/ProcessCheckResultCommandForm.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/monitoring/application/forms/Command/Object/ProcessCheckResultCommandForm.php b/modules/monitoring/application/forms/Command/Object/ProcessCheckResultCommandForm.php index 6b566bbd6..0239ab657 100644 --- a/modules/monitoring/application/forms/Command/Object/ProcessCheckResultCommandForm.php +++ b/modules/monitoring/application/forms/Command/Object/ProcessCheckResultCommandForm.php @@ -124,7 +124,7 @@ class ProcessCheckResultCommandForm extends ObjectsCommandForm ProcessCheckResultCommand::HOST_DOWN => $this->translate('DOWN', 'icinga.state') ); - if (! preg_match('~^v2\.\d+\.\d+.*$~', $this->getBackend()->getProgramVersion())) { + if (substr($this->getBackend()->getProgramVersion(), 0, 2) !== 'v2') { $options[ProcessCheckResultCommand::HOST_UNREACHABLE] = $this->translate('UNREACHABLE', 'icinga.state'); }