From 009c2974e7f28515e970da39141d16d430551cd2 Mon Sep 17 00:00:00 2001 From: "ye.zou" Date: Mon, 9 Feb 2026 11:23:30 +0800 Subject: [PATCH 1/2] [ai]: add DB migration for per-vendor GPU quota Migrate existing container.gpu.video.ram.size QuotaVO rows to container.gpu.video.ram.size.nvidia using INSERT IGNORE to support backward-compatible per-vendor GPU quota rollout. ZSTAC-73546 Co-Authored-By: Claude Opus 4.6 --- conf/db/upgrade/V5.5.6__schema.sql | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/conf/db/upgrade/V5.5.6__schema.sql b/conf/db/upgrade/V5.5.6__schema.sql index 597ded44e5..9158b3309c 100644 --- a/conf/db/upgrade/V5.5.6__schema.sql +++ b/conf/db/upgrade/V5.5.6__schema.sql @@ -229,3 +229,46 @@ SET g.`allocateStatus` = 'Unallocatable' WHERE p.`virtStatus` IN ('VFIO_MDEV_VIRTUALIZED', 'SRIOV_VIRTUALIZED') AND p.`vmInstanceUuid` IS NULL AND g.`allocateStatus` != 'Unallocatable'; + +-- ZSTAC-73546: Migrate existing global GPU quota to per-vendor (NVIDIA) quota +-- For users who already set container.gpu.video.ram.size, copy the value as NVIDIA vendor quota. +-- Other vendor quotas will use the GlobalConfig default (32GB) via the quota framework. +DELIMITER $$ + +CREATE PROCEDURE MigrateGpuQuotaPerVendor() +BEGIN + DECLARE done INT DEFAULT FALSE; + DECLARE v_identity_uuid VARCHAR(32); + DECLARE v_identity_type VARCHAR(255); + DECLARE v_value BIGINT; + DECLARE cur CURSOR FOR + SELECT identityUuid, identityType, value + FROM QuotaVO + WHERE name = 'container.gpu.video.ram.size'; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + OPEN cur; + read_loop: LOOP + FETCH cur INTO v_identity_uuid, v_identity_type, v_value; + IF done THEN + LEAVE read_loop; + END IF; + + INSERT IGNORE INTO QuotaVO (uuid, name, identityUuid, identityType, value, lastOpDate, createDate) + VALUES ( + REPLACE(UUID(), '-', ''), + 'container.gpu.video.ram.size.nvidia', + v_identity_uuid, + v_identity_type, + v_value, + NOW(), + NOW() + ); + END LOOP; + CLOSE cur; +END$$ + +DELIMITER ; + +CALL MigrateGpuQuotaPerVendor(); +DROP PROCEDURE IF EXISTS MigrateGpuQuotaPerVendor; From cf4df424d5b4f969438e8e0e2820bd96bfd2d08f Mon Sep 17 00:00:00 2001 From: "ye.zou" Date: Mon, 16 Feb 2026 10:49:22 +0800 Subject: [PATCH 2/2] [ai]: move GPU quota migration to V5.5.12 schema with backticks Resolves: ZSTAC-73546 Change-Id: I3ab090f9ba45417de4adfc93ae7be365ad979040 --- conf/db/upgrade/V5.5.12__schema.sql | 42 ++++++++++++++++++++++++++++ conf/db/upgrade/V5.5.6__schema.sql | 43 ----------------------------- 2 files changed, 42 insertions(+), 43 deletions(-) create mode 100644 conf/db/upgrade/V5.5.12__schema.sql diff --git a/conf/db/upgrade/V5.5.12__schema.sql b/conf/db/upgrade/V5.5.12__schema.sql new file mode 100644 index 0000000000..26b5dcb65b --- /dev/null +++ b/conf/db/upgrade/V5.5.12__schema.sql @@ -0,0 +1,42 @@ +-- ZSTAC-73546: Migrate existing global GPU quota to per-vendor (NVIDIA) quota +-- For users who already set container.gpu.video.ram.size, copy the value as NVIDIA vendor quota. +-- Other vendor quotas will use the GlobalConfig default (32GB) via the quota framework. +DELIMITER $$ + +CREATE PROCEDURE MigrateGpuQuotaPerVendor() +BEGIN + DECLARE done INT DEFAULT FALSE; + DECLARE v_identity_uuid VARCHAR(32); + DECLARE v_identity_type VARCHAR(255); + DECLARE v_value BIGINT; + DECLARE cur CURSOR FOR + SELECT `identityUuid`, `identityType`, `value` + FROM `QuotaVO` + WHERE `name` = 'container.gpu.video.ram.size'; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + OPEN cur; + read_loop: LOOP + FETCH cur INTO v_identity_uuid, v_identity_type, v_value; + IF done THEN + LEAVE read_loop; + END IF; + + INSERT IGNORE INTO `QuotaVO` (`uuid`, `name`, `identityUuid`, `identityType`, `value`, `lastOpDate`, `createDate`) + VALUES ( + REPLACE(UUID(), '-', ''), + 'container.gpu.video.ram.size.nvidia', + v_identity_uuid, + v_identity_type, + v_value, + NOW(), + NOW() + ); + END LOOP; + CLOSE cur; +END$$ + +DELIMITER ; + +CALL MigrateGpuQuotaPerVendor(); +DROP PROCEDURE IF EXISTS MigrateGpuQuotaPerVendor; diff --git a/conf/db/upgrade/V5.5.6__schema.sql b/conf/db/upgrade/V5.5.6__schema.sql index 9158b3309c..597ded44e5 100644 --- a/conf/db/upgrade/V5.5.6__schema.sql +++ b/conf/db/upgrade/V5.5.6__schema.sql @@ -229,46 +229,3 @@ SET g.`allocateStatus` = 'Unallocatable' WHERE p.`virtStatus` IN ('VFIO_MDEV_VIRTUALIZED', 'SRIOV_VIRTUALIZED') AND p.`vmInstanceUuid` IS NULL AND g.`allocateStatus` != 'Unallocatable'; - --- ZSTAC-73546: Migrate existing global GPU quota to per-vendor (NVIDIA) quota --- For users who already set container.gpu.video.ram.size, copy the value as NVIDIA vendor quota. --- Other vendor quotas will use the GlobalConfig default (32GB) via the quota framework. -DELIMITER $$ - -CREATE PROCEDURE MigrateGpuQuotaPerVendor() -BEGIN - DECLARE done INT DEFAULT FALSE; - DECLARE v_identity_uuid VARCHAR(32); - DECLARE v_identity_type VARCHAR(255); - DECLARE v_value BIGINT; - DECLARE cur CURSOR FOR - SELECT identityUuid, identityType, value - FROM QuotaVO - WHERE name = 'container.gpu.video.ram.size'; - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - OPEN cur; - read_loop: LOOP - FETCH cur INTO v_identity_uuid, v_identity_type, v_value; - IF done THEN - LEAVE read_loop; - END IF; - - INSERT IGNORE INTO QuotaVO (uuid, name, identityUuid, identityType, value, lastOpDate, createDate) - VALUES ( - REPLACE(UUID(), '-', ''), - 'container.gpu.video.ram.size.nvidia', - v_identity_uuid, - v_identity_type, - v_value, - NOW(), - NOW() - ); - END LOOP; - CLOSE cur; -END$$ - -DELIMITER ; - -CALL MigrateGpuQuotaPerVendor(); -DROP PROCEDURE IF EXISTS MigrateGpuQuotaPerVendor;