diff --git a/conf/db/upgrade/V5.5.6__schema.sql b/conf/db/upgrade/V5.5.6__schema.sql index 69eee484a0..4b92ec28fb 100644 --- a/conf/db/upgrade/V5.5.6__schema.sql +++ b/conf/db/upgrade/V5.5.6__schema.sql @@ -6,3 +6,11 @@ ALTER TABLE `GuestVmScriptExecutedRecordDetailVO` CALL ADD_COLUMN('PciDeviceVO', 'vmPciDeviceAddress', 'varchar(32)', 1, NULL); CALL ADD_COLUMN('MdevDeviceVO', 'mdevDeviceAddress', 'varchar(32)', 1, NULL); + +-- Add index for modelId field to support duplicate checking +-- Use CREATE_INDEX procedure (defined in beforeMigrate.sql) for idempotent operation +CALL CREATE_INDEX('ModelVO', 'idx_modelId', 'modelId'); + +-- Upgrade existing data: set modelId to uuid if modelId is NULL +-- This UPDATE is idempotent: WHERE clause ensures only NULL values are updated +UPDATE ModelVO SET modelId = uuid WHERE modelId IS NULL; diff --git a/sdk/src/main/java/org/zstack/sdk/AddModelAction.java b/sdk/src/main/java/org/zstack/sdk/AddModelAction.java index d05730e861..993a073b9c 100644 --- a/sdk/src/main/java/org/zstack/sdk/AddModelAction.java +++ b/sdk/src/main/java/org/zstack/sdk/AddModelAction.java @@ -67,6 +67,9 @@ public Result throwExceptionIfError() { @Param(required = false, maxLength = 512, nonempty = false, nullElements = false, emptyString = true, noTrim = false) public java.lang.String gpuConstraintDescription; + @Param(required = false, maxLength = 255, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String modelId; + @Param(required = false) public java.lang.String resourceUuid; diff --git a/sdk/src/main/java/org/zstack/sdk/UpdateModelAction.java b/sdk/src/main/java/org/zstack/sdk/UpdateModelAction.java index 108cfa2e38..d8a6de859d 100644 --- a/sdk/src/main/java/org/zstack/sdk/UpdateModelAction.java +++ b/sdk/src/main/java/org/zstack/sdk/UpdateModelAction.java @@ -52,6 +52,9 @@ public Result throwExceptionIfError() { @Param(required = false, maxLength = 512, nonempty = false, nullElements = false, emptyString = true, noTrim = false) public java.lang.String gpuConstraintDescription; + @Param(required = false, maxLength = 255, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String modelId; + @Param(required = false) public java.util.List systemTags;