Skip to content
Merged
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
4 changes: 4 additions & 0 deletions src/dataprotection/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

Release History
===============
1.7.0
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't see the new version being updated anywhere

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@evelyn-ys Updated setup.py to reflect new version

+++++
* Added support for Azure Data Lake Storage as a backup datasource.
* `az dataprotection backup-instance restore initialize-for-item-recovery`: Exisiting parameter `--vaulted-blob-prefix-pattern` now allows users to rename blob containers during restore.

1.6.0
+++++
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ class AdhocBackup(AAZCommand):
"""

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

Expand Down Expand Up @@ -60,6 +60,11 @@ def _build_arguments_schema(cls, *args, **kwargs):
help="The name of the backup vault.",
required=True,
id_part="name",
fmt=AAZStrArgFormat(
pattern="^[A-Za-z][-A-Za-z0-9]*[A-Za-z0-9]$",
max_length=50,
min_length=2,
),
)

# define Arg Group "Backup Rule Options"
Expand Down Expand Up @@ -167,7 +172,7 @@ def url_parameters(self):
def query_parameters(self):
parameters = {
**self.serialize_query_param(
"api-version", "2024-04-01",
"api-version", "2025-07-01",
required=True,
),
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class Create(AAZCommand):
"""

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

Expand Down Expand Up @@ -57,6 +57,11 @@ def _build_arguments_schema(cls, *args, **kwargs):
options=["-v", "--vault-name"],
help="The name of the backup vault.",
required=True,
fmt=AAZStrArgFormat(
pattern="^[A-Za-z][-A-Za-z0-9]*[A-Za-z0-9]$",
max_length=50,
min_length=2,
),
)

# define Arg Group "Parameters"
Expand All @@ -69,20 +74,18 @@ def _build_arguments_schema(cls, *args, **kwargs):
@classmethod
def _build_args_base_resource_properties_create(cls, _schema):
if cls._args_base_resource_properties_create is not None:
_schema.object_type = cls._args_base_resource_properties_create.object_type
_schema.default_resource_properties = cls._args_base_resource_properties_create.default_resource_properties
return

cls._args_base_resource_properties_create = AAZObjectArg()

base_resource_properties_create = cls._args_base_resource_properties_create
base_resource_properties_create.object_type = AAZStrArg(
options=["object-type"],
help="Type of the specific object - used for deserializing",
required=True,
enum={"DefaultResourceProperties": "DefaultResourceProperties"},
base_resource_properties_create.default_resource_properties = AAZObjectArg(
options=["default-resource-properties"],
blank={},
)

_schema.object_type = cls._args_base_resource_properties_create.object_type
_schema.default_resource_properties = cls._args_base_resource_properties_create.default_resource_properties

def _execute_operations(self):
self.pre_operations()
Expand Down Expand Up @@ -113,7 +116,7 @@ def __call__(self, *args, **kwargs):
session,
self.on_200_201,
self.on_error,
lro_options={"final-state-via": "azure-async-operation"},
lro_options={"final-state-via": "location"},
path_format_arguments=self.url_parameters,
)
if session.http_response.status_code in [200, 201]:
Expand All @@ -122,7 +125,7 @@ def __call__(self, *args, **kwargs):
session,
self.on_200_201,
self.on_error,
lro_options={"final-state-via": "azure-async-operation"},
lro_options={"final-state-via": "location"},
path_format_arguments=self.url_parameters,
)

Expand Down Expand Up @@ -169,7 +172,7 @@ def url_parameters(self):
def query_parameters(self):
parameters = {
**self.serialize_query_param(
"api-version", "2024-04-01",
"api-version", "2025-07-01",
required=True,
),
}
Expand Down Expand Up @@ -268,6 +271,7 @@ def _build_schema_on_200_201(cls):
_CreateHelper._build_schema_user_facing_error_read(properties.protection_error_details)
properties.protection_status = AAZObjectType(
serialized_name="protectionStatus",
flags={"read_only": True},
)
properties.provisioning_state = AAZStrType(
serialized_name="provisioningState",
Expand Down Expand Up @@ -393,6 +397,15 @@ def _build_schema_on_200_201(cls):
flags={"required": True},
)

