Skip to content

Commit 21d5c10

Browse files
authored
Apply reordered ACL list to VR router (#12525)
This PR address #9398
1 parent 062b98a commit 21d5c10

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

server/src/main/java/com/cloud/network/element/VpcVirtualRouterElement.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,15 @@ public boolean applyNetworkACLs(final Network network, final List<? extends Netw
550550

551551
@Override
552552
public boolean reorderAclRules(Vpc vpc, List<? extends Network> networks, List<? extends NetworkACLItem> networkACLItems) {
553-
return true;
553+
boolean result = true;
554+
try {
555+
for (Network network : networks) {
556+
result = result && applyNetworkACLs(network, networkACLItems);
557+
}
558+
} catch (ResourceUnavailableException ex) {
559+
result = false;
560+
}
561+
return result;
554562
}
555563

556564
@Override

server/src/main/java/com/cloud/network/vpc/NetworkACLServiceImpl.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ
109109
private NsxProviderDao nsxProviderDao;
110110
@Inject
111111
private NetrisProviderDao netrisProviderDao;
112+
@Inject
113+
private VpcManager vpcManager;
112114

113115
private String supportedProtocolsForAclRules = "tcp,udp,icmp,all";
114116

@@ -1037,13 +1039,20 @@ public NetworkACLItem moveNetworkAclRuleToNewPosition(MoveNetworkAclItemCmd move
10371039
if (Objects.isNull(vpc)) {
10381040
return networkACLItem;
10391041
}
1042+
List<NetworkVO> networks = _networkDao.listByAclId(lockedAcl.getId());
1043+
if (networks.isEmpty()) {
1044+
return networkACLItem;
1045+
}
1046+
10401047
final DataCenter dc = _entityMgr.findById(DataCenter.class, vpc.getZoneId());
10411048
final NsxProviderVO nsxProvider = nsxProviderDao.findByZoneId(dc.getId());
10421049
final NetrisProviderVO netrisProvider = netrisProviderDao.findByZoneId(dc.getId());
1043-
List<NetworkVO> networks = _networkDao.listByAclId(lockedAcl.getId());
1044-
if (ObjectUtils.anyNotNull(nsxProvider, netrisProvider) && !networks.isEmpty()) {
1050+
boolean isVpcNetworkACLProvider = vpcManager.isProviderSupportServiceInVpc(vpc.getId(), Network.Service.NetworkACL, Network.Provider.VPCVirtualRouter);
1051+
1052+
if (ObjectUtils.anyNotNull(nsxProvider, netrisProvider) || isVpcNetworkACLProvider) {
10451053
allAclRules = getAllAclRulesSortedByNumber(lockedAcl.getId());
1046-
Network.Provider networkProvider = nsxProvider != null ? Network.Provider.Nsx : Network.Provider.Netris;
1054+
Network.Provider networkProvider = isVpcNetworkACLProvider ? Network.Provider.VPCVirtualRouter
1055+
: (nsxProvider != null ? Network.Provider.Nsx : Network.Provider.Netris);
10471056
_networkAclMgr.reorderAclRules(vpc, networks, allAclRules, networkProvider);
10481057
}
10491058
return networkACLItem;

0 commit comments

Comments
 (0)