Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions api/src/main/java/org/apache/cloudstack/backup/BackupProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,7 @@ public interface BackupProvider {
/**
* Assign a VM to a backup offering or policy
* @param vm
* @param backup
* @param policy
* @param backupOffering
* @return
*/
boolean assignVMToBackupOffering(VirtualMachine vm, BackupOffering backupOffering);
Expand All @@ -72,14 +71,14 @@ public interface BackupProvider {
/**
* Starts and creates an adhoc backup process
* for a previously registered VM backup
* @param backup
* @param vm
* @return
*/
Pair<Boolean, Backup> takeBackup(VirtualMachine vm);

/**
* Delete an existing backup
* @param backuo The backup to exclude
* @param backup The backup to exclude
* @param forced Indicates if backup will be force removed or not
* @return
*/
Expand Down Expand Up @@ -116,4 +115,11 @@ public interface BackupProvider {
* @param metric
*/
Backup createNewBackupEntryForRestorePoint(Backup.RestorePoint restorePoint, VirtualMachine vm, Backup.Metric metric);

/**
* This method should reconcile and create backup entries for any backups created out-of-band
* @param vm
* @param metric
*/
void syncBackups(VirtualMachine vm, Backup.Metric metric);
Comment thread
DaanHoogland marked this conversation as resolved.
Outdated
}
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public Backup createNewBackupEntryForRestorePoint(Backup.RestorePoint restorePoi

@Override
public boolean removeVMFromBackupOffering(VirtualMachine vm) {
logger.debug(String.format("Removing VM %s from backup offering by the Dummy Backup Provider", vm));
logger.debug("Removing VM {} from backup offering by the Dummy Backup Provider", vm);
return true;
}

Expand All @@ -123,15 +123,15 @@ public boolean willDeleteBackupsOnOfferingRemoval() {

@Override
public Pair<Boolean, Backup> takeBackup(VirtualMachine vm) {
logger.debug(String.format("Starting backup for VM %s on Dummy provider", vm));
logger.debug("Starting backup for VM {} on Dummy provider", vm);

BackupVO backup = new BackupVO();
backup.setVmId(vm.getId());
backup.setExternalId("dummy-external-id");
backup.setType("FULL");
backup.setDate(new Date());
backup.setSize(1024000L);
backup.setProtectedSize(1 * Resource.ResourceType.bytesToGiB);
backup.setProtectedSize(Resource.ResourceType.bytesToGiB);
backup.setStatus(Backup.Status.BackedUp);
backup.setBackupOfferingId(vm.getBackupOfferingId());
backup.setAccountId(vm.getAccountId());
Expand All @@ -146,4 +146,8 @@ public Pair<Boolean, Backup> takeBackup(VirtualMachine vm) {
public boolean deleteBackup(Backup backup, boolean forced) {
return true;
}

@Override
public void syncBackups(VirtualMachine vm, Backup.Metric metric) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package org.apache.cloudstack.backup;

import com.cloud.agent.AgentManager;
import com.cloud.dc.dao.ClusterDao;
import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.OperationTimedoutException;
import com.cloud.host.Host;
Expand All @@ -36,8 +35,8 @@
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.dao.VMInstanceDao;

import org.apache.cloudstack.backup.dao.BackupDao;
import org.apache.cloudstack.backup.dao.BackupOfferingDao;
import org.apache.cloudstack.backup.dao.BackupRepositoryDao;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.Configurable;
Expand Down Expand Up @@ -70,15 +69,9 @@ public class NASBackupProvider extends AdapterBase implements BackupProvider, Co
@Inject
private BackupRepositoryDao backupRepositoryDao;

@Inject
private BackupOfferingDao backupOfferingDao;

@Inject
private HostDao hostDao;

@Inject
private ClusterDao clusterDao;

@Inject
private VolumeDao volumeDao;

Expand Down Expand Up @@ -166,7 +159,7 @@ public Pair<Boolean, Backup> takeBackup(final VirtualMachine vm) {
command.setVolumePaths(volumePaths);
}

BackupAnswer answer = null;
BackupAnswer answer;
try {
answer = (BackupAnswer) agentManager.send(host.getId(), command);
} catch (AgentUnavailableException e) {
Expand Down Expand Up @@ -204,7 +197,7 @@ private BackupVO createBackupObject(VirtualMachine vm, String backupPath) {
virtualSize += volume.getSize();
}
}
backup.setProtectedSize(Long.valueOf(virtualSize));
backup.setProtectedSize(virtualSize);
backup.setStatus(Backup.Status.BackingUp);
backup.setBackupOfferingId(vm.getBackupOfferingId());
backup.setAccountId(vm.getAccountId());
Expand All @@ -231,7 +224,7 @@ public boolean restoreVMFromBackup(VirtualMachine vm, Backup backup) {
restoreCommand.setVmExists(vm.getRemoved() == null);
restoreCommand.setVmState(vm.getState());

BackupAnswer answer = null;
BackupAnswer answer;
try {
answer = (BackupAnswer) agentManager.send(host.getId(), restoreCommand);
} catch (AgentUnavailableException e) {
Expand Down Expand Up @@ -298,7 +291,7 @@ public Pair<Boolean, String> restoreBackedUpVolume(Backup backup, String volumeU
restoreCommand.setVmState(vmNameAndState.second());
restoreCommand.setRestoreVolumeUUID(volumeUuid);

BackupAnswer answer = null;
BackupAnswer answer;
try {
answer = (BackupAnswer) agentManager.send(hostVO.getId(), restoreCommand);
} catch (AgentUnavailableException e) {
Expand Down Expand Up @@ -350,7 +343,7 @@ public boolean deleteBackup(Backup backup, boolean forced) {
DeleteBackupCommand command = new DeleteBackupCommand(backup.getExternalId(), backupRepository.getType(),
backupRepository.getAddress(), backupRepository.getMountOptions());

BackupAnswer answer = null;
BackupAnswer answer;
try {
answer = (BackupAnswer) agentManager.send(host.getId(), command);
} catch (AgentUnavailableException e) {
Expand All @@ -363,7 +356,7 @@ public boolean deleteBackup(Backup backup, boolean forced) {
return backupDao.remove(backup.getId());
}

logger.debug("There was an error removing the backup with id " + backup.getId());
logger.debug("There was an error removing the backup with id {}", backup.getId());
return false;
}

Expand Down Expand Up @@ -414,6 +407,11 @@ public boolean willDeleteBackupsOnOfferingRemoval() {
return false;
}

@Override
public void syncBackups(VirtualMachine vm, Backup.Metric metric) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

syncBackups has been moved to BackupManagerImpl. Need to remove syncBackups from all providers.

// TODO: check and sum/return backups metrics on per VM basis
}

@Override
public List<BackupOffering> listBackupOfferings(Long zoneId) {
final List<BackupRepository> repositories = backupRepositoryDao.listByZoneAndProvider(zoneId, getName());
Expand Down
Loading