bug 12363: don't expunge nics when vm is expunged, just leave them in Removed state in the DB

status 12363: resolved fixed
This commit is contained in:
Alena Prokharchyk 2011-12-09 14:25:38 -08:00
parent 616b478e3a
commit 0980c47100
5 changed files with 6 additions and 12 deletions

View File

@ -434,11 +434,9 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl
if (mapping != null) {
_nicDao.expunge(mapping.getNicId());
_inlineLoadBalancerNicMapDao.expunge(mapping.getId());
}
}
String action = add ? "implemented" : "shut down";
s_logger.debug("External firewall has " + action + " the guest network for account " + account.getAccountName() + "(id = " + account.getAccountId() + ") with VLAN tag " + guestVlanTag);

View File

@ -86,12 +86,11 @@ import com.cloud.network.lb.LoadBalancingRule;
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
import com.cloud.network.resource.CreateLoadBalancerApplianceAnswer;
import com.cloud.network.resource.DestroyLoadBalancerApplianceAnswer;
import com.cloud.network.router.VirtualRouter.Role;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.FirewallRule.Purpose;
import com.cloud.network.rules.FirewallRuleVO;
import com.cloud.network.rules.StaticNatRule;
import com.cloud.network.rules.StaticNatRuleImpl;
import com.cloud.network.rules.FirewallRule.Purpose;
import com.cloud.network.rules.dao.PortForwardingRulesDao;
import com.cloud.offerings.NetworkOfferingVO;
import com.cloud.offerings.dao.NetworkOfferingDao;
@ -118,9 +117,9 @@ import com.cloud.utils.exception.ExecutionException;
import com.cloud.utils.net.NetUtils;
import com.cloud.utils.net.UrlUtil;
import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.NicVO;
import com.cloud.vm.Nic.ReservationStrategy;
import com.cloud.vm.Nic.State;
import com.cloud.vm.NicVO;
import com.cloud.vm.dao.DomainRouterDao;
import com.cloud.vm.dao.NicDao;
@ -768,7 +767,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
}
// If a NIC doesn't exist for the load balancing IP address, create one
loadBalancingIpNic = _nicDao.findByIp4Address(loadBalancingIpAddress);
loadBalancingIpNic = _nicDao.findByIp4AddressAndNetworkId(loadBalancingIpAddress, network.getId());
if (loadBalancingIpNic == null) {
loadBalancingIpNic = savePlaceholderNic(network, loadBalancingIpAddress);
}

View File

@ -1133,10 +1133,6 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene
@Override
public <T extends VMInstanceVO> boolean remove(T vm, User user, Account caller) {
// expunge the corresponding nics
VirtualMachineProfile<T> profile = new VirtualMachineProfileImpl<T>(vm);
_networkMgr.expungeNics(profile);
s_logger.trace("Nics of the vm " + vm + " are expunged successfully");
return _vmDao.remove(vm.getId());
}

View File

@ -43,7 +43,7 @@ public interface NicDao extends GenericDao<NicVO, Long> {
NicVO findByNetworkIdAndType(long networkId, VirtualMachine.Type vmType);
NicVO findByIp4Address(String ip4Address);
NicVO findByIp4AddressAndNetworkId(String ip4Address, long networkId);
NicVO findDefaultNicForVM(long instanceId);
}

View File

@ -118,9 +118,10 @@ public class NicDaoImpl extends GenericDaoBase<NicVO, Long> implements NicDao {
}
@Override
public NicVO findByIp4Address(String ip4Address) {
public NicVO findByIp4AddressAndNetworkId(String ip4Address, long networkId) {
SearchCriteria<NicVO> sc = AllFieldsSearch.create();
sc.setParameters("address", ip4Address);
sc.setParameters("network", networkId);
return findOneBy(sc);
}