3232import org .apache .cloudstack .api .command .user .backup .ListBackupsCmd ;
3333import org .apache .cloudstack .api .response .BackupResponse ;
3434import org .apache .cloudstack .framework .config .ConfigKey ;
35+ import org .apache .cloudstack .framework .config .ValidatedConfigKey ;
3536import org .apache .cloudstack .framework .config .Configurable ;
3637
3738import com .cloud .exception .ResourceUnavailableException ;
@@ -53,10 +54,11 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer
5354 "false" ,
5455 "Is backup and recovery framework enabled." , false , ConfigKey .Scope .Zone );
5556
56- ConfigKey <String > BackupProviderPlugin = new ConfigKey <>("Advanced" , String .class ,
57+ ConfigKey <String > BackupProviderPlugin = new ValidatedConfigKey <>("Advanced" , String .class ,
5758 "backup.framework.provider.plugin" ,
5859 "dummy" ,
59- "The backup and recovery provider plugin. Valid plugin values: dummy, veeam, networker and nas" , true , ConfigKey .Scope .Zone , BackupFrameworkEnabled .key ());
60+ "The backup and recovery provider plugin. Valid plugin values: dummy, veeam, networker and nas" ,
61+ true , ConfigKey .Scope .Zone , BackupFrameworkEnabled .key (), value -> validateBackupProviderConfig ((String )value ));
6062
6163 ConfigKey <Long > BackupSyncPollingInterval = new ConfigKey <>("Advanced" , Long .class ,
6264 "backup.framework.sync.interval" ,
@@ -249,4 +251,14 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer
249251 Capacity getBackupStorageUsedStats (Long zoneId );
250252
251253 void checkAndRemoveBackupOfferingBeforeExpunge (VirtualMachine vm );
254+
255+ static void validateBackupProviderConfig (String value ) {
256+ if (value != null && (value .contains ("," ) || value .trim ().contains (" " ))) {
257+ throw new IllegalArgumentException ("Multiple backup provider plugins are not supported. Please provide a single plugin value." );
258+ }
259+ List <String > validPlugins = List .of ("dummy" , "veeam" , "networker" , "nas" );
260+ if (value != null && !validPlugins .contains (value )) {
261+ throw new IllegalArgumentException ("Invalid backup provider plugin: " + value + ". Valid plugin values are: " + String .join (", " , validPlugins ));
262+ }
263+ }
252264}
0 commit comments