Merge branch 'bckuprecframework' of github.com:shapeblue/cloudstack into bckuprecframework
diff --git a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java
index 1e2eb4b..0661ab8 100644
--- a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java
+++ b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java
@@ -112,10 +112,6 @@
 
     @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);
diff --git a/plugins/backup/veeam/pom.xml b/plugins/backup/veeam/pom.xml
index 601c12a..88f31ac 100644
--- a/plugins/backup/veeam/pom.xml
+++ b/plugins/backup/veeam/pom.xml
@@ -29,6 +29,11 @@
 
   <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>
       <version>${cs.jackson.version}</version>
diff --git a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java
index bbe16a8..fdf0fa8 100644
--- a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java
+++ b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java
@@ -41,6 +41,7 @@
 import com.cloud.vm.VirtualMachine;
 
 public class VeeamBackupProvider extends AdapterBase implements BackupProvider, Configurable {
+
     private static final Logger LOG = Logger.getLogger(VeeamBackupProvider.class);
 
     private ConfigKey<String> VeeamUrl = new ConfigKey<>("Advanced", String.class,
@@ -81,7 +82,6 @@
         throw new CloudRuntimeException("Failed to build Veeam API client");
     }
 
-    @Override
     public List<BackupPolicy> listBackupPolicies(final Long zoneId) {
         return getClient(zoneId).listBackupPolicies();
     }
@@ -141,7 +141,7 @@
 
     @Override
     public List<Backup> listVMBackups(Long zoneId, VirtualMachine vm) {
-        //TODO
+        //return getClient(zoneId).listAllBackups();
         return null;
     }
 
diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
index 7d4c61a..81bba5e 100644
--- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java
@@ -42,6 +42,7 @@
 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;
@@ -168,8 +169,13 @@
         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);
+        }
     }
 
     /**