ImportExportDeniedProperties: extract logic

This commit is contained in:
Thomas Gelf 2022-08-03 09:01:09 +02:00
parent 74ea9adbf2
commit 079e6e6514
2 changed files with 53 additions and 40 deletions

View File

@ -20,7 +20,6 @@ use Icinga\Module\Director\Objects\IcingaObject;
use Icinga\Module\Director\Objects\IcingaService;
use Icinga\Module\Director\Objects\IcingaServiceSet;
use Icinga\Module\Director\Objects\IcingaTemplateChoice;
use Icinga\Module\Director\Objects\ImportRowModifier;
use Icinga\Module\Director\Objects\ImportSource;
use Icinga\Module\Director\Objects\InstantiatedViaHook;
use Icinga\Module\Director\Objects\SyncRule;
@ -34,29 +33,6 @@ use Zend_Db_Select;
class Exporter
{
protected static $denyProperties = [
DirectorJob::class => [
'last_attempt_succeeded',
'last_error_message',
'ts_last_attempt',
'ts_last_error',
],
ImportSource::class => [
// No state export
'import_state',
'last_error_message',
'last_attempt',
],
ImportRowModifier::class => [
// Not state, but to be removed:
'source_id',
],
SyncRule::class => [
'sync_state',
'last_error_message',
'last_attempt',
],
];
/** @var Adapter|\Zend_Db_Adapter_Abstract */
protected $db;
@ -89,7 +65,7 @@ class Exporter
? $this->exportIcingaObject($object)
: $this->exportDbObject($object);
$this->stripDeniedProperties($props, $object);
ImportExportDeniedProperties::strip($props, $object, $this->showIds);
$this->appendTypeSpecificRelations($props, $object);
if ($this->chosenProperties !== null) {
@ -344,21 +320,6 @@ class Exporter
return $db->fetchOne($query);
}
protected function stripDeniedProperties(array &$props, DbObject $object)
{
// TODO: this used to exist. Double-check all imports to verify it's not in use
// $originalId = $props['id'];
if (! $this->showIds) {
unset($props['id']);
}
$class = get_class($object);
if (isset(self::$denyProperties[$class])) {
foreach (self::$denyProperties[$class] as $key) {
unset($props[$key]);
}
}
}
protected function exportRowModifiers(ImportSource $object)
{
$modifiers = [];

View File

@ -0,0 +1,52 @@
<?php
namespace Icinga\Module\Director\Data;
use Icinga\Module\Director\Data\Db\DbObject;
use Icinga\Module\Director\Objects\DirectorJob;
use Icinga\Module\Director\Objects\ImportRowModifier;
use Icinga\Module\Director\Objects\ImportSource;
use Icinga\Module\Director\Objects\SyncRule;
class ImportExportDeniedProperties
{
protected static $denyProperties = [
DirectorJob::class => [
'last_attempt_succeeded',
'last_error_message',
'ts_last_attempt',
'ts_last_error',
],
ImportSource::class => [
// No state export
'import_state',
'last_error_message',
'last_attempt',
],
ImportRowModifier::class => [
// Not state, but to be removed:
'source_id',
],
SyncRule::class => [
'sync_state',
'last_error_message',
'last_attempt',
],
];
public static function strip(array &$props, DbObject $object, $showIds = false)
{
// TODO: this used to exist. Double-check all imports to verify it's not in use
// $originalId = $props['id'];
if (! $showIds) {
unset($props['id']);
}
$class = get_class($object);
if (isset(self::$denyProperties[$class])) {
foreach (self::$denyProperties[$class] as $key) {
unset($props[$key]);
}
}
}
}