Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/dataprotection/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

Release History
===============
1.10.0
+++++
Comment thread
calvinhzy marked this conversation as resolved.
Outdated
* Bumped API version to 2026-03-01 for backup-instance create, update, validate-for-backup, and validate-for-update commands.
* `az dataprotection backup-instance initialize-backupconfig`: New parameters `--auto-protection` and `--exclusion-prefixes` to enable automatic protection of new blob containers for AzureBlob and AzureDataLakeStorage datasource types, with optional exclusion rules by container name prefix.

1.9.0
+++++
* `az dataprotection enable-backup trigger`: New command to enable backup for AKS clusters with a single command. Supports preset backup strategies (Week, Month, DisasterRecovery) and Custom strategy with user-provided configuration.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@
class Create(AAZCommand):
"""Configure backup for a resource in a backup vault

:example: create a backup instance in a backup vault
:example: creates a backup instance in a backup vault
az dataprotection backup-instance create -g MyResourceGroup --vault-name MyVault --backup-instance backupinstance.json
"""

_aaz_info = {
"version": "2025-07-01",
"version": "2026-03-01",
"resources": [
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}", "2025-07-01"],
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}", "2026-03-01"],
]
}

Expand Down Expand Up @@ -87,6 +87,58 @@ def _build_args_base_resource_properties_create(cls, _schema):

_schema.default_resource_properties = cls._args_base_resource_properties_create.default_resource_properties

_args_blob_backup_rule_based_auto_protection_settings_create = None

@classmethod
def _build_args_blob_backup_rule_based_auto_protection_settings_create(cls, _schema):
if cls._args_blob_backup_rule_based_auto_protection_settings_create is not None:
_schema.enabled = cls._args_blob_backup_rule_based_auto_protection_settings_create.enabled
_schema.rules = cls._args_blob_backup_rule_based_auto_protection_settings_create.rules
return

cls._args_blob_backup_rule_based_auto_protection_settings_create = AAZObjectArg()

blob_backup_rule_based_auto_protection_settings_create = cls._args_blob_backup_rule_based_auto_protection_settings_create
blob_backup_rule_based_auto_protection_settings_create.enabled = AAZBoolArg(
options=["enabled"],
help="Flag to enable whether auto protection.",
required=True,
)
blob_backup_rule_based_auto_protection_settings_create.rules = AAZListArg(
options=["rules"],
help="Rules are evaluated in the order provided. Inclusion adds candidates; exclusion removes candidates. If no rules are present, all containers are considered eligible when enabled = true.",
)

rules = cls._args_blob_backup_rule_based_auto_protection_settings_create.rules
rules.Element = AAZObjectArg()

_element = cls._args_blob_backup_rule_based_auto_protection_settings_create.rules.Element
_element.mode = AAZStrArg(
options=["mode"],
help="Exclude removes candidates (after inclusion)",
required=True,
enum={"Exclude": "Exclude"},
)
_element.object_type = AAZStrArg(
options=["object-type"],
help="Type of the specific object - used for deserializing",
required=True,
)
_element.pattern = AAZStrArg(
options=["pattern"],
help="The string pattern to evaluate against container names. For now this accepts literal strings only (no wildcards or regex).",
required=True,
)
_element.type = AAZStrArg(
options=["type"],
help="Pattern type: Prefix, only pattern type supported for now.",
required=True,
enum={"Prefix": "Prefix"},
)

_schema.enabled = cls._args_blob_backup_rule_based_auto_protection_settings_create.enabled
_schema.rules = cls._args_blob_backup_rule_based_auto_protection_settings_create.rules

def _execute_operations(self):
self.pre_operations()
yield self.BackupInstancesCreateOrUpdate(ctx=self.ctx)()
Expand Down Expand Up @@ -172,7 +224,7 @@ def url_parameters(self):
def query_parameters(self):
parameters = {
**self.serialize_query_param(
"api-version", "2025-07-01",
"api-version", "2026-03-01",
required=True,
),
}
Expand Down Expand Up @@ -406,6 +458,13 @@ def _build_schema_on_200_201(cls):
containers_list = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "AdlsBlobBackupDatasourceParameters").containers_list
containers_list.Element = AAZStrType()

disc_adls_blob_backup_datasource_parameters_for_auto_protection = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "AdlsBlobBackupDatasourceParametersForAutoProtection")
disc_adls_blob_backup_datasource_parameters_for_auto_protection.auto_protection_settings = AAZObjectType(
serialized_name="autoProtectionSettings",
flags={"required": True},
)
_CreateHelper._build_schema_blob_backup_rule_based_auto_protection_settings_read(disc_adls_blob_backup_datasource_parameters_for_auto_protection.auto_protection_settings)

