Bug 14536 - DB exception while trying to delete physical network

Reviewed-By: Sheng Yang

Changes:
Added proper cleanup for virtual router elements.
This commit is contained in:
prachi 2012-03-29 12:35:28 -07:00
parent 297ec02dea
commit 1b6e38f3d5
2 changed files with 15 additions and 2 deletions

View File

@ -4901,7 +4901,19 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
_dcDao.deleteVnet(physicalNetworkId);
// delete service providers
_pNSPDao.deleteProviders(physicalNetworkId);
List<PhysicalNetworkServiceProviderVO> providers = _pNSPDao.listBy(physicalNetworkId);
for(PhysicalNetworkServiceProviderVO provider : providers){
try {
deleteNetworkServiceProvider(provider.getId());
}catch (ResourceUnavailableException e) {
s_logger.warn("Unable to complete destroy of the physical network provider: " + provider.getProviderName() + ", id: "+ provider.getId(), e);
return false;
} catch (ConcurrentOperationException e) {
s_logger.warn("Unable to complete destroy of the physical network provider: " + provider.getProviderName() + ", id: "+ provider.getId(), e);
return false;
}
}
// delete traffic types
_pNTrafficTypeDao.deleteTrafficTypes(physicalNetworkId);

View File

@ -59,7 +59,6 @@ import com.cloud.network.lb.LoadBalancingRule;
import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
import com.cloud.network.lb.LoadBalancingRulesManager;
import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.router.VirtualRouter;
import com.cloud.network.router.VirtualRouter.Role;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.LbStickinessMethod;
@ -672,6 +671,8 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
for (DomainRouterVO router : routers) {
result = result && (_routerMgr.destroyRouter(router.getId()) != null);
}
_vrProviderDao.remove(elementId);
return result;
}