1616// under the License.
1717package 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 ;
2319import java .util .ArrayList ;
2420import java .util .List ;
2521
4238import org .apache .cloudstack .backup .backroll .model .response .metrics .virtualMachineBackups .VirtualMachineBackupsResponse ;
4339import org .apache .cloudstack .backup .backroll .model .response .policy .BackrollBackupPolicyResponse ;
4440import 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 ;
4743import org .apache .commons .lang3 .StringUtils ;
4844
4945import org .apache .logging .log4j .LogManager ;
5349
5450import org .json .JSONException ;
5551import org .json .JSONObject ;
52+
5653import com .fasterxml .jackson .databind .ObjectMapper ;
5754
5855public 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 ) {
0 commit comments