Skip to content

Commit aa21a5f

Browse files
committed
Updated BackrollClient
1 parent f4e6e81 commit aa21a5f

3 files changed

Lines changed: 68 additions & 59 deletions

File tree

plugins/backup/backroll/src/main/java/org/apache/cloudstack/backup/BackrollBackupProvider.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@
3333
import org.apache.cloudstack.backup.Backup.Metric;
3434
import org.apache.cloudstack.backup.Backup.RestorePoint;
3535
import org.apache.cloudstack.backup.backroll.BackrollClient;
36+
import org.apache.cloudstack.backup.backroll.BackrollClient.BackrollClientException;
3637
import org.apache.cloudstack.backup.backroll.model.BackrollBackupMetrics;
3738
import org.apache.cloudstack.backup.backroll.model.BackrollTaskStatus;
38-
import org.apache.cloudstack.backup.backroll.utils.BackrollApiException;
39-
import org.apache.cloudstack.backup.backroll.utils.BackrollHttpClientProvider;
39+
import org.apache.cloudstack.backup.backroll.utils.BackrollHttpClient;
40+
import org.apache.cloudstack.backup.backroll.utils.BackrollHttpClient.BackrollHttpClientException;
41+
4042
import org.apache.cloudstack.backup.dao.BackupDao;
4143
import org.apache.cloudstack.framework.config.ConfigKey;
4244
import org.apache.cloudstack.framework.config.Configurable;

plugins/backup/backroll/src/main/java/org/apache/cloudstack/backup/backroll/BackrollClient.java

Lines changed: 62 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
// under the License.
1717
package org.apache.cloudstack.backup.backroll;
1818

19-
import java.io.IOException;
20-
import java.net.URISyntaxException;
21-
import java.security.KeyManagementException;
22-
import java.security.NoSuchAlgorithmException;
2319
import java.util.ArrayList;
2420
import java.util.List;
2521

@@ -42,8 +38,8 @@
4238
import org.apache.cloudstack.backup.backroll.model.response.metrics.virtualMachineBackups.VirtualMachineBackupsResponse;
4339
import org.apache.cloudstack.backup.backroll.model.response.policy.BackrollBackupPolicyResponse;
4440
import org.apache.cloudstack.backup.backroll.model.response.policy.BackupPoliciesResponse;
45-
import org.apache.cloudstack.backup.backroll.utils.BackrollApiException;
46-
import org.apache.cloudstack.backup.backroll.utils.BackrollHttpClientProvider;
41+
import org.apache.cloudstack.backup.backroll.utils.BackrollHttpClient;
42+
import org.apache.cloudstack.backup.backroll.utils.BackrollHttpClient.BackrollHttpClientException;
4743
import org.apache.commons.lang3.StringUtils;
4844

4945
import org.apache.logging.log4j.LogManager;
@@ -53,44 +49,48 @@
5349

5450
import org.json.JSONException;
5551
import org.json.JSONObject;
52+
5653
import com.fasterxml.jackson.databind.ObjectMapper;
5754

