This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new 3c5fdeafdc0 [Veeam] restored VMs without NICs (#6282)
3c5fdeafdc0 is described below
commit 3c5fdeafdc05af7efea812ba5901545a5f356ef9
Author: SadiJr <[email protected]>
AuthorDate: Mon Jul 3 09:35:48 2023 -0300
[Veeam] restored VMs without NICs (#6282)
---
engine/schema/src/main/java/com/cloud/vm/NicVO.java | 12 ++++++++++++
.../schema/src/main/java/com/cloud/vm/dao/NicDao.java | 2 ++
.../src/main/java/com/cloud/vm/dao/NicDaoImpl.java | 8 ++++++++
.../main/java/com/cloud/hypervisor/guru/VMwareGuru.java | 17 ++++++++++++++---
4 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/engine/schema/src/main/java/com/cloud/vm/NicVO.java
b/engine/schema/src/main/java/com/cloud/vm/NicVO.java
index 8905ebf732b..fba7c966c44 100644
--- a/engine/schema/src/main/java/com/cloud/vm/NicVO.java
+++ b/engine/schema/src/main/java/com/cloud/vm/NicVO.java
@@ -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;
}
diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java
b/engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java
index fc2da6124cf..3c9b3e235a8 100644
--- a/engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java
+++ b/engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java
@@ -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);
diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java
b/engine/schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java
index 3b669aa526b..228e71fb0bb 100644
--- a/engine/schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java
@@ -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();
diff --git
a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/guru/VMwareGuru.java
b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/guru/VMwareGuru.java
index fe35d565088..8c49860c81a 100644
---
a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/guru/VMwareGuru.java
+++
b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/guru/VMwareGuru.java
@@ -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);
}
}