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);