disc_adls_blob_backup_datasource_parameters = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "AdlsBlobBackupDatasourceParameters")
disc_adls_blob_backup_datasource_parameters.containers_list = AAZListType(
serialized_name="containersList",
flags={"required": True},
)

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_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 Down Expand Up @@ -422,6 +435,9 @@ def _build_schema_on_200_201(cls):
disc_kubernetes_cluster_backup_datasource_parameters.included_resource_types = AAZListType(
serialized_name="includedResourceTypes",
)
disc_kubernetes_cluster_backup_datasource_parameters.included_volume_types = AAZListType(
serialized_name="includedVolumeTypes",
)
disc_kubernetes_cluster_backup_datasource_parameters.label_selectors = AAZListType(
serialized_name="labelSelectors",
)
Expand Down Expand Up @@ -449,6 +465,9 @@ def _build_schema_on_200_201(cls):
included_resource_types = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "KubernetesClusterBackupDatasourceParameters").included_resource_types
included_resource_types.Element = AAZStrType()

included_volume_types = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "KubernetesClusterBackupDatasourceParameters").included_volume_types
included_volume_types.Element = AAZStrType()

label_selectors = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "KubernetesClusterBackupDatasourceParameters").label_selectors
label_selectors.Element = AAZStrType()

Expand Down Expand Up @@ -513,14 +532,23 @@ class _CreateHelper:
def _build_schema_base_resource_properties_create(cls, _builder):
if _builder is None:
return
_builder.set_prop("objectType", AAZStrType, ".object_type", typ_kwargs={"flags": {"required": True}})
_builder.set_const("objectType", "DefaultResourceProperties", AAZStrType, ".default_resource_properties", typ_kwargs={"flags": {"required": True}})
_builder.discriminate_by("objectType", "DefaultResourceProperties")

_schema_base_resource_properties_read = None

@classmethod
def _build_schema_base_resource_properties_read(cls, _schema):
if cls._schema_base_resource_properties_read is not None:
_schema.object_type = cls._schema_base_resource_properties_read.object_type
_schema.discriminate_by(
"object_type",
"DefaultResourceProperties",
cls._schema_base_resource_properties_read.discriminate_by(
"object_type",
"DefaultResourceProperties",
)
)
return

cls._schema_base_resource_properties_read = _schema_base_resource_properties_read = AAZObjectType()
Expand All @@ -532,6 +560,14 @@ def _build_schema_base_resource_properties_read(cls, _schema):
)

_schema.object_type = cls._schema_base_resource_properties_read.object_type
_schema.discriminate_by(
"object_type",
"DefaultResourceProperties",
cls._schema_base_resource_properties_read.discriminate_by(
"object_type",
"DefaultResourceProperties",
)
)

_schema_inner_error_read = None

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ class Delete(AAZCommand):
"""

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

Expand Down Expand Up @@ -60,6 +60,11 @@ def _build_arguments_schema(cls, *args, **kwargs):
help="The name of the backup vault.",
required=True,
id_part="name",
fmt=AAZStrArgFormat(
pattern="^[A-Za-z][-A-Za-z0-9]*[A-Za-z0-9]$",
max_length=50,
min_length=2,
),
)
return cls._args_schema

Expand Down Expand Up @@ -88,7 +93,7 @@ def __call__(self, *args, **kwargs):
session,
self.on_200,
self.on_error,
lro_options={"final-state-via": "azure-async-operation"},
lro_options={"final-state-via": "location"},
path_format_arguments=self.url_parameters,
)
if session.http_response.status_code in [200]:
Expand All @@ -97,7 +102,7 @@ def __call__(self, *args, **kwargs):
session,
self.on_200,
self.on_error,
lro_options={"final-state-via": "azure-async-operation"},
lro_options={"final-state-via": "location"},
path_format_arguments=self.url_parameters,
)
if session.http_response.status_code in [204]:
Expand All @@ -106,7 +111,7 @@ def __call__(self, *args, **kwargs):
session,
self.on_204,
self.on_error,
lro_options={"final-state-via": "azure-async-operation"},
lro_options={"final-state-via": "location"},
path_format_arguments=self.url_parameters,
)

Expand Down Expand Up @@ -153,7 +158,7 @@ def url_parameters(self):
def query_parameters(self):
parameters = {
**self.serialize_query_param(
"api-version", "2024-04-01",
"api-version", "2025-07-01",
required=True,
),
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class List(AAZCommand):
"""

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

