diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CreateImageTransferCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CreateImageTransferCmd.java index a60ce02c430..8948d1a0d5f 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CreateImageTransferCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/CreateImageTransferCmd.java @@ -35,9 +35,9 @@ import org.apache.cloudstack.context.CallContext; import com.cloud.utils.EnumUtils; @APICommand(name = "createImageTransfer", - description = "Create image transfer for a disk in backup", + description = "Create image transfer for a disk in backup. This API is intended for testing only and is disabled by default.", responseObject = ImageTransferResponse.class, - since = "4.22.0", + since = "4.23.0", authorized = {RoleType.Admin}) public class CreateImageTransferCmd extends BaseCmd implements AdminCmd { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/DeleteVmCheckpointCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/DeleteVmCheckpointCmd.java index a39a597d470..d0e17e86d42 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/DeleteVmCheckpointCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/DeleteVmCheckpointCmd.java @@ -31,9 +31,9 @@ import org.apache.cloudstack.backup.KVMBackupExportService; import org.apache.cloudstack.context.CallContext; @APICommand(name = "deleteVirtualMachineCheckpoint", - description = "Delete a VM checkpoint", + description = "Delete a VM checkpoint. This API is intended for testing only and is disabled by default.", responseObject = SuccessResponse.class, - since = "4.22.0", + since = "4.23.0", authorized = {RoleType.Admin}) public class DeleteVmCheckpointCmd extends BaseCmd implements AdminCmd { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/FinalizeBackupCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/FinalizeBackupCmd.java index 81d16bf80fe..45173f8668e 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/FinalizeBackupCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/FinalizeBackupCmd.java @@ -37,9 +37,9 @@ import org.apache.cloudstack.context.CallContext; import com.cloud.event.EventTypes; @APICommand(name = "finalizeBackup", - description = "Finalize a VM backup session", + description = "Finalize a VM backup session. This API is intended for testing only and is disabled by default.", responseObject = BackupResponse.class, - since = "4.22.0", + since = "4.23.0", authorized = {RoleType.Admin}) public class FinalizeBackupCmd extends BaseAsyncCmd implements AdminCmd { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/FinalizeImageTransferCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/FinalizeImageTransferCmd.java index ce853fb49d2..d483f78b422 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/FinalizeImageTransferCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/FinalizeImageTransferCmd.java @@ -31,9 +31,9 @@ import org.apache.cloudstack.backup.KVMBackupExportService; import org.apache.cloudstack.context.CallContext; @APICommand(name = "finalizeImageTransfer", - description = "Finalize an image transfer", + description = "Finalize an image transfe. This API is intended for testing only and is disabled by default.r", responseObject = SuccessResponse.class, - since = "4.22.0", + since = "4.23.0", authorized = {RoleType.Admin}) public class FinalizeImageTransferCmd extends BaseCmd implements AdminCmd { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListImageTransfersCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListImageTransfersCmd.java index eb7fb604bc1..2565ef241a6 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListImageTransfersCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListImageTransfersCmd.java @@ -34,9 +34,9 @@ import org.apache.cloudstack.backup.KVMBackupExportService; import org.apache.cloudstack.context.CallContext; @APICommand(name = "listImageTransfers", - description = "List image transfers for a backup", + description = "List image transfers for a backup. This API is intended for testing only and is disabled by default.", responseObject = ImageTransferResponse.class, - since = "4.22.0", + since = "4.23.0", authorized = {RoleType.Admin}) public class ListImageTransfersCmd extends BaseListCmd implements AdminCmd { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListVmCheckpointsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListVmCheckpointsCmd.java index 208d791006a..a61661e982d 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListVmCheckpointsCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/ListVmCheckpointsCmd.java @@ -33,9 +33,9 @@ import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.backup.KVMBackupExportService; @APICommand(name = "listVirtualMachineCheckpoints", - description = "List checkpoints for a VM", + description = "List checkpoints for a VM. This API is intended for testing only and is disabled by default.", responseObject = CheckpointResponse.class, - since = "4.22.0", + since = "4.23.0", authorized = {RoleType.Admin}) public class ListVmCheckpointsCmd extends BaseListCmd implements AdminCmd { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/StartBackupCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/StartBackupCmd.java index 04ebfe143cc..a5c4773c0fc 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/StartBackupCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/backup/StartBackupCmd.java @@ -37,9 +37,9 @@ import org.apache.cloudstack.context.CallContext; import com.cloud.event.EventTypes; @APICommand(name = "startBackup", - description = "Start a VM backup session (oVirt-style incremental backup)", + description = "Start a VM backup session. This API is intended for testing only and is disabled by default.", responseObject = BackupResponse.class, - since = "4.22.0", + since = "4.23.0", authorized = {RoleType.Admin}) public class StartBackupCmd extends BaseAsyncCreateCmd implements AdminCmd { diff --git a/api/src/main/java/org/apache/cloudstack/backup/KVMBackupExportService.java b/api/src/main/java/org/apache/cloudstack/backup/KVMBackupExportService.java index cddd316b867..6093293779b 100644 --- a/api/src/main/java/org/apache/cloudstack/backup/KVMBackupExportService.java +++ b/api/src/main/java/org/apache/cloudstack/backup/KVMBackupExportService.java @@ -43,6 +43,10 @@ public interface KVMBackupExportService extends Configurable, PluggableService { "10", "The image transfer progress polling interval in seconds.", true, ConfigKey.Scope.Global); + ConfigKey ExposeKVMBackupExportServiceApis = new ConfigKey<>("Hidden", Boolean.class, + "expose.kvm.backup.export.service.apis", + "false", + "Enable to expose APIs for testing the KVM Backup Export Service.", false, ConfigKey.Scope.Global); /** * Creates a backup session for a VM */ diff --git a/server/src/main/java/org/apache/cloudstack/backup/KVMBackupExportServiceImpl.java b/server/src/main/java/org/apache/cloudstack/backup/KVMBackupExportServiceImpl.java index a69ce2fd7e5..5ff82362a79 100644 --- a/server/src/main/java/org/apache/cloudstack/backup/KVMBackupExportServiceImpl.java +++ b/server/src/main/java/org/apache/cloudstack/backup/KVMBackupExportServiceImpl.java @@ -123,7 +123,6 @@ public class KVMBackupExportServiceImpl extends ManagerBase implements KVMBackup @Override public Backup createBackup(StartBackupCmd cmd) { - //ToDo: add config check, access check, resource count check, etc. Long vmId = cmd.getVmId(); VMInstanceVO vm = vmInstanceDao.findById(vmId); @@ -705,13 +704,15 @@ public class KVMBackupExportServiceImpl extends ManagerBase implements KVMBackup @Override public List> getCommands() { List> cmdList = new ArrayList<>(); - cmdList.add(StartBackupCmd.class); - cmdList.add(FinalizeBackupCmd.class); - cmdList.add(CreateImageTransferCmd.class); - cmdList.add(FinalizeImageTransferCmd.class); - cmdList.add(ListImageTransfersCmd.class); - cmdList.add(ListVmCheckpointsCmd.class); - cmdList.add(DeleteVmCheckpointCmd.class); + if (ExposeKVMBackupExportServiceApis.value()) { + cmdList.add(StartBackupCmd.class); + cmdList.add(FinalizeBackupCmd.class); + cmdList.add(CreateImageTransferCmd.class); + cmdList.add(FinalizeImageTransferCmd.class); + cmdList.add(ListImageTransfersCmd.class); + cmdList.add(ListVmCheckpointsCmd.class); + cmdList.add(DeleteVmCheckpointCmd.class); + } return cmdList; }