Skip to content

Commit 48f890a

Browse files
resolve merge problems in the backup framework (#10457)
Co-authored-by: Wei Zhou <weizhou@apache.org>
1 parent 24b7c66 commit 48f890a

File tree

5 files changed

+54
-114
lines changed

5 files changed

+54
-114
lines changed

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

+18-19
Original file line numberDiff line numberDiff line change
@@ -49,39 +49,38 @@ public interface BackupProvider {
4949

5050
/**
5151
* Assign a VM to a backup offering or policy
52-
* @param vm
53-
* @param backup
54-
* @param policy
55-
* @return
52+
* @param vm the machine to back up
53+
* @param backupOffering the SLA definition for the backup
54+
* @return succeeded?
5655
*/
5756
boolean assignVMToBackupOffering(VirtualMachine vm, BackupOffering backupOffering);
5857

5958
/**
6059
* Removes a VM from a backup offering or policy
61-
* @param vm
62-
* @return
60+
* @param vm the machine to stop backing up
61+
* @return succeeded?
6362
*/
6463
boolean removeVMFromBackupOffering(VirtualMachine vm);
6564

6665
/**
67-
* Whether the provide will delete backups on removal of VM from the offfering
66+
* Whether the provider will delete backups on removal of VM from the offering
6867
* @return boolean result
6968
*/
7069
boolean willDeleteBackupsOnOfferingRemoval();
7170

7271
/**
7372
* Starts and creates an adhoc backup process
7473
* for a previously registered VM backup
75-
* @param backup
76-
* @return
74+
* @param vm the machine to make a backup of
75+
* @return the result and {code}Backup{code} {code}Object{code}
7776
*/
7877
Pair<Boolean, Backup> takeBackup(VirtualMachine vm);
7978

8079
/**
8180
* Delete an existing backup
82-
* @param backuo The backup to exclude
81+
* @param backup The backup to exclude
8382
* @param forced Indicates if backup will be force removed or not
84-
* @return
83+
* @return succeeded?
8584
*/
8685
boolean deleteBackup(Backup backup, boolean forced);
8786

@@ -97,23 +96,23 @@ public interface BackupProvider {
9796

9897
/**
9998
* Returns backup metrics for a list of VMs in a zone
100-
* @param zoneId
101-
* @param vms
102-
* @return
99+
* @param zoneId the zone for which to return metrics
100+
* @param vms a list of machines to get measurements for
101+
* @return a map of machine -> backup metrics
103102
*/
104103
Map<VirtualMachine, Backup.Metric> getBackupMetrics(Long zoneId, List<VirtualMachine> vms);
105104

106105
/**
107106
* This method should TODO
108-
* @param
107+
* @param vm the machine to get restore point for
109108
*/
110-
public List<Backup.RestorePoint> listRestorePoints(VirtualMachine vm);
109+
List<Backup.RestorePoint> listRestorePoints(VirtualMachine vm);
111110

112111
/**
113112
* This method should TODO
114-
* @param
115-
* @param
116-
* @param metric
113+
* @param restorePoint the restore point to create a backup for
114+
* @param vm The machine for which to create a backup
115+
* @param metric the metric object to update with the new backup data
117116
*/
118117
Backup createNewBackupEntryForRestorePoint(Backup.RestorePoint restorePoint, VirtualMachine vm, Backup.Metric metric);
119118
}

plugins/backup/dummy/src/main/java/org/apache/cloudstack/backup/DummyBackupProvider.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public Backup createNewBackupEntryForRestorePoint(Backup.RestorePoint restorePoi
112112

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

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

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

128128
BackupVO backup = new BackupVO();
129129
backup.setVmId(vm.getId());
130130
backup.setExternalId("dummy-external-id");
131131
backup.setType("FULL");
132132
backup.setDate(new Date());
133133
backup.setSize(1024000L);
134-
backup.setProtectedSize(1 * Resource.ResourceType.bytesToGiB);
134+
backup.setProtectedSize(Resource.ResourceType.bytesToGiB);
135135
backup.setStatus(Backup.Status.BackedUp);
136136
backup.setBackupOfferingId(vm.getBackupOfferingId());
137137
backup.setAccountId(vm.getAccountId());

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

+9-16
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.apache.cloudstack.backup;
1818

1919
import com.cloud.agent.AgentManager;
20-
import com.cloud.dc.dao.ClusterDao;
2120
import com.cloud.exception.AgentUnavailableException;
2221
import com.cloud.exception.OperationTimedoutException;
2322
import com.cloud.host.Host;
@@ -36,8 +35,8 @@
3635
import com.cloud.utils.exception.CloudRuntimeException;
3736
import com.cloud.vm.VirtualMachine;
3837
import com.cloud.vm.dao.VMInstanceDao;
38+
3939
import org.apache.cloudstack.backup.dao.BackupDao;
40-
import org.apache.cloudstack.backup.dao.BackupOfferingDao;
4140
import org.apache.cloudstack.backup.dao.BackupRepositoryDao;
4241
import org.apache.cloudstack.framework.config.ConfigKey;
4342
import org.apache.cloudstack.framework.config.Configurable;
@@ -70,15 +69,9 @@ public class NASBackupProvider extends AdapterBase implements BackupProvider, Co
7069
@Inject
7170
private BackupRepositoryDao backupRepositoryDao;
7271

73-
@Inject
74-
private BackupOfferingDao backupOfferingDao;
75-
7672
@Inject
7773
private HostDao hostDao;
7874

79-
@Inject
80-
private ClusterDao clusterDao;
81-
8275
@Inject
8376
private VolumeDao volumeDao;
8477

@@ -108,15 +101,15 @@ protected Host getLastVMHypervisorHost(VirtualMachine vm) {
108101
// Try to find any Up host in the same cluster
109102
for (final Host hostInCluster : hostDao.findHypervisorHostInCluster(host.getClusterId())) {
110103
if (hostInCluster.getStatus() == Status.Up) {
111-
LOG.debug("Found Host {}", hostInCluster);
104+
LOG.debug("Found Host {} in cluster {}", hostInCluster, host.getClusterId());
112105
return hostInCluster;
113106
}
114107
}
115108
}
116109
// Try to find any Host in the zone
117110
for (final HostVO hostInZone : hostDao.listByDataCenterIdAndHypervisorType(host.getDataCenterId(), Hypervisor.HypervisorType.KVM)) {
118111
if (hostInZone.getStatus() == Status.Up) {
119-
LOG.debug("Found Host {}", hostInZone);
112+
LOG.debug("Found Host {} in zone {}", hostInZone, host.getDataCenterId());
120113
return hostInZone;
121114
}
122115
}
@@ -166,7 +159,7 @@ public Pair<Boolean, Backup> takeBackup(final VirtualMachine vm) {
166159
command.setVolumePaths(volumePaths);
167160
}
168161

169-
BackupAnswer answer = null;
162+
BackupAnswer answer;
170163
try {
171164
answer = (BackupAnswer) agentManager.send(host.getId(), command);
172165
} catch (AgentUnavailableException e) {
@@ -204,7 +197,7 @@ private BackupVO createBackupObject(VirtualMachine vm, String backupPath) {
204197
virtualSize += volume.getSize();
205198
}
206199
}
207-
backup.setProtectedSize(Long.valueOf(virtualSize));
200+
backup.setProtectedSize(virtualSize);
208201
backup.setStatus(Backup.Status.BackingUp);
209202
backup.setBackupOfferingId(vm.getBackupOfferingId());
210203
backup.setAccountId(vm.getAccountId());
@@ -231,7 +224,7 @@ public boolean restoreVMFromBackup(VirtualMachine vm, Backup backup) {
231224
restoreCommand.setVmExists(vm.getRemoved() == null);
232225
restoreCommand.setVmState(vm.getState());
233226

234-
BackupAnswer answer = null;
227+
BackupAnswer answer;
235228
try {
236229
answer = (BackupAnswer) agentManager.send(host.getId(), restoreCommand);
237230
} catch (AgentUnavailableException e) {
@@ -298,7 +291,7 @@ public Pair<Boolean, String> restoreBackedUpVolume(Backup backup, String volumeU
298291
restoreCommand.setVmState(vmNameAndState.second());
299292
restoreCommand.setRestoreVolumeUUID(volumeUuid);
300293

301-
BackupAnswer answer = null;
294+
BackupAnswer answer;
302295
try {
303296
answer = (BackupAnswer) agentManager.send(hostVO.getId(), restoreCommand);
304297
} catch (AgentUnavailableException e) {
@@ -350,7 +343,7 @@ public boolean deleteBackup(Backup backup, boolean forced) {
350343
DeleteBackupCommand command = new DeleteBackupCommand(backup.getExternalId(), backupRepository.getType(),
351344
backupRepository.getAddress(), backupRepository.getMountOptions());
352345

353-
BackupAnswer answer = null;
346+
BackupAnswer answer;
354347
try {
355348
answer = (BackupAnswer) agentManager.send(host.getId(), command);
356349
} catch (AgentUnavailableException e) {
@@ -363,7 +356,7 @@ public boolean deleteBackup(Backup backup, boolean forced) {
363356
return backupDao.remove(backup.getId());
364357
}
365358

366-
logger.debug("There was an error removing the backup with id " + backup.getId());
359+
logger.debug("There was an error removing the backup with id {}", backup.getId());
367360
return false;
368361
}
369362

plugins/backup/networker/src/main/java/org/apache/cloudstack/backup/NetworkerBackupProvider.java

+23-22
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.cloud.host.Status;
2222
import com.cloud.host.dao.HostDao;
2323
import com.cloud.hypervisor.Hypervisor;
24+
import com.cloud.utils.script.Script;
2425
import com.cloud.storage.StoragePoolHostVO;
2526
import com.cloud.storage.Volume;
2627
import com.cloud.storage.VolumeVO;
@@ -34,6 +35,7 @@
3435
import com.cloud.vm.VMInstanceVO;
3536
import com.cloud.vm.VirtualMachine;
3637
import com.cloud.vm.dao.VMInstanceDao;
38+
3739
import org.apache.cloudstack.backup.dao.BackupDao;
3840
import org.apache.cloudstack.backup.dao.BackupOfferingDaoImpl;
3941
import org.apache.cloudstack.backup.networker.NetworkerClient;
@@ -44,7 +46,9 @@
4446
import org.apache.logging.log4j.LogManager;
4547
import org.apache.xml.utils.URI;
4648
import org.apache.cloudstack.backup.networker.api.NetworkerBackup;
49+
4750
import javax.inject.Inject;
51+
4852
import java.net.URISyntaxException;
4953
import java.security.KeyManagementException;
5054
import java.security.NoSuchAlgorithmException;
@@ -60,7 +64,6 @@
6064
import java.util.regex.Matcher;
6165
import java.util.regex.Pattern;
6266
import java.util.stream.Collectors;
63-
import com.cloud.utils.script.Script;
6467

6568
public class NetworkerBackupProvider extends AdapterBase implements BackupProvider, Configurable {
6669

@@ -169,7 +172,7 @@ protected HostVO getLastVMHypervisorHost(VirtualMachine vm) {
169172
List<HostVO> altClusterHosts = hostDao.findHypervisorHostInCluster(host.getClusterId());
170173
for (final HostVO candidateClusterHost : altClusterHosts) {
171174
if ( candidateClusterHost.getStatus() == Status.Up ) {
172-
LOG.debug(String.format("Found Host %s", candidateClusterHost));
175+
LOG.debug("Found Host {}", candidateClusterHost);
173176
return candidateClusterHost;
174177
}
175178
}
@@ -178,7 +181,7 @@ protected HostVO getLastVMHypervisorHost(VirtualMachine vm) {
178181
List<HostVO> altZoneHosts = hostDao.findByDataCenterId(host.getDataCenterId());
179182
for (final HostVO candidateZoneHost : altZoneHosts) {
180183
if ( candidateZoneHost.getStatus() == Status.Up && candidateZoneHost.getHypervisorType() == Hypervisor.HypervisorType.KVM ) {
181-
LOG.debug("Found Host " + candidateZoneHost);
184+
LOG.debug("Found Host {}", candidateZoneHost);
182185
return candidateZoneHost;
183186
}
184187
}
@@ -229,13 +232,13 @@ private String executeBackupCommand(HostVO host, String username, String passwor
229232
Pair<Boolean, String> response = SshHelper.sshExecute(host.getPrivateIpAddress(), 22,
230233
username, null, password, command, 120000, 120000, 3600000);
231234
if (!response.first()) {
232-
LOG.error(String.format("Backup Script failed on HYPERVISOR %s due to: %s", host, response.second()));
235+
LOG.error("Backup Script failed on HYPERVISOR {} due to: {}", host, response.second());
233236
} else {
234-
LOG.debug(String.format("Networker Backup Results: %s", response.second()));
237+
LOG.debug("Networker Backup Results: {}", response.second());
235238
}
236239
Matcher saveTimeMatcher = saveTimePattern.matcher(response.second());
237240
if (saveTimeMatcher.find()) {
238-
LOG.debug(String.format("Got saveTimeMatcher: %s", saveTimeMatcher.group(1)));
241+
LOG.debug("Got saveTimeMatcher: {}", saveTimeMatcher.group(1));
239242
return saveTimeMatcher.group(1);
240243
}
241244
} catch (final Exception e) {
@@ -251,9 +254,9 @@ private boolean executeRestoreCommand(HostVO host, String username, String passw
251254
username, null, password, command, 120000, 120000, 3600000);
252255

253256
if (!response.first()) {
254-
LOG.error(String.format("Restore Script failed on HYPERVISOR %s due to: %s", host, response.second()));
257+
LOG.error("Restore Script failed on HYPERVISOR {} due to: {}", host, response.second());
255258
} else {
256-
LOG.debug(String.format("Networker Restore Results: %s",response.second()));
259+
LOG.debug("Networker Restore Results: {}",response.second());
257260
return true;
258261
}
259262
} catch (final Exception e) {
@@ -310,7 +313,7 @@ public boolean removeVMFromBackupOffering(VirtualMachine vm) {
310313
List<String> backupsTaken = getClient(vm.getDataCenterId()).getBackupsForVm(vm);
311314

312315
for (String backupId : backupsTaken) {
313-
LOG.debug("Trying to remove backup with id" + backupId);
316+
LOG.debug("Trying to remove backup with id {}", backupId);
314317
getClient(vm.getDataCenterId()).deleteBackupForVM(backupId);
315318
}
316319

@@ -327,18 +330,18 @@ public boolean restoreVMFromBackup(VirtualMachine vm, Backup backup) {
327330
final NetworkerBackup networkerBackup=getClient(zoneId).getNetworkerBackupInfo(externalBackupId);
328331
final String SSID = networkerBackup.getShortId();
329332

330-
LOG.debug(String.format("Restoring vm %s from backup %s on the Networker Backup Provider", vm, backup));
333+
LOG.debug("Restoring vm {} from backup {} on the Networker Backup Provider", vm, backup);
331334

332335
if ( SSID.isEmpty() ) {
333-
LOG.debug("There was an error retrieving the SSID for backup with id " + externalBackupId + " from EMC NEtworker");
336+
LOG.debug("There was an error retrieving the SSID for backup with id {} from EMC NEtworker", externalBackupId);
334337
return false;
335338
}
336339

337340
// Find where the VM was last running
338341
hostVO = getLastVMHypervisorHost(vm);
339342
// Get credentials for that host
340343
Ternary<String, String, String> credentials = getKVMHyperisorCredentials(hostVO);
341-
LOG.debug("The SSID was reported successfully " + externalBackupId);
344+
LOG.debug("The SSID was reported successfully {}", externalBackupId);
342345
try {
343346
networkerServer = getUrlDomain(NetworkerUrl.value());
344347
} catch (URISyntaxException e) {
@@ -355,14 +358,14 @@ public boolean restoreVMFromBackup(VirtualMachine vm, Backup backup) {
355358
script.add("-v");
356359

357360
Date restoreJobStart = new Date();
358-
LOG.debug(String.format("Starting Restore for VM %s and %s at %s", vm, SSID, restoreJobStart));
361+
LOG.debug("Starting Restore for VM {} and {} at {}", vm, SSID, restoreJobStart);
359362

360363
if ( executeRestoreCommand(hostVO, credentials.first(), credentials.second(), script.toString()) ) {
361364
Date restoreJobEnd = new Date();
362-
LOG.debug("Restore Job for SSID " + SSID + " completed successfully at " + restoreJobEnd);
365+
LOG.debug("Restore Job for SSID {} completed successfully at {}", SSID, restoreJobEnd);
363366
return true;
364367
} else {
365-
LOG.debug("Restore Job for SSID " + SSID + " failed!");
368+
LOG.debug("Restore Job for SSID {} failed!", SSID);
366369
return false;
367370
}
368371
}
@@ -383,7 +386,7 @@ public Pair<Boolean, String> restoreBackedUpVolume(Backup backup, String volumeU
383386
final String destinationNetworkerClient = hostVO.getName().split("\\.")[0];
384387
Long restoredVolumeDiskSize = 0L;
385388

386-
LOG.debug(String.format("Restoring volume %s with uuid %s from backup %s on the Networker Backup Provider", volume, volumeUuid, backup));
389+
LOG.debug("Restoring volume {} with uuid {} from backup {} on the Networker Backup Provider", volume, volumeUuid, backup);
387390

388391
if ( SSID.isEmpty() ) {
389392
LOG.debug("There was an error retrieving the SSID for backup with id " + externalBackupId + " from EMC NEtworker");
@@ -536,8 +539,8 @@ public boolean deleteBackup(Backup backup, boolean forced) {
536539
@Override
537540
public Map<VirtualMachine, Backup.Metric> getBackupMetrics(Long zoneId, List<VirtualMachine> vms) {
538541
final Map<VirtualMachine, Backup.Metric> metrics = new HashMap<>();
539-
Long vmBackupSize=0L;
540-
Long vmBackupProtectedSize=0L;
542+
long vmBackupSize=0L;
543+
long vmBackupProtectedSize=0L;
541544

542545
if (CollectionUtils.isEmpty(vms)) {
543546
LOG.warn("Unable to get VM Backup Metrics because the list of VMs is empty.");
@@ -584,7 +587,7 @@ public Backup createNewBackupEntryForRestorePoint(Backup.RestorePoint restorePoi
584587
throw new CloudRuntimeException(msg, e);
585588
}
586589
backup.setStatus(Backup.Status.BackedUp);
587-
Long vmBackupProtectedSize=0L;
590+
long vmBackupProtectedSize=0L;
588591
for (Backup.VolumeInfo thisVMVol : vm.getBackupVolumeList()) {
589592
vmBackupProtectedSize += (thisVMVol.getSize() / 1024L / 1024L);
590593
}
@@ -605,9 +608,7 @@ public Backup createNewBackupEntryForRestorePoint(Backup.RestorePoint restorePoi
605608
public List<Backup.RestorePoint> listRestorePoints(VirtualMachine vm) {
606609
final Long zoneId = vm.getDataCenterId();
607610
final ArrayList<String> backupIds = getClient(zoneId).getBackupsForVm(vm);
608-
List<Backup.RestorePoint> restorePoints =
609-
backupIds.stream().map(id -> new Backup.RestorePoint(id, null, null)).collect(Collectors.toList());
610-
return restorePoints;
611+
return backupIds.stream().map(id -> new Backup.RestorePoint(id, null, null)).collect(Collectors.toList());
611612
}
612613

613614
@Override

0 commit comments

Comments
 (0)