monitoring: Adapt host and service classes to match their base class' interface

This commit is contained in:
Eric Lippmann 2014-09-12 10:17:46 +02:00
parent aca5a2e466
commit c0e3447339
2 changed files with 119 additions and 57 deletions

View File

@ -4,32 +4,64 @@
namespace Icinga\Module\Monitoring\Object; namespace Icinga\Module\Monitoring\Object;
use Icinga\Module\Monitoring\DataView\HostStatus; use Icinga\Module\Monitoring\Backend;
use Icinga\Data\Db\DbQuery;
/**
* A Icinga host
*/
class Host extends MonitoredObject class Host extends MonitoredObject
{ {
public $type = 'host'; /**
* Type of the Icinga host
*
* @var string
*/
public $type = self::TYPE_HOST;
/**
* Prefix of the Icinga host
*
* @var string
*/
public $prefix = 'host_'; public $prefix = 'host_';
protected function applyObjectFilter(DbQuery $query) /**
* Host name
*
* @var string
*/
protected $host;
/**
* Create a new host
*
* @param Backend $backend Backend to fetch host information from
* @param string $host Host name
*/
public function __construct(Backend $backend, $host)
{ {
return $query->where('host_name', $this->host_name); parent::__construct($backend);
$this->host = $host;
} }
public function populate() /**
* Get the host name
*
* @return string
*/
public function getHost()
{ {
$this->fetchComments() return $this->host;
->fetchHostgroups()
->fetchContacts()
->fetchContactGroups()
->fetchCustomvars()
->fetchDowntimes();
} }
protected function getProperties() /**
* Get the data view to fetch the host information from
*
* @return \Icinga\Module\Monitoring\DataView\HostStatus
*/
protected function getDataView()
{ {
$this->view = HostStatus::fromParams(array('backend' => null), array( return $this->backend->select()->from('hostStatus', array(
'host_name', 'host_name',
'host_alias', 'host_alias',
'host_address', 'host_address',
@ -70,8 +102,8 @@ class Host extends MonitoredObject
'host_notes_url', 'host_notes_url',
'host_modified_host_attributes', 'host_modified_host_attributes',
'host_problem', 'host_problem',
'process_perfdata' => 'host_process_performance_data', 'host_process_performance_data'
))->where('host_name', $this->params->get('host')); ))
return $this->view->getQuery()->fetchRow(); ->where('host_name', $this->host);
} }
} }

View File

@ -4,33 +4,83 @@
namespace Icinga\Module\Monitoring\Object; namespace Icinga\Module\Monitoring\Object;
use Icinga\Module\Monitoring\DataView\ServiceStatus; use Icinga\Module\Monitoring\Backend;
use Icinga\Data\Db\DbQuery;
/**
* A Icinga service
*/
class Service extends MonitoredObject class Service extends MonitoredObject
{ {
public $type = 'service'; /**
* Type of the Icinga service
*
* @var string
*/
public $type = self::TYPE_SERVICE;
/**
* Prefix of the Icinga service
*
* @var string
*/
public $prefix = 'service_'; public $prefix = 'service_';
protected function applyObjectFilter(DbQuery $query) /**
* Host name the service is running on
*
* @var string
*/
protected $host;
/**
* Service name
*
* @var string
*/
protected $service;
/**
* Create a new service
*
* @param Backend $backend Backend to fetch service information from
* @param string $host Host name the service is running on
* @param string $service Service name
*/
public function __construct(Backend $backend, $host, $service)
{ {
return $query->where('service_host_name', $this->host_name) parent::__construct($backend);
->where('service_description', $this->service_description); $this->host = $host;
$this->service = $service;
} }
public function populate() /**
* Get the host name the service is running on
*
* @return string
*/
public function getHost()
{ {
$this->fetchComments() return $this->host;
->fetchServicegroups()
->fetchContacts()
->fetchContactGroups()
->fetchCustomvars()
->fetchDowntimes();
} }
protected function getProperties() /**
* Get the service name
*
* @return string
*/
public function getService()
{ {
$this->view = ServiceStatus::fromParams(array('backend' => null), array( return $this->service;
}
/**
* Get the data view
*
* @return \Icinga\Module\Monitoring\DataView\ServiceStatus
*/
protected function getDataView()
{
return $this->backend->select()->from('serviceStatus', array(
'host_name', 'host_name',
'host_state', 'host_state',
'host_state_type', 'host_state_type',
@ -114,30 +164,10 @@ class Service extends MonitoredObject
'service_flap_detection_enabled', 'service_flap_detection_enabled',
'service_flap_detection_enabled_changed', 'service_flap_detection_enabled_changed',
'service_modified_service_attributes', 'service_modified_service_attributes',
'process_perfdata' => 'service_process_performance_data', 'service_process_performance_data',
))->where('host_name', $this->params->get('host')) 'service_percent_state_change'
->where('service_description', $this->params->get('service')); ))
->where('host_name', $this->host)
return $this->view->getQuery()->fetchRow(); ->where('service_description', $this->service);
}
/**
* Get the host name the service is running on
*
* @return string
*/
public function getHostName()
{
return $this->params->get('host');
}
/**
* Get the service name
*
* @return string
*/
public function getName()
{
return $this->params->get('service');
} }
} }