diff options
Diffstat (limited to 'library/Graphite/Web/Widget/Graphs/Icingadb')
-rw-r--r-- | library/Graphite/Web/Widget/Graphs/Icingadb/IcingadbHost.php | 61 | ||||
-rw-r--r-- | library/Graphite/Web/Widget/Graphs/Icingadb/IcingadbService.php | 71 |
2 files changed, 132 insertions, 0 deletions
diff --git a/library/Graphite/Web/Widget/Graphs/Icingadb/IcingadbHost.php b/library/Graphite/Web/Widget/Graphs/Icingadb/IcingadbHost.php new file mode 100644 index 0000000..2b0a614 --- /dev/null +++ b/library/Graphite/Web/Widget/Graphs/Icingadb/IcingadbHost.php @@ -0,0 +1,61 @@ +<?php + +namespace Icinga\Module\Graphite\Web\Widget\Graphs\Icingadb; + +use Icinga\Module\Graphite\Graphing\Template; +use Icinga\Module\Graphite\Web\Widget\Graphs; +use Icinga\Web\Url; +use Icinga\Module\Icingadb\Model\Host; + +class IcingadbHost extends Graphs +{ + protected $objectType = 'host'; + + /** + * The Icingadb host to render the graphs for + * + * @var Host + */ + protected $object; + + protected function getGraphsListBaseUrl() + { + return Url::fromPath('graphite/hosts', ['host.name' => $this->object->name]); + } + + protected function filterImageUrl(Url $url) + { + return $url->setParam('host.name', $this->object->name); + } + + public function createHostTitle() + { + return $this->object->name; + } + + public function getObjectType() + { + return $this->objectType; + } + + protected function getMonitoredObjectIdentifier() + { + return $this->object->name; + } + + protected function getImageBaseUrl() + { + return Url::fromPath('graphite/graph/host'); + } + + protected function designedForObjectType(Template $template) + { + foreach ($template->getCurves() as $curve) { + if (in_array('host_name_template', $curve[0]->getMacros())) { + return true; + } + } + + return false; + } +} diff --git a/library/Graphite/Web/Widget/Graphs/Icingadb/IcingadbService.php b/library/Graphite/Web/Widget/Graphs/Icingadb/IcingadbService.php new file mode 100644 index 0000000..7827e86 --- /dev/null +++ b/library/Graphite/Web/Widget/Graphs/Icingadb/IcingadbService.php @@ -0,0 +1,71 @@ +<?php + +namespace Icinga\Module\Graphite\Web\Widget\Graphs\Icingadb; + +use Icinga\Module\Graphite\Graphing\Template; +use Icinga\Module\Graphite\Web\Widget\Graphs; +use Icinga\Web\Url; +use Icinga\Module\Icingadb\Model\Service; + +class IcingadbService extends Graphs +{ + protected $objectType = 'service'; + + /** + * The icingadb service to render the graphs for + * + * @var Service + */ + protected $object; + + protected function getGraphsListBaseUrl() + { + return Url::fromPath( + 'graphite/services', + ['service.name' => $this->object->name, 'host.name' => $this->object->host->name] + ); + } + + protected function filterImageUrl(Url $url) + { + return $url + ->setParam('host.name', $this->object->host->name) + ->setParam('service.name', $this->object->name); + } + + public function createHostTitle() + { + return $this->object->host->name; + } + + public function createServiceTitle() + { + return ' : ' . $this->object->name; + } + + public function getObjectType() + { + return $this->objectType; + } + + protected function getMonitoredObjectIdentifier() + { + return $this->object->host->name . ':' . $this->object->name; + } + + protected function getImageBaseUrl() + { + return Url::fromPath('graphite/graph/service'); + } + + protected function designedforObjectType(Template $template) + { + foreach ($template->getCurves() as $curve) { + if (in_array('service_name_template', $curve[0]->getMacros())) { + return true; + } + } + + return false; + } +} |