From 052a34c1fb97bfb532ffde2bb8c3c5af6f7eafec Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 17 Aug 2022 15:47:31 +0530 Subject: [PATCH 1/2] ui: fix resource tags visibility in infocard (#6650) Fixes #6649 Signed-off-by: Abhishek Kumar --- ui/src/components/view/InfoCard.vue | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/ui/src/components/view/InfoCard.vue b/ui/src/components/view/InfoCard.vue index aca442688b6..02385ff174a 100644 --- a/ui/src/components/view/InfoCard.vue +++ b/ui/src/components/view/InfoCard.vue @@ -772,21 +772,13 @@ export default { handler (newData, oldData) { if (newData === oldData) return this.newResource = newData - this.resourceType = this.$route.meta.resourceType this.showKeys = false this.setData() - if (this.tagsSupportingResourceTypes.includes(this.resourceType)) { - if ('tags' in this.resource) { - this.tags = this.resource.tags - } else if (this.resourceType) { - this.getTags() - } - } if ('apikey' in this.resource) { this.getUserKeys() } - this.getIcons() + this.updateResourceAdditionalData() } }, async templateIcon () { @@ -798,7 +790,7 @@ export default { eventBus.on('handle-close', (showModal) => { this.showUploadModal(showModal) }) - this.getIcons() + this.updateResourceAdditionalData() }, computed: { tagsSupportingResourceTypes () { @@ -834,6 +826,18 @@ export default { } }, methods: { + updateResourceAdditionalData () { + if (!this.resource) return + this.resourceType = this.$route.meta.resourceType + if (this.tagsSupportingResourceTypes.includes(this.resourceType)) { + if ('tags' in this.resource) { + this.tags = this.resource.tags + } else if (this.resourceType) { + this.getTags() + } + } + this.getIcons() + }, showUploadModal (show) { if (show) { if (this.$showIcon()) { From 010b47f82eb451c64be9b837b6bef30867b1ff58 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 17 Aug 2022 15:49:01 +0530 Subject: [PATCH 2/2] server: fix ipv6 network deployment with separate guest nw (#6588) Fixes #6584 Signed-off-by: Abhishek Kumar --- .../main/java/com/cloud/dc/dao/VlanDao.java | 2 +- .../java/com/cloud/dc/dao/VlanDaoImpl.java | 20 +++++++++---------- .../com/cloud/network/Ipv6ServiceImpl.java | 4 ++-- .../cloud/network/Ipv6ServiceImplTest.java | 8 ++++---- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/VlanDao.java b/engine/schema/src/main/java/com/cloud/dc/dao/VlanDao.java index 9a9f4b377d9..84f38f05441 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/VlanDao.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/VlanDao.java @@ -61,7 +61,7 @@ public interface VlanDao extends GenericDao { List listDedicatedVlans(long accountId); - List listIpv6RangeByPhysicalNetworkIdAndVlanId(long physicalNetworkId, String vlanId); + List listIpv6RangeByZoneIdAndVlanId(long zoneId, String vlanId); List listIpv6SupportingVlansByZone(long zoneId); } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/VlanDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/dao/VlanDaoImpl.java index 0ae9c0b1979..461a9a13b10 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/VlanDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/VlanDaoImpl.java @@ -64,7 +64,7 @@ public class VlanDaoImpl extends GenericDaoBase implements VlanDao protected SearchBuilder ZoneWideNonDedicatedVlanSearch; protected SearchBuilder VlanGatewaysearch; protected SearchBuilder DedicatedVlanSearch; - protected SearchBuilder PhysicalNetworkVlanIp6Search; + protected SearchBuilder ZoneVlanIp6Search; protected SearchBuilder ZoneIp6Search; protected SearchBuilder ZoneVlansSearch; @@ -260,12 +260,12 @@ public class VlanDaoImpl extends GenericDaoBase implements VlanDao DedicatedVlanSearch.done(); AccountVlanMapSearch.done(); - PhysicalNetworkVlanIp6Search = createSearchBuilder(); - PhysicalNetworkVlanIp6Search.and("physicalNetworkId", PhysicalNetworkVlanIp6Search.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ); - PhysicalNetworkVlanIp6Search.and("vlanId", PhysicalNetworkVlanIp6Search.entity().getVlanTag(), SearchCriteria.Op.EQ); - PhysicalNetworkVlanIp6Search.and("ip6Gateway", PhysicalNetworkVlanIp6Search.entity().getIp6Gateway(), SearchCriteria.Op.NNULL); - PhysicalNetworkVlanIp6Search.and("ip6Cidr", PhysicalNetworkVlanIp6Search.entity().getIp6Cidr(), SearchCriteria.Op.NNULL); - PhysicalNetworkVlanIp6Search.done(); + ZoneVlanIp6Search = createSearchBuilder(); + ZoneVlanIp6Search.and("zoneId", ZoneVlanIp6Search.entity().getDataCenterId(), SearchCriteria.Op.EQ); + ZoneVlanIp6Search.and("vlanId", ZoneVlanIp6Search.entity().getVlanTag(), SearchCriteria.Op.EQ); + ZoneVlanIp6Search.and("ip6Gateway", ZoneVlanIp6Search.entity().getIp6Gateway(), SearchCriteria.Op.NNULL); + ZoneVlanIp6Search.and("ip6Cidr", ZoneVlanIp6Search.entity().getIp6Cidr(), SearchCriteria.Op.NNULL); + ZoneVlanIp6Search.done(); ZoneIp6Search = createSearchBuilder(); ZoneIp6Search.and("zoneId", ZoneIp6Search.entity().getDataCenterId(), SearchCriteria.Op.EQ); @@ -410,9 +410,9 @@ public class VlanDaoImpl extends GenericDaoBase implements VlanDao } @Override - public List listIpv6RangeByPhysicalNetworkIdAndVlanId(long physicalNetworkId, String vlanId) { - SearchCriteria sc = PhysicalNetworkVlanIp6Search.create(); - sc.setParameters("physicalNetworkId", physicalNetworkId); + public List listIpv6RangeByZoneIdAndVlanId(long zoneId, String vlanId) { + SearchCriteria sc = ZoneVlanIp6Search.create(); + sc.setParameters("zoneId", zoneId); if(StringUtils.isNotEmpty(vlanId)) { sc.setParameters("vlanId", vlanId); } diff --git a/server/src/main/java/com/cloud/network/Ipv6ServiceImpl.java b/server/src/main/java/com/cloud/network/Ipv6ServiceImpl.java index 6046d4fc0dc..dd0f6c49e37 100644 --- a/server/src/main/java/com/cloud/network/Ipv6ServiceImpl.java +++ b/server/src/main/java/com/cloud/network/Ipv6ServiceImpl.java @@ -205,7 +205,7 @@ public class Ipv6ServiceImpl extends ComponentLifecycleBase implements Ipv6Servi } private Pair assignPublicIpv6ToNetworkInternal(Network network, String vlanId, String nicMacAddress) throws InsufficientAddressCapacityException { - final List ranges = vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(network.getPhysicalNetworkId(), vlanId); + final List ranges = vlanDao.listIpv6RangeByZoneIdAndVlanId(network.getDataCenterId(), vlanId); if (CollectionUtils.isEmpty(ranges)) { 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)); InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", DataCenter.class, network.getDataCenterId()); @@ -501,7 +501,7 @@ public class Ipv6ServiceImpl extends ComponentLifecycleBase implements Ipv6Servi ipAddressDao.listByAssociatedVpc(network.getVpcId(), true); for (IPAddressVO address : addresses) { VlanVO vlan = vlanDao.findById(address.getVlanId()); - final List ranges = vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(network.getPhysicalNetworkId(), vlan.getVlanTag()); + final List ranges = vlanDao.listIpv6RangeByZoneIdAndVlanId(network.getPhysicalNetworkId(), vlan.getVlanTag()); if (CollectionUtils.isEmpty(ranges)) { 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())); InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", DataCenter.class, network.getDataCenterId()); diff --git a/server/src/test/java/com/cloud/network/Ipv6ServiceImplTest.java b/server/src/test/java/com/cloud/network/Ipv6ServiceImplTest.java index a648b968262..1b0592abcb2 100644 --- a/server/src/test/java/com/cloud/network/Ipv6ServiceImplTest.java +++ b/server/src/test/java/com/cloud/network/Ipv6ServiceImplTest.java @@ -397,7 +397,7 @@ public class Ipv6ServiceImplTest { Nic nic = Mockito.mock(Nic.class); Mockito.when(nic.getIPv6Address()).thenReturn(null); Mockito.when(nic.getBroadcastUri()).thenReturn(URI.create(vlan)); - Mockito.when(vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(1L, "vlan")).thenReturn(new ArrayList<>()); + Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(1L, "vlan")).thenReturn(new ArrayList<>()); try (TransactionLegacy txn = TransactionLegacy.open("testNewErrorAssignPublicIpv6ToNetwork")) { ipv6Service.assignPublicIpv6ToNetwork(Mockito.mock(Network.class), nic); } @@ -421,7 +421,7 @@ public class Ipv6ServiceImplTest { Mockito.when(vlanVO.getVlanType()).thenReturn(Vlan.VlanType.VirtualNetwork); List vlans = new ArrayList<>(); vlans.add(vlanVO); - Mockito.when(vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(Mockito.anyLong(), Mockito.anyString())).thenReturn(vlans); + Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(Mockito.anyLong(), Mockito.anyString())).thenReturn(vlans); List placeholderNics = new ArrayList<>(); if (fromPlaceholder) { placeholderNics = mockPlaceholderNics(); @@ -601,7 +601,7 @@ public class Ipv6ServiceImplTest { VlanVO vlanVO = Mockito.mock(VlanVO.class); Mockito.when(vlanVO.getVlanTag()).thenReturn(vlan); Mockito.when(vlanDao.findById(Mockito.anyLong())).thenReturn(vlanVO); - Mockito.when(vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(Mockito.anyLong(), Mockito.anyString())).thenReturn(new ArrayList<>()); + Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(Mockito.anyLong(), Mockito.anyString())).thenReturn(new ArrayList<>()); try { ipv6Service.checkNetworkIpv6Upgrade(network); Assert.fail("No InsufficientAddressCapacityException"); @@ -619,7 +619,7 @@ public class Ipv6ServiceImplTest { VlanVO vlanVO = Mockito.mock(VlanVO.class); Mockito.when(vlanVO.getVlanTag()).thenReturn(vlan); Mockito.when(vlanDao.findById(Mockito.anyLong())).thenReturn(vlanVO); - Mockito.when(vlanDao.listIpv6RangeByPhysicalNetworkIdAndVlanId(physicalNetworkId, vlan)).thenReturn(List.of(vlanVO)); + Mockito.when(vlanDao.listIpv6RangeByZoneIdAndVlanId(physicalNetworkId, vlan)).thenReturn(List.of(vlanVO)); try { ipv6Service.checkNetworkIpv6Upgrade(network); } catch (InsufficientAddressCapacityException | ResourceAllocationException e) {