Skip to content

Commit 0b6ddee

Browse files
MatheMatrixZStack-Robot
authored andcommitted
Add account resource ref for vxlan
For UI developing.
1 parent 614f8e1 commit 0b6ddee

File tree

3 files changed

+44
-19
lines changed

3 files changed

+44
-19
lines changed

conf/springConfigXml/AccountManager.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
<value>org.zstack.network.service.lb.LoadBalancerVO</value>
4646
<value>org.zstack.network.service.lb.LoadBalancerListenerVO</value>
4747
<value>org.zstack.header.core.scheduler.SchedulerVO</value>
48+
<value>org.zstack.network.l2.vxlan.vxlanNetwork.VxlanNetworkVO</value>
4849
</list>
4950
</property>
5051
</bean>

plugin/vxlan/src/main/java/org/zstack/network/l2/vxlan/vxlanNetwork/VxlanNetworkFactory.java

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package org.zstack.network.l2.vxlan.vxlanNetwork;
22

33
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.zstack.core.Platform;
45
import org.zstack.core.asyncbatch.While;
56
import org.zstack.core.cloudbus.CloudBus;
67
import org.zstack.core.cloudbus.CloudBusCallBack;
78
import org.zstack.core.db.DatabaseFacade;
89
import org.zstack.core.db.Q;
10+
import org.zstack.core.db.SQLBatchWithReturn;
911
import org.zstack.core.db.SimpleQuery;
1012
import org.zstack.header.Component;
1113
import org.zstack.header.core.FutureCompletion;
@@ -23,6 +25,7 @@
2325
import org.zstack.header.vm.VmInstanceInventory;
2426
import org.zstack.header.vm.VmInstanceMigrateExtensionPoint;
2527
import org.zstack.header.vm.VmNicInventory;
28+
import org.zstack.identity.AccountManager;
2629
import org.zstack.network.l2.L2NetworkDefaultMtu;
2730
import org.zstack.network.l2.vxlan.vxlanNetworkPool.AllocateVniMsg;
2831
import org.zstack.network.l2.vxlan.vxlanNetworkPool.AllocateVniReply;
@@ -51,6 +54,8 @@ public class VxlanNetworkFactory implements L2NetworkFactory, Component, VmInsta
5154
private CloudBus bus;
5255
@Autowired
5356
private QueryFacade qf;
57+
@Autowired
58+
protected AccountManager acntMgr;
5459

5560
@Override
5661
public L2NetworkType getType() {
@@ -60,7 +65,6 @@ public L2NetworkType getType() {
6065
@Override
6166
public L2NetworkInventory createL2Network(L2NetworkVO ovo, APICreateL2NetworkMsg msg) {
6267
APICreateL2VxlanNetworkMsg amsg = (APICreateL2VxlanNetworkMsg) msg;
63-
VxlanNetworkVO vo = new VxlanNetworkVO(ovo);
6468

6569
AllocateVniMsg vniMsg = new AllocateVniMsg();
6670
vniMsg.setL2NetworkUuid(amsg.getPoolUuid());
@@ -70,26 +74,41 @@ public L2NetworkInventory createL2Network(L2NetworkVO ovo, APICreateL2NetworkMsg
7074
if (!reply.isSuccess()) {
7175
throw new OperationFailureException(reply.getError());
7276
}
73-
7477
AllocateVniReply r = reply.castReply();
75-
vo.setVni(r.getVni());
76-
vo.setPoolUuid((amsg.getPoolUuid()));
77-
if (vo.getPhysicalInterface() == null) {
78-
vo.setPhysicalInterface("");
79-
}
80-
vo = dbf.persistAndRefresh(vo);
81-
82-
SimpleQuery<L2NetworkClusterRefVO> q = dbf.createQuery(L2NetworkClusterRefVO.class);
83-
q.add(L2NetworkClusterRefVO_.l2NetworkUuid, SimpleQuery.Op.EQ, amsg.getPoolUuid());
84-
final List<L2NetworkClusterRefVO> refs = q.list();
85-
for (L2NetworkClusterRefVO ref : refs) {
86-
L2NetworkClusterRefVO rvo = new L2NetworkClusterRefVO();
87-
rvo.setClusterUuid(ref.getClusterUuid());
88-
rvo.setL2NetworkUuid(vo.getUuid());
89-
dbf.persist(rvo);
90-
}
9178

92-
vo = dbf.reload(vo);
79+
VxlanNetworkVO vo = new SQLBatchWithReturn<VxlanNetworkVO>() {
80+
@Override
81+
protected VxlanNetworkVO scripts() {
82+
VxlanNetworkVO vo = new VxlanNetworkVO(ovo);
83+
String uuid = msg.getResourceUuid() == null ? Platform.getUuid() : msg.getResourceUuid();
84+
vo.setUuid(uuid);
85+
vo.setVni(r.getVni());
86+
vo.setPoolUuid((amsg.getPoolUuid()));
87+
if (vo.getPhysicalInterface() == null) {
88+
vo.setPhysicalInterface("");
89+
}
90+
dbf.getEntityManager().persist(vo);
91+
92+
SimpleQuery<L2NetworkClusterRefVO> q = dbf.createQuery(L2NetworkClusterRefVO.class);
93+
q.add(L2NetworkClusterRefVO_.l2NetworkUuid, SimpleQuery.Op.EQ, amsg.getPoolUuid());
94+
final List<L2NetworkClusterRefVO> refs = q.list();
95+
for (L2NetworkClusterRefVO ref : refs) {
96+
L2NetworkClusterRefVO rvo = new L2NetworkClusterRefVO();
97+
rvo.setClusterUuid(ref.getClusterUuid());
98+
rvo.setL2NetworkUuid(uuid);
99+
dbf.getEntityManager().persist(rvo);
100+
dbf.getEntityManager().flush();
101+
dbf.getEntityManager().refresh(rvo);
102+
}
103+
104+
acntMgr.createAccountResourceRef(msg.getSession().getAccountUuid(), vo.getUuid(), VxlanNetworkVO.class);
105+
106+
dbf.getEntityManager().flush();
107+
dbf.getEntityManager().refresh(vo);
108+
109+
return vo;
110+
}
111+
}.execute();
93112

94113
L2VxlanNetworkInventory inv = L2VxlanNetworkInventory.valueOf(vo);
95114
String info = String.format("successfully create L2VxlanNetwork, %s", JSONObjectUtil.toJsonString(inv));

test/src/test/groovy/org/zstack/test/integration/network/vxlanNetwork/OneVxlanNetworkLifeCycleCase.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ class OneVxlanNetworkLifeCycleCase extends SubCase {
149149
delegate.zoneUuid = zone.inventory.getUuid()
150150
}
151151

152+
Map accountInventories = getResourceAccount {
153+
delegate.resourceUuids = [netinv.uuid]
154+
}
155+
156+
assert accountInventories.size() == 1
152157
assert netinv.getAttachedClusterUuids().size() == 1
153158

154159
attachL2NetworkToCluster {

0 commit comments

Comments
 (0)