Skip to content

Commit 6d6873c

Browse files
author
gitlab
committed
Merge branch 'shixin-vpc-defaultroute@@3' into 'master'
[Feature: ZSTAC-25278] change virtual router default network See merge request zstackio/zstack!5989
2 parents 45b9b13 + ee86b7f commit 6d6873c

50 files changed

Lines changed: 1934 additions & 479 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

conf/db/upgrade/V3.8.1__schema.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

conf/db/upgrade/V3.8.3__schema.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE `zstack`.`VipVO` add column `system` tinyint unsigned NOT NULL DEFAULT 0;

conf/serviceConfig/virtualRouter.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,9 @@
4040
<name>org.zstack.network.service.virtualrouter.APIReconnectVirtualRouterMsg</name>
4141
<serviceId>vmInstance</serviceId>
4242
</message>
43+
44+
<message>
45+
<name>org.zstack.network.service.virtualrouter.APIUpdateVirtualRouterMsg</name>
46+
<serviceId>vmInstance</serviceId>
47+
</message>
4348
</service>

conf/springConfigXml/VirtualRouter.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<list>
3030
<value>org.zstack.network.service.virtualrouter.lifecycle.VirtualRouterAssembleDecoratorFlow</value>
3131
<value>org.zstack.network.service.virtualrouter.lifecycle.VirtualRouterDeployAgentFlow</value>
32-
<value>org.zstack.network.service.virtualrouter.vip.VirtualRouterCreateVipForPublicIpFlow</value>
32+
<value>org.zstack.network.service.virtualrouter.vip.VirtualRouterCreatePublicVipFlow</value>
3333
<value>org.zstack.network.service.virtualrouter.dns.VirtualRouterSyncDnsOnStartFlow</value>
3434
<value>org.zstack.network.service.virtualrouter.dhcp.VirtualRouterSyncDHCPOnStartFlow</value>
3535
<value>org.zstack.network.service.virtualrouter.nat.VirtualRouterSyncSNATOnStartFlow</value>
@@ -143,6 +143,7 @@
143143
<zstack:extension interface="org.zstack.network.service.vip.VipBackend" />
144144
<zstack:extension interface="org.zstack.header.network.service.VirtualRouterAfterAttachNicExtensionPoint" order="999"/>
145145
<zstack:extension interface="org.zstack.header.network.service.VirtualRouterBeforeDetachNicExtensionPoint" order="-1"/>
146+
<zstack:extension interface="org.zstack.network.service.vip.PreVipReleaseExtensionPoint" order="-1"/>
146147
</zstack:plugin>
147148
</bean>
148149

@@ -255,4 +256,10 @@
255256
<zstack:extension interface="org.zstack.appliancevm.ApplianceVmSyncConfigToHaGroupExtensionPoint" />
256257
</zstack:plugin>
257258
</bean>
259+
260+
<bean id="VirutalRouterDefaultL3ConfigProxy" class="org.zstack.network.service.virtualrouter.VirutalRouterDefaultL3ConfigProxy">
261+
<zstack:plugin>
262+
<zstack:extension interface="org.zstack.appliancevm.ApplianceVmSyncConfigToHaGroupExtensionPoint" />
263+
</zstack:plugin>
264+
</bean>
258265
</beans>

conf/springConfigXml/vyos.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<value>org.zstack.network.service.virtualrouter.vyos.VyosConfigSshFlow</value>
2121
<value>org.zstack.network.service.virtualrouter.ha.VirtualRouterHaSyncConfigToBackendFlow</value>
2222
<value>org.zstack.network.service.virtualrouter.vyos.VyosChangePrivateL3FirewallDefaultActionFlow</value>
23-
<value>org.zstack.network.service.virtualrouter.vip.VirtualRouterCreateVipForPublicIpFlow</value>
23+
<value>org.zstack.network.service.virtualrouter.vip.VirtualRouterCreatePublicVipFlow</value>
2424
<value>org.zstack.network.service.virtualrouter.dns.VirtualRouterSyncDnsOnStartFlow</value>
2525
<value>org.zstack.network.service.virtualrouter.dhcp.VirtualRouterSyncDHCPOnStartFlow</value>
2626
<value>org.zstack.network.service.virtualrouter.nat.VirtualRouterSyncSNATOnStartFlow</value>