5855
public class BackrollClient {
59-
6056
protected Logger logger = LogManager.getLogger(BackrollClient.class);
6157

62-
private BackrollHttpClient httpProvider;
58+
private BackrollHttpClient backrollHttpClient;
6359

64-
public BackrollClient(BackrollHttpClient httpProvider)
65-
throws URISyntaxException, NoSuchAlgorithmException, KeyManagementException {
60+
public class BackrollClientException extends Exception {
61+
public BackrollClientException(Throwable cause) {
62+
super(cause);
63+
}
64+
}
6665

67-
this.httpProvider = httpProvider;
66+
public BackrollClient(BackrollHttpClient backrollHttpClient) {
67+
this.backrollHttpClient = backrollHttpClient;
6868
}
6969

70-
public String startBackupJob(final String jobId) throws IOException, BackrollHttpClientException {
70+
public String startBackupJob(final String jobId) throws BackrollHttpClientException {
7171
logger.info("startBackupJob : Trying to start backup for Backroll job: {}", jobId);
7272
String backupJob = "";
73-
BackrollTaskRequestResponse requestResponse = httpProvider.post(String.format("/tasks/singlebackup/%s", jobId),
73+
BackrollTaskRequestResponse requestResponse = backrollHttpClient.post(String.format("/tasks/singlebackup/%s", jobId),
7474
null, BackrollTaskRequestResponse.class);
7575
logger.info("startBackupJob : BackupJob status link: {}", requestResponse.location);
7676
backupJob = requestResponse.location.replace("/api/v1", "");
7777
return StringUtils.isEmpty(backupJob) ? null : backupJob;
7878
}
7979

80-
public String getBackupOfferingUrl() throws IOException, BackrollApiException {
80+
public String getBackupOfferingUrl() throws BackrollHttpClientException {
8181
logger.info("Trying to get backroll backup policies url");
8282
String url = "";
83-
BackrollTaskRequestResponse requestResponse = httpProvider.get("/backup_policies",
83+
BackrollTaskRequestResponse requestResponse = backrollHttpClient.getParse("/backup_policies",
8484
BackrollTaskRequestResponse.class);
8585
logger.info("BackrollClient:getBackupOfferingUrl:Apres Parse: " + requestResponse.location);
8686
url = requestResponse.location.replace("/api/v1", "");
8787
return StringUtils.isEmpty(url) ? null : url;
8888
}
8989

90-
public List<BackupOffering> getBackupOfferings(String idTask) throws BackrollHttpClientException, IOException {
90+
public List<BackupOffering> getBackupOfferings(String idTask) throws BackrollHttpClientException {
9191
logger.info("Trying to list backroll backup policies");
9292
final List<BackupOffering> policies = new ArrayList<>();
93-
BackupPoliciesResponse backupPoliciesResponse = httpProvider.waitGet(idTask, BackupPoliciesResponse.class);
93+
BackupPoliciesResponse backupPoliciesResponse = backrollHttpClient.getWaitParse(idTask, BackupPoliciesResponse.class);
9494
logger.info(
9595
"BackrollClient:getBackupOfferings:Apres Parse: " + backupPoliciesResponse.backupPolicies.get(0).name);
9696
for (final BackrollBackupPolicyResponse policy : backupPoliciesResponse.backupPolicies) {
@@ -100,8 +100,8 @@ public List<BackupOffering> getBackupOfferings(String idTask) throws BackrollHtt
100100
return policies;
101101
}
102102

103-
public boolean restoreVMFromBackup(final String vmId, final String backupName)
104-
throws IOException, BackrollApiException {
103+
public boolean restoreVMFromBackup(final String vmId, final String backupName) throws BackrollHttpClientException
104+
{
105105
logger.info("Start restore backup with backroll with backup {} for vm {}", backupName, vmId);
106106

107107
boolean isRestoreOk = false;
@@ -117,11 +117,11 @@ public boolean restoreVMFromBackup(final String vmId, final String backupName)
117117
logger.error("Backroll Error: {}", e.getMessage());
118118
}
119119

120-
BackrollTaskRequestResponse requestResponse = httpProvider.post(String.format("/tasks/restore/%s", vmId),
120+
BackrollTaskRequestResponse requestResponse = backrollHttpClient.post(String.format("/tasks/restore/%s", vmId),
121121
jsonBody, BackrollTaskRequestResponse.class);
122122
String urlToRequest = requestResponse.location.replace("/api/v1", "");
123123

124-
String result = httpProvider.waitGetWithoutParseResponse(urlToRequest);
124+
String result = backrollHttpClient.getWait(urlToRequest);
125125
if (result.contains("SUCCESS")) {
126126
logger.debug("RESTORE SUCCESS content : " + result);
127127
logger.debug("RESTORE SUCCESS");
@@ -131,54 +131,61 @@ public boolean restoreVMFromBackup(final String vmId, final String backupName)
131131
return isRestoreOk;
132132
}
133133

134-
public BackrollTaskStatus checkBackupTaskStatus(String taskId) throws IOException, BackrollHttpClientException {
135-
logger.info("Trying to get backup status for Backroll task: {}", taskId);
134+
public BackrollTaskStatus checkBackupTaskStatus(String taskId) throws BackrollClientException {
135+
try {
136+
logger.info("Trying to get backup status for Backroll task: {}", taskId);
136137

137-
BackrollTaskStatus status = new BackrollTaskStatus();
138+
BackrollTaskStatus status = new BackrollTaskStatus();
138139

139-
String backupResponse = httpProvider.get("/status/" + taskId);
140+
String backupResponse = backrollHttpClient.get("/status/" + taskId);
140141

141-
if (backupResponse.contains(TaskState.FAILURE) || backupResponse.contains(TaskState.PENDING)) {
142-
BackrollBackupStatusResponse backupStatusRequestResponse = new ObjectMapper().readValue(backupResponse,
143-
BackrollBackupStatusResponse.class);
144-
status.setState(backupStatusRequestResponse.state);
145-
} else {
146-
BackrollBackupStatusSuccessResponse backupStatusSuccessRequestResponse = new ObjectMapper()
147-
.readValue(backupResponse, BackrollBackupStatusSuccessResponse.class);
148-
status.setState(backupStatusSuccessRequestResponse.state);
149-
status.setInfo(backupStatusSuccessRequestResponse.info);
150-
}
142+
if (backupResponse.contains(TaskState.FAILURE) || backupResponse.contains(TaskState.PENDING)) {
143+
BackrollBackupStatusResponse backupStatusRequestResponse = new ObjectMapper().readValue(backupResponse,
144+
BackrollBackupStatusResponse.class);
145+
status.setState(backupStatusRequestResponse.state);
146+
} else {
147+
BackrollBackupStatusSuccessResponse backupStatusSuccessRequestResponse = new ObjectMapper()
148+
.readValue(backupResponse, BackrollBackupStatusSuccessResponse.class);
149+
status.setState(backupStatusSuccessRequestResponse.state);
150+
status.setInfo(backupStatusSuccessRequestResponse.info);
151+
}
151152

152-
return StringUtils.isEmpty(status.getState()) ? null : status;
153+
return StringUtils.isEmpty(status.getState()) ? null : status;
154+
} catch (Exception exception) {
155+
logger.error(exception);
156+
exception.printStackTrace();
157+
throw new BackrollClientException(exception);
158+
}
153159
}
154160

155-
public boolean deleteBackup(final String vmId, final String backupName) throws IOException, BackrollApiException {
161+
public boolean deleteBackup(final String vmId, final String backupName) throws BackrollHttpClientException
162+
{
156163
logger.info("BACKROLL: Trying to delete backup {} for vm {} using Backroll", vmId, backupName);
157164
boolean isBackupDeleted = false;
158165

159-
BackrollTaskRequestResponse requestResponse = httpProvider.delete(
166+
BackrollTaskRequestResponse requestResponse = backrollHttpClient.delete(
160167
String.format("/virtualmachines/%s/backups/%s", vmId, backupName), BackrollTaskRequestResponse.class);
161168
String urlToRequest = requestResponse.location.replace("/api/v1", "");
162169

163-
BackrollBackupsFromVMResponse backrollBackupsFromVMResponse = httpProvider.waitGet(urlToRequest,
170+
BackrollBackupsFromVMResponse backrollBackupsFromVMResponse = backrollHttpClient.getWaitParse(urlToRequest,
164171
BackrollBackupsFromVMResponse.class);
165172
logger.debug(backrollBackupsFromVMResponse.state);
166173
isBackupDeleted = backrollBackupsFromVMResponse.state.equals(TaskState.SUCCESS);
167174

168175
return isBackupDeleted;
169176
}
170177

171-
public Metric getVirtualMachineMetrics(final String vmId) throws IOException, BackrollHttpClientException {
178+
public Metric getVirtualMachineMetrics(final String vmId) throws BackrollHttpClientException {
172179
logger.info("Trying to retrieve virtual machine metric from Backroll for vm {}", vmId);
173180

174181
Metric metric = new Metric(0L, 0L);
175182

176-
BackrollTaskRequestResponse requestResponse = httpProvider
177-
.get(String.format("/virtualmachines/%s/repository", vmId), BackrollTaskRequestResponse.class);
183+
BackrollTaskRequestResponse requestResponse = backrollHttpClient
184+
.getParse(String.format("/virtualmachines/%s/repository", vmId), BackrollTaskRequestResponse.class);
178185

179186
String urlToRequest = requestResponse.location.replace("/api/v1", "");
180187

181-
BackrollVmMetricsResponse vmMetricsResponse = httpProvider.waitGet(urlToRequest,
188+
BackrollVmMetricsResponse vmMetricsResponse = backrollHttpClient.getWaitParse(urlToRequest,
182189
BackrollVmMetricsResponse.class);
183190

184191
if (vmMetricsResponse != null && vmMetricsResponse.state.equals(TaskState.SUCCESS)) {
@@ -197,20 +204,20 @@ public Metric getVirtualMachineMetrics(final String vmId) throws IOException, Ba
197204
return metric;
198205
}
199206

200-
public BackrollBackupMetrics getBackupMetrics(String vmId, String backupId)
201-
throws IOException, BackrollApiException {
207+
public BackrollBackupMetrics getBackupMetrics(String vmId, String backupId) throws BackrollHttpClientException
208+
{
202209
logger.info("Trying to get backup metrics for VM: {}, and backup: {}", vmId, backupId);
203210

204211
BackrollBackupMetrics metrics = null;
205212

206-
BackrollTaskRequestResponse requestResponse = httpProvider.get(
213+
BackrollTaskRequestResponse requestResponse = backrollHttpClient.getParse(
207214
String.format("/virtualmachines/%s/backups/%s", vmId, backupId), BackrollTaskRequestResponse.class);
208215

209216
String urlToRequest = requestResponse.location.replace("/api/v1", "");
210217

211218
logger.debug(urlToRequest);
212219

213-
BackrollBackupMetricsResponse metricsResponse = httpProvider.waitGet(urlToRequest,
220+
BackrollBackupMetricsResponse metricsResponse = backrollHttpClient.getWaitParse(urlToRequest,
214221
BackrollBackupMetricsResponse.class);
215222
if (metricsResponse.info != null) {
216223
metrics = new BackrollBackupMetrics(Long.parseLong(metricsResponse.info.originalSize),
@@ -219,8 +226,8 @@ public BackrollBackupMetrics getBackupMetrics(String vmId, String backupId)
219226
return metrics;
220227
}
221228

222-
public List<BackrollVmBackup> getAllBackupsfromVirtualMachine(String vmId)
223-
throws BackrollApiException, IOException {
229+
public List<BackrollVmBackup> getAllBackupsfromVirtualMachine(String vmId) throws BackrollHttpClientException
230+
{
224231
List<BackrollVmBackup> backups = new ArrayList<BackrollVmBackup>();
225232
List<BackupInfos> backupInfos = getBackupInfosFromVm(vmId);
226233
if (backupInfos != null && backupInfos.size() > 0) {
@@ -232,15 +239,15 @@ public List<BackrollVmBackup> getAllBackupsfromVirtualMachine(String vmId)
232239
return backups;
233240
}
234241

235-
public List<BackupInfos> getBackupInfosFromVm(String vmId)
236-
throws BackrollApiException, IOException {
242+
public List<BackupInfos> getBackupInfosFromVm(String vmId) throws BackrollHttpClientException
243+
{
237244
logger.info("Trying to retrieve all backups for vm {}", vmId);
238-
BackrollTaskRequestResponse requestResponse = httpProvider
239-
.get(String.format("/virtualmachines/%s/backups", vmId), BackrollTaskRequestResponse.class);
245+
BackrollTaskRequestResponse requestResponse = backrollHttpClient
246+
.getParse(String.format("/virtualmachines/%s/backups", vmId), BackrollTaskRequestResponse.class);
240247

241248
String urlToRequest = requestResponse.location.replace("/api/v1", "");
242249
logger.debug(urlToRequest);
243-
VirtualMachineBackupsResponse virtualMachineBackupsResponse = httpProvider.waitGet(urlToRequest,
250+
VirtualMachineBackupsResponse virtualMachineBackupsResponse = backrollHttpClient.getWaitParse(urlToRequest,
244251
VirtualMachineBackupsResponse.class);
245252
if (virtualMachineBackupsResponse.state.equals(TaskState.SUCCESS)) {
246253
return virtualMachineBackupsResponse.info.archives;
@@ -249,7 +256,7 @@ public List<BackupInfos> getBackupInfosFromVm(String vmId)
249256

250257
}
251258

252-
public List<Backup.RestorePoint> listRestorePoints(String vmId) throws BackrollApiException, IOException {
259+
public List<Backup.RestorePoint> listRestorePoints(String vmId) throws BackrollHttpClientException {
253260
List<Backup.RestorePoint> backups = new ArrayList<Backup.RestorePoint>();
254261
List<BackupInfos> backupInfos = getBackupInfosFromVm(vmId);
255262
if (backupInfos != null && backupInfos.size() > 0) {

plugins/backup/backroll/src/main/java/org/apache/cloudstack/backup/backroll/utils/BackrollHttpClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ public class BackrollHttpClient {
6969
private Logger logger = LogManager.getLogger(BackrollClient.class);
7070

7171
public class BackrollHttpClientException extends Exception {
72-
public BackrollHttpClientException(Exception parentException) {
73-
super(parentException);
72+
public BackrollHttpClientException(Throwable cause) {
73+
super(cause);
7474
}
7575
}
7676

0 commit comments

Comments
 (0)