N°9514 - End user device cannot be uninstalled (WIP)

This commit is contained in:
Eric Espie
2026-04-17 14:18:07 +02:00
parent f05d98aba8
commit d3dbe7b231
4 changed files with 17 additions and 9 deletions

View File

@@ -92,7 +92,7 @@ class DataFeatureRemovalController extends Controller
$oDryRemovalRuntimeEnvironment->CompileFrom($sSourceEnv); $oDryRemovalRuntimeEnvironment->CompileFrom($sSourceEnv);
$oSetupAudit = new SetupAudit($sSourceEnv); $oSetupAudit = new SetupAudit($sSourceEnv);
$aGetRemovedClasses = $oSetupAudit->GetIssues(); $aGetRemovedClasses = $oSetupAudit->RunDataAudit();
IssueLog::Debug(__METHOD__, null, ['aGetRemovedClasses' => $aGetRemovedClasses]); IssueLog::Debug(__METHOD__, null, ['aGetRemovedClasses' => $aGetRemovedClasses]);
$this->aCountClassesToCleanup = $aGetRemovedClasses; $this->aCountClassesToCleanup = $aGetRemovedClasses;
} }

View File

@@ -51,7 +51,15 @@ abstract class AbstractSetupAudit
return $this->aRemovedClasses; return $this->aRemovedClasses;
} }
public function GetIssues(bool $bStopDataCheckAtFirstIssue = false): array /**
* Generate issues when audit detects data to remove
*
* @param bool $bStopDataCheckAtFirstIssue
*
* @return array
* @throws \CoreException
*/
public function RunDataAudit(bool $bStopDataCheckAtFirstIssue = false): array
{ {
$this->aFinalClassesToCleanup = []; $this->aFinalClassesToCleanup = [];
@@ -64,7 +72,7 @@ abstract class AbstractSetupAudit
$iCount = $this->Count($sClass); $iCount = $this->Count($sClass);
$this->aFinalClassesToCleanup[$sClass] = $iCount; $this->aFinalClassesToCleanup[$sClass] = $iCount;
if ($bStopDataCheckAtFirstIssue && $iCount > 0) { if ($bStopDataCheckAtFirstIssue && $iCount > 0) {
//setup envt: should raise issue ASAP //setup env: should raise issue ASAP
$this->LogInfoWithProperLogger("Setup audit found data to cleanup", null, $this->aFinalClassesToCleanup); $this->LogInfoWithProperLogger("Setup audit found data to cleanup", null, $this->aFinalClassesToCleanup);
return $this->aFinalClassesToCleanup; return $this->aFinalClassesToCleanup;
} }

View File

@@ -1329,9 +1329,9 @@ class RunTimeEnvironment
$oSetupAudit = new SetupAudit(ITOP_DEFAULT_ENV, $this->sBuildEnv); $oSetupAudit = new SetupAudit(ITOP_DEFAULT_ENV, $this->sBuildEnv);
//Make sure the MetaModel is started before analysing for issues //Make sure the MetaModel is started before analysing for issues
$sConfFile = utils::GetConfigFilePath($this->sBuildEnv); $sConfFile = utils::GetConfigFilePath(ITOP_DEFAULT_ENV);
MetaModel::Startup($sConfFile, false, false, false, $this->sBuildEnv); MetaModel::Startup($sConfFile, false, false); // Start on production environment
$oSetupAudit->GetIssues(true); $oSetupAudit->RunDataAudit(true);
$iCount = $oSetupAudit->GetDataToCleanupCount(); $iCount = $oSetupAudit->GetDataToCleanupCount();
if ($iCount > 0) { if ($iCount > 0) {

View File

@@ -66,7 +66,7 @@ class SetupAuditTest extends ItopCustomDatamodelTestCase
$expected = [ $expected = [
"FinalClassFeature2Module1MyFinalClassFromLocation" => 0, "FinalClassFeature2Module1MyFinalClassFromLocation" => 0,
]; ];
$this->assertEqualsCanonicalizing($expected, $oSetupAudit->GetIssues()); $this->assertEqualsCanonicalizing($expected, $oSetupAudit->RunDataAudit());
} }
public function testGetRemovedClassesFromSetupWizard() public function testGetRemovedClassesFromSetupWizard()
@@ -103,7 +103,7 @@ class SetupAuditTest extends ItopCustomDatamodelTestCase
"FinalClassFeature1Module1MyFinalClassFromLocation" => 1, "FinalClassFeature1Module1MyFinalClassFromLocation" => 1,
"FinalClassFeature2Module1MyFinalClassFromLocation" => 0, "FinalClassFeature2Module1MyFinalClassFromLocation" => 0,
]; ];
$this->assertEqualsCanonicalizing($expected, $oSetupAudit->GetIssues()); $this->assertEqualsCanonicalizing($expected, $oSetupAudit->RunDataAudit());
} }
public function testAuditExtensionsCleanupRulesFailASAP() public function testAuditExtensionsCleanupRulesFailASAP()
@@ -128,6 +128,6 @@ class SetupAuditTest extends ItopCustomDatamodelTestCase
$expected = [ $expected = [
"FinalClassFeature1Module1MyFinalClassFromLocation" => 1, "FinalClassFeature1Module1MyFinalClassFromLocation" => 1,
]; ];
$this->assertEqualsCanonicalizing($expected, $oSetupAudit->GetIssues(true)); $this->assertEqualsCanonicalizing($expected, $oSetupAudit->RunDataAudit(true));
} }
} }