diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php index 26d4ccdf6..aa860c433 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php @@ -578,6 +578,7 @@ abstract class BaseModel * The BaseModelMigration class should be named with the corresponding version * prefixed with an M and . replaced by _ for example : M1_0_1 equals version 1.0.1 * + * @return bool status (true-->success, false-->failed) */ public function runMigrations() { @@ -638,8 +639,11 @@ abstract class BaseModel } } catch (\Exception $e) { $logger->error("Model ".$class_info->getName() ." can't be saved, skip ( " .$e . " )"); + return false; } } + + return true; } } diff --git a/src/opnsense/mvc/script/run_migrations.php b/src/opnsense/mvc/script/run_migrations.php index 372cec261..05dbe3877 100755 --- a/src/opnsense/mvc/script/run_migrations.php +++ b/src/opnsense/mvc/script/run_migrations.php @@ -53,14 +53,18 @@ foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($model_dir if ($parent && $parent->name == 'OPNsense\Base\BaseModel') { $mdl = $mdl_class_info->newInstance(); $version_pre = $mdl->getVersion(); - $mdl->runMigrations(); + $mig_performed = $mdl->runMigrations(); $version_post = $mdl->getVersion(); if ($version_pre != $version_post) { - $version_pre = !empty($version_pre) ? $version_pre : ' '; - echo "Migrated " . $mdl_class_info->getName() . - " from " . $version_pre . - " to " . $version_post . "\n"; - $executed_migration = true; + if ($mig_performed) { + $version_pre = !empty($version_pre) ? $version_pre : ' '; + echo "Migrated " . $mdl_class_info->getName() . + " from " . $version_pre . + " to " . $version_post . "\n"; + $executed_migration = true; + } else { + echo "*** " . $mdl_class_info->getName() . " Migration failed, check log for details\n"; + } } elseif (!empty($version_post)) { echo "Keep version " . $mdl_class_info->getName() . " (".$version_post.")\n"; } else {