Expand Down Expand Up @@ -121,7 +121,7 @@ def url_parameters(self):
def query_parameters(self):
parameters = {
**self.serialize_query_param(
"api-version", "2024-04-01",
"api-version", "2025-07-01",
required=True,
),
}
Expand Down Expand Up @@ -215,6 +215,7 @@ def _build_schema_on_200(cls):
_ListHelper._build_schema_user_facing_error_read(properties.protection_error_details)
properties.protection_status = AAZObjectType(
serialized_name="protectionStatus",
flags={"read_only": True},
)
properties.provisioning_state = AAZStrType(
serialized_name="provisioningState",
Expand Down Expand Up @@ -340,6 +341,15 @@ def _build_schema_on_200(cls):
flags={"required": True},
)

disc_adls_blob_backup_datasource_parameters = cls._schema_on_200.value.Element.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "AdlsBlobBackupDatasourceParameters")
disc_adls_blob_backup_datasource_parameters.containers_list = AAZListType(
serialized_name="containersList",
flags={"required": True},
)

containers_list = cls._schema_on_200.value.Element.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "AdlsBlobBackupDatasourceParameters").containers_list
containers_list.Element = AAZStrType()

disc_blob_backup_datasource_parameters = cls._schema_on_200.value.Element.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 Down Expand Up @@ -369,6 +379,9 @@ def _build_schema_on_200(cls):
disc_kubernetes_cluster_backup_datasource_parameters.included_resource_types = AAZListType(
serialized_name="includedResourceTypes",
)
disc_kubernetes_cluster_backup_datasource_parameters.included_volume_types = AAZListType(
serialized_name="includedVolumeTypes",
)
disc_kubernetes_cluster_backup_datasource_parameters.label_selectors = AAZListType(
serialized_name="labelSelectors",
)
Expand Down Expand Up @@ -396,6 +409,9 @@ def _build_schema_on_200(cls):
included_resource_types = cls._schema_on_200.value.Element.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "KubernetesClusterBackupDatasourceParameters").included_resource_types
included_resource_types.Element = AAZStrType()

included_volume_types = cls._schema_on_200.value.Element.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "KubernetesClusterBackupDatasourceParameters").included_volume_types
included_volume_types.Element = AAZStrType()

label_selectors = cls._schema_on_200.value.Element.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "KubernetesClusterBackupDatasourceParameters").label_selectors
label_selectors.Element = AAZStrType()

Expand Down Expand Up @@ -462,6 +478,14 @@ class _ListHelper:
def _build_schema_base_resource_properties_read(cls, _schema):
if cls._schema_base_resource_properties_read is not None:
_schema.object_type = cls._schema_base_resource_properties_read.object_type
_schema.discriminate_by(
"object_type",
"DefaultResourceProperties",
cls._schema_base_resource_properties_read.discriminate_by(
"object_type",
"DefaultResourceProperties",
)
)
return

cls._schema_base_resource_properties_read = _schema_base_resource_properties_read = AAZObjectType()
Expand All @@ -473,6 +497,14 @@ def _build_schema_base_resource_properties_read(cls, _schema):
)

_schema.object_type = cls._schema_base_resource_properties_read.object_type
_schema.discriminate_by(
"object_type",
"DefaultResourceProperties",
cls._schema_base_resource_properties_read.discriminate_by(
"object_type",
"DefaultResourceProperties",
)
)

_schema_inner_error_read = None

Expand Down
Loading
Loading