diff --git a/engine/schema/src/main/resources/META-INF/db/schema-42200to42210.sql b/engine/schema/src/main/resources/META-INF/db/schema-42200to42210.sql index a8a3d3f7bd4f..11e3981b29ed 100644 --- a/engine/schema/src/main/resources/META-INF/db/schema-42200to42210.sql +++ b/engine/schema/src/main/resources/META-INF/db/schema-42200to42210.sql @@ -33,3 +33,12 @@ UPDATE `cloud`.`alert` SET type = 34 WHERE name = 'ALERT.VR.PRIVATE.IFACE.MTU'; -- Update configuration 'kvm.ssh.to.agent' description and is_dynamic fields UPDATE `cloud`.`configuration` SET description = 'True if the management server will restart the agent service via SSH into the KVM hosts after or during maintenance operations', is_dynamic = 1 WHERE name = 'kvm.ssh.to.agent'; + +-- Sanitize legacy network-level addressing fields for Public networks +UPDATE `cloud`.`networks` +SET `broadcast_uri` = NULL, + `gateway` = NULL, + `cidr` = NULL, + `ip6_gateway` = NULL, + `ip6_cidr` = NULL +WHERE `traffic_type` = 'Public'; diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index 7dbf3e1d2a2a..c6f287ca4410 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -5425,7 +5425,7 @@ public Vlan createVlanAndPublicIpRange(final long zoneId, final long networkId, final VlanVO vlan = commitVlanAndIpRange(zoneId, networkId, physicalNetworkId, podId, startIP, endIP, vlanGateway, vlanNetmask, vlanId, domain, vlanOwner, vlanIp6Gateway, vlanIp6Cidr, ipv4, zone, vlanType, ipv6Range, ipRange, forSystemVms, provider); - if (vlan != null) { + if (vlan != null && network.getTrafficType() != TrafficType.Public) { if (ipv4) { addCidrAndGatewayForIpv4(networkId, vlanGateway, vlanNetmask); } else if (ipv6) { @@ -6504,11 +6504,14 @@ private boolean deleteAndPublishVlanAndPublicIpRange(final long userId, final lo final boolean ipv4 = deletedVlan.getVlanGateway() != null; final boolean ipv6 = deletedVlan.getIp6Gateway() != null; final long networkId = deletedVlan.getNetworkId(); + final NetworkVO networkVO = _networkDao.findById(networkId); - if (ipv4) { - removeCidrAndGatewayForIpv4(networkId, deletedVlan); - } else if (ipv6) { - removeCidrAndGatewayForIpv6(networkId, deletedVlan); + if (networkVO != null && networkVO.getTrafficType() != TrafficType.Public) { + if (ipv4) { + removeCidrAndGatewayForIpv4(networkId, deletedVlan); + } else if (ipv6) { + removeCidrAndGatewayForIpv6(networkId, deletedVlan); + } } messageBus.publish(_name, MESSAGE_DELETE_VLAN_IP_RANGE_EVENT, PublishScope.LOCAL, deletedVlan);