mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-07-29 08:44:11 +02:00
parent
168369e738
commit
19e51e15e4
@ -2445,8 +2445,14 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
$object->set('vars', []);
|
$object->set('vars', []);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($object->supportsGroups()) {
|
||||||
|
$groups = $object->getGroups();
|
||||||
|
$object->set('groups', []);
|
||||||
|
}
|
||||||
|
|
||||||
$plain = (array) $object->toPlainObject(null, false);
|
$plain = (array) $object->toPlainObject(null, false);
|
||||||
unset($plain['vars']);
|
unset($plain['vars']);
|
||||||
|
unset($plain['groups']);
|
||||||
foreach ($plain as $p => $v) {
|
foreach ($plain as $p => $v) {
|
||||||
if ($v === null) {
|
if ($v === null) {
|
||||||
// We want default values, but no null values
|
// We want default values, but no null values
|
||||||
@ -2468,6 +2474,12 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($object->supportsGroups()) {
|
||||||
|
if (! empty($groups)) {
|
||||||
|
$this->set('groups', $groups);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,16 +164,20 @@ class IcingaObjectGroups implements Iterator, Countable, IcingaConfigRenderer
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (array_key_exists($group, $this->groups)) {
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var IcingaObjectGroup $class */
|
/** @var IcingaObjectGroup $class */
|
||||||
$class = $this->getGroupClass();
|
$class = $this->getGroupClass();
|
||||||
|
|
||||||
if ($group instanceof $class) {
|
if ($group instanceof $class) {
|
||||||
|
if (array_key_exists($group->getObjectName(), $this->groups)) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
$this->groups[$group->object_name] = $group;
|
$this->groups[$group->object_name] = $group;
|
||||||
} elseif (is_string($group)) {
|
} elseif (is_string($group)) {
|
||||||
|
if (array_key_exists($group, $this->groups)) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
$connection = $this->object->getConnection();
|
$connection = $this->object->getConnection();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -7,6 +7,7 @@ use Icinga\Module\Director\Data\PropertiesFilter\CustomVariablesFilter;
|
|||||||
use Icinga\Module\Director\IcingaConfig\IcingaConfig;
|
use Icinga\Module\Director\IcingaConfig\IcingaConfig;
|
||||||
use Icinga\Module\Director\Objects\DirectorDatafield;
|
use Icinga\Module\Director\Objects\DirectorDatafield;
|
||||||
use Icinga\Module\Director\Objects\IcingaHost;
|
use Icinga\Module\Director\Objects\IcingaHost;
|
||||||
|
use Icinga\Module\Director\Objects\IcingaHostGroup;
|
||||||
use Icinga\Module\Director\Objects\IcingaZone;
|
use Icinga\Module\Director\Objects\IcingaZone;
|
||||||
use Icinga\Module\Director\Test\BaseTestCase;
|
use Icinga\Module\Director\Test\BaseTestCase;
|
||||||
use Icinga\Exception\IcingaException;
|
use Icinga\Exception\IcingaException;
|
||||||
@ -621,6 +622,41 @@ class IcingaHostTest extends BaseTestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testMergingObjectKeepsGroupsIfNotGiven()
|
||||||
|
{
|
||||||
|
$one = IcingaHostGroup::create([
|
||||||
|
'object_name' => 'one',
|
||||||
|
'object_type' => 'object',
|
||||||
|
]);
|
||||||
|
$two = IcingaHostGroup::create([
|
||||||
|
'object_name' => 'two',
|
||||||
|
'object_type' => 'object',
|
||||||
|
]);
|
||||||
|
$a = IcingaHost::create([
|
||||||
|
'object_name' => 'one',
|
||||||
|
'object_type' => 'object',
|
||||||
|
'imports' => [],
|
||||||
|
'address' => '127.0.0.2',
|
||||||
|
'groups' => [$one, $two]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$b = IcingaHost::create([
|
||||||
|
'object_name' => 'one',
|
||||||
|
'object_type' => 'object',
|
||||||
|
'imports' => [],
|
||||||
|
'address' => '127.0.0.42',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$a->merge($b);
|
||||||
|
$this->assertEquals(
|
||||||
|
'127.0.0.42',
|
||||||
|
$a->get('address')
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
['one', 'two'],
|
||||||
|
$a->getGroups()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
protected function getDummyRelatedProperties()
|
protected function getDummyRelatedProperties()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user