mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-09-22 17:37:50 +02:00
Icingadb/CustomVarRenderer: Add error handling
This commit is contained in:
parent
0e744630d7
commit
dbacfa21c0
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user