Icingadb/CustomVarRenderer: Add error handling

This commit is contained in:
raviks789 2024-08-30 12:01:15 +02:00 committed by Johannes Meyer
parent 0e744630d7
commit dbacfa21c0

View File

@ -5,6 +5,7 @@ namespace Icinga\Module\Director\ProvidedHook\Icingadb;
use Icinga\Application\Config;
use Icinga\Exception\ConfigurationError;
use Icinga\Exception\NotFoundError;
use Icinga\Module\Director\Daemon\Logger;
use Icinga\Module\Director\Db;
use Icinga\Module\Director\Db\AppliedServiceSetLoader;
use Icinga\Module\Director\Objects\IcingaHost;
@ -22,6 +23,7 @@ use ipl\Html\HtmlElement;
use ipl\Html\Text;
use ipl\Html\ValidHtml;
use ipl\Orm\Model;
use Throwable;
class CustomVarRenderer extends CustomVarRendererHook
{
@ -61,6 +63,7 @@ class CustomVarRenderer extends CustomVarRendererHook
public function prefetchForObject(Model $object): bool
{
try {
if ($object instanceof Host) {
$host = $object;
$service = null;
@ -82,6 +85,8 @@ class CustomVarRenderer extends CustomVarRendererHook
$i = 0;
do {
if ($i > 3) {
Logger::error("Failed to find service '%s' on host '%s'", $serviceName, $host->name);
return false;
} elseif ($serviceOrigin[$i] === 'direct') {
$directorServiceObj = IcingaService::loadOptional([
@ -153,6 +158,12 @@ class CustomVarRenderer extends CustomVarRendererHook
} while (! $directorServiceObj);
}
} catch (NotFoundError $_) {
if ($service !== null) {
Logger::error("Failed to find service '%s' on host '%s'", $service->name, $host->name);
} else {
Logger::error('Failed to find host %s', $host->name);
}
return false;
}
@ -204,15 +215,22 @@ class CustomVarRenderer extends CustomVarRendererHook
foreach ($dataListEntries as $dataListEntry) {
$field = $fieldsWithDataLists[$dataListEntry->datafield_id];
$this->datalistMaps[$field->get('varname')][$dataListEntry->entry_name] = $dataListEntry->entry_value;
$this->datalistMaps[$field->get('varname')][$dataListEntry->entry_name]
= $dataListEntry->entry_value;
}
}
return true;
} catch (Throwable $e) {
Logger::error("%s\n%s", $e, $e->getTraceAsString());
return false;
}
}
public function renderCustomVarKey(string $key)
{
try {
if (isset($this->fieldConfig[$key]['label'])) {
return new HtmlElement(
'span',
@ -220,12 +238,16 @@ class CustomVarRenderer extends CustomVarRendererHook
Text::create($this->fieldConfig[$key]['label'])
);
}
} catch (Throwable $e) {
Logger::error("%s\n%s", $e, $e->getTraceAsString());
}
return null;
}
public function renderCustomVarValue(string $key, $value)
{
try {
if (isset($this->fieldConfig[$key])) {
if ($this->fieldConfig[$key]['visibility'] === 'hidden') {
return '***';
@ -241,6 +263,9 @@ class CustomVarRenderer extends CustomVarRendererHook
return $this->renderDictionaryVal($key, (array) $value);
}
}
} catch (Throwable $e) {
Logger::error("%s\n%s", $e, $e->getTraceAsString());
}
return null;
}