Skip to content

Commit 7c7e4dc

Browse files
Add backup_configuration parameter to update backup datasource for AKS and AzureBlob
1 parent d86226c commit 7c7e4dc

File tree

1 file changed

+29
-5
lines changed
  • src/dataprotection/azext_dataprotection/manual

1 file changed

+29
-5
lines changed

src/dataprotection/azext_dataprotection/manual/custom.py

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ def dataprotection_backup_instance_validate_for_update(cmd, resource_group_name,
246246

247247

248248
def 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

Comments
 (0)