mirror of https://github.com/apache/cloudstack.git
Add vmware dependency on Veeam plugin
This commit is contained in:
parent
cd327b165f
commit
ebf42dac50
|
|
@ -112,10 +112,6 @@ public class BackupDaoImpl extends GenericDaoBase<BackupVO, Long> implements Bac
|
|||
|
||||
@Override
|
||||
public List<Backup> syncVMBackups(Long zoneId, Long vmId, List<Backup> externalBackups) {
|
||||
List<Backup> existingVMBackups = listByVmId(zoneId, vmId);
|
||||
if (CollectionUtils.isNotEmpty(existingVMBackups)) {
|
||||
removeExistingVMBackups(zoneId, vmId);
|
||||
}
|
||||
for (Backup backup : externalBackups) {
|
||||
BackupVO backupVO = getBackupVO(backup);
|
||||
persist(backupVO);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,11 @@
|
|||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-plugin-hypervisor-vmware</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||
<artifactId>jackson-dataformat-xml</artifactId>
|
||||
|
|
|
|||
|
|
@ -22,6 +22,10 @@ import java.security.KeyManagementException;
|
|||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.List;
|
||||
|
||||
import com.cloud.hypervisor.vmware.VmwareDatacenterVO;
|
||||
import com.cloud.hypervisor.vmware.VmwareDatacenterZoneMapVO;
|
||||
import com.cloud.hypervisor.vmware.dao.VmwareDatacenterDao;
|
||||
import com.cloud.hypervisor.vmware.dao.VmwareDatacenterZoneMapDao;
|
||||
import org.apache.cloudstack.backup.veeam.VeeamClient;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
import org.apache.cloudstack.framework.config.Configurable;
|
||||
|
|
@ -32,9 +36,18 @@ import com.cloud.utils.component.AdapterBase;
|
|||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class VeeamBackupProvider extends AdapterBase implements BackupProvider, Configurable {
|
||||
|
||||
private static final Logger LOG = Logger.getLogger(VeeamBackupProvider.class);
|
||||
|
||||
@Inject
|
||||
VmwareDatacenterZoneMapDao vmwareDatacenterZoneMapDao;
|
||||
|
||||
@Inject
|
||||
VmwareDatacenterDao vmwareDatacenterDao;
|
||||
|
||||
private ConfigKey<String> VeeamUrl = new ConfigKey<>("Advanced", String.class,
|
||||
"backup.plugin.veeam.url",
|
||||
"http://localhost:9399/api/",
|
||||
|
|
@ -69,17 +82,28 @@ public class VeeamBackupProvider extends AdapterBase implements BackupProvider,
|
|||
throw new CloudRuntimeException("Failed to build Veeam API client");
|
||||
}
|
||||
|
||||
private String getVCenterIp(Long zoneId) {
|
||||
VmwareDatacenterZoneMapVO map = vmwareDatacenterZoneMapDao.findByZoneId(zoneId);
|
||||
if (map == null) {
|
||||
throw new CloudRuntimeException("No vCenter associated to zone " + zoneId);
|
||||
}
|
||||
long vmwareDcId = map.getVmwareDcId();
|
||||
VmwareDatacenterVO dataCenterVO = vmwareDatacenterDao.findById(vmwareDcId);
|
||||
return dataCenterVO.getVcenterHost();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addVMToBackupPolicy(Long zoneId, String policyId, VirtualMachine vm) {
|
||||
String instanceName = vm.getInstanceName();
|
||||
//TODO: Get vcenter ip
|
||||
return getClient(zoneId).addVMToVeeamJob(policyId, instanceName, "");
|
||||
String vCenterIp = getVCenterIp(zoneId);
|
||||
return getClient(zoneId).addVMToVeeamJob(policyId, instanceName, vCenterIp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeVMFromBackupPolicy(Long zoneId, String policyId, VirtualMachine vm) {
|
||||
//TODO: Remove VM from backup policy on the client
|
||||
return false;
|
||||
String instanceName = vm.getInstanceName();
|
||||
String vCenterIp = getVCenterIp(zoneId);
|
||||
return getClient(zoneId).removeVMFromVeeamJob(policyId, instanceName, vCenterIp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -107,7 +131,7 @@ public class VeeamBackupProvider extends AdapterBase implements BackupProvider,
|
|||
|
||||
@Override
|
||||
public List<Backup> listVMBackups(Long zoneId, VirtualMachine vm) {
|
||||
//TODO
|
||||
//return getClient(zoneId).listAllBackups();
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ import org.apache.cloudstack.backup.dao.BackupPolicyDao;
|
|||
import org.apache.cloudstack.backup.dao.BackupPolicyVMMapDao;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang.BooleanUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
|
@ -165,8 +166,13 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
|
|||
if (vm == null) {
|
||||
throw new CloudRuntimeException("VM " + vmId + " does not exist");
|
||||
}
|
||||
List<Backup> externalBackups = backupProvider.listVMBackups(zoneId, vm);
|
||||
return backupDao.syncVMBackups(zoneId, vmId, externalBackups);
|
||||
List<Backup> existingBackups = backupDao.listByVmId(zoneId, vmId);
|
||||
if (CollectionUtils.isNotEmpty(existingBackups)) {
|
||||
return existingBackups;
|
||||
} else {
|
||||
List<Backup> externalBackups = backupProvider.listVMBackups(zoneId, vm);
|
||||
return backupDao.syncVMBackups(zoneId, vmId, externalBackups);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue