Skip to content

Commit 8938966

Browse files
committed
address review
1 parent f54062d commit 8938966

File tree

4 files changed

+30
-3
lines changed

4 files changed

+30
-3
lines changed

api/src/main/java/org/apache/cloudstack/backup/BackupProvider.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ public interface BackupProvider {
122122
*/
123123
boolean supportsInstanceFromBackup();
124124

125+
default boolean supportsMemoryVmSnapshot() {
126+
return true;
127+
}
128+
125129
/**
126130
* Returns the backup storage usage (Used, Total) for a backup provider
127131
* @param zoneId the zone for which to return metrics

api/src/main/java/org/apache/cloudstack/backup/BackupService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,11 @@ public interface BackupService {
3434
* @return backup provider
3535
*/
3636
BackupProvider getBackupProvider(final Long zoneId);
37+
38+
/**
39+
* Find backup provider by name
40+
* @param name backup provider name
41+
* @return backup provider
42+
*/
43+
BackupProvider getBackupProvider(final String name);
3744
}

engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
import com.cloud.storage.dao.SnapshotDao;
3131
import com.cloud.vm.snapshot.VMSnapshotDetailsVO;
3232
import com.cloud.vm.snapshot.dao.VMSnapshotDetailsDao;
33+
import org.apache.cloudstack.backup.BackupManager;
3334
import org.apache.cloudstack.backup.BackupOfferingVO;
35+
import org.apache.cloudstack.backup.BackupProvider;
3436
import org.apache.cloudstack.backup.dao.BackupOfferingDao;
3537
import org.apache.cloudstack.engine.subsystem.api.storage.StrategyPriority;
3638
import org.apache.cloudstack.engine.subsystem.api.storage.VMSnapshotOptions;
@@ -109,7 +111,10 @@ public class DefaultVMSnapshotStrategy extends ManagerBase implements VMSnapshot
109111
PrimaryDataStoreDao primaryDataStoreDao;
110112

111113
@Inject
112-
VMSnapshotDetailsDao vmSnapshotDetailsDao;
114+
private VMSnapshotDetailsDao vmSnapshotDetailsDao;
115+
116+
@Inject
117+
private BackupManager backupManager;
113118

114119
@Inject
115120
private BackupOfferingDao backupOfferingDao;
@@ -516,8 +521,14 @@ public StrategyPriority canHandle(Long vmId, Long rootPoolId, boolean snapshotMe
516521
}
517522
}
518523

519-
BackupOfferingVO backupOffering = backupOfferingDao.findById(vm.getBackupOfferingId());
520-
if (backupOffering != null && "nas".equals(backupOffering.getProvider())) {
524+
525+
BackupOfferingVO backupOfferingVO = backupOfferingDao.findById(vm.getBackupOfferingId());
526+
if (backupOfferingVO == null) {
527+
return StrategyPriority.DEFAULT;
528+
}
529+
530+
BackupProvider provider = backupManager.getBackupProvider(backupOfferingVO.getProvider());
531+
if (!provider.supportsMemoryVmSnapshot()) {
521532
logger.debug("{} as the VM has a backup offering for a provider that is not supported.", cantHandleLog);
522533
return StrategyPriority.CANT_HANDLE;
523534
}

plugins/backup/nas/src/main/java/org/apache/cloudstack/backup/NASBackupProvider.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,11 @@ public boolean supportsInstanceFromBackup() {
471471
return true;
472472
}
473473

474+
@Override
475+
public boolean supportsMemoryVmSnapshot() {
476+
return false;
477+
}
478+
474479
@Override
475480
public Pair<Long, Long> getBackupStorageStats(Long zoneId) {
476481
final List<BackupRepository> repositories = backupRepositoryDao.listByZoneAndProvider(zoneId, getName());

0 commit comments

Comments
 (0)