From 6111a025adbcd15d586d205917236ec046b00c87 Mon Sep 17 00:00:00 2001 From: Thomas Casteleyn Date: Mon, 30 Oct 2023 14:29:23 +0100 Subject: [PATCH] Change IP Discovery Application synchro to use the primary_key as reconciliation (#5) * Change IP Discovery Application synchro to use the primary_key as reconciliation * Do not update uuid --- json/TeemIpDiscoveryIPApplicationCollector.json | 4 ++-- src/TeemIpDiscoveryCollectionPlan.class.inc.php | 4 ++++ ...iscoveryIPApplicationCollector.class.inc.php | 17 ++++++++--------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/json/TeemIpDiscoveryIPApplicationCollector.json b/json/TeemIpDiscoveryIPApplicationCollector.json index b2612d8..969f02d 100644 --- a/json/TeemIpDiscoveryIPApplicationCollector.json +++ b/json/TeemIpDiscoveryIPApplicationCollector.json @@ -8,7 +8,7 @@ "database_table_name": "", "scope_restriction": "", "full_load_periodicity": "0", - "reconciliation_policy": "use_attributes", + "reconciliation_policy": "use_primary_key", "action_on_zero": "error", "action_on_one": "update", "action_on_multiple": "error", @@ -227,7 +227,7 @@ { "attcode": "uuid", "update": "0", - "reconcile": "1", + "reconcile": "0", "update_policy": "master_locked", "finalclass": "SynchroAttribute" } diff --git a/src/TeemIpDiscoveryCollectionPlan.class.inc.php b/src/TeemIpDiscoveryCollectionPlan.class.inc.php index fc12e9d..c8b51a2 100644 --- a/src/TeemIpDiscoveryCollectionPlan.class.inc.php +++ b/src/TeemIpDiscoveryCollectionPlan.class.inc.php @@ -180,6 +180,7 @@ protected function GetDiscoveryParameters($sApplicationUUID): array Utils::Log(LOG_INFO, "An IP Discovery Application with UUID ".$sApplicationUUID." has been found in iTop."); $aData = reset($aResult['objects']); $aIPDiscoveryAttributes = $aData['fields']; + $aIPDiscoveryAttributes['id'] = (int) $aData['key']; foreach ($aIPDiscoveryAttributes['ipv4subnets_list'] as $aIPv4Subnet) { $sIndex = $aIPv4Subnet['ip']; @@ -386,6 +387,9 @@ public function SetApplicationParam($sParam, $sValue): void public function GetApplicationParam($sParam) { switch ($sParam) { + case 'id': + return $this->aDiscoveryApplication['params']['id']; + case 'uuid': return $this->aDiscoveryApplication['UUID']; diff --git a/src/TeemIpDiscoveryIPApplicationCollector.class.inc.php b/src/TeemIpDiscoveryIPApplicationCollector.class.inc.php index aed3cc9..e03a2a3 100644 --- a/src/TeemIpDiscoveryIPApplicationCollector.class.inc.php +++ b/src/TeemIpDiscoveryIPApplicationCollector.class.inc.php @@ -9,7 +9,7 @@ class TeemIpDiscoveryIPApplicationCollector extends Collector const MAX_IP_APPS = 1; protected $iIndex; - protected $oCollectionPlan; + protected TeemIpDiscoveryCollectionPlan $oCollectionPlan; /** * @inheritdoc @@ -87,18 +87,17 @@ public function Synchronize($iMaxChunkSize = 0): bool /** * @inheritdoc + * @return array{ primary_key: int, last_discovery_date: string, duration:int }|false */ - public function fetch() + public function Fetch() { if ($this->iIndex < static::MAX_IP_APPS) { - $aDatas = array(); - $aDatas['primary_key'] = $this->oCollectionPlan->GetApplicationParam('uuid'); - $aDatas['uuid'] = $this->oCollectionPlan->GetApplicationParam('uuid'); - $aDatas['last_discovery_date'] = $this->oCollectionPlan->GetApplicationParam('last_discovery_date'); - $aDatas['duration'] = $this->oCollectionPlan->GetApplicationParam('duration'); $this->iIndex++; - - return $aDatas; + return [ + 'primary_key' => $this->oCollectionPlan->GetApplicationParam('id'), + 'last_discovery_date' => $this->oCollectionPlan->GetApplicationParam('last_discovery_date'), + 'duration' => $this->oCollectionPlan->GetApplicationParam('duration') + ]; } return false;