Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
++++++
* 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