diff --git a/setup/feature_removal/ModelReflectionSerializer.php b/setup/feature_removal/ModelReflectionSerializer.php index 8b04427b7..53ed1d5df 100644 --- a/setup/feature_removal/ModelReflectionSerializer.php +++ b/setup/feature_removal/ModelReflectionSerializer.php @@ -36,19 +36,6 @@ class ModelReflectionSerializer { IssueLog::Info(__METHOD__, null, ['env' => $sEnv]); - $sCurrentEnvt = MetaModel::GetEnvironment(); - if ($sCurrentEnvt === $sEnv) { - $aClasses = MetaModel::GetClasses(); - if (count($aClasses) === 0) { - //MetaModel not started yet - $sConfFile = utils::GetConfigFilePath($sEnv); - - MetaModel::Startup($sConfFile, false /* $bModelOnly */, false /* $bAllowCache */, false /* $bTraceSourceFiles */, $sEnv); - $aClasses = MetaModel::GetClasses(); - } - return $aClasses; - } - $sPHPExec = trim(utils::GetConfig()->Get('php_path')); $sOutput = ""; $iRes = 0; diff --git a/setup/modulediscovery/ModuleFileReader.php b/setup/modulediscovery/ModuleFileReader.php index 9fbcd634c..b87df8895 100644 --- a/setup/modulediscovery/ModuleFileReader.php +++ b/setup/modulediscovery/ModuleFileReader.php @@ -16,6 +16,7 @@ use PhpParser\Node\Stmt\ElseIf_; use PhpParser\Node\Stmt\Expression; use PhpParser\Node\Stmt\If_; use PhpParser\ParserFactory; +use SetupLog; require_once __DIR__.'/ModuleFileReaderException.php'; require_once APPROOT.'sources/PhpParser/Evaluation/PhpExpressionEvaluator.php'; @@ -143,6 +144,7 @@ class ModuleFileReader } // Replace the main function call by an assignment to a variable, as an array... $sModuleFileContents = str_replace(['SetupWebPage::AddModule', 'ModuleDiscovery::AddModule'], '$aModuleInfo = array', $sModuleFileContents); + SetupLog::Debug(__METHOD__, null, ['module_file' => $sModuleFilePath]); eval($sModuleFileContents); // Assigns $aModuleInfo if (count($aModuleInfo) === 0) { diff --git a/setup/runtimeenv.class.inc.php b/setup/runtimeenv.class.inc.php index 74d9667d9..8d0ace623 100644 --- a/setup/runtimeenv.class.inc.php +++ b/setup/runtimeenv.class.inc.php @@ -1126,7 +1126,9 @@ class RunTimeEnvironment } if (is_null($aSelectedModules) || in_array($sModuleId, $aSelectedModules)) { - $aArgs = [MetaModel::GetConfig(), $aModule['installed_version'], $aModule['available_version']]; + $oConfig = MetaModel::GetConfig(); + $oConfig->Set('access_mode', ACCESS_FULL); + $aArgs = [$oConfig, $aModule['installed_version'], $aModule['available_version']]; RunTimeEnvironment::CallInstallerHandler($aModule, $sHandlerName, $aArgs); } } @@ -1193,6 +1195,9 @@ class RunTimeEnvironment */ public function LoadData($aAvailableModules, $bSampleData, $aSelectedModules = null) { + $oConfig = MetaModel::GetConfig(); + $oConfig->Set('access_mode', ACCESS_FULL); + $oDataLoader = new XMLDataLoader(); CMDBObject::SetCurrentChangeFromParams("Initialization from XML files for the selected modules "); @@ -1326,9 +1331,6 @@ class RunTimeEnvironment { $oSetupAudit = new SetupAudit(ITOP_DEFAULT_ENV, $this->sBuildEnv); - //Make sure the MetaModel is started before analysing for issues - $sConfFile = utils::GetConfigFilePath(ITOP_DEFAULT_ENV); - MetaModel::Startup($sConfFile, false, false); // Start on production environment $oSetupAudit->RunDataAudit(true); $iCount = $oSetupAudit->GetDataToCleanupCount(); @@ -1537,6 +1539,15 @@ class RunTimeEnvironment $oBackup->CreateCompressedBackup($sTargetFile, $sSourceConfigFile); } + /** + * @param \Config $oConfig + * @return void + */ + public function EnterMaintenanceMode(Config $oConfig) + { + SetupUtils::EnterMaintenanceMode($oConfig); + } + public function EnterReadOnlyMode(Config $oConfig) { if ($this->GetFinalEnv() != 'production') { @@ -1550,6 +1561,11 @@ class RunTimeEnvironment SetupUtils::EnterReadOnlyMode($oConfig); } + public function ExitMaintenanceMode(): void + { + SetupUtils::ExitMaintenanceMode(); + } + public function ExitReadOnlyMode() { if ($this->GetFinalEnv() != 'production') { diff --git a/setup/sequencers/ApplicationInstallSequencer.php b/setup/sequencers/ApplicationInstallSequencer.php index fe68981fe..bfa612d68 100644 --- a/setup/sequencers/ApplicationInstallSequencer.php +++ b/setup/sequencers/ApplicationInstallSequencer.php @@ -89,6 +89,7 @@ class ApplicationInstallSequencer extends StepSequencer return $this->ComputeNextStep($sStep); case 'migrate-before': + $this->oRunTimeEnvironment->EnterMaintenanceMode($this->GetConfig()); if (array_key_exists($sStep, $this->oParams->Get('optional_steps', []))) { $this->oRunTimeEnvironment->MigrateDataBeforeUpdateStructure($this->oParams->Get('mode'), $this->GetConfig()); } @@ -139,6 +140,7 @@ class ApplicationInstallSequencer extends StepSequencer case 'commit': $this->oRunTimeEnvironment->Commit(); $this->oRunTimeEnvironment->ExitReadOnlyMode(); + $this->oRunTimeEnvironment->ExitMaintenanceMode(); return $this->GetNextStep('', 'Completed', 100); default: diff --git a/setup/sequencers/StepSequencer.php b/setup/sequencers/StepSequencer.php index e80d986f1..bb7515299 100644 --- a/setup/sequencers/StepSequencer.php +++ b/setup/sequencers/StepSequencer.php @@ -159,6 +159,11 @@ abstract class StepSequencer file_put_contents(APPROOT.'log/'.$sFileName.'.xml', $sSafeXml); } + /** + * @return \Config + * @throws \ConfigException + * @throws \CoreException + */ protected function GetConfig() { if (! is_null($this->oTestConfig)) {