This is an automated email from the ASF dual-hosted git repository. dahn pushed a commit to branch 4.22 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 7324ef45d4611d9362676eeb133efa839bfd1384 Merge: 53c98c33e60 a0f35a186d8 Author: Daan Hoogland <[email protected]> AuthorDate: Mon Feb 9 13:05:08 2026 +0100 Merge branch '4.20' into 4.22 .../apache/cloudstack/backup/BackupManager.java | 16 +++++++-- .../framework/config/ValidatedConfigKey.java | 38 ++++++++++++++++++++++ .../configuration/ConfigurationManagerImpl.java | 7 ++++ .../cloudstack/backup/BackupManagerImpl.java | 8 ++--- 4 files changed, 63 insertions(+), 6 deletions(-) diff --cc api/src/main/java/org/apache/cloudstack/backup/BackupManager.java index db051313d96,0090b4f6b16..29b97343281 --- a/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java +++ b/api/src/main/java/org/apache/cloudstack/backup/BackupManager.java @@@ -28,15 -24,11 +28,16 @@@ import org.apache.cloudstack.api.comman import org.apache.cloudstack.api.command.user.backup.CreateBackupScheduleCmd; import org.apache.cloudstack.api.command.user.backup.DeleteBackupScheduleCmd; import org.apache.cloudstack.api.command.user.backup.ListBackupOfferingsCmd; +import org.apache.cloudstack.api.command.user.backup.ListBackupScheduleCmd; import org.apache.cloudstack.api.command.user.backup.ListBackupsCmd; +import org.apache.cloudstack.api.response.BackupResponse; import org.apache.cloudstack.framework.config.ConfigKey; + import org.apache.cloudstack.framework.config.ValidatedConfigKey; import org.apache.cloudstack.framework.config.Configurable; +import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.Network; +import com.cloud.storage.Volume; import com.cloud.utils.Pair; import com.cloud.utils.component.Manager; import com.cloud.utils.component.PluggableService; @@@ -226,25 -149,15 +228,35 @@@ public interface BackupManager extends */ boolean deleteBackup(final Long backupId, final Boolean forced); + void validateBackupForZone(Long zoneId); + BackupOffering updateBackupOffering(UpdateBackupOfferingCmd updateBackupOfferingCmd); + VmDiskInfo getRootDiskInfoFromBackup(Backup backup); + + List<VmDiskInfo> getDataDiskInfoListFromBackup(Backup backup); + + void checkVmDisksSizeAgainstBackup(List<VmDiskInfo> vmDiskInfoList, Backup backup); + + Map<String, String> getBackupDetailsFromVM(VirtualMachine vm); + + String createVolumeInfoFromVolumes(List<Volume> vmVolumes); + + String getBackupNameFromVM(VirtualMachine vm); + + BackupResponse createBackupResponse(Backup backup, Boolean listVmDetails); + + Capacity getBackupStorageUsedStats(Long zoneId); + + void checkAndRemoveBackupOfferingBeforeExpunge(VirtualMachine vm); ++ + static void validateBackupProviderConfig(String value) { + if (value != null && (value.contains(",") || value.trim().contains(" "))) { + throw new IllegalArgumentException("Multiple backup provider plugins are not supported. Please provide a single plugin value."); + } + List<String> validPlugins = List.of("dummy", "veeam", "networker", "nas"); + if (value != null && !validPlugins.contains(value)) { + throw new IllegalArgumentException("Invalid backup provider plugin: " + value + ". Valid plugin values are: " + String.join(", ", validPlugins)); + } + } }
