mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
[Veeam] restored VMs without NICs (#6282)
This commit is contained in:
parent
3b054b2665
commit
3c5fdeafdc
@ -30,6 +30,9 @@ import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||
|
||||
import com.cloud.network.Networks.AddressFormat;
|
||||
import com.cloud.network.Networks.Mode;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
@ -399,6 +402,15 @@ public class NicVO implements Nic {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return new HashCodeBuilder(17, 31).append(id).toHashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return EqualsBuilder.reflectionEquals(this, obj);
|
||||
}
|
||||
|
||||
public Integer getMtu() {
|
||||
return mtu;
|
||||
}
|
||||
|
||||
@ -89,6 +89,8 @@ public interface NicDao extends GenericDao<NicVO, Long> {
|
||||
|
||||
NicVO findByInstanceIdAndMacAddress(long instanceId, String macAddress);
|
||||
|
||||
NicVO findByNetworkIdAndMacAddressIncludingRemoved(long networkId, String mac);
|
||||
|
||||
List<NicVO> findNicsByIpv6GatewayIpv6CidrAndReserver(String ipv6Gateway, String ipv6Cidr, String reserverName);
|
||||
|
||||
NicVO findByIpAddressAndVmType(String ip, VirtualMachine.Type vmType);
|
||||
|
||||
@ -217,6 +217,14 @@ public class NicDaoImpl extends GenericDaoBase<NicVO, Long> implements NicDao {
|
||||
return findOneBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NicVO findByNetworkIdAndMacAddressIncludingRemoved(long networkId, String mac) {
|
||||
SearchCriteria<NicVO> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("network", networkId);
|
||||
sc.setParameters("macAddress", mac);
|
||||
return findOneIncludingRemovedBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NicVO findDefaultNicForVM(long instanceId) {
|
||||
SearchCriteria<NicVO> sc = AllFieldsSearch.create();
|
||||
|
||||
@ -781,8 +781,7 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Co
|
||||
volume = createVolume(disk, vmToImport, domainId, zoneId, accountId, instanceId, poolId, templateId, backup, true);
|
||||
operation = "created";
|
||||
}
|
||||
s_logger.debug(String.format("VM [id: %s, instanceName: %s] backup restore operation %s volume [id: %s].", instanceId, vmInstanceVO.getInstanceName(),
|
||||
operation, volume.getUuid()));
|
||||
s_logger.debug(String.format("Sync volumes to %s in backup restore operation: %s volume [id: %s].", vmInstanceVO, operation, volume.getUuid()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -879,9 +878,13 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Co
|
||||
String tag = parts[parts.length - 1];
|
||||
String[] tagSplit = tag.split("-");
|
||||
tag = tagSplit[tagSplit.length - 1];
|
||||
|
||||
s_logger.debug(String.format("Trying to find network with vlan: [%s].", vlan));
|
||||
NetworkVO networkVO = networkDao.findByVlan(vlan);
|
||||
if (networkVO == null) {
|
||||
networkVO = createNetworkRecord(zoneId, tag, vlan, accountId, domainId);
|
||||
s_logger.debug(String.format("Created new network record [id: %s] with details [zoneId: %s, tag: %s, vlan: %s, accountId: %s and domainId: %s].",
|
||||
networkVO.getUuid(), zoneId, tag, vlan, accountId, domainId));
|
||||
}
|
||||
return networkVO;
|
||||
}
|
||||
@ -893,6 +896,7 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Co
|
||||
Map<String, NetworkVO> mapping = new HashMap<>();
|
||||
for (String networkName : vmNetworkNames) {
|
||||
NetworkVO networkVO = getGuestNetworkFromNetworkMorName(networkName, accountId, zoneId, domainId);
|
||||
s_logger.debug(String.format("Mapping network name [%s] to networkVO [id: %s].", networkName, networkVO.getUuid()));
|
||||
mapping.put(networkName, networkVO);
|
||||
}
|
||||
return mapping;
|
||||
@ -927,12 +931,19 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Co
|
||||
String macAddress = pair.first();
|
||||
String networkName = pair.second();
|
||||
NetworkVO networkVO = networksMapping.get(networkName);
|
||||
NicVO nicVO = nicDao.findByNetworkIdAndMacAddress(networkVO.getId(), macAddress);
|
||||
NicVO nicVO = nicDao.findByNetworkIdAndMacAddressIncludingRemoved(networkVO.getId(), macAddress);
|
||||
if (nicVO != null) {
|
||||
s_logger.warn(String.format("Find NIC in DB with networkId [%s] and MAC Address [%s], so this NIC will be removed from list of unmapped NICs of VM [id: %s, name: %s].",
|
||||
networkVO.getId(), macAddress, vm.getUuid(), vm.getInstanceName()));
|
||||
allNics.remove(nicVO);
|
||||
|
||||
if (nicVO.getRemoved() != null) {
|
||||
nicDao.unremove(nicVO.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
for (final NicVO unMappedNic : allNics) {
|
||||
s_logger.debug(String.format("Removing NIC [%s] from backup restored %s.", ReflectionToStringBuilderUtils.reflectOnlySelectedFields(unMappedNic, "uuid", "macAddress"), vm));
|
||||
vmManager.removeNicFromVm(vm, unMappedNic);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user