Skip to content

Commit d42995c

Browse files
committed
Adapt Veeam listBackupPolicies call to the framework
1 parent 16c0f51 commit d42995c

5 files changed

Lines changed: 18 additions & 9 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public interface BackupProvider {
4242
* Returns the list of existing backup policies on the provider
4343
* @return backup policies list
4444
*/
45-
List<BackupPolicy> listBackupPolicies();
45+
List<BackupPolicy> listBackupPolicies(Long zoneId);
4646

4747
/**
4848
* True if policy with id uuid exists on the backup provider

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public boolean assignVMToBackupPolicy(String vmUuid, String policyUuid) {
4343
}
4444

4545
@Override
46-
public List<BackupPolicy> listBackupPolicies() {
46+
public List<BackupPolicy> listBackupPolicies(Long zoneId) {
4747
s_logger.debug("Listing backup policies on Dummy B&R Plugin");
4848
BackupPolicy policy1 = new BackupPolicyTO("aaaa-aaaa", "Golden Policy", "Gold description");
4949
BackupPolicy policy2 = new BackupPolicyTO("bbbb-bbbb", "Silver Policy", "Silver description");

plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
import java.net.URISyntaxException;
2121
import java.security.KeyManagementException;
2222
import java.security.NoSuchAlgorithmException;
23+
import java.util.HashMap;
2324
import java.util.List;
25+
import java.util.Map;
2426

2527
import org.apache.cloudstack.backup.veeam.VeeamClient;
2628
import org.apache.cloudstack.framework.config.ConfigKey;
@@ -33,6 +35,8 @@
3335
public class VeeamBackupProvider extends AdapterBase implements BackupProvider, Configurable {
3436
private static final Logger LOG = Logger.getLogger(VeeamBackupProvider.class);
3537

38+
private Map<Long, VeeamClient> zoneClientMap = new HashMap<Long, VeeamClient>();
39+
3640
private ConfigKey<String> VeeamUrl = new ConfigKey<>("Advanced", String.class,
3741
"backup.plugin.veeam.url",
3842
"http://localhost:9399/api/",
@@ -57,8 +61,14 @@ public class VeeamBackupProvider extends AdapterBase implements BackupProvider,
5761

5862
private VeeamClient getClient(final Long zoneId) {
5963
try {
60-
return new VeeamClient(VeeamUrl.valueIn(zoneId), VeeamUsername.valueIn(zoneId), VeeamPassword.valueIn(zoneId),
61-
VeeamValidateSSLSecurity.valueIn(zoneId), VeeamApiRequestTimeout.valueIn(zoneId));
64+
if (zoneClientMap.containsKey(zoneId)) {
65+
return zoneClientMap.get(zoneId);
66+
} else {
67+
VeeamClient client = new VeeamClient(VeeamUrl.valueIn(zoneId), VeeamUsername.valueIn(zoneId), VeeamPassword.valueIn(zoneId),
68+
VeeamValidateSSLSecurity.valueIn(zoneId), VeeamApiRequestTimeout.valueIn(zoneId));
69+
zoneClientMap.put(zoneId, client);
70+
return client;
71+
}
6272
} catch (URISyntaxException e) {
6373
throw new CloudRuntimeException("Failed to parse Veeam API URL: " + e.getMessage());
6474
} catch (NoSuchAlgorithmException | KeyManagementException e) {
@@ -73,8 +83,8 @@ public boolean assignVMToBackupPolicy(String vmUuid, String policyUuid) {
7383
}
7484

7585
@Override
76-
public List<BackupPolicy> listBackupPolicies() {
77-
return null;
86+
public List<BackupPolicy> listBackupPolicies(Long zoneId) {
87+
return getClient(zoneId).listBackupPolicies();
7888
}
7989

8090
@Override

plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232

3333
import org.apache.cloudstack.api.ApiErrorCode;
3434
import org.apache.cloudstack.api.ServerApiException;
35-
import org.apache.cloudstack.backup.Backup;
3635
import org.apache.cloudstack.backup.BackupPolicy;
3736
import org.apache.cloudstack.backup.veeam.api.EntityReferences;
3837
import org.apache.cloudstack.backup.veeam.api.Ref;

server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
7575
public BackupPolicy addBackupPolicy(Long zoneId, String policyExternalId, String policyName, String policyDescription) {
7676
BackupProvider provider = getBackupProvider(zoneId);
7777
if (!provider.isBackupPolicy(policyExternalId)) {
78-
throw new CloudRuntimeException("Policy " + policyExternalId + " does not exist on provider " + provider.getName());
78+
throw new CloudRuntimeException("Policy " + policyExternalId + " does not exist on provider " + provider.getName() + " on zone " + zoneId);
7979
}
8080

8181
BackupPolicyVO policy = new BackupPolicyVO(zoneId, policyExternalId, policyName, policyDescription);
@@ -129,7 +129,7 @@ private List<BackupPolicy> listExternalPolicies(Long zoneId) {
129129
}
130130
BackupProvider backupProvider = getBackupProvider(zoneId);
131131
LOG.debug("Listing external backup policies for the backup provider registered in zone " + zoneId);
132-
return backupProvider.listBackupPolicies();
132+
return backupProvider.listBackupPolicies(zoneId);
133133
}
134134

135135
/**

0 commit comments

Comments
 (0)