From 883a282dc6f9b1a59a2b74708ffd60bd1e101c0f Mon Sep 17 00:00:00 2001 From: "ye.zou" Date: Mon, 9 Feb 2026 11:23:30 +0800 Subject: [PATCH] fix(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;