mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-7206: Update vm_network_map table correctly
This commit is contained in:
parent
9a3712841f
commit
3d6c64d262
|
|
@ -38,10 +38,11 @@ import javax.inject.Inject;
|
|||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.cloudstack.engine.cloud.entity.api.db.VMNetworkMapVO;
|
||||
import org.apache.cloudstack.engine.cloud.entity.api.db.dao.VMNetworkMapDao;
|
||||
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
|
||||
import org.apache.cloudstack.framework.config.ConfigDepot;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
|
|
@ -261,6 +262,8 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
protected IpAddressManager _ipAddrMgr;
|
||||
@Inject
|
||||
MessageBus _messageBus;
|
||||
@Inject
|
||||
VMNetworkMapDao _vmNetworkMapDao;
|
||||
|
||||
List<NetworkGuru> networkGurus;
|
||||
|
||||
|
|
@ -1517,6 +1520,18 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
}
|
||||
});
|
||||
|
||||
// cleanup the entry in vm_network_map
|
||||
if(vmProfile.getType().equals(VirtualMachine.Type.User)) {
|
||||
NicVO nic = _nicDao.findById(nicId);
|
||||
if(nic != null) {
|
||||
NetworkVO vmNetwork = _networksDao.findById(nic.getNetworkId());
|
||||
VMNetworkMapVO vno = _vmNetworkMapDao.findByVmAndNetworkId(vmProfile.getVirtualMachine().getId(), vmNetwork.getId());
|
||||
if(vno != null) {
|
||||
_vmNetworkMapDao.remove(vno.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (networkToRelease != null) {
|
||||
Network network = networkToRelease.first();
|
||||
NicProfile profile = networkToRelease.second();
|
||||
|
|
@ -1615,6 +1630,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
NetworkGuru guru = AdapterBase.getAdapterByName(networkGurus, network.getGuruName());
|
||||
guru.deallocate(network, profile, vm);
|
||||
_nicDao.remove(nic.getId());
|
||||
|
||||
s_logger.debug("Removed nic id=" + nic.getId());
|
||||
//remove the secondary ip addresses corresponding to to this nic
|
||||
if (!removeVmSecondaryIpsOfNic(nic.getId())) {
|
||||
|
|
@ -3056,6 +3072,11 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
throw new CloudRuntimeException("Failed to allocate nic for vm " + vm + " in network " + network);
|
||||
}
|
||||
|
||||
//Update vm_network_map table
|
||||
if(vmProfile.getType() == VirtualMachine.Type.User) {
|
||||
VMNetworkMapVO vno = new VMNetworkMapVO(vm.getId(), network.getId());
|
||||
_vmNetworkMapDao.persist(vno);
|
||||
}
|
||||
s_logger.debug("Nic is allocated successfully for vm " + vm + " in network " + network);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,4 +28,6 @@ public interface VMNetworkMapDao extends GenericDao<VMNetworkMapVO, Long> {
|
|||
|
||||
List<Long> getNetworks(long vmId);
|
||||
|
||||
VMNetworkMapVO findByVmAndNetworkId(long vmId, long networkId);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ import com.cloud.utils.db.TransactionLegacy;
|
|||
public class VMNetworkMapDaoImpl extends GenericDaoBase<VMNetworkMapVO, Long> implements VMNetworkMapDao {
|
||||
|
||||
protected SearchBuilder<VMNetworkMapVO> VmIdSearch;
|
||||
protected SearchBuilder<VMNetworkMapVO> VmNetworkSearch;
|
||||
|
||||
@Inject
|
||||
protected NetworkDao _networkDao;
|
||||
|
|
@ -51,6 +52,11 @@ public class VMNetworkMapDaoImpl extends GenericDaoBase<VMNetworkMapVO, Long> im
|
|||
VmIdSearch.and("vmId", VmIdSearch.entity().getVmId(), SearchCriteria.Op.EQ);
|
||||
VmIdSearch.done();
|
||||
|
||||
VmNetworkSearch = createSearchBuilder();
|
||||
VmNetworkSearch.and("vmId", VmNetworkSearch.entity().getVmId(), SearchCriteria.Op.EQ);
|
||||
VmNetworkSearch.and("networkId", VmNetworkSearch.entity().getNetworkId(), SearchCriteria.Op.EQ);
|
||||
VmNetworkSearch.done();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -85,4 +91,14 @@ public class VMNetworkMapDaoImpl extends GenericDaoBase<VMNetworkMapVO, Long> im
|
|||
return networks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VMNetworkMapVO findByVmAndNetworkId(long vmId, long networkId) {
|
||||
|
||||
SearchCriteria<VMNetworkMapVO> sc = VmNetworkSearch.create();
|
||||
sc.setParameters("vmId", vmId);
|
||||
sc.setParameters("networkId", networkId);
|
||||
VMNetworkMapVO network = findOneBy(sc);
|
||||
|
||||
return network;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue