From 8e171785d1be99da8ef412f058dd9056b709e325 Mon Sep 17 00:00:00 2001 From: dahn Date: Wed, 5 Jul 2023 11:12:46 +0200 Subject: [PATCH] cleanup removal of physical network (#7630) Co-authored-by: Bryan Lima <42067040+BryanMLima@users.noreply.github.com> --- .../com/cloud/network/NetworkServiceImpl.java | 69 ++++++++++++------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java index f3109c04095..896292d6b7d 100644 --- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java @@ -83,7 +83,6 @@ import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.Command; import com.cloud.agent.api.to.IpAddressTO; @@ -146,7 +145,6 @@ import com.cloud.network.dao.IPAddressDao; import com.cloud.network.dao.IPAddressVO; import com.cloud.network.dao.Ipv6GuestPrefixSubnetNetworkMapDao; import com.cloud.network.dao.LoadBalancerDao; -import com.cloud.network.dao.NetworkAccountDao; import com.cloud.network.dao.NetworkDao; import com.cloud.network.dao.NetworkDetailVO; import com.cloud.network.dao.NetworkDetailsDao; @@ -161,7 +159,6 @@ import com.cloud.network.dao.PhysicalNetworkServiceProviderVO; import com.cloud.network.dao.PhysicalNetworkTrafficTypeDao; import com.cloud.network.dao.PhysicalNetworkTrafficTypeVO; import com.cloud.network.dao.PhysicalNetworkVO; -import com.cloud.network.dao.VirtualRouterProviderDao; import com.cloud.network.element.NetworkElement; import com.cloud.network.element.OvsProviderVO; import com.cloud.network.element.VirtualRouterElement; @@ -379,8 +376,6 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C @Inject AccountService _accountService; @Inject - NetworkAccountDao _networkAccountDao; - @Inject VirtualMachineManager vmManager; @Inject Ipv6Service ipv6Service; @@ -389,16 +384,12 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C @Inject AlertManager alertManager; @Inject - VirtualRouterProviderDao vrProviderDao; - @Inject DomainRouterDao routerDao; @Inject DomainRouterJoinDao routerJoinDao; @Inject CommandSetupHelper commandSetupHelper; @Inject - AgentManager agentManager; - @Inject ServiceOfferingDao serviceOfferingDao; @Autowired @@ -4264,23 +4255,37 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C return Transaction.execute(new TransactionCallback() { @Override public Boolean doInTransaction(TransactionStatus status) { - // delete vlans for this zone - List vlans = _vlanDao.listVlansByPhysicalNetworkId(physicalNetworkId); - for (VlanVO vlan : vlans) { - _vlanDao.remove(vlan.getId()); - } - - // Delete networks - List networks = _networksDao.listByPhysicalNetwork(physicalNetworkId); - if (networks != null && !networks.isEmpty()) { - for (NetworkVO network : networks) { - _networksDao.remove(network.getId()); - } - } + disablePhysicalNetwork(physicalNetworkId, pNetwork); + deleteIpAddresses(); + deleteVlans(); + deleteNetworks(); // delete vnets _dcDao.deleteVnet(physicalNetworkId); + if (!deleteProviders()) { + return false; + } + + // delete traffic types + _pNTrafficTypeDao.deleteTrafficTypes(physicalNetworkId); + + return _physicalNetworkDao.remove(physicalNetworkId); + } + + private void disablePhysicalNetwork(Long physicalNetworkId, PhysicalNetworkVO pNetwork) { + pNetwork.setState(PhysicalNetwork.State.Disabled); + _physicalNetworkDao.update(physicalNetworkId, pNetwork); + } + + private void deleteIpAddresses() { + List ipAddresses = _ipAddressDao.listByPhysicalNetworkId(physicalNetworkId); + for (IPAddressVO ipaddress : ipAddresses) { + _ipAddressDao.remove(ipaddress.getId()); + } + } + + private boolean deleteProviders() { // delete service providers List providers = _pNSPDao.listBy(physicalNetworkId); @@ -4295,11 +4300,25 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C return false; } } + return true; + } - // delete traffic types - _pNTrafficTypeDao.deleteTrafficTypes(physicalNetworkId); + private void deleteNetworks() { + // Delete networks + List networks = _networksDao.listByPhysicalNetwork(physicalNetworkId); + if (CollectionUtils.isNotEmpty(networks)) { + for (NetworkVO network : networks) { + _networksDao.remove(network.getId()); + } + } + } - return _physicalNetworkDao.remove(physicalNetworkId); + private void deleteVlans() { + // delete vlans for this zone + List vlans = _vlanDao.listVlansByPhysicalNetworkId(physicalNetworkId); + for (VlanVO vlan : vlans) { + _vlanDao.remove(vlan.getId()); + } } }); }