Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
190 changes: 190 additions & 0 deletions conf/db/upgrade/V5.5.12__schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
-- ZSTAC-75319: Add normalizedModelName column for GPU spec dedup
CALL ADD_COLUMN('GpuDeviceSpecVO', 'normalizedModelName', 'VARCHAR(255)', 1, NULL);
CALL CREATE_INDEX('GpuDeviceSpecVO', 'idx_gpu_spec_normalized_model', 'normalizedModelName');

-- Add totalScore and endTime columns to ModelEvaluationTaskVO for ZQL sorting support
-- Previously these values were only stored inside the opaque JSON TEXT field,
-- making them invisible to ZQL ORDER BY queries.
CALL ADD_COLUMN('ModelEvaluationTaskVO', 'totalScore', 'DOUBLE', 1, NULL);
CALL ADD_COLUMN('ModelEvaluationTaskVO', 'endTime', 'DATETIME', 1, NULL);

-- Add indexes to support efficient sorting
CALL CREATE_INDEX('ModelEvaluationTaskVO', 'idx_ModelEvaluationTaskVO_totalScore', 'totalScore');
CALL CREATE_INDEX('ModelEvaluationTaskVO', 'idx_ModelEvaluationTaskVO_endTime', 'endTime');

-- Backfill totalScore from opaque JSON for existing completed tasks
-- Uses Json_getKeyValue defined in beforeMigrate.sql for MySQL 5.5+ compatibility
UPDATE `zstack`.`ModelEvaluationTaskVO`
SET `totalScore` = CAST(Json_getKeyValue(`opaque`, 'total_score') AS DECIMAL(20,6))
WHERE `opaque` IS NOT NULL
AND `totalScore` IS NULL
AND Json_getKeyValue(`opaque`, 'total_score') IS NOT NULL;
Comment on lines +17 to +21
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

建议增加空字符串检查以保持一致性。

endTime 的回填逻辑(第33行)检查了 != '',但 totalScore 的回填没有相同的检查。如果 Json_getKeyValue 返回空字符串,CAST 可能会产生意外的 0 值。

建议的修复
 UPDATE `zstack`.`ModelEvaluationTaskVO`
 SET `totalScore` = CAST(Json_getKeyValue(`opaque`, 'total_score') AS DECIMAL(20,6))
 WHERE `opaque` IS NOT NULL
   AND `totalScore` IS NULL