plugin/applianceVm/src/main/java/org/zstack/appliancevm/ApplianceVmAllocateNicFlow.java

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@
55
import org.springframework.beans.factory.annotation.Configurable;
66
import org.springframework.transaction.annotation.Transactional;
77
import org.zstack.core.Platform;
8+
import org.zstack.core.asyncbatch.While;
89
import org.zstack.core.cloudbus.CloudBus;
10+
import org.zstack.core.cloudbus.CloudBusCallBack;
911
import org.zstack.core.db.*;
12+
import org.zstack.header.core.NoErrorCompletion;
1013
import org.zstack.header.core.workflow.Flow;
1114
import org.zstack.header.core.workflow.FlowException;
1215
import org.zstack.header.core.workflow.FlowRollback;
1316
import org.zstack.header.core.workflow.FlowTrigger;
1417
import org.zstack.header.message.MessageReply;
1518
import org.zstack.header.network.l3.*;
16-
import org.zstack.header.vm.VmInstanceConstant;
17-
import org.zstack.header.vm.VmInstanceSpec;
18-
import org.zstack.header.vm.VmNicInventory;
19-
import org.zstack.header.vm.VmNicVO;
19+
import org.zstack.header.vm.*;
2020
import org.zstack.identity.Account;
2121
import org.zstack.network.l3.L3NetworkManager;
2222
import org.zstack.utils.network.IPv6Constants;
@@ -26,6 +26,7 @@
2626
import java.util.ArrayList;
2727
import java.util.List;
2828
import java.util.Map;
29+
import java.util.stream.Collectors;
2930