disc_blob_backup_datasource_parameters = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "BlobBackupDatasourceParameters")
disc_blob_backup_datasource_parameters.containers_list = AAZListType(
serialized_name="containersList",
Expand All @@ -415,6 +474,13 @@ def _build_schema_on_200_201(cls):
containers_list = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "BlobBackupDatasourceParameters").containers_list
containers_list.Element = AAZStrType()

disc_blob_backup_datasource_parameters_for_auto_protection = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "BlobBackupDatasourceParametersForAutoProtection")
disc_blob_backup_datasource_parameters_for_auto_protection.auto_protection_settings = AAZObjectType(
serialized_name="autoProtectionSettings",
flags={"required": True},
)
_CreateHelper._build_schema_blob_backup_rule_based_auto_protection_settings_read(disc_blob_backup_datasource_parameters_for_auto_protection.auto_protection_settings)

disc_kubernetes_cluster_backup_datasource_parameters = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "KubernetesClusterBackupDatasourceParameters")
disc_kubernetes_cluster_backup_datasource_parameters.backup_hook_references = AAZListType(
serialized_name="backupHookReferences",
Expand Down Expand Up @@ -535,6 +601,25 @@ def _build_schema_base_resource_properties_create(cls, _builder):
_builder.set_const("objectType", "DefaultResourceProperties", AAZStrType, ".default_resource_properties", typ_kwargs={"flags": {"required": True}})
_builder.discriminate_by("objectType", "DefaultResourceProperties")

@classmethod
def _build_schema_blob_backup_rule_based_auto_protection_settings_create(cls, _builder):
if _builder is None:
return
_builder.set_prop("enabled", AAZBoolType, ".enabled", typ_kwargs={"flags": {"required": True}})
_builder.set_const("objectType", "BlobBackupRuleBasedAutoProtectionSettings", AAZStrType, ".", typ_kwargs={"flags": {"required": True}})
_builder.set_prop("rules", AAZListType, ".rules")

rules = _builder.get(".rules")
if rules is not None:
rules.set_elements(AAZObjectType, ".")

_elements = _builder.get(".rules[]")
if _elements is not None:
_elements.set_prop("mode", AAZStrType, ".mode", typ_kwargs={"flags": {"required": True}})
_elements.set_prop("objectType", AAZStrType, ".object_type", typ_kwargs={"flags": {"required": True}})
_elements.set_prop("pattern", AAZStrType, ".pattern", typ_kwargs={"flags": {"required": True}})
_elements.set_prop("type", AAZStrType, ".type", typ_kwargs={"flags": {"required": True}})

_schema_base_resource_properties_read = None

@classmethod
Expand Down Expand Up @@ -569,6 +654,50 @@ def _build_schema_base_resource_properties_read(cls, _schema):
)
)

_schema_blob_backup_rule_based_auto_protection_settings_read = None

@classmethod
def _build_schema_blob_backup_rule_based_auto_protection_settings_read(cls, _schema):
if cls._schema_blob_backup_rule_based_auto_protection_settings_read is not None:
_schema.enabled = cls._schema_blob_backup_rule_based_auto_protection_settings_read.enabled
_schema.object_type = cls._schema_blob_backup_rule_based_auto_protection_settings_read.object_type
_schema.rules = cls._schema_blob_backup_rule_based_auto_protection_settings_read.rules
return

cls._schema_blob_backup_rule_based_auto_protection_settings_read = _schema_blob_backup_rule_based_auto_protection_settings_read = AAZObjectType()

blob_backup_rule_based_auto_protection_settings_read = _schema_blob_backup_rule_based_auto_protection_settings_read
blob_backup_rule_based_auto_protection_settings_read.enabled = AAZBoolType(
flags={"required": True},
)
blob_backup_rule_based_auto_protection_settings_read.object_type = AAZStrType(
serialized_name="objectType",
flags={"required": True},
)
blob_backup_rule_based_auto_protection_settings_read.rules = AAZListType()

rules = _schema_blob_backup_rule_based_auto_protection_settings_read.rules
rules.Element = AAZObjectType()

_element = _schema_blob_backup_rule_based_auto_protection_settings_read.rules.Element
_element.mode = AAZStrType(
flags={"required": True},
)
_element.object_type = AAZStrType(
serialized_name="objectType",
flags={"required": True},
)
_element.pattern = AAZStrType(
flags={"required": True},
)
_element.type = AAZStrType(
flags={"required": True},
)

_schema.enabled = cls._schema_blob_backup_rule_based_auto_protection_settings_read.enabled
_schema.object_type = cls._schema_blob_backup_rule_based_auto_protection_settings_read.object_type
_schema.rules = cls._schema_blob_backup_rule_based_auto_protection_settings_read.rules

_schema_inner_error_read = None

@classmethod
Expand Down
Loading
Loading