-  AND Json_getKeyValue(`opaque`, 'total_score') IS NOT NULL;
+  AND Json_getKeyValue(`opaque`, 'total_score') IS NOT NULL
+  AND Json_getKeyValue(`opaque`, 'total_score') != '';
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@conf/db/upgrade/V5.5.12__schema.sql` around lines 17 - 21, The UPDATE on
table ModelEvaluationTaskVO sets totalScore from Json_getKeyValue(opaque,
'total_score') but lacks a check for empty-string results, which can cause CAST
to yield 0; modify the WHERE clause (and/or the expression) in the UPDATE that
references Json_getKeyValue(`opaque`, 'total_score') to also require
Json_getKeyValue(`opaque`, 'total_score') != '' so only non-empty values are
cast and written to totalScore (mirror the same != '' check used for endTime).


-- Backfill endTime from opaque JSON for existing completed/failed tasks
-- end_time format from Python agent: "MMM dd, yyyy hh:mm:ss a" (e.g. "Jan 01, 2025 10:30:00 AM")
UPDATE `zstack`.`ModelEvaluationTaskVO`
SET `endTime` = STR_TO_DATE(
Json_getKeyValue(`opaque`, 'end_time'),
'%b %d, %Y %h:%i:%s %p'
)
WHERE `opaque` IS NOT NULL
AND `endTime` IS NULL
AND Json_getKeyValue(`opaque`, 'end_time') IS NOT NULL
AND Json_getKeyValue(`opaque`, 'end_time') != '';

-- PCI virtualization capability metadata

CREATE TABLE IF NOT EXISTS `zstack`.`PciDeviceVirtCapabilityVO` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`pciDeviceUuid` VARCHAR(32) NOT NULL,
`capability` VARCHAR(32) NOT NULL,
`createDate` TIMESTAMP NOT NULL,
`lastOpDate` TIMESTAMP NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_pci_device_virt_capability` (`pciDeviceUuid`, `capability`),
KEY `idx_pci_device_virt_capability_pci` (`pciDeviceUuid`),
CONSTRAINT `fk_pci_device_virt_capability_pci`
FOREIGN KEY (`pciDeviceUuid`) REFERENCES `zstack`.`PciDeviceVO`(`uuid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CALL ADD_COLUMN('PciDeviceVO', 'virtState', 'varchar(32)', 1, NULL);

UPDATE `zstack`.`PciDeviceVO`
SET `virtState` =
CASE
WHEN `virtStatus` IN ('SRIOV_VIRTUALIZABLE', 'VFIO_MDEV_VIRTUALIZABLE', 'TENSORFUSION_VIRTUALIZABLE') THEN 'VIRTUALIZABLE'
WHEN `virtStatus` IN ('SRIOV_VIRTUALIZED', 'VFIO_MDEV_VIRTUALIZED', 'VIRTUALIZED_BYPASS_ZSTACK',
'HAMI_VIRTUALIZED', 'TENSORFUSION_VIRTUALIZED') THEN 'VIRTUALIZED'
WHEN `virtStatus` = 'SRIOV_VIRTUAL' THEN 'VIRTUAL'
ELSE 'UNVIRTUALIZABLE'
END
WHERE `virtState` IS NULL;

INSERT IGNORE INTO `zstack`.`PciDeviceVirtCapabilityVO`
(`pciDeviceUuid`, `capability`, `createDate`, `lastOpDate`)
SELECT `uuid`, 'SRIOV', NOW(), NOW()
FROM `zstack`.`PciDeviceVO`
WHERE `virtStatus` IN ('SRIOV_VIRTUALIZABLE', 'SRIOV_VIRTUALIZED');

INSERT IGNORE INTO `zstack`.`PciDeviceVirtCapabilityVO`
(`pciDeviceUuid`, `capability`, `createDate`, `lastOpDate`)
SELECT `uuid`, 'VFIO_MDEV', NOW(), NOW()
FROM `zstack`.`PciDeviceVO`
WHERE `virtStatus` IN ('VFIO_MDEV_VIRTUALIZABLE', 'VFIO_MDEV_VIRTUALIZED', 'VIRTUALIZED_BYPASS_ZSTACK');

INSERT IGNORE INTO `zstack`.`PciDeviceVirtCapabilityVO`
(`pciDeviceUuid`, `capability`, `createDate`, `lastOpDate`)
SELECT `uuid`, 'TENSORFUSION', NOW(), NOW()
FROM `zstack`.`PciDeviceVO`
WHERE `virtStatus` IN ('TENSORFUSION_VIRTUALIZABLE', 'TENSORFUSION_VIRTUALIZED');

INSERT IGNORE INTO `zstack`.`PciDeviceVirtCapabilityVO`
(`pciDeviceUuid`, `capability`, `createDate`, `lastOpDate`)
SELECT `uuid`, 'HAMI', NOW(), NOW()
FROM `zstack`.`PciDeviceVO`
WHERE `virtStatus` = 'HAMI_VIRTUALIZED';

CALL ADD_COLUMN('PciDeviceVO', 'virtMode', 'varchar(32)', 1, NULL);

UPDATE `zstack`.`PciDeviceVO`
SET `virtMode` =
CASE
WHEN `virtStatus` IN ('SRIOV_VIRTUALIZED') THEN 'SRIOV'
WHEN `virtStatus` = 'SRIOV_VIRTUAL' THEN 'SRIOV'
WHEN `virtStatus` IN ('VFIO_MDEV_VIRTUALIZED', 'VIRTUALIZED_BYPASS_ZSTACK') THEN 'VFIO_MDEV'
WHEN `virtStatus` = 'TENSORFUSION_VIRTUALIZED' THEN 'TENSORFUSION'
WHEN `virtStatus` = 'HAMI_VIRTUALIZED' THEN 'HAMI'
ELSE `virtMode`
END
WHERE `virtStatus` IN (
'SRIOV_VIRTUALIZED', 'SRIOV_VIRTUAL',
'VFIO_MDEV_VIRTUALIZED', 'VIRTUALIZED_BYPASS_ZSTACK',
'TENSORFUSION_VIRTUALIZED', 'HAMI_VIRTUALIZED'
);

CALL ADD_COLUMN('GpuDeviceVO', 'mode', 'varchar(32)', 1, NULL);
CALL CREATE_INDEX('GpuDeviceVO', 'idx_gpu_device_mode', 'mode');

UPDATE `zstack`.`GpuDeviceVO` g
INNER JOIN `zstack`.`PciDeviceVO` p ON g.`uuid` = p.`uuid`
SET g.`mode` = CASE
WHEN p.`virtState` = 'VIRTUALIZED' AND p.`virtMode` = 'TENSORFUSION' THEN 'DGPU'
WHEN p.`virtState` = 'VIRTUALIZED' AND p.`virtMode` IN ('VFIO_MDEV', 'SRIOV') THEN 'VGPU'
ELSE 'PCI'
END;

UPDATE `zstack`.`GpuDeviceVO` g
INNER JOIN `zstack`.`PciDeviceVO` p ON g.`uuid` = p.`uuid`
SET g.`allocateStatus` = CASE
WHEN p.`vmInstanceUuid` IS NOT NULL THEN 'Allocated'
WHEN p.`virtState` = 'VIRTUALIZED' AND p.`virtMode` IS NOT NULL THEN 'Unallocatable'
ELSE 'Unallocated'
END;

-- dGPU (TensorFusion) support tables

CREATE TABLE IF NOT EXISTS `zstack`.`DGpuProfileVO` (
`uuid` VARCHAR(32) NOT NULL,
`gpuSpecUuid` VARCHAR(32) NOT NULL,
`memorySize` BIGINT UNSIGNED NOT NULL,
`shmemSize` BIGINT UNSIGNED NOT NULL DEFAULT 268435456,
`createDate` TIMESTAMP NOT NULL,
`lastOpDate` TIMESTAMP NOT NULL,
PRIMARY KEY (`uuid`),
UNIQUE KEY `uk_dgpu_profile` (`gpuSpecUuid`, `memorySize`),
CONSTRAINT `fk_dgpu_profile_spec`
FOREIGN KEY (`gpuSpecUuid`) REFERENCES `zstack`.`GpuDeviceSpecVO`(`uuid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `zstack`.`DGpuDeviceVO` (
`uuid` VARCHAR(32) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`parentGpuUuid` VARCHAR(32) NOT NULL,
`gpuSpecUuid` VARCHAR(32) NOT NULL,
`hostUuid` VARCHAR(32) NOT NULL,
`vmInstanceUuid` VARCHAR(32) DEFAULT NULL,
`allocatedMemory` BIGINT UNSIGNED NOT NULL,
`shmemSize` BIGINT UNSIGNED NOT NULL DEFAULT 268435456,
`smPercentLimit` INT NOT NULL DEFAULT 0,
`protocol` VARCHAR(16) NOT NULL DEFAULT 'shmem',
`status` VARCHAR(32) NOT NULL,
`vendorId` VARCHAR(64) DEFAULT NULL,
`vendor` VARCHAR(255) DEFAULT NULL,
`createDate` TIMESTAMP NOT NULL,
`lastOpDate` TIMESTAMP NOT NULL,
PRIMARY KEY (`uuid`),
INDEX `idx_dgpu_device_parent` (`parentGpuUuid`),
INDEX `idx_dgpu_device_spec` (`gpuSpecUuid`),
INDEX `idx_dgpu_device_host` (`hostUuid`),
INDEX `idx_dgpu_device_vm` (`vmInstanceUuid`),
CONSTRAINT `fk_dgpu_device_parent`
FOREIGN KEY (`parentGpuUuid`) REFERENCES `zstack`.`PciDeviceVO`(`uuid`) ON DELETE CASCADE,
CONSTRAINT `fk_dgpu_device_spec`
FOREIGN KEY (`gpuSpecUuid`) REFERENCES `zstack`.`GpuDeviceSpecVO`(`uuid`) ON DELETE RESTRICT,
CONSTRAINT `fk_dgpu_device_host`
FOREIGN KEY (`hostUuid`) REFERENCES `zstack`.`HostEO`(`uuid`) ON DELETE CASCADE,
CONSTRAINT `fk_dgpu_device_vm`
FOREIGN KEY (`vmInstanceUuid`) REFERENCES `zstack`.`VmInstanceEO`(`uuid`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `zstack`.`VmInstanceDGpuStrategyVO` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`vmInstanceUuid` VARCHAR(32) NOT NULL,
`gpuSpecUuid` VARCHAR(32) NOT NULL,
`memorySize` BIGINT UNSIGNED NOT NULL,
`shmemSize` BIGINT UNSIGNED NOT NULL DEFAULT 268435456,
`gpuDeviceUuid` VARCHAR(32) DEFAULT NULL,
`chooser` VARCHAR(16) NOT NULL,
`autoDetachOnStop` TINYINT(1) NOT NULL DEFAULT 1,
`createDate` TIMESTAMP NOT NULL,
`lastOpDate` TIMESTAMP NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_vm_dgpu_strategy` (`vmInstanceUuid`),
INDEX `idx_vm_dgpu_strategy_spec` (`gpuSpecUuid`),
CONSTRAINT `fk_vm_dgpu_strategy_vm`
FOREIGN KEY (`vmInstanceUuid`) REFERENCES `zstack`.`VmInstanceEO`(`uuid`) ON DELETE CASCADE,
CONSTRAINT `fk_vm_dgpu_strategy_spec`
FOREIGN KEY (`gpuSpecUuid`) REFERENCES `zstack`.`GpuDeviceSpecVO`(`uuid`) ON DELETE CASCADE,
CONSTRAINT `fk_vm_dgpu_strategy_device`
FOREIGN KEY (`gpuDeviceUuid`) REFERENCES `zstack`.`PciDeviceVO`(`uuid`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7 changes: 5 additions & 2 deletions conf/i18n/globalErrorCodeMapping/global-error-en_US.json
Original file line number Diff line number Diff line change
Expand Up @@ -4714,5 +4714,8 @@
"ORG_ZSTACK_ZWATCH_FUNCTION_10013": "Unknown arguments detected. Please ensure that all command-line parameters are valid and refer to the documentation for a list of accepted arguments.",
"ORG_ZSTACK_VPCFIREWALL_10034": "could not add firewall rule[%d] as only TCP protocol supports TCP flags in this environment",
"ORG_ZSTACK_NETWORK_SERVICE_VIRTUALROUTER_VYOS_10007": "unable to stop DHCP server on virtual router instance [uuid:%s] because %s",
"ORG_ZSTACK_VPCFIREWALL_10035": "could not add firewall rule[%d] because of a %s error"
}
"ORG_ZSTACK_VPCFIREWALL_10035": "could not add firewall rule[%d] because of a %s error",
"ORG_ZSTACK_DGPU_10010": "Available License not found, please apply addon license for product dGPU.",
"ORG_ZSTACK_DGPU_10011": "Addon license for product dGPU has expired, please renew it.",
"ORG_ZSTACK_DGPU_10012": "Insufficient dGPU GPU number licensed. Your license permits %d GPU, there are %d GPU used, shared: %d, need: %d."
}
7 changes: 5 additions & 2 deletions conf/i18n/globalErrorCodeMapping/global-error-zh_CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -4714,5 +4714,8 @@
"ORG_ZSTACK_ZWATCH_FUNCTION_10013": "未知参数",
"ORG_ZSTACK_VPCFIREWALL_10034": "无法添加防火墙规则[%d],因为只有TCP协议可以使用TCP标志",
"ORG_ZSTACK_NETWORK_SERVICE_VIRTUALROUTER_VYOS_10007": "无法停止虚拟路由器VM[uuid:%s]上的DHCP服务器,因为%s",
"ORG_ZSTACK_VPCFIREWALL_10035": "无法添加防火墙规则[%d]因为%s"
}
"ORG_ZSTACK_VPCFIREWALL_10035": "无法添加防火墙规则[%d]因为%s",
"ORG_ZSTACK_DGPU_10010": "未找到可用的 dGPU AddOn License,请为 dGPU 产品申请并上传对应授权。",
"ORG_ZSTACK_DGPU_10011": "dGPU 产品的 AddOn License 已过期,请及时续期。",
"ORG_ZSTACK_DGPU_10012": "dGPU 授权 GPU 数量不足。License 允许 %d 个 GPU,当前已使用 %d 个,其他节点共享使用 %d 个,本次还需要 %d 个。"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package org.zstack.header.zwatch;

import java.util.List;

public interface ResourceMetricBindingExtensionPoint {
class ResourceMetricBinding {
private Class<?> resourceType;
private String logicalMetricName;
private String sourceNamespace;
private String sourceMetricName;
private String resourceField;
private String sourceLabel;
private boolean requireUniqueSourceKey;

private static <T> T requireValue(String fieldName, T value) {
if (value == null) {
throw new IllegalStateException(String.format("ResourceMetricBinding.%s must not be null", fieldName));
}
return value;
}

private static String requireText(String fieldName, String value) {
requireValue(fieldName, value);
if (value.trim().isEmpty()) {
throw new IllegalStateException(String.format("ResourceMetricBinding.%s must not be empty", fieldName));
}
return value;
}

public Class<?> getResourceType() {
return requireValue("resourceType", resourceType);
}

public void setResourceType(Class<?> resourceType) {
this.resourceType = resourceType;
}

public String getLogicalMetricName() {
return requireText("logicalMetricName", logicalMetricName);
}

public void setLogicalMetricName(String logicalMetricName) {
this.logicalMetricName = logicalMetricName;
}

public String getSourceNamespace() {
return requireText("sourceNamespace", sourceNamespace);
}

public void setSourceNamespace(String sourceNamespace) {
this.sourceNamespace = sourceNamespace;
}

public String getSourceMetricName() {
return requireText("sourceMetricName", sourceMetricName);
}

public void setSourceMetricName(String sourceMetricName) {
this.sourceMetricName = sourceMetricName;
}

public String getResourceField() {
return requireText("resourceField", resourceField);
}

public void setResourceField(String resourceField) {
this.resourceField = resourceField;
}

public String getSourceLabel() {
return requireText("sourceLabel", sourceLabel);
}

public void setSourceLabel(String sourceLabel) {
this.sourceLabel = sourceLabel;
}

public boolean isRequireUniqueSourceKey() {
return requireUniqueSourceKey;
}

public void setRequireUniqueSourceKey(boolean requireUniqueSourceKey) {
this.requireUniqueSourceKey = requireUniqueSourceKey;
}
}

List<ResourceMetricBinding> getResourceMetricBindings();
}
14 changes: 14 additions & 0 deletions sdk/src/main/java/SourceClassMap.java
Original file line number Diff line number Diff line change
Expand Up @@ -635,15 +635,22 @@ public class SourceClassMap {
put("org.zstack.pciDevice.PciDeviceType", "org.zstack.sdk.PciDeviceType");
put("org.zstack.pciDevice.gpu.GpuAllocateStatus", "org.zstack.sdk.GpuAllocateStatus");
put("org.zstack.pciDevice.gpu.GpuDeviceInventory", "org.zstack.sdk.GpuDeviceInventory");
put("org.zstack.pciDevice.gpu.GpuDeviceSpecCandidateInventory", "org.zstack.sdk.GpuDeviceSpecCandidateInventory");
put("org.zstack.pciDevice.gpu.GpuDeviceSpecInventory", "org.zstack.sdk.GpuDeviceSpecInventory");
put("org.zstack.pciDevice.gpu.GpuVendor", "org.zstack.sdk.GpuVendor");
put("org.zstack.pciDevice.gpu.dgpu.DGpuDeviceInventory", "org.zstack.sdk.DGpuDeviceInventory");
put("org.zstack.pciDevice.gpu.dgpu.DGpuProfileInventory", "org.zstack.sdk.DGpuProfileInventory");
put("org.zstack.pciDevice.gpu.dgpu.DGpuSpecStatsInventory", "org.zstack.sdk.DGpuSpecStatsInventory");
put("org.zstack.pciDevice.gpu.dgpu.DGpuStatus", "org.zstack.sdk.DGpuStatus");
put("org.zstack.pciDevice.specification.mdev.MdevDeviceSpecInventory", "org.zstack.sdk.MdevDeviceSpecInventory");
put("org.zstack.pciDevice.specification.mdev.MdevDeviceSpecState", "org.zstack.sdk.MdevDeviceSpecState");
put("org.zstack.pciDevice.specification.mdev.PciDeviceMdevSpecRefInventory", "org.zstack.sdk.PciDeviceMdevSpecRefInventory");
put("org.zstack.pciDevice.specification.mdev.VmInstanceMdevDeviceSpecRefInventory", "org.zstack.sdk.VmInstanceMdevDeviceSpecRefInventory");
put("org.zstack.pciDevice.specification.pci.PciDeviceSpecInventory", "org.zstack.sdk.PciDeviceSpecInventory");
put("org.zstack.pciDevice.specification.pci.PciDeviceSpecState", "org.zstack.sdk.PciDeviceSpecState");
put("org.zstack.pciDevice.specification.pci.VmInstancePciDeviceSpecRefInventory", "org.zstack.sdk.VmInstancePciDeviceSpecRefInventory");
put("org.zstack.pciDevice.virtual.PciDeviceVirtMode", "org.zstack.sdk.PciDeviceVirtMode");
put("org.zstack.pciDevice.virtual.PciDeviceVirtState", "org.zstack.sdk.PciDeviceVirtState");
put("org.zstack.pciDevice.virtual.PciDeviceVirtStatus", "org.zstack.sdk.PciDeviceVirtStatus");
put("org.zstack.pciDevice.virtual.vfio_mdev.MdevDeviceChooser", "org.zstack.sdk.MdevDeviceChooser");
put("org.zstack.pciDevice.virtual.vfio_mdev.MdevDeviceInventory", "org.zstack.sdk.MdevDeviceInventory");
Expand Down Expand Up @@ -1022,6 +1029,10 @@ public class SourceClassMap {
put("org.zstack.sdk.CpuMemoryCapacityData", "org.zstack.header.allocator.datatypes.CpuMemoryCapacityData");
put("org.zstack.sdk.CreateDataVolumeTemplateFromVolumeSnapshotFailure", "org.zstack.header.image.APICreateDataVolumeTemplateFromVolumeSnapshotEvent$Failure");
put("org.zstack.sdk.CreateRootVolumeTemplateFromVolumeSnapshotFailure", "org.zstack.header.image.APICreateRootVolumeTemplateFromVolumeSnapshotEvent$Failure");
put("org.zstack.sdk.DGpuDeviceInventory", "org.zstack.pciDevice.gpu.dgpu.DGpuDeviceInventory");
put("org.zstack.sdk.DGpuProfileInventory", "org.zstack.pciDevice.gpu.dgpu.DGpuProfileInventory");
put("org.zstack.sdk.DGpuSpecStatsInventory", "org.zstack.pciDevice.gpu.dgpu.DGpuSpecStatsInventory");
put("org.zstack.sdk.DGpuStatus", "org.zstack.pciDevice.gpu.dgpu.DGpuStatus");
put("org.zstack.sdk.DRSAdviceInventory", "org.zstack.drs.entity.DRSAdviceInventory");
put("org.zstack.sdk.DRSVmMigrationActivityInventory", "org.zstack.drs.entity.DRSVmMigrationActivityInventory");
put("org.zstack.sdk.DataCenterInventory", "org.zstack.header.datacenter.DataCenterInventory");
Expand Down Expand Up @@ -1083,6 +1094,7 @@ public class SourceClassMap {
put("org.zstack.sdk.GlobalConfigTemplateInventory", "org.zstack.templateConfig.GlobalConfigTemplateInventory");
put("org.zstack.sdk.GpuAllocateStatus", "org.zstack.pciDevice.gpu.GpuAllocateStatus");
put("org.zstack.sdk.GpuDeviceInventory", "org.zstack.pciDevice.gpu.GpuDeviceInventory");
put("org.zstack.sdk.GpuDeviceSpecCandidateInventory", "org.zstack.pciDevice.gpu.GpuDeviceSpecCandidateInventory");
put("org.zstack.sdk.GpuDeviceSpecInventory", "org.zstack.pciDevice.gpu.GpuDeviceSpecInventory");
put("org.zstack.sdk.GpuVendor", "org.zstack.pciDevice.gpu.GpuVendor");
put("org.zstack.sdk.GuestOsCharacterInventory", "org.zstack.core.config.GuestOsCharacterInventory");
Expand Down Expand Up @@ -1327,6 +1339,8 @@ public class SourceClassMap {
put("org.zstack.sdk.PciDeviceState", "org.zstack.pciDevice.PciDeviceState");
put("org.zstack.sdk.PciDeviceStatus", "org.zstack.pciDevice.PciDeviceStatus");
put("org.zstack.sdk.PciDeviceType", "org.zstack.pciDevice.PciDeviceType");
put("org.zstack.sdk.PciDeviceVirtMode", "org.zstack.pciDevice.virtual.PciDeviceVirtMode");
put("org.zstack.sdk.PciDeviceVirtState", "org.zstack.pciDevice.virtual.PciDeviceVirtState");
put("org.zstack.sdk.PciDeviceVirtStatus", "org.zstack.pciDevice.virtual.PciDeviceVirtStatus");
put("org.zstack.sdk.PendingTaskInfo", "org.zstack.header.core.progress.PendingTaskInfo");
put("org.zstack.sdk.PhysicalDriveSmartSelfTestHistoryInventory", "org.zstack.storage.device.localRaid.PhysicalDriveSmartSelfTestHistoryInventory");
Expand Down
Loading