mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-09-23 09:58:00 +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\Application\Config;
|
||||||
use Icinga\Exception\ConfigurationError;
|
use Icinga\Exception\ConfigurationError;
|
||||||
use Icinga\Exception\NotFoundError;
|
use Icinga\Exception\NotFoundError;
|
||||||
|
use Icinga\Module\Director\Daemon\Logger;
|
||||||
use Icinga\Module\Director\Db;
|
use Icinga\Module\Director\Db;
|
||||||
use Icinga\Module\Director\Db\AppliedServiceSetLoader;
|
use Icinga\Module\Director\Db\AppliedServiceSetLoader;
|
||||||
use Icinga\Module\Director\Objects\IcingaHost;
|
use Icinga\Module\Director\Objects\IcingaHost;
|
||||||
@ -22,6 +23,7 @@ use ipl\Html\HtmlElement;
|
|||||||
use ipl\Html\Text;
|
use ipl\Html\Text;
|
||||||
use ipl\Html\ValidHtml;
|
use ipl\Html\ValidHtml;
|
||||||
use ipl\Orm\Model;
|
use ipl\Orm\Model;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
class CustomVarRenderer extends CustomVarRendererHook
|
class CustomVarRenderer extends CustomVarRendererHook
|
||||||
{
|
{
|
||||||
@ -61,6 +63,7 @@ class CustomVarRenderer extends CustomVarRendererHook
|
|||||||
|
|
||||||
public function prefetchForObject(Model $object): bool
|
public function prefetchForObject(Model $object): bool
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
if ($object instanceof Host) {
|
if ($object instanceof Host) {
|
||||||
$host = $object;
|
$host = $object;
|
||||||
$service = null;
|
$service = null;
|
||||||
@ -82,6 +85,8 @@ class CustomVarRenderer extends CustomVarRendererHook
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
do {
|
do {
|
||||||
if ($i > 3) {
|
if ($i > 3) {
|
||||||
|
Logger::error("Failed to find service '%s' on host '%s'", $serviceName, $host->name);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
} elseif ($serviceOrigin[$i] === 'direct') {
|
} elseif ($serviceOrigin[$i] === 'direct') {
|
||||||
$directorServiceObj = IcingaService::loadOptional([
|
$directorServiceObj = IcingaService::loadOptional([
|
||||||
@ -153,6 +158,12 @@ class CustomVarRenderer extends CustomVarRendererHook
|
|||||||
} while (! $directorServiceObj);
|
} while (! $directorServiceObj);
|
||||||
}
|
}
|
||||||
} catch (NotFoundError $_) {
|
} 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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,15 +215,22 @@ class CustomVarRenderer extends CustomVarRendererHook
|
|||||||
|
|
||||||
foreach ($dataListEntries as $dataListEntry) {
|
foreach ($dataListEntries as $dataListEntry) {
|
||||||
$field = $fieldsWithDataLists[$dataListEntry->datafield_id];
|
$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;
|
return true;
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
Logger::error("%s\n%s", $e, $e->getTraceAsString());
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderCustomVarKey(string $key)
|
public function renderCustomVarKey(string $key)
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
if (isset($this->fieldConfig[$key]['label'])) {
|
if (isset($this->fieldConfig[$key]['label'])) {
|
||||||
return new HtmlElement(
|
return new HtmlElement(
|
||||||
'span',
|
'span',
|
||||||
@ -220,12 +238,16 @@ class CustomVarRenderer extends CustomVarRendererHook
|
|||||||
Text::create($this->fieldConfig[$key]['label'])
|
Text::create($this->fieldConfig[$key]['label'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
Logger::error("%s\n%s", $e, $e->getTraceAsString());
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderCustomVarValue(string $key, $value)
|
public function renderCustomVarValue(string $key, $value)
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
if (isset($this->fieldConfig[$key])) {
|
if (isset($this->fieldConfig[$key])) {
|
||||||
if ($this->fieldConfig[$key]['visibility'] === 'hidden') {
|
if ($this->fieldConfig[$key]['visibility'] === 'hidden') {
|
||||||
return '***';
|
return '***';
|
||||||
@ -241,6 +263,9 @@ class CustomVarRenderer extends CustomVarRendererHook
|
|||||||
return $this->renderDictionaryVal($key, (array) $value);
|
return $this->renderDictionaryVal($key, (array) $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
Logger::error("%s\n%s", $e, $e->getTraceAsString());
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user