Adapt Veeam listBackupPolicies call to the framework

This commit is contained in:
nvazquez 2018-05-25 00:51:36 -03:00
parent 3292d99bcb
commit 5580fe1863
5 changed files with 18 additions and 9 deletions

View File

@ -42,7 +42,7 @@ public interface BackupProvider {
* Returns the list of existing backup policies on the provider
* @return backup policies list
*/
List<BackupPolicy> listBackupPolicies();
List<BackupPolicy> listBackupPolicies(Long zoneId);
/**
* True if policy with id uuid exists on the backup provider

View File

@ -43,7 +43,7 @@ public class DummyBackupProvider extends AdapterBase implements BackupProvider {
}
@Override
public List<BackupPolicy> listBackupPolicies() {
public List<BackupPolicy> listBackupPolicies(Long zoneId) {
s_logger.debug("Listing backup policies on Dummy B&R Plugin");
BackupPolicy policy1 = new BackupPolicyTO("aaaa-aaaa", "Golden Policy", "Gold description");
BackupPolicy policy2 = new BackupPolicyTO("bbbb-bbbb", "Silver Policy", "Silver description");

View File

@ -20,7 +20,9 @@ package org.apache.cloudstack.backup;
import java.net.URISyntaxException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.cloudstack.backup.veeam.VeeamClient;
import org.apache.cloudstack.framework.config.ConfigKey;
@ -33,6 +35,8 @@ import com.cloud.utils.exception.CloudRuntimeException;
public class VeeamBackupProvider extends AdapterBase implements BackupProvider, Configurable {
private static final Logger LOG = Logger.getLogger(VeeamBackupProvider.class);
private Map<Long, VeeamClient> zoneClientMap = new HashMap<Long, VeeamClient>();
private ConfigKey<String> VeeamUrl = new ConfigKey<>("Advanced", String.class,
"backup.plugin.veeam.url",
"http://localhost:9399/api/",
@ -57,8 +61,14 @@ public class VeeamBackupProvider extends AdapterBase implements BackupProvider,
private VeeamClient getClient(final Long zoneId) {
try {
return new VeeamClient(VeeamUrl.valueIn(zoneId), VeeamUsername.valueIn(zoneId), VeeamPassword.valueIn(zoneId),
VeeamValidateSSLSecurity.valueIn(zoneId), VeeamApiRequestTimeout.valueIn(zoneId));
if (zoneClientMap.containsKey(zoneId)) {
return zoneClientMap.get(zoneId);
} else {
VeeamClient client = new VeeamClient(VeeamUrl.valueIn(zoneId), VeeamUsername.valueIn(zoneId), VeeamPassword.valueIn(zoneId),
VeeamValidateSSLSecurity.valueIn(zoneId), VeeamApiRequestTimeout.valueIn(zoneId));
zoneClientMap.put(zoneId, client);
return client;
}
} catch (URISyntaxException e) {
throw new CloudRuntimeException("Failed to parse Veeam API URL: " + e.getMessage());
} catch (NoSuchAlgorithmException | KeyManagementException e) {
@ -73,8 +83,8 @@ public class VeeamBackupProvider extends AdapterBase implements BackupProvider,
}
@Override
public List<BackupPolicy> listBackupPolicies() {
return null;
public List<BackupPolicy> listBackupPolicies(Long zoneId) {
return getClient(zoneId).listBackupPolicies();
}
@Override

View File

@ -32,7 +32,6 @@ import javax.net.ssl.X509TrustManager;
import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.backup.Backup;
import org.apache.cloudstack.backup.BackupPolicy;
import org.apache.cloudstack.backup.veeam.api.EntityReferences;
import org.apache.cloudstack.backup.veeam.api.Ref;

View File

@ -75,7 +75,7 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
public BackupPolicy addBackupPolicy(Long zoneId, String policyExternalId, String policyName, String policyDescription) {
BackupProvider provider = getBackupProvider(zoneId);
if (!provider.isBackupPolicy(policyExternalId)) {
throw new CloudRuntimeException("Policy " + policyExternalId + " does not exist on provider " + provider.getName());
throw new CloudRuntimeException("Policy " + policyExternalId + " does not exist on provider " + provider.getName() + " on zone " + zoneId);
}
BackupPolicyVO policy = new BackupPolicyVO(zoneId, policyExternalId, policyName, policyDescription);
@ -129,7 +129,7 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
}
BackupProvider backupProvider = getBackupProvider(zoneId);
LOG.debug("Listing external backup policies for the backup provider registered in zone " + zoneId);
return backupProvider.listBackupPolicies();
return backupProvider.listBackupPolicies(zoneId);
}
/**