Sync: Tell the user which object caused an Exception
This commit is contained in:
parent
f9f61be7aa
commit
5199dc7826
|
@ -4,7 +4,7 @@ namespace Icinga\Module\Director\Import;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use Icinga\Data\Filter\Filter;
|
use Icinga\Data\Filter\Filter;
|
||||||
use Icinga\Module\Director\Import\SyncUtils;
|
use Icinga\Module\Director\Db;
|
||||||
use Icinga\Module\Director\Objects\IcingaObject;
|
use Icinga\Module\Director\Objects\IcingaObject;
|
||||||
use Icinga\Module\Director\Objects\ImportSource;
|
use Icinga\Module\Director\Objects\ImportSource;
|
||||||
use Icinga\Module\Director\Objects\IcingaService;
|
use Icinga\Module\Director\Objects\IcingaService;
|
||||||
|
@ -20,6 +20,11 @@ class Sync
|
||||||
*/
|
*/
|
||||||
protected $rule;
|
protected $rule;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Db
|
||||||
|
*/
|
||||||
|
protected $db;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Related ImportSource objects
|
* Related ImportSource objects
|
||||||
*
|
*
|
||||||
|
@ -63,6 +68,9 @@ class Sync
|
||||||
|
|
||||||
protected $syncProperties;
|
protected $syncProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var SyncRun
|
||||||
|
*/
|
||||||
protected $run;
|
protected $run;
|
||||||
|
|
||||||
protected $runStartTime;
|
protected $runStartTime;
|
||||||
|
@ -72,6 +80,8 @@ class Sync
|
||||||
/**
|
/**
|
||||||
* Constructor. No direct initialization allowed right now. Please use one
|
* Constructor. No direct initialization allowed right now. Please use one
|
||||||
* of the available static factory methods
|
* of the available static factory methods
|
||||||
|
*
|
||||||
|
* @param SyncRule $rule
|
||||||
*/
|
*/
|
||||||
public function __construct(SyncRule $rule)
|
public function __construct(SyncRule $rule)
|
||||||
{
|
{
|
||||||
|
@ -240,6 +250,7 @@ class Sync
|
||||||
$combinedKey = $this->rule->hasCombinedKey();
|
$combinedKey = $this->rule->hasCombinedKey();
|
||||||
|
|
||||||
foreach ($this->sources as $source) {
|
foreach ($this->sources as $source) {
|
||||||
|
/** @var ImportSource $source */
|
||||||
$sourceId = $source->id;
|
$sourceId = $source->id;
|
||||||
|
|
||||||
// Provide an alias column for our key. TODO: double-check this!
|
// Provide an alias column for our key. TODO: double-check this!
|
||||||
|
@ -544,6 +555,8 @@ class Sync
|
||||||
$dba = $db->getDbAdapter();
|
$dba = $db->getDbAdapter();
|
||||||
$dba->beginTransaction();
|
$dba->beginTransaction();
|
||||||
|
|
||||||
|
$object = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$formerActivityChecksum = Util::hex2binary(
|
$formerActivityChecksum = Util::hex2binary(
|
||||||
$db->getLastActivityChecksum()
|
$db->getLastActivityChecksum()
|
||||||
|
@ -604,7 +617,15 @@ class Sync
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$dba->rollBack();
|
$dba->rollBack();
|
||||||
throw $e;
|
if ($object !== null && $object instanceof IcingaObject) {
|
||||||
|
throw new IcingaException(
|
||||||
|
'Exception while syncing %s %s: %s',
|
||||||
|
get_class($object), $object->get('object_name'), $e->getMessage(), $e
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->run->id;
|
return $this->run->id;
|
||||||
|
|
Loading…
Reference in New Issue