@@ -246,7 +246,7 @@ def dataprotection_backup_instance_validate_for_update(cmd, resource_group_name,
246246
247247
248248def dataprotection_backup_instance_update (cmd , resource_group_name , vault_name , backup_instance_name ,
249- vaulted_blob_container_list = None , no_wait = False ,
249+ vaulted_blob_container_list = None , backup_configuration = None , no_wait = False ,
250250 use_system_assigned_identity = None , user_assigned_identity_arm_url = None ):
251251 from azext_dataprotection .aaz .latest .dataprotection .backup_instance import Show as BackupInstanceShow
252252 backup_instance = BackupInstanceShow (cli_ctx = cmd .cli_ctx )(command_args = {
@@ -266,10 +266,34 @@ def dataprotection_backup_instance_update(cmd, resource_group_name, vault_name,
266266 identity_details = helper .get_identity_details (use_system_assigned_identity , user_assigned_identity_arm_url )
267267 backup_instance ["properties" ]["identityDetails" ] = identity_details
268268
269- # Policy changes - updating the vaulted blob container list for vaulted blob backups
270- if vaulted_blob_container_list is not None :
271- backup_instance ['properties' ]['policyInfo' ]['policyParameters' ]['backupDatasourceParametersList' ] = \
272- [vaulted_blob_container_list ,]
269+ # Policy changes
270+ # - Updating the vaulted blob container list for vaulted blob backups
271+ # - Updating the backup datasource parameters for AKS backups
272+ datasource_type = backup_instance ["properties" ]["data_source_info" ]["datasource_type" ]
273+
274+ # If user provided any of the datasource parameter update inputs, handle according to datasource type
275+ if vaulted_blob_container_list is not None or backup_configuration is not None :
276+ if datasource_type == "AzureKubernetesService" :
277+ if vaulted_blob_container_list is not None :
278+ raise InvalidArgumentValueError ('Invalid argument --vaulted-blob-container-list for given datasource type.' )
279+ elif backup_configuration is not None :
280+ # Allow passing JSON string or already-parsed object
281+ if isinstance (backup_configuration , str ):
282+ import json
283+ try :
284+ backup_configuration = json .loads (backup_configuration )
285+ except Exception :
286+ raise InvalidArgumentValueError ("Provided --backup-configuration is not valid JSON" )
287+ backup_instance ['properties' ]['policyInfo' ]['policyParameters' ]['backupDatasourceParametersList' ] = [backup_configuration ]
288+
289+ elif datasource_type == "AzureBlob" :
290+ if backup_configuration is not None :
291+ raise InvalidArgumentValueError ('Invalid argument --backup-configuration for given datasource type.' )
292+ elif vaulted_blob_container_list is not None :
293+ backup_instance ['properties' ]['policyInfo' ]['policyParameters' ]['backupDatasourceParametersList' ] = [vaulted_blob_container_list ,]
294+
295+ else :
296+ raise InvalidArgumentValueError ('Setting backup datasource parameters is not supported for given DataSourceType' )
273297
274298 backup_instance = helper .convert_backup_instance_show_to_input (backup_instance )
275299
0 commit comments