diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:44:18 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:44:18 +0000 |
commit | 23be945fd2810ee82e3a23cbcd2352c9bda43d4f (patch) | |
tree | dd511b321f308264952cffb005a4288ea4e478e6 /library/Graphite/Graphing/GraphingTrait.php | |
parent | Initial commit. (diff) | |
download | icingaweb2-module-graphite-upstream.tar.xz icingaweb2-module-graphite-upstream.zip |
Adding upstream version 1.2.2.upstream/1.2.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/Graphite/Graphing/GraphingTrait.php')
-rw-r--r-- | library/Graphite/Graphing/GraphingTrait.php | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/library/Graphite/Graphing/GraphingTrait.php b/library/Graphite/Graphing/GraphingTrait.php new file mode 100644 index 0000000..e32a52a --- /dev/null +++ b/library/Graphite/Graphing/GraphingTrait.php @@ -0,0 +1,79 @@ +<?php + +namespace Icinga\Module\Graphite\Graphing; + +use Icinga\Application\Config; +use Icinga\Application\Icinga; +use Icinga\Exception\ConfigurationError; +use Icinga\Module\Graphite\Web\FakeSchemeRequest; +use Icinga\Web\Url; + +trait GraphingTrait +{ + /** + * All loaded templates + * + * @var Templates + */ + protected static $allTemplates; + + /** + * Metrics data source + * + * @var MetricsDataSource + */ + protected static $metricsDataSource; + + /** + * Load and get all templates + * + * @return Templates + */ + protected static function getAllTemplates() + { + if (static::$allTemplates === null) { + $allTemplates = (new Templates())->loadDir( + Icinga::app() + ->getModuleManager() + ->getModule('graphite') + ->getBaseDir() . DIRECTORY_SEPARATOR . 'templates' + ); + + $path = Config::resolvePath('modules/graphite/templates'); + if (file_exists($path)) { + $allTemplates->loadDir($path); + } + + static::$allTemplates = $allTemplates; + } + + return static::$allTemplates; + } + + /** + * Get metrics data source + * + * @return MetricsDataSource + * + * @throws ConfigurationError + */ + public static function getMetricsDataSource() + { + if (static::$metricsDataSource === null) { + $config = Config::module('graphite'); + $graphite = $config->getSection('graphite'); + if (! isset($graphite->url)) { + throw new ConfigurationError('Missing "graphite.url" in "%s"', $config->getConfigFile()); + } + + static::$metricsDataSource = new MetricsDataSource( + (new GraphiteWebClient(Url::fromPath($graphite->url, [], new FakeSchemeRequest()))) + ->setUser($graphite->user) + ->setPassword($graphite->password) + ->setInsecure($graphite->insecure) + ); + } + + return static::$metricsDataSource; + } +} |