mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-07-30 01:04:12 +02:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
e59e2d0c2c
@ -4,7 +4,7 @@ namespace Icinga\Module\Director\Import;
|
||||
|
||||
use Exception;
|
||||
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\ImportSource;
|
||||
use Icinga\Module\Director\Objects\IcingaService;
|
||||
@ -20,6 +20,11 @@ class Sync
|
||||
*/
|
||||
protected $rule;
|
||||
|
||||
/**
|
||||
* @var Db
|
||||
*/
|
||||
protected $db;
|
||||
|
||||
/**
|
||||
* Related ImportSource objects
|
||||
*
|
||||
@ -63,6 +68,9 @@ class Sync
|
||||
|
||||
protected $syncProperties;
|
||||
|
||||
/**
|
||||
* @var SyncRun
|
||||
*/
|
||||
protected $run;
|
||||
|
||||
protected $runStartTime;
|
||||
@ -72,6 +80,8 @@ class Sync
|
||||
/**
|
||||
* Constructor. No direct initialization allowed right now. Please use one
|
||||
* of the available static factory methods
|
||||
*
|
||||
* @param SyncRule $rule
|
||||
*/
|
||||
public function __construct(SyncRule $rule)
|
||||
{
|
||||
@ -240,6 +250,7 @@ class Sync
|
||||
$combinedKey = $this->rule->hasCombinedKey();
|
||||
|
||||
foreach ($this->sources as $source) {
|
||||
/** @var ImportSource $source */
|
||||
$sourceId = $source->id;
|
||||
|
||||
// Provide an alias column for our key. TODO: double-check this!
|
||||
@ -544,6 +555,8 @@ class Sync
|
||||
$dba = $db->getDbAdapter();
|
||||
$dba->beginTransaction();
|
||||
|
||||
$object = null;
|
||||
|
||||
try {
|
||||
$formerActivityChecksum = Util::hex2binary(
|
||||
$db->getLastActivityChecksum()
|
||||
@ -604,7 +617,15 @@ class Sync
|
||||
|
||||
} catch (Exception $e) {
|
||||
$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;
|
||||
|
@ -401,7 +401,7 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
||||
*/
|
||||
public function setAssign_filter($filter)
|
||||
{
|
||||
if (! $this->supportsAssignments()) {
|
||||
if (! $this->supportsAssignments() && $filter !== null) {
|
||||
if ($this->hasProperty('object_type')) {
|
||||
$type = $this->object_type;
|
||||
} else {
|
||||
|
@ -98,14 +98,28 @@ class PlainObjectRenderer
|
||||
return self::renderInteger($object);
|
||||
} elseif (is_float($object)) {
|
||||
return self::renderFloat($object);
|
||||
} elseif (is_object($object) || static::isAssocArray($object)) {
|
||||
return self::renderHash($object, $prefix);
|
||||
} elseif (is_array($object)) {
|
||||
return self::renderArray($object, $prefix);
|
||||
} elseif (is_object($object)) {
|
||||
return self::renderHash($object, $prefix);
|
||||
} elseif (is_string($object)) {
|
||||
return self::renderString($object);
|
||||
} else {
|
||||
return '(UNKNOWN TYPE) ' . var_export($object, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if an array contains assoc keys
|
||||
*
|
||||
* @from https://stackoverflow.com/questions/173400/how-to-check-if-php-array-is-associative-or-sequential
|
||||
* @param $arr
|
||||
* @return bool
|
||||
*/
|
||||
protected static function isAssocArray($arr)
|
||||
{
|
||||
if (! is_array($arr)) return false;
|
||||
if (array() === $arr) return false;
|
||||
return array_keys($arr) !== range(0, count($arr) - 1);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user