Module: nagvis
Branch: master
Commit: 2c59bfe20a1f271633ba0b2ebc4f1e06f76e08d5
URL:    
http://nagvis.git.sourceforge.net/git/gitweb.cgi?p=nagvis/nagvis;a=commit;h=2c59bfe20a1f271633ba0b2ebc4f1e06f76e08d5

Author: Lars Michelsen <[email protected]>
Date:   Tue Apr 20 23:47:04 2010 +0200

Several small backend bugfixes

---

 share/server/core/classes/GlobalBackendMgmt.php    |   27 +++++++------------
 .../core/classes/GlobalBackendmklivestatus.php     |   28 ++++++++++---------
 2 files changed, 25 insertions(+), 30 deletions(-)

diff --git a/share/server/core/classes/GlobalBackendMgmt.php 
b/share/server/core/classes/GlobalBackendMgmt.php
index c5200f5..e0963fa 100644
--- a/share/server/core/classes/GlobalBackendMgmt.php
+++ b/share/server/core/classes/GlobalBackendMgmt.php
@@ -286,7 +286,7 @@ class GlobalBackendMgmt {
                        case 'serviceState':
                                $filters = Array(
                                                                                
Array('key' => 'host_name', 'op' => '=', 'val' => 'name'),
-                                                                               
Array('key' => 'service_description', 'operator' => '=', 'service_description')
+                                                                               
Array('key' => 'service_description', 'op' => '=', 'service_description')
                                                                        );
                                $aCounts = 
$this->BACKENDS[$backendId]->getServiceState($aObjs, $filters);
                        break;
@@ -303,19 +303,20 @@ class GlobalBackendMgmt {
                foreach($aObjs AS $name => $opts)
                        if(isset($aCounts[$name]))
                                foreach($opts['OBJS'] AS $OBJ)
-                                       $OBJ->setState($aCounts[$name]);
+                                       if($type == 'serviceState' || $type == 
'hostState')
+                                               $OBJ->setState($aCounts[$name]);
+                                       else
+                                               
$OBJ->setStateCounts($aCounts[$name]);
                        else
-                               foreach($opts['OBJS'] AS $OBJ)
-                                       
$OBJ->setBackendProblem($this->CORE->getLang()->getText('The object "[OBJ]" 
does not exist.',
-                                                                               
                             Array('OBJ' => $name)));
+                               foreach($opts['OBJS'] AS $OBJ) {
+                                       
$OBJ->setBackendProblem($this->CORE->getLang()->getText('The object "[OBJ]" 
does not exist ([TYPE]).',
+                                                                               
                             Array('OBJ' => $name, 'TYPE' => $type)));
+                               }
        }
 
        private function fetchHostMemberDetails($backendId, $aObjs) {
                try {
-                       $filters = Array(
-                    Array('key' => 'host_name', 'op' => '=', 'val' => 'name'),
-                    Array('key' => 'service_description', 'operator' => '=', 
'service_description')
-                 );
+                       $filters = Array(Array('key' => 'host_name', 'op' => 
'=', 'val' => 'name'));
                        $aMembers = 
$this->BACKENDS[$backendId]->getServiceState($aObjs, $filters);
                } catch(BackendException $e) {
                        $aMembers = Array();
@@ -327,15 +328,7 @@ class GlobalBackendMgmt {
                                        $members = Array();
                                        foreach($aMembers[$name] AS $service => 
$details) {
                                                $MOBJ = new 
NagVisService($this->CORE, $this, $backendId, $OBJ->getName(), 
$details['service_description']);
-                                               
-                                               // Append contents of the array 
to the object properties
                                                $MOBJ->setState($details);
-                                               
-                                               // The service of this host has 
to know how it should handle 
-                                               //hard/soft states. This is a 
little dirty but the simplest way to do this
-                                               //until the hard/soft state 
handling has moved from backend to the object
-                                               // classes.
-                                               
$MOBJ->setConfiguration($OBJ->getObjectConfiguration());
                                                $members[] = $MOBJ;
                                        }
                                
diff --git a/share/server/core/classes/GlobalBackendmklivestatus.php 
b/share/server/core/classes/GlobalBackendmklivestatus.php
index 2247df4..6da380f 100644
--- a/share/server/core/classes/GlobalBackendmklivestatus.php
+++ b/share/server/core/classes/GlobalBackendmklivestatus.php
@@ -414,6 +414,8 @@ class GlobalBackendmklivestatus implements 
GlobalBackendInterface {
                                switch($filter['key']) {
                                        case 'host_name':
                                        case 'host_groups':
+                                       case 'service_description':
+                                       case 'groups':
                                        case 'service_groups':
                                        case 'hostgroup_name':
                                        case 'group_name':
@@ -425,6 +427,9 @@ class GlobalBackendmklivestatus implements 
GlobalBackendInterface {
                                                
                                                $objFilters[] = 'Filter: 
'.$filter['key'].' '.$filter['op'].' '.$val."\n";
                                        break;
+                                       default:
+                                               throw new 
BackendConnectionProblem('Invalid filter key ('.$filter['key'].')');
+                                       break;
                                }
                        }
 
@@ -943,21 +948,21 @@ class GlobalBackendmklivestatus implements 
GlobalBackendInterface {
                                foreach($l as $e) {
                                        $arrReturn[$e[0]] = Array(
                                                'PENDING' => Array(
-                                                       'normal'    => $e[0],
+                                                       'normal'    => $e[1],
                                                ),
                                                'UP' => Array(
-                                                       'normal'    => $e[1],
-                                                       'downtime'  => $e[2],
+                                                       'normal'    => $e[2],
+                                                       'downtime'  => $e[3],
                                                ),
                                                'DOWN' => Array(
-                                                       'normal'    => $e[3],
-                                                       'ack'       => $e[4],
-                                                       'downtime'  => $e[5],
+                                                       'normal'    => $e[4],
+                                                       'ack'       => $e[5],
+                                                       'downtime'  => $e[6],
                                                ),
                                                'UNREACHABLE' => Array(
-                                                       'normal'    => $e[6],
-                                                       'ack'       => $e[7],
-                                                       'downtime'  => $e[8],
+                                                       'normal'    => $e[7],
+                                                       'ack'       => $e[8],
+                                                       'downtime'  => $e[9],
                                                ),
                                        );
                                }
@@ -973,7 +978,7 @@ class GlobalBackendmklivestatus implements 
GlobalBackendInterface {
                                $stateAttr = 'state';
                
                        // Little hack to correct the different field names
-                       $filter = str_replace(' groups ', ' hostgroups ', 
$filter);
+                       $filter = str_replace(' groups ', ' host_groups ', 
$filter);
                
                        // Get service information
                        $l = $this->queryLivestatus("GET servicesbyhostgroup\n" 
.
@@ -1100,9 +1105,6 @@ class GlobalBackendmklivestatus implements 
GlobalBackendInterface {
                        else
                                $stateAttr = 'state';
                
-                       // Little hack to correct the different field names
-                       $filter = str_replace(' groups ', ' hostgroups ', 
$filter);
-               
                        // Get service information
                        $l = $this->queryLivestatus("GET servicesbygroup\n" .
                                $filter.


------------------------------------------------------------------------------
_______________________________________________
Nagvis-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nagvis-checkins

Reply via email to