Skip to content

Commit 5718b67

Browse files
author
shan.wu
committed
<feature>[dpu-bm2]: support dpu baremetal2 instance
support dpu baremetal2 instance Resolves/Related: ZSTAC-12345 Change-Id: I626d637a7168656a6c726c6769777a726e616973 <feature>[dpu-bm2]: support dpu baremetal2 instance support dpu baremetal2 instance Resolves/Related: ZSTAC-80830 Change-Id: I626d637a7168656a6c726c6769777a726e616973
1 parent 04d705f commit 5718b67

13 files changed

Lines changed: 272 additions & 4 deletions

File tree

compute/src/main/java/org/zstack/compute/host/HostManagerImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ public class HostManagerImpl extends AbstractService implements HostManager, Man
102102
private Future reportHostCapacityTask;
103103
private Future refreshHostPowerStatusTask;
104104

105+
private static final List<String> SKIP_ARCH_CHECK_HYPERVISOR_TYPES = Arrays.asList("baremetal2", "baremetal2Dpu");
106+
105107
static {
106108
allowedMessageAfterSoftDeletion.add(HostDeletionMsg.class);
107109
}
@@ -472,7 +474,7 @@ public void run(MessageReply reply) {
472474
@Override
473475
public boolean skip(Map data) {
474476
// no need to check baremetal2 gateway architecture with the cluster architecture
475-
return vo.getHypervisorType().equals("baremetal2");
477+
return SKIP_ARCH_CHECK_HYPERVISOR_TYPES.contains(cluster.getHypervisorType());
476478
}
477479

478480
@Override
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,37 @@
11
-- ZSTAC-75319: Add normalizedModelName column for GPU spec dedup
22
CALL ADD_COLUMN('GpuDeviceSpecVO', 'normalizedModelName', 'VARCHAR(255)', 1, NULL);
33
CALL CREATE_INDEX('GpuDeviceSpecVO', 'idx_gpu_spec_normalized_model', 'normalizedModelName');
4+
5+
CREATE TABLE IF NOT EXISTS `zstack`.`BareMetal2DpuChassisVO` (
6+
`uuid` varchar(32) NOT NULL UNIQUE,
7+
`config` TEXT DEFAULT NULL,
8+
`hostUuid` varchar(32) DEFAULT NULL,
9+
PRIMARY KEY (`uuid`),
10+
CONSTRAINT `fkBareMetal2DpuChassisVOChassisVO` FOREIGN KEY (`uuid`) REFERENCES `BareMetal2ChassisVO` (`uuid`) ON DELETE CASCADE,
11+
CONSTRAINT `fkBareMetal2DpuChassisVOHostEO` FOREIGN KEY (`hostUuid`) REFERENCES `HostEO` (`uuid`) ON DELETE SET NULL
12+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
13+
14+
CREATE TABLE IF NOT EXISTS `zstack`.`BareMetal2DpuHostVO` (
15+
`uuid` varchar(32) NOT NULL UNIQUE,
16+
`chassisUuid` VARCHAR(32) NOT NULL,
17+
`vendorType` VARCHAR(255) NOT NULL,
18+
`url` VARCHAR(255) NOT NULL,
19+
PRIMARY KEY (`uuid`),
20+
CONSTRAINT `fkBareMetal2DpuHostVOHostVO` FOREIGN KEY (`uuid`) REFERENCES `HostEO` (`uuid`) ON DELETE CASCADE,
21+
CONSTRAINT `fkBareMetal2DpuHostVOChassisVO` FOREIGN KEY (`chassisUuid`) REFERENCES `BareMetal2DpuChassisVO` (`uuid`) ON DELETE CASCADE
22+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
23+
24+
ALTER TABLE `zstack`.`BareMetal2InstanceVO`
25+
DROP FOREIGN KEY `fkBareMetal2InstanceVOGatewayVO`,
26+
DROP FOREIGN KEY `fkBareMetal2InstanceVOGatewayVO1`;
27+
28+
ALTER TABLE `zstack`.`BareMetal2InstanceVO`
29+
ADD CONSTRAINT `fkBareMetal2InstanceVOGatewayVO`
30+
FOREIGN KEY (`gatewayUuid`)
31+
REFERENCES `HostEO` (`uuid`)
32+
ON DELETE SET NULL,
33+
ADD CONSTRAINT `fkBareMetal2InstanceVOGatewayVO1`
34+
FOREIGN KEY (`lastGatewayUuid`)
35+
REFERENCES `HostEO` (`uuid`)
36+
ON DELETE SET NULL;
37+

header/src/main/java/org/zstack/header/cluster/APICreateClusterMsg.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public class APICreateClusterMsg extends APICreateMessage implements CreateClust
7070
* - Simulator
7171
* - baremetal
7272
*/
73-
@APIParam(validValues = {"KVM", "Simulator", "baremetal", "baremetal2", "xdragon"})
73+
@APIParam(validValues = {"KVM", "Simulator", "baremetal", "baremetal2", "xdragon", "baremetal2Dpu"})
7474
private String hypervisorType;
7575
/**
7676
* @desc see field 'type' of :ref:`ClusterInventory` for details

header/src/main/java/org/zstack/header/cluster/APICreateClusterMsgDoc_zh_cn.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ doc {
5656
type "String"
5757
optional false
5858
since "0.6"
59-
values ("KVM","Simulator","baremetal","baremetal2","xdragon")
59+
values ("KVM","Simulator","baremetal","baremetal2","xdragon","baremetal2Dpu")
6060
}
6161
column {
6262
name "type"

sdk/src/main/java/SourceClassMap.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,10 @@ public class SourceClassMap {
6565
put("org.zstack.baremetal2.chassis.BareMetal2ChassisInventory", "org.zstack.sdk.BareMetal2ChassisInventory");
6666
put("org.zstack.baremetal2.chassis.BareMetal2ChassisNicInventory", "org.zstack.sdk.BareMetal2ChassisNicInventory");
6767
put("org.zstack.baremetal2.chassis.BareMetal2ChassisPciDeviceInventory", "org.zstack.sdk.BareMetal2ChassisPciDeviceInventory");
68+
put("org.zstack.baremetal2.chassis.dpu.BareMetal2DpuChassisInventory", "org.zstack.sdk.BareMetal2DpuChassisInventory");
6869
put("org.zstack.baremetal2.chassis.ipmi.BareMetal2IpmiChassisInventory", "org.zstack.sdk.BareMetal2IpmiChassisInventory");
6970
put("org.zstack.baremetal2.configuration.BareMetal2ChassisOfferingInventory", "org.zstack.sdk.BareMetal2ChassisOfferingInventory");
71+
put("org.zstack.baremetal2.dpu.BareMetal2DpuHostInventory", "org.zstack.sdk.BareMetal2DpuHostInventory");
7072
put("org.zstack.baremetal2.gateway.BareMetal2GatewayInventory", "org.zstack.sdk.BareMetal2GatewayInventory");
7173
put("org.zstack.baremetal2.gateway.BareMetal2GatewayProvisionNicInventory", "org.zstack.sdk.BareMetal2GatewayProvisionNicInventory");
7274
put("org.zstack.baremetal2.instance.BareMetal2InstanceInventory", "org.zstack.sdk.BareMetal2InstanceInventory");
@@ -950,6 +952,8 @@ public class SourceClassMap {
950952
put("org.zstack.sdk.BareMetal2ChassisNicInventory", "org.zstack.baremetal2.chassis.BareMetal2ChassisNicInventory");
951953
put("org.zstack.sdk.BareMetal2ChassisOfferingInventory", "org.zstack.baremetal2.configuration.BareMetal2ChassisOfferingInventory");
952954
put("org.zstack.sdk.BareMetal2ChassisPciDeviceInventory", "org.zstack.baremetal2.chassis.BareMetal2ChassisPciDeviceInventory");
955+
put("org.zstack.sdk.BareMetal2DpuChassisInventory", "org.zstack.baremetal2.chassis.dpu.BareMetal2DpuChassisInventory");
956+
put("org.zstack.sdk.BareMetal2DpuHostInventory", "org.zstack.baremetal2.dpu.BareMetal2DpuHostInventory");
953957
put("org.zstack.sdk.BareMetal2GatewayInventory", "org.zstack.baremetal2.gateway.BareMetal2GatewayInventory");
954958
put("org.zstack.sdk.BareMetal2GatewayProvisionNicInventory", "org.zstack.baremetal2.gateway.BareMetal2GatewayProvisionNicInventory");
955959
put("org.zstack.sdk.BareMetal2InstanceInventory", "org.zstack.baremetal2.instance.BareMetal2InstanceInventory");
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
package org.zstack.sdk;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
import org.zstack.sdk.*;
6+
7+
public class AddBareMetal2DpuChassisAction extends AbstractAction {
8+
9+
private static final HashMap<String, Parameter> parameterMap = new HashMap<>();
10+
11+
private static final HashMap<String, Parameter> nonAPIParameterMap = new HashMap<>();
12+
13+
public static class Result {
14+
public ErrorCode error;
15+
public org.zstack.sdk.AddBareMetal2ChassisResult value;
16+
17+
public Result throwExceptionIfError() {
18+
if (error != null) {
19+
throw new ApiException(
20+
String.format("error[code: %s, description: %s, details: %s, globalErrorCode: %s]", error.code, error.description, error.details, error.globalErrorCode)
21+
);
22+
}
23+
24+
return this;
25+
}
26+
}
27+
28+
@Param(required = true, maxLength = 2048, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
29+
public java.lang.String url;
30+
31+
@Param(required = true, maxLength = 255, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
32+
public java.lang.String vendorType;
33+
34+
@Param(required = false, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
35+
public java.lang.String config;
36+
37+
@Param(required = true, maxLength = 255, nonempty = false, nullElements = false, emptyString = false, noTrim = false)
38+
public java.lang.String name;
39+
40+
@Param(required = false, maxLength = 2048, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
41+
public java.lang.String description;
42+
43+
@Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
44+
public java.lang.String clusterUuid;
45+
46+
@Param(required = false, validValues = {"Remote","Local","Direct"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
47+
public java.lang.String provisionType = "Remote";
48+
49+
@Param(required = false)
50+
public java.lang.String resourceUuid;
51+
52+
@Param(required = false, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
53+
public java.util.List tagUuids;
54+
55+
@Param(required = false)
56+
public java.util.List systemTags;
57+
58+
@Param(required = false)
59+
public java.util.List userTags;
60+
61+
@Param(required = false)
62+
public String sessionId;
63+
64+
@Param(required = false)
65+
public String accessKeyId;
66+
67+
@Param(required = false)
68+
public String accessKeySecret;
69+
70+
@Param(required = false)
71+
public String requestIp;
72+
73+
@NonAPIParam
74+
public long timeout = -1;
75+
76+
@NonAPIParam
77+
public long pollingInterval = -1;
78+
79+
80+
private Result makeResult(ApiResult res) {
81+
Result ret = new Result();
82+
if (res.error != null) {
83+
ret.error = res.error;
84+
return ret;
85+
}
86+
87+
org.zstack.sdk.AddBareMetal2ChassisResult value = res.getResult(org.zstack.sdk.AddBareMetal2ChassisResult.class);
88+
ret.value = value == null ? new org.zstack.sdk.AddBareMetal2ChassisResult() : value;
89+
90+
return ret;
91+
}
92+
93+
public Result call() {
94+
ApiResult res = ZSClient.call(this);
95+
return makeResult(res);
96+
}
97+
98+
public void call(final Completion<Result> completion) {
99+
ZSClient.call(this, new InternalCompletion() {
100+
@Override
101+
public void complete(ApiResult res) {
102+
completion.complete(makeResult(res));
103+
}
104+
});
105+
}
106+
107+
protected Map<String, Parameter> getParameterMap() {
108+
return parameterMap;
109+
}
110+
111+
protected Map<String, Parameter> getNonAPIParameterMap() {
112+
return nonAPIParameterMap;
113+
}
114+
115+
protected RestInfo getRestInfo() {
116+
RestInfo info = new RestInfo();
117+
info.httpMethod = "POST";
118+
info.path = "/baremetal2/chassis/dpu";
119+
info.needSession = true;
120+
info.needPoll = true;
121+
info.parameterName = "params";
122+
return info;
123+
}
124+
125+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.zstack.sdk;
2+
3+
4+
5+
public class BareMetal2DpuChassisInventory extends org.zstack.sdk.BareMetal2ChassisInventory {
6+
7+
public java.lang.String config;
8+
public void setConfig(java.lang.String config) {
9+
this.config = config;
10+
}
11+
public java.lang.String getConfig() {
12+
return this.config;
13+
}
14+
15+
public java.lang.String hostUuid;
16+
public void setHostUuid(java.lang.String hostUuid) {
17+
this.hostUuid = hostUuid;
18+
}
19+
public java.lang.String getHostUuid() {
20+
return this.hostUuid;
21+
}
22+
23+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.zstack.sdk;
2+
3+
4+
5+
public class BareMetal2DpuHostInventory extends org.zstack.sdk.HostInventory {
6+
7+
public java.lang.String url;
8+
public void setUrl(java.lang.String url) {
9+
this.url = url;
10+
}
11+
public java.lang.String getUrl() {
12+
return this.url;
13+
}
14+
15+
public java.lang.String vendorType;
16+
public void setVendorType(java.lang.String vendorType) {
17+
this.vendorType = vendorType;
18+
}
19+
public java.lang.String getVendorType() {
20+
return this.vendorType;
21+
}
22+
23+
public java.lang.String chassisUuid;
24+
public void setChassisUuid(java.lang.String chassisUuid) {
25+
this.chassisUuid = chassisUuid;
26+
}
27+
public java.lang.String getChassisUuid() {
28+
return this.chassisUuid;
29+
}
30+
31+
}

sdk/src/main/java/org/zstack/sdk/CreateBareMetal2InstanceAction.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ public Result throwExceptionIfError() {
7070
@Param(required = false, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
7171
public java.lang.String gatewayAllocatorStrategy;
7272

73+
@Param(required = false, validValues = {"IPMI","DPU"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
74+
public java.lang.String chassisType;
75+
7376
@Param(required = false)
7477
public java.lang.String resourceUuid;
7578

sdk/src/main/java/org/zstack/sdk/CreateClusterAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public Result throwExceptionIfError() {
3434
@Param(required = false, maxLength = 2048, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
3535
public java.lang.String description;
3636

37-
@Param(required = true, validValues = {"KVM","Simulator","baremetal","baremetal2","xdragon"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
37+
@Param(required = true, validValues = {"KVM","Simulator","baremetal","baremetal2","xdragon","baremetal2Dpu"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
3838
public java.lang.String hypervisorType;
3939

4040
@Param(required = false, validValues = {"zstack","baremetal","baremetal2"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false)

0 commit comments

Comments
 (0)