Skip to content

Commit d105f17

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

File tree

10 files changed

+257
-4
lines changed

10 files changed

+257
-4
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ public void run(MessageReply reply) {
471471
@Override
472472
public boolean skip(Map data) {
473473
// no need to check baremetal2 gateway architecture with the cluster architecture
474-
return vo.getHypervisorType().equals("baremetal2");
474+
return vo.getHypervisorType().equals("baremetal2") || vo.getHypervisorType().equals("baremetal2Dpu");
475475
}
476476

477477
@Override

conf/db/upgrade/V5.5.0__schema.sql

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,3 +476,46 @@ CALL ADD_COLUMN('ModelServiceInstanceVO', 'architecture', 'VARCHAR(32)', 1, NULL
476476
CALL ADD_COLUMN('ModelServiceInstanceVO', 'gpuVendor', 'VARCHAR(128)', 1, NULL);
477477

478478
CALL ADD_COLUMN('ModelVO', 'dtype', 'varchar(32)', 1, NULL);
479+
480+
CREATE TABLE IF NOT EXISTS `zstack`.`BareMetal2DpuChassisVO` (
481+
`uuid` varchar(32) NOT NULL UNIQUE,
482+
`config` TEXT DEFAULT NULL,
483+
`hostUuid` varchar(32) DEFAULT NULL,
484+
PRIMARY KEY (`uuid`),
485+
CONSTRAINT `fkBareMetal2DpuChassisVOChassisVO` FOREIGN KEY (`uuid`) REFERENCES `BareMetal2ChassisVO` (`uuid`) ON DELETE CASCADE,
486+
CONSTRAINT `fkBareMetal2DpuChassisVOHostEO` FOREIGN KEY (`hostUuid`) REFERENCES `HostEO` (`uuid`) ON DELETE SET NULL
487+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
488+
489+
CREATE TABLE IF NOT EXISTS `zstack`.`BareMetal2DpuHostVO` (
490+
`uuid` varchar(32) NOT NULL UNIQUE,
491+
`chassisUuid` VARCHAR(32) NOT NULL,
492+
`vendorType` VARCHAR(255) NOT NULL,
493+
`url` VARCHAR(255) NOT NULL,
494+
PRIMARY KEY (`uuid`),
495+
CONSTRAINT `fkBareMetal2DpuHostVOHostVO` FOREIGN KEY (`uuid`) REFERENCES `HostEO` (`uuid`) ON DELETE CASCADE,
496+
CONSTRAINT `fkBareMetal2DpuHostVOChassisVO` FOREIGN KEY (`chassisUuid`) REFERENCES `BareMetal2ChassisVO` (`uuid`) ON DELETE CASCADE
497+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
498+
499+
SELECT
500+
CONSTRAINT_NAME,
501+
TABLE_NAME,
502+
COLUMN_NAME,
503+
REFERENCED_TABLE_NAME
504+
FROM information_schema.KEY_COLUMN_USAGE
505+
WHERE TABLE_SCHEMA = 'zstack'
506+
AND TABLE_NAME = 'BareMetal2InstanceVO'
507+
AND COLUMN_NAME IN ('gatewayUuid', 'lastGatewayUuid');
508+
509+
ALTER TABLE `zstack`.`BareMetal2InstanceVO`
510+
DROP FOREIGN KEY `fkBareMetal2InstanceVOGatewayVO`,
511+
DROP FOREIGN KEY `fkBareMetal2InstanceVOGatewayVO1`;
512+
513+
ALTER TABLE `zstack`.`BareMetal2InstanceVO`
514+
ADD CONSTRAINT `fkBareMetal2InstanceVOGatewayVO`
515+
FOREIGN KEY (`gatewayUuid`)
516+
REFERENCES `HostEO` (`uuid`)
517+
ON DELETE SET NULL,
518+
ADD CONSTRAINT `fkBareMetal2InstanceVOGatewayVO1`
519+
FOREIGN KEY (`lastGatewayUuid`)
520+
REFERENCES `HostEO` (`uuid`)
521+
ON DELETE SET NULL;

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]", error.code, error.description, error.details)
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/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)

testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -962,6 +962,33 @@ abstract class ApiHelper {
962962
}
963963

964964

965+
def addBareMetal2DpuChassis(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.AddBareMetal2DpuChassisAction.class) Closure c) {
966+
def a = new org.zstack.sdk.AddBareMetal2DpuChassisAction()
967+
a.sessionId = Test.currentEnvSpec?.session?.uuid
968+
c.resolveStrategy = Closure.OWNER_FIRST
969+
c.delegate = a
970+
c()
971+
972+
973+
if (System.getProperty("apipath") != null) {
974+
if (a.apiId == null) {
975+
a.apiId = Platform.uuid
976+
}
977+
978+
def tracker = new ApiPathTracker(a.apiId)
979+
def out = errorOut(a.call())
980+
def path = tracker.getApiPath()
981+
if (!path.isEmpty()) {
982+
Test.apiPaths[a.class.name] = path.join(" --->\n")
983+
}
984+
985+
return out
986+
} else {
987+
return errorOut(a.call())
988+
}
989+
}
990+
991+
965992
def addBlockPrimaryStorage(@DelegatesTo(strategy = Closure.OWNER_FIRST, value = org.zstack.sdk.AddBlockPrimaryStorageAction.class) Closure c) {
966993
def a = new org.zstack.sdk.AddBlockPrimaryStorageAction()
967994
a.sessionId = Test.currentEnvSpec?.session?.uuid

0 commit comments

Comments
 (0)