2626import org .apache .cloudstack .api .command .user .backup .ListBackupOfferingsCmd ;
2727import org .apache .cloudstack .api .command .user .backup .ListBackupsCmd ;
2828import org .apache .cloudstack .framework .config .ConfigKey ;
29+ import org .apache .cloudstack .framework .config .ValidatedConfigKey ;
2930import org .apache .cloudstack .framework .config .Configurable ;
3031
3132import com .cloud .utils .Pair ;
@@ -42,10 +43,11 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer
4243 "false" ,
4344 "Is backup and recovery framework enabled." , false , ConfigKey .Scope .Zone );
4445
45- ConfigKey <String > BackupProviderPlugin = new ConfigKey <>("Advanced" , String .class ,
46+ ConfigKey <String > BackupProviderPlugin = new ValidatedConfigKey <>("Advanced" , String .class ,
4647 "backup.framework.provider.plugin" ,
4748 "dummy" ,
48- "The backup and recovery provider plugin." , true , ConfigKey .Scope .Zone , BackupFrameworkEnabled .key ());
49+ "The backup and recovery provider plugin. Valid plugin values: dummy, veeam, networker and nas" ,
50+ true , ConfigKey .Scope .Zone , BackupFrameworkEnabled .key (), value -> validateBackupProviderConfig ((String )value ));
4951
5052 ConfigKey <Long > BackupSyncPollingInterval = new ConfigKey <>("Advanced" , Long .class ,
5153 "backup.framework.sync.interval" ,
@@ -148,4 +150,14 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer
148150 boolean deleteBackup (final Long backupId , final Boolean forced );
149151
150152 BackupOffering updateBackupOffering (UpdateBackupOfferingCmd updateBackupOfferingCmd );
153+
154+ static void validateBackupProviderConfig (String value ) {
155+ if (value != null && (value .contains ("," ) || value .trim ().contains (" " ))) {
156+ throw new IllegalArgumentException ("Multiple backup provider plugins are not supported. Please provide a single plugin value." );
157+ }
158+ List <String > validPlugins = List .of ("dummy" , "veeam" , "networker" , "nas" );
159+ if (value != null && !validPlugins .contains (value )) {
160+ throw new IllegalArgumentException ("Invalid backup provider plugin: " + value + ". Valid plugin values are: " + String .join (", " , validPlugins ));
161+ }
162+ }
151163}
0 commit comments