Merge branch 'bugfix/hooktest-7066'

fixes #7068
fixes #7067
fixes #7066
fixes #6932
This commit is contained in:
Marius Hein 2014-09-04 14:02:07 +02:00
commit c4ce1203c6
9 changed files with 62 additions and 75 deletions

View File

@ -123,7 +123,12 @@ class Hook
*/ */
private static function assertValidHook($instance, $name) private static function assertValidHook($instance, $name)
{ {
$base_class = self::$BASE_NS . ucfirst($name) . self::$classSuffix; $base_class = self::$BASE_NS . ucfirst($name);
if (strpos($base_class, self::$classSuffix) === false) {
$base_class .= self::$classSuffix;
}
if (!$instance instanceof $base_class) { if (!$instance instanceof $base_class) {
throw new ProgrammingError( throw new ProgrammingError(
'%s is not an instance of %s', '%s is not an instance of %s',

View File

@ -5,26 +5,30 @@
namespace Icinga\Web\Hook; namespace Icinga\Web\Hook;
use Icinga\Exception\ProgrammingError; use Icinga\Exception\ProgrammingError;
use Icinga\Module\Monitoring\Object\MonitoredObject;
/** /**
* Icinga Web Grapher Hook base class * Icinga Web Grapher Hook base class
* *
* Extend this class if you want to integrate your graphing solution nicely into * Extend this class if you want to integrate your graphing solution nicely into
* Icinga Web * Icinga Web.
*
* @copyright Copyright (c) 2013 Icinga-Web Team <info@icinga.org>
* @author Icinga-Web Team <info@icinga.org>
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
*/ */
abstract class GrapherHook abstract class GrapherHook extends WebBaseHook
{ {
/** /**
* Whether this grapher provides preview images * Whether this grapher provides previews
* *
* @var bool * @var bool
*/ */
protected $hasPreviews = false; protected $hasPreviews = false;
/**
* Whether this grapher provides tiny previews
*
* @var bool
*/
protected $hasTinyPreviews = false;
/** /**
* Constructor must live without arguments right now * Constructor must live without arguments right now
* *
@ -36,16 +40,6 @@ abstract class GrapherHook
$this->init(); $this->init();
} }
/**
* Whether this grapher provides preview images
*
* @return bool
*/
public function hasPreviews()
{
return $this->hasPreviews;
}
/** /**
* Overwrite this function if you want to do some initialization stuff * Overwrite this function if you want to do some initialization stuff
* *
@ -56,75 +50,63 @@ abstract class GrapherHook
} }
/** /**
* Whether a graph for the given host[, service [, plot]] exists * Whether this grapher provides previews
*
* @param string $host
* @param string $service
* @param string $plot
* *
* @return bool * @return bool
*/ */
public function has($host, $service = null, $plot = null) public function hasPreviews()
{ {
return false; return $this->hasPreviews;
} }
/** /**
* Get a preview image for the given host[, service [, plot]] exists * Whether this grapher provides tiny previews
*
* @param string $host
* @param string $service
* @param string $plot
*
* @return string
*
* @throws ProgrammingError
*/
public function getPreviewHtml($host, $service = null, $plot = null)
{
throw new ProgrammingError('This backend has no preview images');
}
/**
* Whether a tiny graph for the given host[, service [, plot]] exists
*
* @param string $host
* @param string $service
* @param string $plot
* *
* @return bool * @return bool
*/ */
public function hasTinyPreview($host, $service = null, $plot = null) public function hasTinyPreviews()
{ {
return false; return $this->hasTinyPreviews;
} }
/** /**
* Get a tiny preview image for the given host[, service [, plot]] exists * Whether a graph for the monitoring object exist
* *
* @param string $host * @param MonitoredObject $object
* @param string $service *
* @param string $plot * @return bool
*/
abstract public function has(MonitoredObject $object);
/**
* Get a preview for the given object
*
* This function must return an empty string if no graph exists.
*
* @param MonitoredObject $object
* *
* @return string * @return string
* @throws ProgrammingError
* *
*/
public function getPreviewHtml(MonitoredObject $object)
{
throw new ProgrammingError('This hook provide previews but it is not implemented');
}
/**
* Get a tiny preview for the given object
*
* This function must return an empty string if no graph exists.
*
* @param MonitoredObject $object
*
* @return string
* @throws ProgrammingError * @throws ProgrammingError
*/ */
public function getTinyPreviewHtml($host, $service = null, $plot = null) public function getTinyPreviewHtml(MonitoredObject $object)
{ {
throw new ProgrammingError('This backend has no tiny preview images'); throw new ProgrammingError('This hook provide tiny previews but it is not implemented');
} }
/**
* Get URL pointing to the grapher
*
* WARNING: We are not sure yet whether this will remain as is
*
* @param string $host
* @param string $service
* @param string $plot
*
* @return string
*/
abstract function getGraphUrl($host, $service = null, $plot = null);
} }

View File

@ -3,13 +3,13 @@
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
use Icinga\Application\Benchmark; use Icinga\Application\Benchmark;
use Icinga\Module\Monitoring\Object\MonitoredObject;
use Icinga\Web\Hook; use Icinga\Web\Hook;
use Icinga\Web\Widget\Tabs; use Icinga\Web\Widget\Tabs;
use Icinga\Web\Widget\Tabextension\OutputFormat; use Icinga\Web\Widget\Tabextension\OutputFormat;
use Icinga\Web\Widget\Tabextension\DashboardAction; use Icinga\Web\Widget\Tabextension\DashboardAction;
use Icinga\Module\Monitoring\Backend; use Icinga\Module\Monitoring\Backend;
use Icinga\Module\Monitoring\Controller; use Icinga\Module\Monitoring\Controller;
use Icinga\Module\Monitoring\Object\AbstractObject;
use Icinga\Module\Monitoring\Object\Host; use Icinga\Module\Monitoring\Object\Host;
use Icinga\Module\Monitoring\Object\Service; use Icinga\Module\Monitoring\Object\Service;
@ -41,7 +41,7 @@ class Monitoring_ShowController extends Controller
$this->view->object = new Service($this->params); $this->view->object = new Service($this->params);
} else { } else {
// TODO: Well... this could be done better // TODO: Well... this could be done better
$this->view->object = AbstractObject::fromParams($this->params); $this->view->object = MonitoredObject::fromParams($this->params);
} }
if (Hook::has('ticket')) { if (Hook::has('ticket')) {
$this->view->tickets = Hook::first('ticket'); $this->view->tickets = Hook::first('ticket');

View File

@ -4,6 +4,7 @@
namespace Icinga\Module\Monitoring\Form\Command; namespace Icinga\Module\Monitoring\Form\Command;
use Icinga\Module\Monitoring\Object\MonitoredObject;
use Zend_Form_Element_Text; use Zend_Form_Element_Text;
use Zend_Validate_GreaterThan; use Zend_Validate_GreaterThan;
use Zend_Validate_Digits; use Zend_Validate_Digits;
@ -12,7 +13,6 @@ use Icinga\Protocol\Commandpipe\Comment;
use Icinga\Util\DateTimeFactory; use Icinga\Util\DateTimeFactory;
use Icinga\Module\Monitoring\Backend; use Icinga\Module\Monitoring\Backend;
use Icinga\Module\Monitoring\Command\ScheduleDowntimeCommand; use Icinga\Module\Monitoring\Command\ScheduleDowntimeCommand;
use Icinga\Module\Monitoring\Object\AbstractObject;
use Icinga\Module\Monitoring\Object\Service; use Icinga\Module\Monitoring\Object\Service;
use Icinga\Web\Url; use Icinga\Web\Url;
@ -67,7 +67,7 @@ class ScheduleDowntimeForm extends WithChildrenCommandForm
$cfg = $this->getConfiguration(); $cfg = $this->getConfiguration();
$preferences = $this->getUserPreferences(); $preferences = $this->getUserPreferences();
$object = AbstractObject::fromParams(Url::fromRequest()->getParams()); $object = MonitoredObject::fromParams(Url::fromRequest()->getParams());
$object->fetchDowntimes(); $object->fetchDowntimes();
$downtimes = $object->downtimes; $downtimes = $object->downtimes;
/* /*

View File

@ -2,7 +2,7 @@
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
/*use Icinga\Module\Monitoring\Object\AbstractObject;*/ /* use Icinga\Module\Monitoring\Object\MonitoredObject; */
/** /**
* Rendering helper for object's properties which may be either enabled or disabled * Rendering helper for object's properties which may be either enabled or disabled
@ -26,11 +26,11 @@ class Zend_View_Helper_MonitoringFlags extends Zend_View_Helper_Abstract
/** /**
* Retrieve flags as array with either true or false as value * Retrieve flags as array with either true or false as value
* *
* @param AbstractObject $object * @param MonitoredObject $object
* *
* @return array * @return array
*/ */
public function monitoringFlags(/*AbstractObject*/$object) public function monitoringFlags(/*MonitoredObject*/ $object)
{ {
$flags = array(); $flags = array();
foreach (self::$flags as $column => $description) { foreach (self::$flags as $column => $description) {

View File

@ -3,7 +3,7 @@
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
use \Zend_View_Helper_Abstract; use \Zend_View_Helper_Abstract;
use Icinga\Module\Monitoring\Object\AbstractObject; use Icinga\Module\Monitoring\Object\MonitoredObject;
class Zend_View_Helper_ResolveMacros extends Zend_View_Helper_Abstract class Zend_View_Helper_ResolveMacros extends Zend_View_Helper_Abstract
{ {
@ -22,7 +22,7 @@ class Zend_View_Helper_ResolveMacros extends Zend_View_Helper_Abstract
* Return the given string with macros being resolved * Return the given string with macros being resolved
* *
* @param string $input The string in which to look for macros * @param string $input The string in which to look for macros
* @param AbstractObject|stdClass $object The host or service used to resolve macros * @param MonitoredObject|stdClass $object The host or service used to resolve macros
* *
* @return string The substituted or unchanged string * @return string The substituted or unchanged string
*/ */
@ -45,7 +45,7 @@ class Zend_View_Helper_ResolveMacros extends Zend_View_Helper_Abstract
* Resolve a macro based on the given object * Resolve a macro based on the given object
* *
* @param string $macro The macro to resolve * @param string $macro The macro to resolve
* @param AbstractObject|stdClass $object The object used to resolve the macro * @param MonitoredObject|stdClass $object The object used to resolve the macro
* *
* @return string The new value or the macro if it cannot be resolved * @return string The new value or the macro if it cannot be resolved
*/ */

View File

@ -7,7 +7,7 @@ namespace Icinga\Module\Monitoring\Object;
use Icinga\Module\Monitoring\DataView\HostStatus; use Icinga\Module\Monitoring\DataView\HostStatus;
use Icinga\Data\Db\DbQuery; use Icinga\Data\Db\DbQuery;
class Host extends AbstractObject class Host extends MonitoredObject
{ {
public $type = 'host'; public $type = 'host';
public $prefix = 'host_'; public $prefix = 'host_';

View File

@ -23,7 +23,7 @@ use Icinga\Web\UrlParams;
use Icinga\Application\Config; use Icinga\Application\Config;
abstract class AbstractObject abstract class MonitoredObject
{ {
public $type; public $type;
public $prefix; public $prefix;

View File

@ -7,7 +7,7 @@ namespace Icinga\Module\Monitoring\Object;
use Icinga\Module\Monitoring\DataView\ServiceStatus; use Icinga\Module\Monitoring\DataView\ServiceStatus;
use Icinga\Data\Db\DbQuery; use Icinga\Data\Db\DbQuery;
class Service extends AbstractObject class Service extends MonitoredObject
{ {
public $type = 'service'; public $type = 'service';
public $prefix = 'service_'; public $prefix = 'service_';