Skip to content

Commit c71bae5

Browse files
committed
Routed: add unit tests RoutedIpv4ManagerImplTest
1 parent ae67d19 commit c71bae5

File tree

2 files changed

+1239
-19
lines changed

2 files changed

+1239
-19
lines changed

server/src/main/java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ public DataCenterIpv4GuestSubnet updateDataCenterIpv4GuestSubnet(UpdateIpv4Subne
338338
return dataCenterIpv4GuestSubnetDao.findById(subnetId);
339339
}
340340

341-
private void checkConflicts(List<DataCenterIpv4GuestSubnetVO> existingSubnets, String newSubnet, Long ignoreSubnetId) {
341+
protected void checkConflicts(List<DataCenterIpv4GuestSubnetVO> existingSubnets, String newSubnet, Long ignoreSubnetId) {
342342
for (DataCenterIpv4GuestSubnetVO existing : existingSubnets) {
343343
if ((ignoreSubnetId == null || existing.getId() != ignoreSubnetId) && NetUtils.isNetworksOverlap(existing.getSubnet(), newSubnet)) {
344344
throw new InvalidParameterValueException(String.format("Existing zone subnet %s has overlap with: %s", existing.getSubnet(), newSubnet));
@@ -572,11 +572,6 @@ public Ipv4SubnetForGuestNetworkResponse createIpv4SubnetForGuestNetworkResponse
572572
response.setParentSubnet(parent.getSubnet());
573573
zoneId = parent.getDataCenterId();
574574
}
575-
} else if (subnet.getNetworkId() != null) {
576-
Network network = ApiDBUtils.findNetworkById(subnet.getNetworkId());
577-
if (network != null) {
578-
zoneId = network.getDataCenterId();
579-
}
580575
}
581576
if (zoneId != null) {
582577
DataCenter zone = ApiDBUtils.findZoneById(zoneId);
@@ -609,7 +604,7 @@ public Ipv4GuestSubnetNetworkMap getOrCreateIpv4SubnetForVpc(Vpc vpc, Integer vp
609604
return getOrCreateIpv4SubnetForGuestNetworkOrVpcInternal(vpcCidrSize, vpc.getDomainId(), vpc.getAccountId(), vpc.getZoneId());
610605
}
611606

612-
private Ipv4GuestSubnetNetworkMap getOrCreateIpv4SubnetForGuestNetworkOrVpcInternal(Integer cidrSize, Long ownerDomainId, Long ownerAccountId, Long zoneId) {
607+
protected Ipv4GuestSubnetNetworkMap getOrCreateIpv4SubnetForGuestNetworkOrVpcInternal(Integer cidrSize, Long ownerDomainId, Long ownerAccountId, Long zoneId) {
613608
validateNetworkCidrSize(ownerAccountId, cidrSize);
614609
List<DataCenterIpv4GuestSubnetVO> subnets = getZoneSubnetsForAccount(ownerDomainId, ownerAccountId, zoneId);
615610
for (DataCenterIpv4GuestSubnetVO subnet : subnets) {
@@ -621,7 +616,7 @@ private Ipv4GuestSubnetNetworkMap getOrCreateIpv4SubnetForGuestNetworkOrVpcInter
621616
return null;
622617
}
623618

624-
private Ipv4GuestSubnetNetworkMap getOrCreateIpv4SubnetForGuestNetworkOrVpcInternal(Integer cidrSize, DataCenterIpv4GuestSubnetVO subnet) {
619+
protected Ipv4GuestSubnetNetworkMap getOrCreateIpv4SubnetForGuestNetworkOrVpcInternal(Integer cidrSize, DataCenterIpv4GuestSubnetVO subnet) {
625620
Ipv4GuestSubnetNetworkMap map = ipv4GuestSubnetNetworkMapDao.findFirstAvailable(subnet.getId(), cidrSize);
626621
if (map != null) {
627622
return map;
@@ -634,7 +629,7 @@ private Ipv4GuestSubnetNetworkMap getOrCreateIpv4SubnetForGuestNetworkOrVpcInter
634629
return null;
635630
}
636631

637-
private void getOrCreateIpv4SubnetForGuestNetworkOrVpcInternal(String networkCidr, Long ownerDomainId, Long ownerAccountId, Long zoneId) {
632+
protected void getOrCreateIpv4SubnetForGuestNetworkOrVpcInternal(String networkCidr, Long ownerDomainId, Long ownerAccountId, Long zoneId) {
638633
Ipv4GuestSubnetNetworkMapVO subnetMap = ipv4GuestSubnetNetworkMapDao.findBySubnet(networkCidr);
639634
if (subnetMap != null) {
640635
// check if the subnet is in use
@@ -669,7 +664,7 @@ private void checkIfNetworkOwnerCanAccessIpv4Subnet(DataCenterIpv4GuestSubnet pa
669664
}
670665
}
671666

672-
private DataCenterIpv4GuestSubnet getParentOfNetworkCidr(Long zoneId, String networkCidr) {
667+
protected DataCenterIpv4GuestSubnet getParentOfNetworkCidr(Long zoneId, String networkCidr) {
673668
List<DataCenterIpv4GuestSubnetVO> existingSubnets = dataCenterIpv4GuestSubnetDao.listByDataCenterId(zoneId);
674669
for (DataCenterIpv4GuestSubnetVO existing : existingSubnets) {
675670
if (NetUtils.isNetworkAWithinNetworkB(networkCidr, existing.getSubnet())) {
@@ -708,14 +703,22 @@ private void validateNetworkCidrSize(long accountId, Integer networkCidrSize) {
708703

709704
private List<DataCenterIpv4GuestSubnetVO> getZoneSubnetsForAccount(long domainId, long accountId, long zoneId) {
710705
// Get dedicated guest subnets for the account
711-
List<DataCenterIpv4GuestSubnetVO> subnets = dataCenterIpv4GuestSubnetDao.listByDataCenterIdAndAccountId(zoneId, accountId);
706+
List<DataCenterIpv4GuestSubnetVO> subnets = new ArrayList<>();
707+
subnets.addAll(dataCenterIpv4GuestSubnetDao.listByDataCenterIdAndAccountId(zoneId, accountId));
712708
subnets.addAll(dataCenterIpv4GuestSubnetDao.listByDataCenterIdAndDomainId(zoneId, domainId));
713709
// Get non-dedicated zone guest subnets for the account
714710
subnets.addAll(dataCenterIpv4GuestSubnetDao.listNonDedicatedByDataCenterId(zoneId));
715711
return subnets;
716712
}
717713

718-
private Ipv4GuestSubnetNetworkMap createIpv4SubnetFromParentSubnet(DataCenterIpv4GuestSubnet parent, Integer networkCidrSize) {
714+
protected Ipv4GuestSubnetNetworkMap createIpv4SubnetFromParentSubnet(DataCenterIpv4GuestSubnet parent, Integer networkCidrSize) {
715+
String networkCidr = createIpv4SubnetStringFromParentSubnet(parent, networkCidrSize);
716+
// create DB record
717+
Ipv4GuestSubnetNetworkMapVO subnetMap = new Ipv4GuestSubnetNetworkMapVO(parent.getId(), NetUtils.transformCidr(networkCidr), null, State.Free);
718+
return ipv4GuestSubnetNetworkMapDao.persist(subnetMap);
719+
}
720+
721+
protected String createIpv4SubnetStringFromParentSubnet(DataCenterIpv4GuestSubnet parent, Integer networkCidrSize) {
719722
DataCenterIpv4GuestSubnetVO subnetVO = dataCenterIpv4GuestSubnetDao.findById(parent.getId());
720723
if (subnetVO == null) {
721724
throw new InvalidParameterValueException(String.format("Invalid subnet ID: %s", parent.getId()));
@@ -752,9 +755,7 @@ private Ipv4GuestSubnetNetworkMap createIpv4SubnetFromParentSubnet(DataCenterIpv
752755
if (networkCidr == null) {
753756
throw new CloudRuntimeException("Failed to automatically allocate a subnet with specified cidrsize");
754757
}
755-
// create DB record
756-
Ipv4GuestSubnetNetworkMapVO subnetMap = new Ipv4GuestSubnetNetworkMapVO(parent.getId(), NetUtils.transformCidr(networkCidr), null, State.Free);
757-
return ipv4GuestSubnetNetworkMapDao.persist(subnetMap);
758+
return networkCidr;
758759
}
759760

760761
private String getFreeNetworkCidr(List<Pair<Long, Integer>> subnetsInFreeIpRanges, int networkCidrSize) {
@@ -771,7 +772,7 @@ private String getFreeNetworkCidr(List<Pair<Long, Integer>> subnetsInFreeIpRange
771772
return null;
772773
}
773774

774-
private Ipv4GuestSubnetNetworkMap createIpv4SubnetFromParentSubnet(DataCenterIpv4GuestSubnet parent, String networkCidr) {
775+
protected Ipv4GuestSubnetNetworkMap createIpv4SubnetFromParentSubnet(DataCenterIpv4GuestSubnet parent, String networkCidr) {
775776
// Validate the network cidr
776777
if (!NetUtils.isNetworkAWithinNetworkB(networkCidr, parent.getSubnet())) {
777778
throw new InvalidParameterValueException(String.format("networkCidr %s is not within parent cidr: %s", networkCidr, parent.getSubnet()));
@@ -960,9 +961,11 @@ public boolean applyRoutingFirewallRule(long id) {
960961
}
961962
if (!FirewallRule.Purpose.Firewall.equals(rule.getPurpose())) {
962963
logger.error(String.format("Cannot apply routing firewall rule with ID: %d as purpose %s is not %s", id, rule.getPurpose(), FirewallRule.Purpose.Firewall));
964+
return false;
963965
}
964966
logger.debug(String.format("Applying routing firewall rules for rule with ID: %s", rule.getUuid()));
965-
List<FirewallRuleVO> rules = firewallDao.listByNetworkPurposeTrafficType(rule.getNetworkId(), rule.getPurpose(), FirewallRule.TrafficType.Egress);
967+
List<FirewallRuleVO> rules = new ArrayList<>();
968+
rules.addAll(firewallDao.listByNetworkPurposeTrafficType(rule.getNetworkId(), rule.getPurpose(), FirewallRule.TrafficType.Egress));
966969
rules.addAll(firewallDao.listByNetworkPurposeTrafficType(rule.getNetworkId(), rule.getPurpose(), FirewallRule.TrafficType.Ingress));
967970
return firewallManager.applyFirewallRules(rules, false, CallContext.current().getCallingAccount());
968971
}
@@ -1417,7 +1420,7 @@ public Network removeBgpPeersFromNetwork(Network network) {
14171420
return changeBgpPeersForNetworkInternal(network, null);
14181421
}
14191422

1420-
private Network changeBgpPeersForNetworkInternal(Network network, List<Long> bgpPeerIds) {
1423+
protected Network changeBgpPeersForNetworkInternal(Network network, List<Long> bgpPeerIds) {
14211424
final List<Long> bgpPeerIdsToBeAdded;
14221425
if (CollectionUtils.isNotEmpty(bgpPeerIds)) {
14231426
bgpPeerIdsToBeAdded = new ArrayList<>(bgpPeerIds);
@@ -1548,7 +1551,7 @@ public List<Long> getBgpPeerIdsForAccount(Account owner, long zoneId) {
15481551
return bgpPeerDao.listAvailableBgpPeerIdsForAccount(zoneId, owner.getDomainId(), owner.getId(), UseSystemBgpPeers.valueIn(owner.getId()));
15491552
}
15501553

1551-
private Vpc changeBgpPeersForVpcInternal(Vpc vpc, List<Long> bgpPeerIds) {
1554+
protected Vpc changeBgpPeersForVpcInternal(Vpc vpc, List<Long> bgpPeerIds) {
15521555
final List<Long> bgpPeerIdsToBeAdded;
15531556
if (CollectionUtils.isNotEmpty(bgpPeerIds)) {
15541557
bgpPeerIdsToBeAdded = new ArrayList<>(bgpPeerIds);

0 commit comments

Comments
 (0)