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)
{
$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) {
throw new ProgrammingError(
'%s is not an instance of %s',

View File

@ -5,26 +5,30 @@
namespace Icinga\Web\Hook;
use Icinga\Exception\ProgrammingError;
use Icinga\Module\Monitoring\Object\MonitoredObject;
/**
* Icinga Web Grapher Hook base class
*
* Extend this class if you want to integrate your graphing solution nicely into
* 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
* Icinga Web.
*/
abstract class GrapherHook
abstract class GrapherHook extends WebBaseHook
{
/**
* Whether this grapher provides preview images
* Whether this grapher provides previews
*
* @var bool
*/
protected $hasPreviews = false;
/**
* Whether this grapher provides tiny previews
*
* @var bool
*/
protected $hasTinyPreviews = false;
/**
* Constructor must live without arguments right now
*
@ -36,16 +40,6 @@ abstract class GrapherHook
$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
*
@ -56,75 +50,63 @@ abstract class GrapherHook
}
/**
* Whether a graph for the given host[, service [, plot]] exists
*
* @param string $host
* @param string $service
* @param string $plot
* Whether this grapher provides previews
*
* @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
* @return bool
*/
public function getPreviewHtml($host, $service = null, $plot = null)
public function hasTinyPreviews()
{
throw new ProgrammingError('This backend has no preview images');
return $this->hasTinyPreviews;
}
/**
* Whether a tiny graph for the given host[, service [, plot]] exists
* Whether a graph for the monitoring object exist
*
* @param string $host
* @param string $service
* @param string $plot
* @param MonitoredObject $object
*
* @return bool
*/
public function hasTinyPreview($host, $service = null, $plot = null)
{
return false;
}
abstract public function has(MonitoredObject $object);
/**
* Get a tiny preview image for the given host[, service [, plot]] exists
* Get a preview for the given object
*
* @param string $host
* @param string $service
* @param string $plot
* This function must return an empty string if no graph exists.
*
* @param MonitoredObject $object
*
* @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
*/
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}}}
use Icinga\Application\Benchmark;
use Icinga\Module\Monitoring\Object\MonitoredObject;
use Icinga\Web\Hook;
use Icinga\Web\Widget\Tabs;
use Icinga\Web\Widget\Tabextension\OutputFormat;
use Icinga\Web\Widget\Tabextension\DashboardAction;
use Icinga\Module\Monitoring\Backend;
use Icinga\Module\Monitoring\Controller;
use Icinga\Module\Monitoring\Object\AbstractObject;
use Icinga\Module\Monitoring\Object\Host;
use Icinga\Module\Monitoring\Object\Service;
@ -41,7 +41,7 @@ class Monitoring_ShowController extends Controller
$this->view->object = new Service($this->params);
} else {
// 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')) {
$this->view->tickets = Hook::first('ticket');

View File

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

View File

@ -2,7 +2,7 @@
// {{{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
@ -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
*
* @param AbstractObject $object
* @param MonitoredObject $object
*
* @return array
*/
public function monitoringFlags(/*AbstractObject*/$object)
public function monitoringFlags(/*MonitoredObject*/ $object)
{
$flags = array();
foreach (self::$flags as $column => $description) {

View File

@ -3,7 +3,7 @@
// {{{ICINGA_LICENSE_HEADER}}}
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
{
@ -22,7 +22,7 @@ class Zend_View_Helper_ResolveMacros extends Zend_View_Helper_Abstract
* Return the given string with macros being resolved
*
* @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
*/
@ -45,7 +45,7 @@ class Zend_View_Helper_ResolveMacros extends Zend_View_Helper_Abstract
* Resolve a macro based on the given object
*
* @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
*/

View File

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

View File

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

View File

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