diff --git a/conf/db/upgrade/V5.5.12__schema.sql b/conf/db/upgrade/V5.5.12__schema.sql index f5eaa76eea9..16fc61e4258 100644 --- a/conf/db/upgrade/V5.5.12__schema.sql +++ b/conf/db/upgrade/V5.5.12__schema.sql @@ -31,3 +31,70 @@ WHERE `opaque` IS NOT NULL AND `endTime` IS NULL AND Json_getKeyValue(`opaque`, 'end_time') IS NOT NULL AND Json_getKeyValue(`opaque`, 'end_time') != ''; + +-- 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`), + 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`), + 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; diff --git a/header/src/main/java/org/zstack/header/zwatch/ResourceMetricBindingExtensionPoint.java b/header/src/main/java/org/zstack/header/zwatch/ResourceMetricBindingExtensionPoint.java new file mode 100644 index 00000000000..6dd63ef4158 --- /dev/null +++ b/header/src/main/java/org/zstack/header/zwatch/ResourceMetricBindingExtensionPoint.java @@ -0,0 +1,73 @@ +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; + + public Class getResourceType() { + return resourceType; + } + + public void setResourceType(Class resourceType) { + this.resourceType = resourceType; + } + + public String getLogicalMetricName() { + return logicalMetricName; + } + + public void setLogicalMetricName(String logicalMetricName) { + this.logicalMetricName = logicalMetricName; + } + + public String getSourceNamespace() { + return sourceNamespace; + } + + public void setSourceNamespace(String sourceNamespace) { + this.sourceNamespace = sourceNamespace; + } + + public String getSourceMetricName() { + return sourceMetricName; + } + + public void setSourceMetricName(String sourceMetricName) { + this.sourceMetricName = sourceMetricName; + } + + public String getResourceField() { + return resourceField; + } + + public void setResourceField(String resourceField) { + this.resourceField = resourceField; + } + + public String getSourceLabel() { + return sourceLabel; + } + + public void setSourceLabel(String sourceLabel) { + this.sourceLabel = sourceLabel; + } + + public boolean isRequireUniqueSourceKey() { + return requireUniqueSourceKey; + } + + public void setRequireUniqueSourceKey(boolean requireUniqueSourceKey) { + this.requireUniqueSourceKey = requireUniqueSourceKey; + } + } + + List getResourceMetricBindings(); +} diff --git a/sdk/src/main/java/SourceClassMap.java b/sdk/src/main/java/SourceClassMap.java index 4bbd9238f98..99d29a0d062 100644 --- a/sdk/src/main/java/SourceClassMap.java +++ b/sdk/src/main/java/SourceClassMap.java @@ -637,6 +637,9 @@ public class SourceClassMap { put("org.zstack.pciDevice.gpu.GpuDeviceInventory", "org.zstack.sdk.GpuDeviceInventory"); 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.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"); @@ -1022,6 +1025,9 @@ 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.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"); diff --git a/sdk/src/main/java/org/zstack/sdk/DGpuDeviceInventory.java b/sdk/src/main/java/org/zstack/sdk/DGpuDeviceInventory.java new file mode 100644 index 00000000000..3356fb14ba8 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/DGpuDeviceInventory.java @@ -0,0 +1,127 @@ +package org.zstack.sdk; + +import org.zstack.sdk.DGpuStatus; + +public class DGpuDeviceInventory { + + public java.lang.String uuid; + public void setUuid(java.lang.String uuid) { + this.uuid = uuid; + } + public java.lang.String getUuid() { + return this.uuid; + } + + public java.lang.String name; + public void setName(java.lang.String name) { + this.name = name; + } + public java.lang.String getName() { + return this.name; + } + + public java.lang.String parentGpuUuid; + public void setParentGpuUuid(java.lang.String parentGpuUuid) { + this.parentGpuUuid = parentGpuUuid; + } + public java.lang.String getParentGpuUuid() { + return this.parentGpuUuid; + } + + public java.lang.String gpuSpecUuid; + public void setGpuSpecUuid(java.lang.String gpuSpecUuid) { + this.gpuSpecUuid = gpuSpecUuid; + } + public java.lang.String getGpuSpecUuid() { + return this.gpuSpecUuid; + } + + public java.lang.String hostUuid; + public void setHostUuid(java.lang.String hostUuid) { + this.hostUuid = hostUuid; + } + public java.lang.String getHostUuid() { + return this.hostUuid; + } + + public java.lang.String vmInstanceUuid; + public void setVmInstanceUuid(java.lang.String vmInstanceUuid) { + this.vmInstanceUuid = vmInstanceUuid; + } + public java.lang.String getVmInstanceUuid() { + return this.vmInstanceUuid; + } + + public java.lang.Long allocatedMemory; + public void setAllocatedMemory(java.lang.Long allocatedMemory) { + this.allocatedMemory = allocatedMemory; + } + public java.lang.Long getAllocatedMemory() { + return this.allocatedMemory; + } + + public java.lang.Long shmemSize; + public void setShmemSize(java.lang.Long shmemSize) { + this.shmemSize = shmemSize; + } + public java.lang.Long getShmemSize() { + return this.shmemSize; + } + + public java.lang.String protocol; + public void setProtocol(java.lang.String protocol) { + this.protocol = protocol; + } + public java.lang.String getProtocol() { + return this.protocol; + } + + public int smPercentLimit; + public void setSmPercentLimit(int smPercentLimit) { + this.smPercentLimit = smPercentLimit; + } + public int getSmPercentLimit() { + return this.smPercentLimit; + } + + public DGpuStatus status; + public void setStatus(DGpuStatus status) { + this.status = status; + } + public DGpuStatus getStatus() { + return this.status; + } + + public java.sql.Timestamp createDate; + public void setCreateDate(java.sql.Timestamp createDate) { + this.createDate = createDate; + } + public java.sql.Timestamp getCreateDate() { + return this.createDate; + } + + public java.sql.Timestamp lastOpDate; + public void setLastOpDate(java.sql.Timestamp lastOpDate) { + this.lastOpDate = lastOpDate; + } + public java.sql.Timestamp getLastOpDate() { + return this.lastOpDate; + } + + public java.lang.String vendorId; + public void setVendorId(java.lang.String vendorId) { + this.vendorId = vendorId; + } + public java.lang.String getVendorId() { + return this.vendorId; + } + + public java.lang.String vendor; + public void setVendor(java.lang.String vendor) { + this.vendor = vendor; + } + public java.lang.String getVendor() { + return this.vendor; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/DGpuProfileInventory.java b/sdk/src/main/java/org/zstack/sdk/DGpuProfileInventory.java new file mode 100644 index 00000000000..96a5568810c --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/DGpuProfileInventory.java @@ -0,0 +1,55 @@ +package org.zstack.sdk; + + + +public class DGpuProfileInventory { + + public java.lang.String uuid; + public void setUuid(java.lang.String uuid) { + this.uuid = uuid; + } + public java.lang.String getUuid() { + return this.uuid; + } + + public java.lang.String gpuSpecUuid; + public void setGpuSpecUuid(java.lang.String gpuSpecUuid) { + this.gpuSpecUuid = gpuSpecUuid; + } + public java.lang.String getGpuSpecUuid() { + return this.gpuSpecUuid; + } + + public java.lang.Long memorySize; + public void setMemorySize(java.lang.Long memorySize) { + this.memorySize = memorySize; + } + public java.lang.Long getMemorySize() { + return this.memorySize; + } + + public java.lang.Long shmemSize; + public void setShmemSize(java.lang.Long shmemSize) { + this.shmemSize = shmemSize; + } + public java.lang.Long getShmemSize() { + return this.shmemSize; + } + + public java.sql.Timestamp createDate; + public void setCreateDate(java.sql.Timestamp createDate) { + this.createDate = createDate; + } + public java.sql.Timestamp getCreateDate() { + return this.createDate; + } + + public java.sql.Timestamp lastOpDate; + public void setLastOpDate(java.sql.Timestamp lastOpDate) { + this.lastOpDate = lastOpDate; + } + public java.sql.Timestamp getLastOpDate() { + return this.lastOpDate; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/DGpuStatus.java b/sdk/src/main/java/org/zstack/sdk/DGpuStatus.java new file mode 100644 index 00000000000..f2c72fc7ba7 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/DGpuStatus.java @@ -0,0 +1,8 @@ +package org.zstack.sdk; + +public enum DGpuStatus { + Normal, + Fault, + Unknown, + Disconnected, +} diff --git a/sdk/src/main/java/org/zstack/sdk/DetachDGpuFromVmAction.java b/sdk/src/main/java/org/zstack/sdk/DetachDGpuFromVmAction.java new file mode 100644 index 00000000000..23995825b1b --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/DetachDGpuFromVmAction.java @@ -0,0 +1,104 @@ +package org.zstack.sdk; + +import java.util.HashMap; +import java.util.Map; +import org.zstack.sdk.*; + +public class DetachDGpuFromVmAction extends AbstractAction { + + private static final HashMap parameterMap = new HashMap<>(); + + private static final HashMap nonAPIParameterMap = new HashMap<>(); + + public static class Result { + public ErrorCode error; + public org.zstack.sdk.DetachDGpuFromVmResult value; + + public Result throwExceptionIfError() { + if (error != null) { + throw new ApiException( + String.format("error[code: %s, description: %s, details: %s, globalErrorCode: %s]", error.code, error.description, error.details, error.globalErrorCode) + ); + } + + return this; + } + } + + @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String vmInstanceUuid; + + @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String dgpuDeviceUuid; + + @Param(required = false) + public java.util.List systemTags; + + @Param(required = false) + public java.util.List userTags; + + @Param(required = false) + public String sessionId; + + @Param(required = false) + public String accessKeyId; + + @Param(required = false) + public String accessKeySecret; + + @Param(required = false) + public String requestIp; + + @NonAPIParam + public long timeout = -1; + + @NonAPIParam + public long pollingInterval = -1; + + + private Result makeResult(ApiResult res) { + Result ret = new Result(); + if (res.error != null) { + ret.error = res.error; + return ret; + } + + org.zstack.sdk.DetachDGpuFromVmResult value = res.getResult(org.zstack.sdk.DetachDGpuFromVmResult.class); + ret.value = value == null ? new org.zstack.sdk.DetachDGpuFromVmResult() : value; + + return ret; + } + + public Result call() { + ApiResult res = ZSClient.call(this); + return makeResult(res); + } + + public void call(final Completion completion) { + ZSClient.call(this, new InternalCompletion() { + @Override + public void complete(ApiResult res) { + completion.complete(makeResult(res)); + } + }); + } + + protected Map getParameterMap() { + return parameterMap; + } + + protected Map getNonAPIParameterMap() { + return nonAPIParameterMap; + } + + protected RestInfo getRestInfo() { + RestInfo info = new RestInfo(); + info.httpMethod = "PUT"; + info.path = "/vm-instances/{vmInstanceUuid}/actions"; + info.needSession = true; + info.needPoll = true; + info.parameterName = "detachDGpuFromVm"; + return info; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/DetachDGpuFromVmResult.java b/sdk/src/main/java/org/zstack/sdk/DetachDGpuFromVmResult.java new file mode 100644 index 00000000000..3574a0e85f9 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/DetachDGpuFromVmResult.java @@ -0,0 +1,7 @@ +package org.zstack.sdk; + + + +public class DetachDGpuFromVmResult { + +} diff --git a/sdk/src/main/java/org/zstack/sdk/DisableDGpuModeAction.java b/sdk/src/main/java/org/zstack/sdk/DisableDGpuModeAction.java new file mode 100644 index 00000000000..8711977ee4d --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/DisableDGpuModeAction.java @@ -0,0 +1,101 @@ +package org.zstack.sdk; + +import java.util.HashMap; +import java.util.Map; +import org.zstack.sdk.*; + +public class DisableDGpuModeAction extends AbstractAction { + + private static final HashMap parameterMap = new HashMap<>(); + + private static final HashMap nonAPIParameterMap = new HashMap<>(); + + public static class Result { + public ErrorCode error; + public org.zstack.sdk.DisableDGpuModeResult value; + + public Result throwExceptionIfError() { + if (error != null) { + throw new ApiException( + String.format("error[code: %s, description: %s, details: %s, globalErrorCode: %s]", error.code, error.description, error.details, error.globalErrorCode) + ); + } + + return this; + } + } + + @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String gpuDeviceUuid; + + @Param(required = false) + public java.util.List systemTags; + + @Param(required = false) + public java.util.List userTags; + + @Param(required = false) + public String sessionId; + + @Param(required = false) + public String accessKeyId; + + @Param(required = false) + public String accessKeySecret; + + @Param(required = false) + public String requestIp; + + @NonAPIParam + public long timeout = -1; + + @NonAPIParam + public long pollingInterval = -1; + + + private Result makeResult(ApiResult res) { + Result ret = new Result(); + if (res.error != null) { + ret.error = res.error; + return ret; + } + + org.zstack.sdk.DisableDGpuModeResult value = res.getResult(org.zstack.sdk.DisableDGpuModeResult.class); + ret.value = value == null ? new org.zstack.sdk.DisableDGpuModeResult() : value; + + return ret; + } + + public Result call() { + ApiResult res = ZSClient.call(this); + return makeResult(res); + } + + public void call(final Completion completion) { + ZSClient.call(this, new InternalCompletion() { + @Override + public void complete(ApiResult res) { + completion.complete(makeResult(res)); + } + }); + } + + protected Map getParameterMap() { + return parameterMap; + } + + protected Map getNonAPIParameterMap() { + return nonAPIParameterMap; + } + + protected RestInfo getRestInfo() { + RestInfo info = new RestInfo(); + info.httpMethod = "PUT"; + info.path = "/gpu-device/gpu-devices/{gpuDeviceUuid}/actions"; + info.needSession = true; + info.needPoll = true; + info.parameterName = "disableDGpuMode"; + return info; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/DisableDGpuModeResult.java b/sdk/src/main/java/org/zstack/sdk/DisableDGpuModeResult.java new file mode 100644 index 00000000000..51e129cf234 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/DisableDGpuModeResult.java @@ -0,0 +1,7 @@ +package org.zstack.sdk; + + + +public class DisableDGpuModeResult { + +} diff --git a/sdk/src/main/java/org/zstack/sdk/EnableDGpuModeAction.java b/sdk/src/main/java/org/zstack/sdk/EnableDGpuModeAction.java new file mode 100644 index 00000000000..a73ac6a3cd1 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/EnableDGpuModeAction.java @@ -0,0 +1,101 @@ +package org.zstack.sdk; + +import java.util.HashMap; +import java.util.Map; +import org.zstack.sdk.*; + +public class EnableDGpuModeAction extends AbstractAction { + + private static final HashMap parameterMap = new HashMap<>(); + + private static final HashMap nonAPIParameterMap = new HashMap<>(); + + public static class Result { + public ErrorCode error; + public org.zstack.sdk.EnableDGpuModeResult value; + + public Result throwExceptionIfError() { + if (error != null) { + throw new ApiException( + String.format("error[code: %s, description: %s, details: %s, globalErrorCode: %s]", error.code, error.description, error.details, error.globalErrorCode) + ); + } + + return this; + } + } + + @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String gpuDeviceUuid; + + @Param(required = false) + public java.util.List systemTags; + + @Param(required = false) + public java.util.List userTags; + + @Param(required = false) + public String sessionId; + + @Param(required = false) + public String accessKeyId; + + @Param(required = false) + public String accessKeySecret; + + @Param(required = false) + public String requestIp; + + @NonAPIParam + public long timeout = -1; + + @NonAPIParam + public long pollingInterval = -1; + + + private Result makeResult(ApiResult res) { + Result ret = new Result(); + if (res.error != null) { + ret.error = res.error; + return ret; + } + + org.zstack.sdk.EnableDGpuModeResult value = res.getResult(org.zstack.sdk.EnableDGpuModeResult.class); + ret.value = value == null ? new org.zstack.sdk.EnableDGpuModeResult() : value; + + return ret; + } + + public Result call() { + ApiResult res = ZSClient.call(this); + return makeResult(res); + } + + public void call(final Completion completion) { + ZSClient.call(this, new InternalCompletion() { + @Override + public void complete(ApiResult res) { + completion.complete(makeResult(res)); + } + }); + } + + protected Map getParameterMap() { + return parameterMap; + } + + protected Map getNonAPIParameterMap() { + return nonAPIParameterMap; + } + + protected RestInfo getRestInfo() { + RestInfo info = new RestInfo(); + info.httpMethod = "PUT"; + info.path = "/gpu-device/gpu-devices/{gpuDeviceUuid}/actions"; + info.needSession = true; + info.needPoll = true; + info.parameterName = "enableDGpuMode"; + return info; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/EnableDGpuModeResult.java b/sdk/src/main/java/org/zstack/sdk/EnableDGpuModeResult.java new file mode 100644 index 00000000000..40eb1c5f2d3 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/EnableDGpuModeResult.java @@ -0,0 +1,7 @@ +package org.zstack.sdk; + + + +public class EnableDGpuModeResult { + +} diff --git a/sdk/src/main/java/org/zstack/sdk/PciDeviceVirtStatus.java b/sdk/src/main/java/org/zstack/sdk/PciDeviceVirtStatus.java index e59f4237d25..3612d6fb754 100644 --- a/sdk/src/main/java/org/zstack/sdk/PciDeviceVirtStatus.java +++ b/sdk/src/main/java/org/zstack/sdk/PciDeviceVirtStatus.java @@ -9,5 +9,7 @@ public enum PciDeviceVirtStatus { SRIOV_VIRTUAL, VIRTUALIZED_BYPASS_ZSTACK, HAMI_VIRTUALIZED, + TENSORFUSION_VIRTUALIZABLE, + TENSORFUSION_VIRTUALIZED, UNKNOWN, } diff --git a/sdk/src/main/java/org/zstack/sdk/QueryDGpuDeviceAction.java b/sdk/src/main/java/org/zstack/sdk/QueryDGpuDeviceAction.java new file mode 100644 index 00000000000..ce5fc12e4af --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/QueryDGpuDeviceAction.java @@ -0,0 +1,75 @@ +package org.zstack.sdk; + +import java.util.HashMap; +import java.util.Map; +import org.zstack.sdk.*; + +public class QueryDGpuDeviceAction extends QueryAction { + + private static final HashMap parameterMap = new HashMap<>(); + + private static final HashMap nonAPIParameterMap = new HashMap<>(); + + public static class Result { + public ErrorCode error; + public org.zstack.sdk.QueryDGpuDeviceResult value; + + public Result throwExceptionIfError() { + if (error != null) { + throw new ApiException( + String.format("error[code: %s, description: %s, details: %s, globalErrorCode: %s]", error.code, error.description, error.details, error.globalErrorCode) + ); + } + + return this; + } + } + + + + private Result makeResult(ApiResult res) { + Result ret = new Result(); + if (res.error != null) { + ret.error = res.error; + return ret; + } + + org.zstack.sdk.QueryDGpuDeviceResult value = res.getResult(org.zstack.sdk.QueryDGpuDeviceResult.class); + ret.value = value == null ? new org.zstack.sdk.QueryDGpuDeviceResult() : value; + + return ret; + } + + public Result call() { + ApiResult res = ZSClient.call(this); + return makeResult(res); + } + + public void call(final Completion completion) { + ZSClient.call(this, new InternalCompletion() { + @Override + public void complete(ApiResult res) { + completion.complete(makeResult(res)); + } + }); + } + + protected Map getParameterMap() { + return parameterMap; + } + + protected Map getNonAPIParameterMap() { + return nonAPIParameterMap; + } + + protected RestInfo getRestInfo() { + RestInfo info = new RestInfo(); + info.httpMethod = "GET"; + info.path = "/gpu-device/dgpu-devices"; + info.needSession = true; + info.needPoll = false; + info.parameterName = ""; + return info; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/QueryDGpuDeviceResult.java b/sdk/src/main/java/org/zstack/sdk/QueryDGpuDeviceResult.java new file mode 100644 index 00000000000..54bbf450e4b --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/QueryDGpuDeviceResult.java @@ -0,0 +1,22 @@ +package org.zstack.sdk; + + + +public class QueryDGpuDeviceResult { + public java.util.List inventories; + public void setInventories(java.util.List inventories) { + this.inventories = inventories; + } + public java.util.List getInventories() { + return this.inventories; + } + + public java.lang.Long total; + public void setTotal(java.lang.Long total) { + this.total = total; + } + public java.lang.Long getTotal() { + return this.total; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/QueryDGpuProfileAction.java b/sdk/src/main/java/org/zstack/sdk/QueryDGpuProfileAction.java new file mode 100644 index 00000000000..b0f5b38380c --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/QueryDGpuProfileAction.java @@ -0,0 +1,75 @@ +package org.zstack.sdk; + +import java.util.HashMap; +import java.util.Map; +import org.zstack.sdk.*; + +public class QueryDGpuProfileAction extends QueryAction { + + private static final HashMap parameterMap = new HashMap<>(); + + private static final HashMap nonAPIParameterMap = new HashMap<>(); + + public static class Result { + public ErrorCode error; + public org.zstack.sdk.QueryDGpuProfileResult value; + + public Result throwExceptionIfError() { + if (error != null) { + throw new ApiException( + String.format("error[code: %s, description: %s, details: %s, globalErrorCode: %s]", error.code, error.description, error.details, error.globalErrorCode) + ); + } + + return this; + } + } + + + + private Result makeResult(ApiResult res) { + Result ret = new Result(); + if (res.error != null) { + ret.error = res.error; + return ret; + } + + org.zstack.sdk.QueryDGpuProfileResult value = res.getResult(org.zstack.sdk.QueryDGpuProfileResult.class); + ret.value = value == null ? new org.zstack.sdk.QueryDGpuProfileResult() : value; + + return ret; + } + + public Result call() { + ApiResult res = ZSClient.call(this); + return makeResult(res); + } + + public void call(final Completion completion) { + ZSClient.call(this, new InternalCompletion() { + @Override + public void complete(ApiResult res) { + completion.complete(makeResult(res)); + } + }); + } + + protected Map getParameterMap() { + return parameterMap; + } + + protected Map getNonAPIParameterMap() { + return nonAPIParameterMap; + } + + protected RestInfo getRestInfo() { + RestInfo info = new RestInfo(); + info.httpMethod = "GET"; + info.path = "/gpu-device/dgpu-profiles"; + info.needSession = true; + info.needPoll = false; + info.parameterName = ""; + return info; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/QueryDGpuProfileResult.java b/sdk/src/main/java/org/zstack/sdk/QueryDGpuProfileResult.java new file mode 100644 index 00000000000..7be7fc6e021 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/QueryDGpuProfileResult.java @@ -0,0 +1,22 @@ +package org.zstack.sdk; + + + +public class QueryDGpuProfileResult { + public java.util.List inventories; + public void setInventories(java.util.List inventories) { + this.inventories = inventories; + } + public java.util.List getInventories() { + return this.inventories; + } + + public java.lang.Long total; + public void setTotal(java.lang.Long total) { + this.total = total; + } + public java.lang.Long getTotal() { + return this.total; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/RemoveVmDGpuStrategyAction.java b/sdk/src/main/java/org/zstack/sdk/RemoveVmDGpuStrategyAction.java new file mode 100644 index 00000000000..e0d74840df8 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/RemoveVmDGpuStrategyAction.java @@ -0,0 +1,101 @@ +package org.zstack.sdk; + +import java.util.HashMap; +import java.util.Map; +import org.zstack.sdk.*; + +public class RemoveVmDGpuStrategyAction extends AbstractAction { + + private static final HashMap parameterMap = new HashMap<>(); + + private static final HashMap nonAPIParameterMap = new HashMap<>(); + + public static class Result { + public ErrorCode error; + public org.zstack.sdk.RemoveVmDGpuStrategyResult value; + + public Result throwExceptionIfError() { + if (error != null) { + throw new ApiException( + String.format("error[code: %s, description: %s, details: %s, globalErrorCode: %s]", error.code, error.description, error.details, error.globalErrorCode) + ); + } + + return this; + } + } + + @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String vmInstanceUuid; + + @Param(required = false) + public java.util.List systemTags; + + @Param(required = false) + public java.util.List userTags; + + @Param(required = false) + public String sessionId; + + @Param(required = false) + public String accessKeyId; + + @Param(required = false) + public String accessKeySecret; + + @Param(required = false) + public String requestIp; + + @NonAPIParam + public long timeout = -1; + + @NonAPIParam + public long pollingInterval = -1; + + + private Result makeResult(ApiResult res) { + Result ret = new Result(); + if (res.error != null) { + ret.error = res.error; + return ret; + } + + org.zstack.sdk.RemoveVmDGpuStrategyResult value = res.getResult(org.zstack.sdk.RemoveVmDGpuStrategyResult.class); + ret.value = value == null ? new org.zstack.sdk.RemoveVmDGpuStrategyResult() : value; + + return ret; + } + + public Result call() { + ApiResult res = ZSClient.call(this); + return makeResult(res); + } + + public void call(final Completion completion) { + ZSClient.call(this, new InternalCompletion() { + @Override + public void complete(ApiResult res) { + completion.complete(makeResult(res)); + } + }); + } + + protected Map getParameterMap() { + return parameterMap; + } + + protected Map getNonAPIParameterMap() { + return nonAPIParameterMap; + } + + protected RestInfo getRestInfo() { + RestInfo info = new RestInfo(); + info.httpMethod = "DELETE"; + info.path = "/vm-instances/{vmInstanceUuid}/dgpu-strategy"; + info.needSession = true; + info.needPoll = true; + info.parameterName = ""; + return info; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/RemoveVmDGpuStrategyResult.java b/sdk/src/main/java/org/zstack/sdk/RemoveVmDGpuStrategyResult.java new file mode 100644 index 00000000000..866bc7622dc --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/RemoveVmDGpuStrategyResult.java @@ -0,0 +1,7 @@ +package org.zstack.sdk; + + + +public class RemoveVmDGpuStrategyResult { + +} diff --git a/sdk/src/main/java/org/zstack/sdk/SetDGpuProfileAction.java b/sdk/src/main/java/org/zstack/sdk/SetDGpuProfileAction.java new file mode 100644 index 00000000000..c443eb323b2 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/SetDGpuProfileAction.java @@ -0,0 +1,107 @@ +package org.zstack.sdk; + +import java.util.HashMap; +import java.util.Map; +import org.zstack.sdk.*; + +public class SetDGpuProfileAction extends AbstractAction { + + private static final HashMap parameterMap = new HashMap<>(); + + private static final HashMap nonAPIParameterMap = new HashMap<>(); + + public static class Result { + public ErrorCode error; + public org.zstack.sdk.SetDGpuProfileResult value; + + public Result throwExceptionIfError() { + if (error != null) { + throw new ApiException( + String.format("error[code: %s, description: %s, details: %s, globalErrorCode: %s]", error.code, error.description, error.details, error.globalErrorCode) + ); + } + + return this; + } + } + + @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String gpuSpecUuid; + + @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.Long memorySize; + + @Param(required = false, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.Long shmemSize; + + @Param(required = false) + public java.util.List systemTags; + + @Param(required = false) + public java.util.List userTags; + + @Param(required = false) + public String sessionId; + + @Param(required = false) + public String accessKeyId; + + @Param(required = false) + public String accessKeySecret; + + @Param(required = false) + public String requestIp; + + @NonAPIParam + public long timeout = -1; + + @NonAPIParam + public long pollingInterval = -1; + + + private Result makeResult(ApiResult res) { + Result ret = new Result(); + if (res.error != null) { + ret.error = res.error; + return ret; + } + + org.zstack.sdk.SetDGpuProfileResult value = res.getResult(org.zstack.sdk.SetDGpuProfileResult.class); + ret.value = value == null ? new org.zstack.sdk.SetDGpuProfileResult() : value; + + return ret; + } + + public Result call() { + ApiResult res = ZSClient.call(this); + return makeResult(res); + } + + public void call(final Completion completion) { + ZSClient.call(this, new InternalCompletion() { + @Override + public void complete(ApiResult res) { + completion.complete(makeResult(res)); + } + }); + } + + protected Map getParameterMap() { + return parameterMap; + } + + protected Map getNonAPIParameterMap() { + return nonAPIParameterMap; + } + + protected RestInfo getRestInfo() { + RestInfo info = new RestInfo(); + info.httpMethod = "PUT"; + info.path = "/gpu-device/gpu-device-specs/{gpuSpecUuid}/actions"; + info.needSession = true; + info.needPoll = true; + info.parameterName = "setDGpuProfile"; + return info; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/SetDGpuProfileResult.java b/sdk/src/main/java/org/zstack/sdk/SetDGpuProfileResult.java new file mode 100644 index 00000000000..6dc9258fdb7 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/SetDGpuProfileResult.java @@ -0,0 +1,14 @@ +package org.zstack.sdk; + + + +public class SetDGpuProfileResult { + public java.util.List inventories; + public void setInventories(java.util.List inventories) { + this.inventories = inventories; + } + public java.util.List getInventories() { + return this.inventories; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/SetVmDGpuStrategyAction.java b/sdk/src/main/java/org/zstack/sdk/SetVmDGpuStrategyAction.java new file mode 100644 index 00000000000..65ae857743a --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/SetVmDGpuStrategyAction.java @@ -0,0 +1,113 @@ +package org.zstack.sdk; + +import java.util.HashMap; +import java.util.Map; +import org.zstack.sdk.*; + +public class SetVmDGpuStrategyAction extends AbstractAction { + + private static final HashMap parameterMap = new HashMap<>(); + + private static final HashMap nonAPIParameterMap = new HashMap<>(); + + public static class Result { + public ErrorCode error; + public org.zstack.sdk.SetVmDGpuStrategyResult value; + + public Result throwExceptionIfError() { + if (error != null) { + throw new ApiException( + String.format("error[code: %s, description: %s, details: %s, globalErrorCode: %s]", error.code, error.description, error.details, error.globalErrorCode) + ); + } + + return this; + } + } + + @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String vmInstanceUuid; + + @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String dgpuProfileUuid; + + @Param(required = false, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String gpuDeviceUuid; + + @Param(required = true, validValues = {"BySpec","ByDevice"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public java.lang.String chooser; + + @Param(required = false, nonempty = false, nullElements = false, emptyString = true, noTrim = false) + public boolean autoDetachOnStop = true; + + @Param(required = false) + public java.util.List systemTags; + + @Param(required = false) + public java.util.List userTags; + + @Param(required = false) + public String sessionId; + + @Param(required = false) + public String accessKeyId; + + @Param(required = false) + public String accessKeySecret; + + @Param(required = false) + public String requestIp; + + @NonAPIParam + public long timeout = -1; + + @NonAPIParam + public long pollingInterval = -1; + + + private Result makeResult(ApiResult res) { + Result ret = new Result(); + if (res.error != null) { + ret.error = res.error; + return ret; + } + + org.zstack.sdk.SetVmDGpuStrategyResult value = res.getResult(org.zstack.sdk.SetVmDGpuStrategyResult.class); + ret.value = value == null ? new org.zstack.sdk.SetVmDGpuStrategyResult() : value; + + return ret; + } + + public Result call() { + ApiResult res = ZSClient.call(this); + return makeResult(res); + } + + public void call(final Completion completion) { + ZSClient.call(this, new InternalCompletion() { + @Override + public void complete(ApiResult res) { + completion.complete(makeResult(res)); + } + }); + } + + protected Map getParameterMap() { + return parameterMap; + } + + protected Map getNonAPIParameterMap() { + return nonAPIParameterMap; + } + + protected RestInfo getRestInfo() { + RestInfo info = new RestInfo(); + info.httpMethod = "PUT"; + info.path = "/vm-instances/{vmInstanceUuid}/actions"; + info.needSession = true; + info.needPoll = true; + info.parameterName = "setVmDGpuStrategy"; + return info; + } + +} diff --git a/sdk/src/main/java/org/zstack/sdk/SetVmDGpuStrategyResult.java b/sdk/src/main/java/org/zstack/sdk/SetVmDGpuStrategyResult.java new file mode 100644 index 00000000000..d7815916628 --- /dev/null +++ b/sdk/src/main/java/org/zstack/sdk/SetVmDGpuStrategyResult.java @@ -0,0 +1,7 @@ +package org.zstack.sdk; + + + +public class SetVmDGpuStrategyResult { + +} diff --git a/testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy b/testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy index f8470e35bd3..9db8e61338c 100644 --- a/testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy +++ b/testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy @@ -18485,6 +18485,33 @@ abstract class ApiHelper { } + def detachDGpuFromVm(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.DetachDGpuFromVmAction.class) Closure c) { + def a = new org.zstack.sdk.DetachDGpuFromVmAction() + a.sessionId = Test.currentEnvSpec?.session?.uuid + c.resolveStrategy = Closure.OWNER_FIRST + c.delegate = a + c() + + + if (System.getProperty("apipath") != null) { + if (a.apiId == null) { + a.apiId = Platform.uuid + } + + def tracker = new ApiPathTracker(a.apiId) + def out = errorOut(a.call()) + def path = tracker.getApiPath() + if (!path.isEmpty()) { + Test.apiPaths[a.class.name] = path.join(" --->\n") + } + + return out + } else { + return errorOut(a.call()) + } + } + + def detachDataVolumeFromHost(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.DetachDataVolumeFromHostAction.class) Closure c) { def a = new org.zstack.sdk.DetachDataVolumeFromHostAction() a.sessionId = Test.currentEnvSpec?.session?.uuid @@ -19592,6 +19619,33 @@ abstract class ApiHelper { } + def disableDGpuMode(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.DisableDGpuModeAction.class) Closure c) { + def a = new org.zstack.sdk.DisableDGpuModeAction() + a.sessionId = Test.currentEnvSpec?.session?.uuid + c.resolveStrategy = Closure.OWNER_FIRST + c.delegate = a + c() + + + if (System.getProperty("apipath") != null) { + if (a.apiId == null) { + a.apiId = Platform.uuid + } + + def tracker = new ApiPathTracker(a.apiId) + def out = errorOut(a.call()) + def path = tracker.getApiPath() + if (!path.isEmpty()) { + Test.apiPaths[a.class.name] = path.join(" --->\n") + } + + return out + } else { + return errorOut(a.call()) + } + } + + def discoverExternalPrimaryStorage(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.DiscoverExternalPrimaryStorageAction.class) Closure c) { def a = new org.zstack.sdk.DiscoverExternalPrimaryStorageAction() a.sessionId = Test.currentEnvSpec?.session?.uuid @@ -19727,6 +19781,33 @@ abstract class ApiHelper { } + def enableDGpuMode(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.EnableDGpuModeAction.class) Closure c) { + def a = new org.zstack.sdk.EnableDGpuModeAction() + a.sessionId = Test.currentEnvSpec?.session?.uuid + c.resolveStrategy = Closure.OWNER_FIRST + c.delegate = a + c() + + + if (System.getProperty("apipath") != null) { + if (a.apiId == null) { + a.apiId = Platform.uuid + } + + def tracker = new ApiPathTracker(a.apiId) + def out = errorOut(a.call()) + def path = tracker.getApiPath() + if (!path.isEmpty()) { + Test.apiPaths[a.class.name] = path.join(" --->\n") + } + + return out + } else { + return errorOut(a.call()) + } + } + + def executeAutoScalingRule(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.ExecuteAutoScalingRuleAction.class) Closure c) { def a = new org.zstack.sdk.ExecuteAutoScalingRuleAction() a.sessionId = Test.currentEnvSpec?.session?.uuid @@ -30198,6 +30279,64 @@ abstract class ApiHelper { } + def queryDGpuDevice(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.QueryDGpuDeviceAction.class) Closure c) { + def a = new org.zstack.sdk.QueryDGpuDeviceAction() + a.sessionId = Test.currentEnvSpec?.session?.uuid + c.resolveStrategy = Closure.OWNER_FIRST + c.delegate = a + c() + + a.conditions = a.conditions.collect { it.toString() } + + + if (System.getProperty("apipath") != null) { + if (a.apiId == null) { + a.apiId = Platform.uuid + } + + def tracker = new ApiPathTracker(a.apiId) + def out = errorOut(a.call()) + def path = tracker.getApiPath() + if (!path.isEmpty()) { + Test.apiPaths[a.class.name] = path.join(" --->\n") + } + + return out + } else { + return errorOut(a.call()) + } + } + + + def queryDGpuProfile(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.QueryDGpuProfileAction.class) Closure c) { + def a = new org.zstack.sdk.QueryDGpuProfileAction() + a.sessionId = Test.currentEnvSpec?.session?.uuid + c.resolveStrategy = Closure.OWNER_FIRST + c.delegate = a + c() + + a.conditions = a.conditions.collect { it.toString() } + + + if (System.getProperty("apipath") != null) { + if (a.apiId == null) { + a.apiId = Platform.uuid + } + + def tracker = new ApiPathTracker(a.apiId) + def out = errorOut(a.call()) + def path = tracker.getApiPath() + if (!path.isEmpty()) { + Test.apiPaths[a.class.name] = path.join(" --->\n") + } + + return out + } else { + return errorOut(a.call()) + } + } + + def queryDRSAdvice(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.QueryDRSAdviceAction.class) Closure c) { def a = new org.zstack.sdk.QueryDRSAdviceAction() a.sessionId = Test.currentEnvSpec?.session?.uuid @@ -38565,6 +38704,33 @@ abstract class ApiHelper { } + def removeVmDGpuStrategy(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.RemoveVmDGpuStrategyAction.class) Closure c) { + def a = new org.zstack.sdk.RemoveVmDGpuStrategyAction() + a.sessionId = Test.currentEnvSpec?.session?.uuid + c.resolveStrategy = Closure.OWNER_FIRST + c.delegate = a + c() + + + if (System.getProperty("apipath") != null) { + if (a.apiId == null) { + a.apiId = Platform.uuid + } + + def tracker = new ApiPathTracker(a.apiId) + def out = errorOut(a.call()) + def path = tracker.getApiPath() + if (!path.isEmpty()) { + Test.apiPaths[a.class.name] = path.join(" --->\n") + } + + return out + } else { + return errorOut(a.call()) + } + } + + def removeVmFromAffinityGroup(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.RemoveVmFromAffinityGroupAction.class) Closure c) { def a = new org.zstack.sdk.RemoveVmFromAffinityGroupAction() a.sessionId = Test.currentEnvSpec?.session?.uuid @@ -39321,6 +39487,33 @@ abstract class ApiHelper { } + def setDGpuProfile(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.SetDGpuProfileAction.class) Closure c) { + def a = new org.zstack.sdk.SetDGpuProfileAction() + a.sessionId = Test.currentEnvSpec?.session?.uuid + c.resolveStrategy = Closure.OWNER_FIRST + c.delegate = a + c() + + + if (System.getProperty("apipath") != null) { + if (a.apiId == null) { + a.apiId = Platform.uuid + } + + def tracker = new ApiPathTracker(a.apiId) + def out = errorOut(a.call()) + def path = tracker.getApiPath() + if (!path.isEmpty()) { + Test.apiPaths[a.class.name] = path.join(" --->\n") + } + + return out + } else { + return errorOut(a.call()) + } + } + + def setFlowMeterRouterId(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.SetFlowMeterRouterIdAction.class) Closure c) { def a = new org.zstack.sdk.SetFlowMeterRouterIdAction() a.sessionId = Test.currentEnvSpec?.session?.uuid @@ -39915,6 +40108,33 @@ abstract class ApiHelper { } + def setVmDGpuStrategy(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.SetVmDGpuStrategyAction.class) Closure c) { + def a = new org.zstack.sdk.SetVmDGpuStrategyAction() + a.sessionId = Test.currentEnvSpec?.session?.uuid + c.resolveStrategy = Closure.OWNER_FIRST + c.delegate = a + c() + + + if (System.getProperty("apipath") != null) { + if (a.apiId == null) { + a.apiId = Platform.uuid + } + + def tracker = new ApiPathTracker(a.apiId) + def out = errorOut(a.call()) + def path = tracker.getApiPath() + if (!path.isEmpty()) { + Test.apiPaths[a.class.name] = path.join(" --->\n") + } + + return out + } else { + return errorOut(a.call()) + } + } + + def setVmEmulatorPinning(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.SetVmEmulatorPinningAction.class) Closure c) { def a = new org.zstack.sdk.SetVmEmulatorPinningAction() a.sessionId = Test.currentEnvSpec?.session?.uuid diff --git a/utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java b/utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java index 6a4087cae00..551ea571a9f 100644 --- a/utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java +++ b/utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java @@ -364,6 +364,8 @@ public class CloudOperationsErrorCode { public static final String ORG_ZSTACK_ZWATCH_10004 = "ORG_ZSTACK_ZWATCH_10004"; + public static final String ORG_ZSTACK_ZWATCH_10005 = "ORG_ZSTACK_ZWATCH_10005"; + public static final String ORG_ZSTACK_SSO_SAML2_SERVICE_10000 = "ORG_ZSTACK_SSO_SAML2_SERVICE_10000"; public static final String ORG_ZSTACK_SSO_SAML2_SERVICE_10001 = "ORG_ZSTACK_SSO_SAML2_SERVICE_10001"; @@ -14816,6 +14818,10 @@ public class CloudOperationsErrorCode { public static final String ORG_ZSTACK_AI_10134 = "ORG_ZSTACK_AI_10134"; + public static final String ORG_ZSTACK_AI_10135 = "ORG_ZSTACK_AI_10135"; + + public static final String ORG_ZSTACK_AI_10136 = "ORG_ZSTACK_AI_10136"; + public static final String ORG_ZSTACK_CORE_CLOUDBUS_10000 = "ORG_ZSTACK_CORE_CLOUDBUS_10000"; public static final String ORG_ZSTACK_CORE_CLOUDBUS_10001 = "ORG_ZSTACK_CORE_CLOUDBUS_10001"; @@ -15885,4 +15891,22 @@ public class CloudOperationsErrorCode { public static final String ORG_ZSTACK_CRYPTO_SECURITYMACHINE_THIRDPARTY_PLUGIN_10005 = "ORG_ZSTACK_CRYPTO_SECURITYMACHINE_THIRDPARTY_PLUGIN_10005"; public static final String ORG_ZSTACK_CRYPTO_SECURITYMACHINE_THIRDPARTY_PLUGIN_10006 = "ORG_ZSTACK_CRYPTO_SECURITYMACHINE_THIRDPARTY_PLUGIN_10006"; + + public static final String ORG_ZSTACK_DGPU_10001 = "ORG_ZSTACK_DGPU_10001"; + + public static final String ORG_ZSTACK_DGPU_10002 = "ORG_ZSTACK_DGPU_10002"; + + public static final String ORG_ZSTACK_DGPU_10003 = "ORG_ZSTACK_DGPU_10003"; + + public static final String ORG_ZSTACK_DGPU_10004 = "ORG_ZSTACK_DGPU_10004"; + + public static final String ORG_ZSTACK_DGPU_10005 = "ORG_ZSTACK_DGPU_10005"; + + public static final String ORG_ZSTACK_DGPU_10006 = "ORG_ZSTACK_DGPU_10006"; + + public static final String ORG_ZSTACK_DGPU_10007 = "ORG_ZSTACK_DGPU_10007"; + + public static final String ORG_ZSTACK_DGPU_10008 = "ORG_ZSTACK_DGPU_10008"; + + public static final String ORG_ZSTACK_DGPU_10009 = "ORG_ZSTACK_DGPU_10009"; }