From 5f00a3e00e8bd5b6daff246902ff6fa9c1529c05 Mon Sep 17 00:00:00 2001 From: nvazquez Date: Thu, 17 May 2018 23:49:42 -0300 Subject: [PATCH] Refactor and improvements --- api/pom.xml | 5 --- .../apache/cloudstack/api/ApiConstants.java | 2 + .../cloudstack/api/BaseBackupListCmd.java | 6 +-- .../cloudstack/api/ResponseGenerator.java | 2 +- .../admin/backup/DeleteBackupPolicyCmd.java | 10 +++-- ...icyCmd.java => ImportBackupPolicyCmd.java} | 20 ++++----- .../admin/backup/ListBackupProvidersCmd.java | 4 +- .../user/backup/AssignBackupPolicyCmd.java | 16 ++++--- .../user/backup/ListBackupPoliciesCmd.java | 4 +- .../command/user/backup/ListBackupsCmd.java | 2 +- .../command/user/backup/RestoreBackupCmd.java | 8 ++-- .../user/backup/RestoreBackupVolumeCmd.java | 8 ++-- .../api/response/BackupPolicyResponse.java | 2 +- .../api/response/BackupProviderResponse.java | 2 +- .../api/response/BackupResponse.java | 2 +- .../org/apache/cloudstack}/backup/Backup.java | 9 ++-- .../cloudstack/backup/BackupManager.java | 13 +++--- .../cloudstack}/backup/BackupPolicy.java | 9 ++-- .../cloudstack}/backup/BackupProvider.java | 2 +- .../cloudstack}/backup/BackupService.java | 2 +- client/pom.xml | 5 --- ...e-lifecycle-backup-context-inheritable.xml | 2 +- .../cloudstack/backup/BackupPolicyTO.java | 2 - .../cloudstack/backup/BackupPolicyVO.java | 2 - .../apache/cloudstack/backup/BackupVO.java | 3 +- .../cloudstack/backup/dao/BackupDao.java | 2 +- .../cloudstack/backup/dao/BackupDaoImpl.java | 2 +- framework/backup/pom.xml | 32 -------------- framework/pom.xml | 1 - plugins/backup/dummy/pom.xml | 7 --- .../backup/DummyBackupProvider.java | 3 -- plugins/backup/veeam/pom.xml | 7 --- .../backup/VeeamBackupProvider.java | 3 -- .../main/java/com/cloud/api/ApiDBUtils.java | 2 +- .../java/com/cloud/api/ApiResponseHelper.java | 2 +- .../cloudstack/backup/BackupManagerImpl.java | 44 +++++++++---------- 36 files changed, 94 insertions(+), 153 deletions(-) rename api/src/main/java/org/apache/cloudstack/api/command/admin/backup/{CreateBackupPolicyCmd.java => ImportBackupPolicyCmd.java} (90%) rename {framework/backup/src/main/java/org/apache/cloudstack/framework => api/src/main/java/org/apache/cloudstack}/backup/Backup.java (85%) rename {framework/backup/src/main/java/org/apache/cloudstack/framework => api/src/main/java/org/apache/cloudstack}/backup/BackupPolicy.java (81%) rename {framework/backup/src/main/java/org/apache/cloudstack/framework => api/src/main/java/org/apache/cloudstack}/backup/BackupProvider.java (97%) rename {framework/backup/src/main/java/org/apache/cloudstack/framework => api/src/main/java/org/apache/cloudstack}/backup/BackupService.java (96%) delete mode 100644 framework/backup/pom.xml diff --git a/api/pom.xml b/api/pom.xml index 6b9747646a2..e8cea9ceb16 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -56,11 +56,6 @@ cloud-framework-ca ${project.version} - - org.apache.cloudstack - cloud-framework-backup - ${project.version} - org.apache.commons commons-lang3 diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java index a6ba5483039..34be8fe3d05 100644 --- a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java @@ -33,6 +33,8 @@ public class ApiConstants { public static final String LIST_LB_VMIPS = "lbvmips"; public static final String AVAILABLE = "available"; public static final String BACKUP_ID = "backupid"; + public static final String BACKUP_EXTERNAL_POLICY_ID = "externalid"; + public static final String BACKUP_POLICY_ID = "backuppolicyid"; public static final String BITS = "bits"; public static final String BOOTABLE = "bootable"; public static final String BIND_DN = "binddn"; diff --git a/api/src/main/java/org/apache/cloudstack/api/BaseBackupListCmd.java b/api/src/main/java/org/apache/cloudstack/api/BaseBackupListCmd.java index 2bf3d6009d0..22e630b70fd 100644 --- a/api/src/main/java/org/apache/cloudstack/api/BaseBackupListCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/BaseBackupListCmd.java @@ -21,8 +21,8 @@ import org.apache.cloudstack.api.response.BackupPolicyResponse; import org.apache.cloudstack.api.response.BackupResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.context.CallContext; -import org.apache.cloudstack.framework.backup.Backup; -import org.apache.cloudstack.framework.backup.BackupPolicy; +import org.apache.cloudstack.backup.Backup; +import org.apache.cloudstack.backup.BackupPolicy; import java.util.ArrayList; import java.util.List; @@ -37,7 +37,7 @@ public abstract class BaseBackupListCmd extends BaseListCmd { continue; } final BackupPolicyResponse backupPolicyResponse = new BackupPolicyResponse(); - if (!policy.isImported()) { + if (policy.isImported()) { backupPolicyResponse.setId(policy.getUuid()); } backupPolicyResponse.setName(policy.getName()); diff --git a/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java b/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java index 753f7f91f19..4c1016ad8f5 100644 --- a/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java +++ b/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java @@ -118,7 +118,7 @@ import org.apache.cloudstack.api.response.VpcResponse; import org.apache.cloudstack.api.response.VpnUsersResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.cloudstack.config.Configuration; -import org.apache.cloudstack.framework.backup.Backup; +import org.apache.cloudstack.backup.Backup; import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule; import org.apache.cloudstack.region.PortableIp; import org.apache.cloudstack.region.PortableIpRange; diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/DeleteBackupPolicyCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/DeleteBackupPolicyCmd.java index f4c1771e5e1..ff662646498 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/DeleteBackupPolicyCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/DeleteBackupPolicyCmd.java @@ -29,6 +29,7 @@ import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.response.BackupPolicyResponse; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.backup.BackupManager; import org.apache.cloudstack.context.CallContext; @@ -50,17 +51,18 @@ public class DeleteBackupPolicyCmd extends BaseCmd { //////////////// API parameters ///////////////////// //////////////////////////////////////////////////// - @Parameter(name = ApiConstants.ID, - type = CommandType.STRING, + @Parameter(name = ApiConstants.BACKUP_POLICY_ID, + type = CommandType.UUID, + entityType = BackupPolicyResponse.class, required = true, description = "The backup policy internal ID") - private String id; + private Long id; ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// - public String getId() { + public Long getId() { return id; } diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CreateBackupPolicyCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ImportBackupPolicyCmd.java similarity index 90% rename from api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CreateBackupPolicyCmd.java rename to api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ImportBackupPolicyCmd.java index 96554deb411..1c07a9bd15b 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CreateBackupPolicyCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ImportBackupPolicyCmd.java @@ -29,7 +29,7 @@ import org.apache.cloudstack.api.response.BackupPolicyResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.cloudstack.backup.BackupManager; import org.apache.cloudstack.context.CallContext; -import org.apache.cloudstack.framework.backup.BackupPolicy; +import org.apache.cloudstack.backup.BackupPolicy; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; @@ -39,12 +39,12 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.utils.exception.CloudRuntimeException; -@APICommand(name = CreateBackupPolicyCmd.APINAME, - description = "Creates a backup policy by mapping it to an existing policy on the provider", +@APICommand(name = ImportBackupPolicyCmd.APINAME, + description = "Imports a backup policy from the backup provider", responseObject = BackupPolicyResponse.class, since = "4.12.0", authorized = {RoleType.Admin}) -public class CreateBackupPolicyCmd extends BaseCmd { - public static final String APINAME = "createBackupPolicy"; +public class ImportBackupPolicyCmd extends BaseCmd { + public static final String APINAME = "importBackupPolicy"; @Inject BackupManager backupManager; @@ -57,11 +57,11 @@ public class CreateBackupPolicyCmd extends BaseCmd { description = "the name of the backup policy") private String policyName; - @Parameter(name = ApiConstants.POLICY_ID, + @Parameter(name = ApiConstants.BACKUP_EXTERNAL_POLICY_ID, type = CommandType.STRING, required = true, description = "The backup policy ID (on backup provider side)") - private String policyId; + private String policyExternalId; @Parameter(name = ApiConstants.ZONE_ID, type = BaseCmd.CommandType.UUID, entityType = ZoneResponse.class, description = "The zone ID") @@ -75,8 +75,8 @@ public class CreateBackupPolicyCmd extends BaseCmd { return policyName; } - public String getPolicyId() { - return policyId; + public String getPolicyExternalId() { + return policyExternalId; } public Long getZoneId() { @@ -110,7 +110,7 @@ public class CreateBackupPolicyCmd extends BaseCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { try { - BackupPolicy policy = backupManager.addBackupPolicy(policyId, policyName, zoneId); + BackupPolicy policy = backupManager.addBackupPolicy(policyExternalId, policyName, zoneId); if (policy != null) { setupResponse(policy); } else { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListBackupProvidersCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListBackupProvidersCmd.java index e93b6e7c909..30e9905fcf1 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListBackupProvidersCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListBackupProvidersCmd.java @@ -30,7 +30,7 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.BackupProviderResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.backup.BackupManager; -import org.apache.cloudstack.framework.backup.BackupProvider; +import org.apache.cloudstack.backup.BackupProvider; import com.cloud.user.Account; @@ -48,7 +48,7 @@ public class ListBackupProvidersCmd extends BaseListCmd { //////////////// API parameters ///////////////////// ///////////////////////////////////////////////////// - @Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "List CA service provider by name") + @Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "List Backup and Recovery provider by name") private String name; ///////////////////////////////////////////////////// diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/AssignBackupPolicyCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/AssignBackupPolicyCmd.java index 92f12b29f1c..6dd59304be2 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/AssignBackupPolicyCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/AssignBackupPolicyCmd.java @@ -24,6 +24,7 @@ import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.response.BackupPolicyResponse; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.ZoneResponse; @@ -53,14 +54,15 @@ public class AssignBackupPolicyCmd extends BaseCmd { type = CommandType.UUID, entityType = UserVmResponse.class, required = true, - description = "id of the VM to be moved") + description = "id of the VM to be assigned to the backup policy") private Long virtualMachineId; - @Parameter(name = ApiConstants.POLICY_ID, - type = CommandType.STRING, + @Parameter(name = ApiConstants.BACKUP_POLICY_ID, + type = CommandType.UUID, + entityType = BackupPolicyResponse.class, required = true, description = "id of the backup policy") - private String policyId; + private Long policyId; @Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "the zone ID", required = true) @@ -74,7 +76,7 @@ public class AssignBackupPolicyCmd extends BaseCmd { return virtualMachineId; } - public String getPolicyId() { + public Long getPolicyId() { return policyId; } @@ -100,9 +102,9 @@ public class AssignBackupPolicyCmd extends BaseCmd { public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { try { Long virtualMachineId = getVirtualMachineId(); - String policyUuid = getPolicyId(); + Long policyId = getPolicyId(); Long zoneId = getZoneId(); - boolean result = backupManager.assignVMToBackupPolicy(policyUuid, virtualMachineId, zoneId); + boolean result = backupManager.assignVMToBackupPolicy(policyId, virtualMachineId, zoneId); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); response.setResponseName(getCommandName()); diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupPoliciesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupPoliciesCmd.java index 2c6bd314b47..dc40ce4e173 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupPoliciesCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupPoliciesCmd.java @@ -30,7 +30,7 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.BackupPolicyResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.cloudstack.backup.BackupManager; -import org.apache.cloudstack.framework.backup.BackupPolicy; +import org.apache.cloudstack.backup.BackupPolicy; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InvalidParameterValueException; @@ -56,7 +56,7 @@ public class ListBackupPoliciesCmd extends BaseBackupListCmd { private Long zoneId; @Parameter(name = ApiConstants.EXTERNAL, type = CommandType.BOOLEAN, - description = "True if list external backup policies") + description = "True if list external backup policies (provider policies)") private Boolean external; ///////////////////////////////////////////////////// diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupsCmd.java index dbefe1ea138..aa9d9b64cda 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupsCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/ListBackupsCmd.java @@ -33,7 +33,7 @@ import org.apache.cloudstack.api.response.BackupResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.backup.BackupManager; import org.apache.cloudstack.context.CallContext; -import org.apache.cloudstack.framework.backup.Backup; +import org.apache.cloudstack.backup.Backup; import javax.inject.Inject; import java.util.List; diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/RestoreBackupCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/RestoreBackupCmd.java index e63733c7c10..62285c0e70c 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/RestoreBackupCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/RestoreBackupCmd.java @@ -29,6 +29,7 @@ import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.response.BackupResponse; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.ZoneResponse; @@ -58,10 +59,11 @@ public class RestoreBackupCmd extends BaseCmd { private Long virtualMachineId; @Parameter(name = ApiConstants.BACKUP_ID, - type = CommandType.STRING, + type = CommandType.UUID, + entityType = BackupResponse.class, required = true, description = "id of the backup") - private String backupId; + private Long backupId; @Parameter(name = ApiConstants.ZONE_ID, type = BaseCmd.CommandType.UUID, entityType = ZoneResponse.class, description = "The zone ID") @@ -75,7 +77,7 @@ public class RestoreBackupCmd extends BaseCmd { return virtualMachineId; } - public String getBackupId() { + public Long getBackupId() { return backupId; } diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/RestoreBackupVolumeCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/RestoreBackupVolumeCmd.java index 1977cf3722e..f3d57a9ccee 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/RestoreBackupVolumeCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/RestoreBackupVolumeCmd.java @@ -29,6 +29,7 @@ import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.response.BackupResponse; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VolumeResponse; @@ -67,10 +68,11 @@ public class RestoreBackupVolumeCmd extends BaseCmd { private Long virtualMachineId; @Parameter(name = ApiConstants.BACKUP_ID, - type = CommandType.STRING, + type = CommandType.UUID, + entityType = BackupResponse.class, required = true, description = "id of the backup") - private String backupId; + private Long backupId; @Parameter(name = ApiConstants.ZONE_ID, type = BaseCmd.CommandType.UUID, entityType = ZoneResponse.class, description = "The zone ID") @@ -88,7 +90,7 @@ public class RestoreBackupVolumeCmd extends BaseCmd { return virtualMachineId; } - public String getBackupId() { + public Long getBackupId() { return backupId; } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/BackupPolicyResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/BackupPolicyResponse.java index a658f31ead6..d886859496e 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/BackupPolicyResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/BackupPolicyResponse.java @@ -19,7 +19,7 @@ package org.apache.cloudstack.api.response; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseResponse; import org.apache.cloudstack.api.EntityReference; -import org.apache.cloudstack.framework.backup.BackupPolicy; +import org.apache.cloudstack.backup.BackupPolicy; import com.cloud.serializer.Param; import com.google.gson.annotations.SerializedName; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/BackupProviderResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/BackupProviderResponse.java index 0564b3dea79..5227d850887 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/BackupProviderResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/BackupProviderResponse.java @@ -20,7 +20,7 @@ package org.apache.cloudstack.api.response; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseResponse; import org.apache.cloudstack.api.EntityReference; -import org.apache.cloudstack.framework.backup.BackupProvider; +import org.apache.cloudstack.backup.BackupProvider; import com.cloud.serializer.Param; import com.google.gson.annotations.SerializedName; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/BackupResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/BackupResponse.java index 9c6bac2ee33..e1585c4769c 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/BackupResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/BackupResponse.java @@ -5,7 +5,7 @@ import com.google.gson.annotations.SerializedName; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseResponse; import org.apache.cloudstack.api.EntityReference; -import org.apache.cloudstack.framework.backup.Backup; +import org.apache.cloudstack.backup.Backup; import java.util.List; diff --git a/framework/backup/src/main/java/org/apache/cloudstack/framework/backup/Backup.java b/api/src/main/java/org/apache/cloudstack/backup/Backup.java similarity index 85% rename from framework/backup/src/main/java/org/apache/cloudstack/framework/backup/Backup.java rename to api/src/main/java/org/apache/cloudstack/backup/Backup.java index 463593f8035..947bf4d2ed5 100644 --- a/framework/backup/src/main/java/org/apache/cloudstack/framework/backup/Backup.java +++ b/api/src/main/java/org/apache/cloudstack/backup/Backup.java @@ -15,19 +15,20 @@ //specific language governing permissions and limitations //under the License. -package org.apache.cloudstack.framework.backup; +package org.apache.cloudstack.backup; + +import org.apache.cloudstack.api.Identity; +import org.apache.cloudstack.api.InternalIdentity; import java.util.Date; import java.util.List; -public interface Backup { +public interface Backup extends InternalIdentity, Identity { enum Status { BackingUp, BackedUp, Failed, Queued, Restoring } - Long getId(); - String getUuid(); Long getAccountId(); Long getUserId(); String getName(); diff --git a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java index 6c792c63296..10cb935de5c 100644 --- a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java +++ b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java @@ -20,9 +20,6 @@ package org.apache.cloudstack.backup; import java.util.List; import org.apache.cloudstack.api.response.BackupPolicyResponse; -import org.apache.cloudstack.framework.backup.Backup; -import org.apache.cloudstack.framework.backup.BackupPolicy; -import org.apache.cloudstack.framework.backup.BackupService; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.Configurable; @@ -52,12 +49,12 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer /** * Add a new Backup and Recovery policy */ - BackupPolicy addBackupPolicy(String policyId, String policyName, Long zoneId); + BackupPolicy addBackupPolicy(String policyExternalId, String policyName, Long zoneId); /** * Assign VM to existing backup policy */ - boolean assignVMToBackupPolicy(String policyUuid, Long virtualMachineId, Long zoneId); + boolean assignVMToBackupPolicy(Long policyId, Long virtualMachineId, Long zoneId); /** * List existing backups for a VM @@ -74,13 +71,13 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer /** * Restore a full backed up VM */ - boolean restoreBackup(Long vmId, String backupId, Long zoneId); + boolean restoreBackup(Long vmId, Long backupId, Long zoneId); //TODO - boolean restoreBackupVolume(Long volumeId, Long vmId, String backupId, Long zoneId); + boolean restoreBackupVolume(Long volumeId, Long vmId, Long backupId, Long zoneId); /** * Deletes a backup policy */ - boolean deleteBackupPolicy(String policyId); + boolean deleteBackupPolicy(Long policyId); } diff --git a/framework/backup/src/main/java/org/apache/cloudstack/framework/backup/BackupPolicy.java b/api/src/main/java/org/apache/cloudstack/backup/BackupPolicy.java similarity index 81% rename from framework/backup/src/main/java/org/apache/cloudstack/framework/backup/BackupPolicy.java rename to api/src/main/java/org/apache/cloudstack/backup/BackupPolicy.java index 1fa693273c4..2dcc665c095 100644 --- a/framework/backup/src/main/java/org/apache/cloudstack/framework/backup/BackupPolicy.java +++ b/api/src/main/java/org/apache/cloudstack/backup/BackupPolicy.java @@ -14,12 +14,13 @@ //KIND, either express or implied. See the License for the //specific language governing permissions and limitations //under the License. -package org.apache.cloudstack.framework.backup; +package org.apache.cloudstack.backup; -public interface BackupPolicy { +import org.apache.cloudstack.api.Identity; +import org.apache.cloudstack.api.InternalIdentity; + +public interface BackupPolicy extends InternalIdentity, Identity { - long getId(); - String getUuid(); String getPolicyUuid(); String getName(); boolean isImported(); diff --git a/framework/backup/src/main/java/org/apache/cloudstack/framework/backup/BackupProvider.java b/api/src/main/java/org/apache/cloudstack/backup/BackupProvider.java similarity index 97% rename from framework/backup/src/main/java/org/apache/cloudstack/framework/backup/BackupProvider.java rename to api/src/main/java/org/apache/cloudstack/backup/BackupProvider.java index 6e08a5366a3..614e2d5963d 100644 --- a/framework/backup/src/main/java/org/apache/cloudstack/framework/backup/BackupProvider.java +++ b/api/src/main/java/org/apache/cloudstack/backup/BackupProvider.java @@ -14,7 +14,7 @@ //KIND, either express or implied. See the License for the //specific language governing permissions and limitations //under the License. -package org.apache.cloudstack.framework.backup; +package org.apache.cloudstack.backup; import java.util.List; diff --git a/framework/backup/src/main/java/org/apache/cloudstack/framework/backup/BackupService.java b/api/src/main/java/org/apache/cloudstack/backup/BackupService.java similarity index 96% rename from framework/backup/src/main/java/org/apache/cloudstack/framework/backup/BackupService.java rename to api/src/main/java/org/apache/cloudstack/backup/BackupService.java index 6f5417d6d27..d4beb629fe0 100644 --- a/framework/backup/src/main/java/org/apache/cloudstack/framework/backup/BackupService.java +++ b/api/src/main/java/org/apache/cloudstack/backup/BackupService.java @@ -14,7 +14,7 @@ //KIND, either express or implied. See the License for the //specific language governing permissions and limitations //under the License. -package org.apache.cloudstack.framework.backup; +package org.apache.cloudstack.backup; import java.util.List; diff --git a/client/pom.xml b/client/pom.xml index 32844358f5c..fb391b3357f 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -473,11 +473,6 @@ cloud-plugin-integrations-prometheus-exporter ${project.version} - - org.apache.cloudstack - cloud-framework-backup - ${project.version} - org.apache.cloudstack cloud-plugin-backup-dummy diff --git a/core/src/main/resources/META-INF/cloudstack/backup/spring-core-lifecycle-backup-context-inheritable.xml b/core/src/main/resources/META-INF/cloudstack/backup/spring-core-lifecycle-backup-context-inheritable.xml index d9abd684564..175d45e2675 100644 --- a/core/src/main/resources/META-INF/cloudstack/backup/spring-core-lifecycle-backup-context-inheritable.xml +++ b/core/src/main/resources/META-INF/cloudstack/backup/spring-core-lifecycle-backup-context-inheritable.xml @@ -26,7 +26,7 @@ - + diff --git a/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupPolicyTO.java b/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupPolicyTO.java index 1f0470d7d93..0400c1b0947 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupPolicyTO.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupPolicyTO.java @@ -19,8 +19,6 @@ package org.apache.cloudstack.backup; -import org.apache.cloudstack.framework.backup.BackupPolicy; - import java.util.UUID; public class BackupPolicyTO implements BackupPolicy { diff --git a/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupPolicyVO.java b/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupPolicyVO.java index 2ed59b13703..52129fb45e6 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupPolicyVO.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupPolicyVO.java @@ -17,8 +17,6 @@ package org.apache.cloudstack.backup; -import org.apache.cloudstack.framework.backup.BackupPolicy; - import java.util.UUID; import javax.persistence.Column; diff --git a/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java b/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java index a32f409b9e3..e79389684b8 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/backup/BackupVO.java @@ -17,7 +17,6 @@ package org.apache.cloudstack.backup; -import org.apache.cloudstack.framework.backup.Backup; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -80,7 +79,7 @@ public class BackupVO implements Backup { private List volumeIds; @Override - public Long getId() { + public long getId() { return id; } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDao.java b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDao.java index c031ff08a58..7911172061e 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDao.java @@ -20,7 +20,7 @@ package org.apache.cloudstack.backup.dao; import com.cloud.utils.db.GenericDao; import org.apache.cloudstack.api.response.BackupResponse; import org.apache.cloudstack.backup.BackupVO; -import org.apache.cloudstack.framework.backup.Backup; +import org.apache.cloudstack.backup.Backup; import java.util.List; diff --git a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java index 8dd101ad027..b48cf9c9276 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/BackupDaoImpl.java @@ -30,7 +30,7 @@ import com.cloud.vm.VMInstanceVO; import com.cloud.vm.dao.VMInstanceDao; import org.apache.cloudstack.api.response.BackupResponse; import org.apache.cloudstack.backup.BackupVO; -import org.apache.cloudstack.framework.backup.Backup; +import org.apache.cloudstack.backup.Backup; import org.apache.commons.collections.CollectionUtils; import javax.annotation.PostConstruct; diff --git a/framework/backup/pom.xml b/framework/backup/pom.xml deleted file mode 100644 index 31fef4f342c..00000000000 --- a/framework/backup/pom.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - 4.0.0 - cloud-framework-backup - Apache CloudStack Framework - Backup and Recovery - - cloudstack-framework - org.apache.cloudstack - 4.12.0.0-SNAPSHOT - ../pom.xml - - - - diff --git a/framework/pom.xml b/framework/pom.xml index 6648b1ee986..4f0f5cf5364 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -58,6 +58,5 @@ security agent-lb direct-download - backup diff --git a/plugins/backup/dummy/pom.xml b/plugins/backup/dummy/pom.xml index 8505466cf40..0bdc3f94edc 100644 --- a/plugins/backup/dummy/pom.xml +++ b/plugins/backup/dummy/pom.xml @@ -26,11 +26,4 @@ 4.12.0.0-SNAPSHOT ../../pom.xml - - - org.apache.cloudstack - cloud-framework-backup - ${project.version} - - diff --git a/plugins/backup/dummy/src/main/java/org/apache/cloudstack/backup/DummyBackupProvider.java b/plugins/backup/dummy/src/main/java/org/apache/cloudstack/backup/DummyBackupProvider.java index c8e8b4eb605..431b05ce4e7 100644 --- a/plugins/backup/dummy/src/main/java/org/apache/cloudstack/backup/DummyBackupProvider.java +++ b/plugins/backup/dummy/src/main/java/org/apache/cloudstack/backup/DummyBackupProvider.java @@ -16,9 +16,6 @@ // under the License. package org.apache.cloudstack.backup; -import org.apache.cloudstack.framework.backup.BackupPolicy; -import org.apache.cloudstack.framework.backup.BackupProvider; - import com.cloud.utils.component.AdapterBase; import org.apache.log4j.Logger; diff --git a/plugins/backup/veeam/pom.xml b/plugins/backup/veeam/pom.xml index 09f0880da7f..b05b6f64625 100644 --- a/plugins/backup/veeam/pom.xml +++ b/plugins/backup/veeam/pom.xml @@ -26,11 +26,4 @@ 4.12.0.0-SNAPSHOT ../../pom.xml - - - org.apache.cloudstack - cloud-framework-backup - ${project.version} - - diff --git a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java index 5e43a314e4a..be97994e128 100644 --- a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java +++ b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/VeeamBackupProvider.java @@ -23,9 +23,6 @@ import java.security.NoSuchAlgorithmException; import java.util.List; import org.apache.cloudstack.backup.veeam.VeeamClient; -import org.apache.cloudstack.framework.backup.BackupPolicy; -import org.apache.cloudstack.framework.backup.BackupProvider; -import org.apache.cloudstack.framework.backup.BackupService; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.Configurable; import org.apache.log4j.Logger; diff --git a/server/src/main/java/com/cloud/api/ApiDBUtils.java b/server/src/main/java/com/cloud/api/ApiDBUtils.java index 375d832c4f7..58933c484b4 100644 --- a/server/src/main/java/com/cloud/api/ApiDBUtils.java +++ b/server/src/main/java/com/cloud/api/ApiDBUtils.java @@ -66,7 +66,7 @@ import org.apache.cloudstack.backup.dao.BackupDao; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService; -import org.apache.cloudstack.framework.backup.Backup; +import org.apache.cloudstack.backup.Backup; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.jobs.AsyncJob; import org.apache.cloudstack.framework.jobs.AsyncJobManager; diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index eeb1e4c5a56..53259beffcc 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -297,7 +297,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreCapabilities; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotInfo; -import org.apache.cloudstack.framework.backup.Backup; +import org.apache.cloudstack.backup.Backup; import org.apache.cloudstack.framework.jobs.AsyncJob; import org.apache.cloudstack.framework.jobs.AsyncJobManager; import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule; diff --git a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java index ae12ed4f32c..921940a24d3 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/BackupManagerImpl.java @@ -28,7 +28,7 @@ import com.cloud.vm.VMInstanceVO; import com.cloud.vm.dao.VMInstanceDao; import org.apache.cloudstack.api.command.admin.backup.DeleteBackupPolicyCmd; import org.apache.cloudstack.api.command.user.backup.AssignBackupPolicyCmd; -import org.apache.cloudstack.api.command.admin.backup.CreateBackupPolicyCmd; +import org.apache.cloudstack.api.command.admin.backup.ImportBackupPolicyCmd; import org.apache.cloudstack.api.command.user.backup.ListBackupPoliciesCmd; import org.apache.cloudstack.api.command.admin.backup.ListBackupProvidersCmd; import org.apache.cloudstack.api.command.user.backup.ListBackupsCmd; @@ -38,10 +38,6 @@ import org.apache.cloudstack.api.response.BackupPolicyResponse; import org.apache.cloudstack.backup.dao.BackupDao; import org.apache.cloudstack.backup.dao.BackupPolicyDao; import org.apache.cloudstack.backup.dao.BackupPolicyVMMapDao; -import org.apache.cloudstack.framework.backup.Backup; -import org.apache.cloudstack.framework.backup.BackupPolicy; -import org.apache.cloudstack.framework.backup.BackupProvider; -import org.apache.cloudstack.framework.backup.BackupService; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.commons.lang.BooleanUtils; import org.apache.log4j.Logger; @@ -74,34 +70,34 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager { private List backupProviders; @Override - public BackupPolicy addBackupPolicy(String policyId, String policyName, Long zoneId) { + public BackupPolicy addBackupPolicy(String policyExternalId, String policyName, Long zoneId) { BackupProvider provider = getBackupProvider(zoneId); - if (!provider.isBackupPolicy(policyId)) { - throw new CloudRuntimeException("Policy " + policyId + " does not exist on provider " + provider.getName()); + if (!provider.isBackupPolicy(policyExternalId)) { + throw new CloudRuntimeException("Policy " + policyExternalId + " does not exist on provider " + provider.getName()); } - BackupPolicyVO policy = new BackupPolicyVO(policyName, policyId); + BackupPolicyVO policy = new BackupPolicyVO(policyName, policyExternalId); BackupPolicyVO vo = backupPolicyDao.persist(policy); if (vo == null) { - throw new CloudRuntimeException("Unable to create backup policy: " + policyId + ", name: " + policyName); + throw new CloudRuntimeException("Unable to create backup policy: " + policyExternalId + ", name: " + policyName); } - LOG.debug("Successfully created backup policy " + policyName + " mapped to backup provider policy " + policyId); + LOG.debug("Successfully created backup policy " + policyName + " mapped to backup provider policy " + policyExternalId); return vo; } @Override - public boolean assignVMToBackupPolicy(String policyUuid, Long virtualMachineId, Long zoneId) { + public boolean assignVMToBackupPolicy(Long policyId, Long virtualMachineId, Long zoneId) { VMInstanceVO vmInstanceVO = vmInstanceDao.findById(virtualMachineId); if (vmInstanceVO == null) { throw new CloudRuntimeException("VM " + virtualMachineId + " does not exist"); } - BackupPolicyVO policy = backupPolicyDao.findByUuid(policyUuid); + BackupPolicyVO policy = backupPolicyDao.findById(policyId); if (policy == null) { - throw new CloudRuntimeException("Policy " + policyUuid + " does not exist"); + throw new CloudRuntimeException("Policy " + policy + " does not exist"); } String vmUuid = vmInstanceVO.getUuid(); BackupProvider backupProvider = getBackupProvider(zoneId); - boolean result = backupProvider.assignVMToBackupPolicy(vmUuid, policyUuid); + boolean result = backupProvider.assignVMToBackupPolicy(vmUuid, policy.getUuid()); if (result) { BackupPolicyVMMapVO map = backupPolicyVMMapDao.findByVMId(virtualMachineId); if (map != null) { @@ -111,7 +107,7 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager { backupPolicyVMMapDao.persist(map); LOG.debug("Successfully assigned VM " + virtualMachineId + " to backup policy " + policy.getName()); } else { - LOG.debug("Could not assign VM " + virtualMachineId + " to backup policy " + policyUuid); + LOG.debug("Could not assign VM " + virtualMachineId + " to backup policy " + policyId); } return result; } @@ -131,24 +127,28 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager { } @Override - public boolean restoreBackup(Long vmId, String backupId, Long zoneId) { + public boolean restoreBackup(Long vmId, Long backupId, Long zoneId) { BackupProvider backupProvider = getBackupProvider(zoneId); VMInstanceVO vm = vmInstanceDao.findById(vmId); if (vm == null) { throw new CloudRuntimeException("VM " + vmId + " does not exist"); } - return backupProvider.restoreVMFromBackup(vm.getUuid(), backupId); + BackupVO backup = backupDao.findById(backupId); + if (backup == null) { + throw new CloudRuntimeException("Backup " + backupId + " does not exist"); + } + return backupProvider.restoreVMFromBackup(vm.getUuid(), backup.getUuid()); } @Override - public boolean restoreBackupVolume(Long volumeId, Long vmId, String backupId, Long zoneId) { + public boolean restoreBackupVolume(Long volumeId, Long vmId, Long backupId, Long zoneId) { //TODO return false; } @Override - public boolean deleteBackupPolicy(String policyId) { - BackupPolicyVO policy = backupPolicyDao.findByUuid(policyId); + public boolean deleteBackupPolicy(Long policyId) { + BackupPolicyVO policy = backupPolicyDao.findById(policyId); if (policy == null) { throw new CloudRuntimeException("Could not find a backup policy with id: " + policyId); } @@ -189,7 +189,7 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager { final List> cmdList = new ArrayList>(); cmdList.add(ListBackupProvidersCmd.class); cmdList.add(ListBackupPoliciesCmd.class); - cmdList.add(CreateBackupPolicyCmd.class); + cmdList.add(ImportBackupPolicyCmd.class); cmdList.add(AssignBackupPolicyCmd.class); cmdList.add(DeleteBackupPolicyCmd.class); cmdList.add(ListBackupsCmd.class);