Skip to content

Commit 010b47f

Browse files
authored
server: fix ipv6 network deployment with separate guest nw (#6588)
Fixes #6584 Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
1 parent 052a34c commit 010b47f

4 files changed

Lines changed: 17 additions & 17 deletions

File tree

engine/schema/src/main/java/com/cloud/dc/dao/VlanDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public interface VlanDao extends GenericDao<VlanVO, Long> {
6161

6262
List<VlanVO> listDedicatedVlans(long accountId);
6363

64-
List<VlanVO> listIpv6RangeByPhysicalNetworkIdAndVlanId(long physicalNetworkId, String vlanId);
64+
List<VlanVO> listIpv6RangeByZoneIdAndVlanId(long zoneId, String vlanId);
6565

6666
List<VlanVO> listIpv6SupportingVlansByZone(long zoneId);
6767
}

engine/schema/src/main/java/com/cloud/dc/dao/VlanDaoImpl.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public class VlanDaoImpl extends GenericDaoBase<VlanVO, Long> implements VlanDao
6464
protected SearchBuilder<VlanVO> ZoneWideNonDedicatedVlanSearch;
6565
protected SearchBuilder<VlanVO> VlanGatewaysearch;
6666
protected SearchBuilder<VlanVO> DedicatedVlanSearch;
67-
protected SearchBuilder<VlanVO> PhysicalNetworkVlanIp6Search;
67+
protected SearchBuilder<VlanVO> ZoneVlanIp6Search;
6868
protected SearchBuilder<VlanVO> ZoneIp6Search;
6969
protected SearchBuilder<VlanVO> ZoneVlansSearch;
7070

@@ -260,12 +260,12 @@ public boolean configure(String name, Map<String, Object> params) throws Configu
260260
DedicatedVlanSearch.done();
261261
AccountVlanMapSearch.done();
262262

263-
PhysicalNetworkVlanIp6Search = createSearchBuilder();
264-
PhysicalNetworkVlanIp6Search.and("physicalNetworkId", PhysicalNetworkVlanIp6Search.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ);
265-
PhysicalNetworkVlanIp6Search.and("vlanId", PhysicalNetworkVlanIp6Search.entity().getVlanTag(), SearchCriteria.Op.EQ);
266-
PhysicalNetworkVlanIp6Search.and("ip6Gateway", PhysicalNetworkVlanIp6Search.entity().getIp6Gateway(), SearchCriteria.Op.NNULL);
267-
PhysicalNetworkVlanIp6Search.and("ip6Cidr", PhysicalNetworkVlanIp6Search.entity().getIp6Cidr(), SearchCriteria.Op.NNULL);
268-
PhysicalNetworkVlanIp6Search.done();
263+
ZoneVlanIp6Search = createSearchBuilder();
264+
ZoneVlanIp6Search.and("zoneId", ZoneVlanIp6Search.entity().getDataCenterId(), SearchCriteria.Op.EQ);
265+
ZoneVlanIp6Search.and("vlanId", ZoneVlanIp6Search.entity().getVlanTag(), SearchCriteria.Op.EQ);
266+
ZoneVlanIp6Search.and("ip6Gateway", ZoneVlanIp6Search.entity().getIp6Gateway(), SearchCriteria.Op.NNULL);
267+
ZoneVlanIp6Search.and("ip6Cidr", ZoneVlanIp6Search.entity().getIp6Cidr(), SearchCriteria.Op.NNULL);
268+
ZoneVlanIp6Search.done();
269269

270270
ZoneIp6Search = createSearchBuilder();
271271
ZoneIp6Search.and("zoneId", ZoneIp6Search.entity().getDataCenterId(), SearchCriteria.Op.EQ);
@@ -410,9 +410,9 @@ public List<VlanVO> listDedicatedVlans(long accountId) {
410410
}
411411

412412
@Override
413-
public List<VlanVO> listIpv6RangeByPhysicalNetworkIdAndVlanId(long physicalNetworkId, String vlanId) {
414-
SearchCriteria<VlanVO> sc = PhysicalNetworkVlanIp6Search.create();
415-
sc.setParameters("physicalNetworkId", physicalNetworkId);
413+
public List<VlanVO> listIpv6RangeByZoneIdAndVlanId(long zoneId, String vlanId) {
414+
SearchCriteria<VlanVO> sc = ZoneVlanIp6Search.create();
415+
sc.setParameters("zoneId", zoneId);
416416
if(StringUtils.isNotEmpty(vlanId)) {
417417
sc.setParameters("vlanId", vlanId);
418418
}

server/src/main/java/com/cloud/network/Ipv6ServiceImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ private void processPublicIpv6AddressUpdateForVpcTier(final Network network, fin
205205
}
206206

207207
private Pair<String, ? extends Vlan> assignPublicIpv6ToNetworkInternal(Network network, String vlanId, String nicMacAddress) throws InsufficientAddressCapacityException {
208-
final List<VlanVO> ranges = vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(network.getPhysicalNetworkId(), vlanId);
208+
final List<VlanVO> ranges = vlanDao.listIpv6RangeByZoneIdAndVlanId(network.getDataCenterId(), vlanId);
209209
if (CollectionUtils.isEmpty(ranges)) {
210210
s_logger.error(String.format("Unable to find IPv6 address for zone ID: %d, physical network ID: %d, VLAN: %s", network.getDataCenterId(), network.getPhysicalNetworkId(), vlanId));
211211
InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", DataCenter.class, network.getDataCenterId());
@@ -501,7 +501,7 @@ public void checkNetworkIpv6Upgrade(Network network) throws InsufficientAddressC
501501
ipAddressDao.listByAssociatedVpc(network.getVpcId(), true);
502502
for (IPAddressVO address : addresses) {
503503
VlanVO vlan = vlanDao.findById(address.getVlanId());
504-
final List<VlanVO> ranges = vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(network.getPhysicalNetworkId(), vlan.getVlanTag());
504+
final List<VlanVO> ranges = vlanDao.listIpv6RangeByZoneIdAndVlanId(network.getPhysicalNetworkId(), vlan.getVlanTag());
505505
if (CollectionUtils.isEmpty(ranges)) {
506506
s_logger.error(String.format("Unable to find IPv6 address for zone ID: %d, physical network ID: %d, VLAN: %s", network.getDataCenterId(), network.getPhysicalNetworkId(), vlan.getVlanTag()));
507507
InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", DataCenter.class, network.getDataCenterId());

server/src/test/java/com/cloud/network/Ipv6ServiceImplTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ public void testNewErrorAssignPublicIpv6ToNetwork() {
397397
Nic nic = Mockito.mock(Nic.class);
398398
Mockito.when(nic.getIPv6Address()).thenReturn(null);
399399
Mockito.when(nic.getBroadcastUri()).thenReturn(URI.create(vlan));
400-
Mockito.when(vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(1L, "vlan")).thenReturn(new ArrayList<>());
400+
Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(1L, "vlan")).thenReturn(new ArrayList<>());
401401
try (TransactionLegacy txn = TransactionLegacy.open("testNewErrorAssignPublicIpv6ToNetwork")) {
402402
ipv6Service.assignPublicIpv6ToNetwork(Mockito.mock(Network.class), nic);
403403
}
@@ -421,7 +421,7 @@ private void prepareMocksForPublicIpv6(boolean fromPlaceholder) {
421421
Mockito.when(vlanVO.getVlanType()).thenReturn(Vlan.VlanType.VirtualNetwork);
422422
List<VlanVO> vlans = new ArrayList<>();
423423
vlans.add(vlanVO);
424-
Mockito.when(vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(Mockito.anyLong(), Mockito.anyString())).thenReturn(vlans);
424+
Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(Mockito.anyLong(), Mockito.anyString())).thenReturn(vlans);
425425
List<NicVO> placeholderNics = new ArrayList<>();
426426
if (fromPlaceholder) {
427427
placeholderNics = mockPlaceholderNics();
@@ -601,7 +601,7 @@ public void testCheckNetworkIpv6UpgradeForNoIpv6Vlan() {
601601
VlanVO vlanVO = Mockito.mock(VlanVO.class);
602602
Mockito.when(vlanVO.getVlanTag()).thenReturn(vlan);
603603
Mockito.when(vlanDao.findById(Mockito.anyLong())).thenReturn(vlanVO);
604-
Mockito.when(vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(Mockito.anyLong(), Mockito.anyString())).thenReturn(new ArrayList<>());
604+
Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(Mockito.anyLong(), Mockito.anyString())).thenReturn(new ArrayList<>());
605605
try {
606606
ipv6Service.checkNetworkIpv6Upgrade(network);
607607
Assert.fail("No InsufficientAddressCapacityException");
@@ -619,7 +619,7 @@ public void testCheckNetworkIpv6UpgradeForNetwork() {
619619
VlanVO vlanVO = Mockito.mock(VlanVO.class);
620620
Mockito.when(vlanVO.getVlanTag()).thenReturn(vlan);
621621
Mockito.when(vlanDao.findById(Mockito.anyLong())).thenReturn(vlanVO);
622-
Mockito.when(vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(physicalNetworkId, vlan)).thenReturn(List.of(vlanVO));
622+
Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(physicalNetworkId, vlan)).thenReturn(List.of(vlanVO));
623623
try {
624624
ipv6Service.checkNetworkIpv6Upgrade(network);
625625
} catch (InsufficientAddressCapacityException | ResourceAllocationException e) {

0 commit comments

Comments
 (0)