This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.18 by this push:
new 8e171785d1b cleanup removal of physical network (#7630)
8e171785d1b is described below
commit 8e171785d1be99da8ef412f058dd9056b709e325
Author: dahn <[email protected]>
AuthorDate: Wed Jul 5 11:12:46 2023 +0200
cleanup removal of physical network (#7630)
Co-authored-by: Bryan Lima <[email protected]>
---
.../java/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<Boolean>() {
@Override
public Boolean doInTransaction(TransactionStatus status) {
- // delete vlans for this zone
- List<VlanVO> vlans =
_vlanDao.listVlansByPhysicalNetworkId(physicalNetworkId);
- for (VlanVO vlan : vlans) {
- _vlanDao.remove(vlan.getId());
- }
-
- // Delete networks
- List<NetworkVO> 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<IPAddressVO> ipAddresses =
_ipAddressDao.listByPhysicalNetworkId(physicalNetworkId);
+ for (IPAddressVO ipaddress : ipAddresses) {
+ _ipAddressDao.remove(ipaddress.getId());
+ }
+ }
+
+ private boolean deleteProviders() {
// delete service providers
List<PhysicalNetworkServiceProviderVO> 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<NetworkVO> 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<VlanVO> vlans =
_vlanDao.listVlansByPhysicalNetworkId(physicalNetworkId);
+ for (VlanVO vlan : vlans) {
+ _vlanDao.remove(vlan.getId());
+ }
}
});
}