3031
/**
3132
* Created with IntelliJ IDEA.
@@ -101,16 +102,7 @@ private VmNicInventory makeNicInventory(VmInstanceSpec vmSpec, ApplianceVmNicSpe
101102

102103
@Transactional
103104
private void removeNicFromDb(List<VmNicInventory> nics) {
104-
dbf.entityForTranscationCallback(TransactionalCallback.Operation.REMOVE, VmNicVO.class);
105-
List<String> uuids = new ArrayList<String>(nics.size());
106-
for (VmNicInventory nic : nics) {
107-
uuids.add(nic.getUuid());
108-
}
109-
110-
String sql = "delete from VmNicVO v where v.uuid in (:uuids)";
111-
Query q = dbf.getEntityManager().createQuery(sql);
112-
q.setParameter("uuids", uuids);
113-
q.executeUpdate();
105+
SQL.New(VmNicVO.class).in(VmNicVO_.uuid, nics.stream().map(VmNicInventory::getUuid).collect(Collectors.toList())).delete();
114106
}
115107

116108
@Override
@@ -166,7 +158,7 @@ public void rollback(FlowRollback chain, Map data) {
166158
return;
167159
}
168160

169-
removeNicFromDb(nics);
161+
List<ReturnIpMsg> rmsgs = new ArrayList<>();
170162
for (VmNicInventory nic : nics) {
171163
if (nic.getUsedIpUuid() == null) {
172164
continue;
@@ -176,7 +168,25 @@ public void rollback(FlowRollback chain, Map data) {
176168
msg.setL3NetworkUuid(nic.getL3NetworkUuid());
177169
msg.setUsedIpUuid(nic.getUsedIpUuid());
178170
bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, nic.getL3NetworkUuid());
179-
bus.send(msg);
171+
rmsgs.add(msg);
172+
}
173+
174+
if (!rmsgs.isEmpty()) {
175+
new While<>(rmsgs).each((msg, compl) -> {
176+
bus.send(msg, new CloudBusCallBack(compl) {
177+
@Override
178+
public void run(MessageReply reply) {
179+
compl.done();
180+
}
181+
});
182+
}).run(new NoErrorCompletion() {
183+
@Override
184+
public void done() {
185+
removeNicFromDb(nics);
186+
}
187+
});
188+
} else {
189+
removeNicFromDb(nics);
180190
}
181191
} finally {
182192
chain.rollback();

plugin/applianceVm/src/main/java/org/zstack/appliancevm/ApplianceVmSpec.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class ApplianceVmSpec implements Serializable {
2424
private String name;
2525
private String uuid;
2626
private String description;
27+
private L3NetworkInventory defaultL3Network;
2728
private L3NetworkInventory defaultRouteL3Network;
2829
private ApplianceVmType applianceVmType;
2930
private String accountUuid;
@@ -202,4 +203,12 @@ public String getStaticVip() {
202203
public void setStaticVip(String staticVip) {
203204
this.staticVip = staticVip;
204205
}
206+
207+
public L3NetworkInventory getDefaultL3Network() {
208+
return defaultL3Network;
209+
}
210+
211+
public void setDefaultL3Network(L3NetworkInventory defaultL3Network) {
212+
this.defaultL3Network = defaultL3Network;
213+
}
205214
}

plugin/applianceVm/src/main/java/org/zstack/appliancevm/CreateApplianceVmJob.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ public void run(FlowTrigger trigger, Map data) {
9090
avo.setManagementNetworkUuid(spec.getManagementNic().getL3NetworkUuid());
9191
String defaultRouteL3NetworkUuid = spec.getDefaultRouteL3Network() != null ? spec.getDefaultRouteL3Network().getUuid() : spec.getManagementNic().getL3NetworkUuid();
9292
avo.setDefaultRouteL3NetworkUuid(defaultRouteL3NetworkUuid);
93+
avo.setDefaultL3NetworkUuid(spec.getDefaultL3Network().getUuid());
9394

9495
String zoneUuid = Q.New(L3NetworkVO.class)
9596
.select(L3NetworkVO_.zoneUuid)

plugin/eip/src/main/java/org/zstack/network/service/eip/EipApiInterceptor.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,10 @@ private void validate(APICreateEipMsg msg) {
242242
}
243243
}
244244

245+
if (vip.isSystem()) {
246+
throw new ApiMessageInterceptionException(operr("eip can not be created on system vip"));
247+
}
248+
245249
if (vip.getState() != VipState.Enabled) {
246250
throw new ApiMessageInterceptionException(operr("vip[uuid:%s] is not in state[%s], current state is %s", msg.getVipUuid(), VipState.Enabled, vip.getState()));
247251
}
Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
package org.zstack.network.service.vip
22

33
import org.zstack.header.errorcode.ErrorCode
4+
import org.zstack.network.service.vip.VipInventory
45

56
doc {
67

7-
title "虚拟IP清单"
8+
title "虚拟IP清单"
89

9-
ref {
10-
name "error"
11-
path "org.zstack.network.service.vip.APICreateVipEvent.error"
12-
desc "错误码,若不为null,则表示操作失败, 操作成功时该字段为null", false
13-
type "ErrorCode"
14-
since "0.6"
15-
clz ErrorCode.class
16-
}
17-
ref {
18-
name "inventory"
19-
path "org.zstack.network.service.vip.APICreateVipEvent.inventory"
20-
desc "虚拟IP清单"
21-
type "VipInventory"
22-
since "0.6"
23-
clz VipInventory.class
24-
}
10+
ref {
11+
name "error"
12+
path "org.zstack.network.service.vip.APICreateVipEvent.error"
13+
desc "错误码,若不为null,则表示操作失败, 操作成功时该字段为null",false
14+
type "ErrorCode"
15+
since "0.6"
16+
clz ErrorCode.class
17+
}
18+
ref {
19+
name "inventory"
20+
path "org.zstack.network.service.vip.APICreateVipEvent.inventory"
21+
desc "虚拟IP清单"
22+
type "VipInventory"
23+
since "0.6"
24+
clz VipInventory.class
25+
}
2526
}

0 commit comments

Comments
 (0)