From e516ea7ec8418b3744c8b42ac552825c35a2eb96 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Sun, 25 Feb 2024 19:47:23 +0100 Subject: [PATCH] mvc - extend model implementation to ease legacy migrations. add migration strategy for LegacyMappers, when data is already available, migration should add uuid's to the records. Missed this in https://github.com/opnsense/core/commit/35b5e0b64bb01f892179d89704d60521eaf549d8 --- .../mvc/app/models/OPNsense/Base/BaseModel.php | 11 +++++++++++ src/opnsense/mvc/script/run_migrations.php | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php index d0138baf3..72966178b 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php @@ -85,6 +85,12 @@ abstract class BaseModel */ private static $internalCacheReflectionClasses = null; + /** + * uuid missing on load + * @var bool + */ + private $internalMissingUuids = false; + /** * If the model needs a custom initializer, override this init() method * Default behaviour is to do nothing in this init. @@ -253,6 +259,7 @@ abstract class BaseModel $tagUUID = (string)$conf_section->attributes()['uuid']; } else { $tagUUID = $internal_data->generateUUID(); + $this->internalMissingUuids = true; } // iterate array items from config data @@ -699,6 +706,10 @@ abstract class BaseModel public function runMigrations() { if ($this->isVolatile() || $this->isLegacyMapper()) { + if ($this->isLegacyMapper() && $this->internalMissingUuids) { + $this->serializeToConfig(); + return true; + } return false; } elseif (version_compare($this->internal_current_model_version ?? '0.0.0', $this->internal_model_version, '<')) { $upgradePerformed = false; diff --git a/src/opnsense/mvc/script/run_migrations.php b/src/opnsense/mvc/script/run_migrations.php index a734f66ce..466622ac0 100755 --- a/src/opnsense/mvc/script/run_migrations.php +++ b/src/opnsense/mvc/script/run_migrations.php @@ -63,6 +63,10 @@ foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($model_dir echo "*** " . $mdl_class_info->getName() . " Migration failed, check log for details\n"; } } elseif (!empty($version_post)) { + if ($mig_performed) { + echo "Migrated " . $mdl_class_info->getName() . "\n"; + $executed_migration = true; + } /* only relevant for debugging: */ //echo "Keep version " . $mdl_class_info->getName() . " (" . $version_post . ")\n"; } else {