Skip to content

Commit 243ca09

Browse files
committed
initial commit: adls backup workload support + rename restore containers
1 parent ac57da8 commit 243ca09

File tree

85 files changed

+11283
-9962
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+11283
-9962
lines changed

src/dataprotection/azext_dataprotection/aaz/latest/dataprotection/backup_instance/_adhoc_backup.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ class AdhocBackup(AAZCommand):
2323
"""
2424

2525
_aaz_info = {
26-
"version": "2024-04-01",
26+
"version": "2025-07-01",
2727
"resources": [
28-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}/backup", "2024-04-01"],
28+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}/backup", "2025-07-01"],
2929
]
3030
}
3131

@@ -60,6 +60,11 @@ def _build_arguments_schema(cls, *args, **kwargs):
6060
help="The name of the backup vault.",
6161
required=True,
6262
id_part="name",
63+
fmt=AAZStrArgFormat(
64+
pattern="^[A-Za-z][-A-Za-z0-9]*[A-Za-z0-9]$",
65+
max_length=50,
66+
min_length=2,
67+
),
6368
)
6469

6570
# define Arg Group "Backup Rule Options"
@@ -167,7 +172,7 @@ def url_parameters(self):
167172
def query_parameters(self):
168173
parameters = {
169174
**self.serialize_query_param(
170-
"api-version", "2024-04-01",
175+
"api-version", "2025-07-01",
171176
required=True,
172177
),
173178
}

src/dataprotection/azext_dataprotection/aaz/latest/dataprotection/backup_instance/_create.py

Lines changed: 49 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ class Create(AAZCommand):
2222
"""
2323

2424
_aaz_info = {
25-
"version": "2024-04-01",
25+
"version": "2025-07-01",
2626
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}", "2024-04-01"],
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}", "2025-07-01"],
2828
]
2929
}
3030

@@ -57,6 +57,11 @@ def _build_arguments_schema(cls, *args, **kwargs):
5757
options=["-v", "--vault-name"],
5858
help="The name of the backup vault.",
5959
required=True,
60+
fmt=AAZStrArgFormat(
61+
pattern="^[A-Za-z][-A-Za-z0-9]*[A-Za-z0-9]$",
62+
max_length=50,
63+
min_length=2,
64+
),
6065
)
6166

6267
# define Arg Group "Parameters"
@@ -69,20 +74,18 @@ def _build_arguments_schema(cls, *args, **kwargs):
6974
@classmethod
7075
def _build_args_base_resource_properties_create(cls, _schema):
7176
if cls._args_base_resource_properties_create is not None:
72-
_schema.object_type = cls._args_base_resource_properties_create.object_type
77+
_schema.default_resource_properties = cls._args_base_resource_properties_create.default_resource_properties
7378
return
7479

7580
cls._args_base_resource_properties_create = AAZObjectArg()
7681

7782
base_resource_properties_create = cls._args_base_resource_properties_create
78-
base_resource_properties_create.object_type = AAZStrArg(
79-
options=["object-type"],
80-
help="Type of the specific object - used for deserializing",
81-
required=True,
82-
enum={"DefaultResourceProperties": "DefaultResourceProperties"},
83+
base_resource_properties_create.default_resource_properties = AAZObjectArg(
84+
options=["default-resource-properties"],
85+
blank={},
8386
)
8487

85-
_schema.object_type = cls._args_base_resource_properties_create.object_type
88+
_schema.default_resource_properties = cls._args_base_resource_properties_create.default_resource_properties
8689

8790
def _execute_operations(self):
8891
self.pre_operations()
@@ -113,7 +116,7 @@ def __call__(self, *args, **kwargs):
113116
session,
114117
self.on_200_201,
115118
self.on_error,
116-
lro_options={"final-state-via": "azure-async-operation"},
119+
lro_options={"final-state-via": "location"},
117120
path_format_arguments=self.url_parameters,
118121
)
119122
if session.http_response.status_code in [200, 201]:
@@ -122,7 +125,7 @@ def __call__(self, *args, **kwargs):
122125
session,
123126
self.on_200_201,
124127
self.on_error,
125-
lro_options={"final-state-via": "azure-async-operation"},
128+
lro_options={"final-state-via": "location"},
126129
path_format_arguments=self.url_parameters,
127130
)
128131

@@ -169,7 +172,7 @@ def url_parameters(self):
169172
def query_parameters(self):
170173
parameters = {
171174
**self.serialize_query_param(
172-
"api-version", "2024-04-01",
175+
"api-version", "2025-07-01",
173176
required=True,
174177
),
175178
}
@@ -268,6 +271,7 @@ def _build_schema_on_200_201(cls):
268271
_CreateHelper._build_schema_user_facing_error_read(properties.protection_error_details)
269272
properties.protection_status = AAZObjectType(
270273
serialized_name="protectionStatus",
274+
flags={"read_only": True},
271275
)
272276
properties.provisioning_state = AAZStrType(
273277
serialized_name="provisioningState",
@@ -393,6 +397,15 @@ def _build_schema_on_200_201(cls):
393397
flags={"required": True},
394398
)
395399

400+
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")
401+
disc_adls_blob_backup_datasource_parameters.containers_list = AAZListType(
402+
serialized_name="containersList",
403+
flags={"required": True},
404+
)
405+
406+
containers_list = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "AdlsBlobBackupDatasourceParameters").containers_list
407+
containers_list.Element = AAZStrType()
408+
396409
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")
397410
disc_blob_backup_datasource_parameters.containers_list = AAZListType(
398411
serialized_name="containersList",
@@ -422,6 +435,9 @@ def _build_schema_on_200_201(cls):
422435
disc_kubernetes_cluster_backup_datasource_parameters.included_resource_types = AAZListType(
423436
serialized_name="includedResourceTypes",
424437
)
438+
disc_kubernetes_cluster_backup_datasource_parameters.included_volume_types = AAZListType(
439+
serialized_name="includedVolumeTypes",
440+
)
425441
disc_kubernetes_cluster_backup_datasource_parameters.label_selectors = AAZListType(
426442
serialized_name="labelSelectors",
427443
)
@@ -449,6 +465,9 @@ def _build_schema_on_200_201(cls):
449465
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
450466
included_resource_types.Element = AAZStrType()
451467

468+
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
469+
included_volume_types.Element = AAZStrType()
470+
452471
label_selectors = cls._schema_on_200_201.properties.policy_info.policy_parameters.backup_datasource_parameters_list.Element.discriminate_by("object_type", "KubernetesClusterBackupDatasourceParameters").label_selectors
453472
label_selectors.Element = AAZStrType()
454473

@@ -513,14 +532,23 @@ class _CreateHelper:
513532
def _build_schema_base_resource_properties_create(cls, _builder):
514533
if _builder is None:
515534
return
516-
_builder.set_prop("objectType", AAZStrType, ".object_type", typ_kwargs={"flags": {"required": True}})
535+
_builder.set_const("objectType", "DefaultResourceProperties", AAZStrType, ".default_resource_properties", typ_kwargs={"flags": {"required": True}})
536+
_builder.discriminate_by("objectType", "DefaultResourceProperties")
517537

518538
_schema_base_resource_properties_read = None
519539

520540
@classmethod
521541
def _build_schema_base_resource_properties_read(cls, _schema):
522542
if cls._schema_base_resource_properties_read is not None:
523543
_schema.object_type = cls._schema_base_resource_properties_read.object_type
544+
_schema.discriminate_by(
545+
"object_type",
546+
"DefaultResourceProperties",
547+
cls._schema_base_resource_properties_read.discriminate_by(
548+
"object_type",
549+
"DefaultResourceProperties",
550+
)
551+
)
524552
return
525553

526554
cls._schema_base_resource_properties_read = _schema_base_resource_properties_read = AAZObjectType()
@@ -532,6 +560,14 @@ def _build_schema_base_resource_properties_read(cls, _schema):
532560
)
533561

534562
_schema.object_type = cls._schema_base_resource_properties_read.object_type
563+
_schema.discriminate_by(
564+
"object_type",
565+
"DefaultResourceProperties",
566+
cls._schema_base_resource_properties_read.discriminate_by(
567+
"object_type",
568+
"DefaultResourceProperties",
569+
)
570+
)
535571

536572
_schema_inner_error_read = None
537573

src/dataprotection/azext_dataprotection/aaz/latest/dataprotection/backup_instance/_delete.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ class Delete(AAZCommand):
2323
"""
2424

2525
_aaz_info = {
26-
"version": "2024-04-01",
26+
"version": "2025-07-01",
2727
"resources": [
28-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}", "2024-04-01"],
28+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}", "2025-07-01"],
2929
]
3030
}
3131

@@ -60,6 +60,11 @@ def _build_arguments_schema(cls, *args, **kwargs):
6060
help="The name of the backup vault.",
6161
required=True,
6262
id_part="name",
63+
fmt=AAZStrArgFormat(
64+
pattern="^[A-Za-z][-A-Za-z0-9]*[A-Za-z0-9]$",
65+
max_length=50,
66+
min_length=2,
67+
),
6368
)
6469
return cls._args_schema
6570

@@ -88,7 +93,7 @@ def __call__(self, *args, **kwargs):
8893
session,
8994
self.on_200,
9095
self.on_error,
91-
lro_options={"final-state-via": "azure-async-operation"},
96+
lro_options={"final-state-via": "location"},
9297
path_format_arguments=self.url_parameters,
9398
)
9499
if session.http_response.status_code in [200]:
@@ -97,7 +102,7 @@ def __call__(self, *args, **kwargs):
97102
session,
98103
self.on_200,
99104
self.on_error,
100-
lro_options={"final-state-via": "azure-async-operation"},
105+
lro_options={"final-state-via": "location"},
101106
path_format_arguments=self.url_parameters,
102107
)
103108
if session.http_response.status_code in [204]:
@@ -106,7 +111,7 @@ def __call__(self, *args, **kwargs):
106111
session,
107112
self.on_204,
108113
self.on_error,
109-
lro_options={"final-state-via": "azure-async-operation"},
114+
lro_options={"final-state-via": "location"},
110115
path_format_arguments=self.url_parameters,
111116
)
112117

@@ -153,7 +158,7 @@ def url_parameters(self):
153158
def query_parameters(self):
154159
parameters = {
155160
**self.serialize_query_param(
156-
"api-version", "2024-04-01",
161+
"api-version", "2025-07-01",
157162
required=True,
158163
),
159164
}

src/dataprotection/azext_dataprotection/aaz/latest/dataprotection/backup_instance/_list.py

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ class List(AAZCommand):
2222
"""
2323

2424
_aaz_info = {
25-
"version": "2024-04-01",
25+
"version": "2025-07-01",
2626
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances", "2024-04-01"],
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances", "2025-07-01"],
2828
]
2929
}
3030

@@ -121,7 +121,7 @@ def url_parameters(self):
121121
def query_parameters(self):
122122
parameters = {
123123
**self.serialize_query_param(
124-
"api-version", "2024-04-01",
124+
"api-version", "2025-07-01",
125125
required=True,
126126
),
127127
}
@@ -215,6 +215,7 @@ def _build_schema_on_200(cls):
215215
_ListHelper._build_schema_user_facing_error_read(properties.protection_error_details)
216216
properties.protection_status = AAZObjectType(
217217
serialized_name="protectionStatus",
218+
flags={"read_only": True},
218219
)
219220
properties.provisioning_state = AAZStrType(
220221
serialized_name="provisioningState",
@@ -340,6 +341,15 @@ def _build_schema_on_200(cls):
340341
flags={"required": True},
341342
)
342343

344+
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")
345+
disc_adls_blob_backup_datasource_parameters.containers_list = AAZListType(
346+
serialized_name="containersList",
347+
flags={"required": True},
348+
)
349+
350+
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
351+
containers_list.Element = AAZStrType()
352+
343353
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")
344354
disc_blob_backup_datasource_parameters.containers_list = AAZListType(
345355
serialized_name="containersList",
@@ -369,6 +379,9 @@ def _build_schema_on_200(cls):
369379
disc_kubernetes_cluster_backup_datasource_parameters.included_resource_types = AAZListType(
370380
serialized_name="includedResourceTypes",
371381
)
382+
disc_kubernetes_cluster_backup_datasource_parameters.included_volume_types = AAZListType(
383+
serialized_name="includedVolumeTypes",
384+
)
372385
disc_kubernetes_cluster_backup_datasource_parameters.label_selectors = AAZListType(
373386
serialized_name="labelSelectors",
374387
)
@@ -396,6 +409,9 @@ def _build_schema_on_200(cls):
396409
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
397410
included_resource_types.Element = AAZStrType()
398411

412+
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
413+
included_volume_types.Element = AAZStrType()
414+
399415
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
400416
label_selectors.Element = AAZStrType()
401417

@@ -462,6 +478,14 @@ class _ListHelper:
462478
def _build_schema_base_resource_properties_read(cls, _schema):
463479
if cls._schema_base_resource_properties_read is not None:
464480
_schema.object_type = cls._schema_base_resource_properties_read.object_type
481+
_schema.discriminate_by(
482+
"object_type",
483+
"DefaultResourceProperties",
484+
cls._schema_base_resource_properties_read.discriminate_by(
485+
"object_type",
486+
"DefaultResourceProperties",
487+
)
488+
)
465489
return
466490

467491
cls._schema_base_resource_properties_read = _schema_base_resource_properties_read = AAZObjectType()
@@ -473,6 +497,14 @@ def _build_schema_base_resource_properties_read(cls, _schema):
473497
)
474498

475499
_schema.object_type = cls._schema_base_resource_properties_read.object_type
500+
_schema.discriminate_by(
501+
"object_type",
502+
"DefaultResourceProperties",
503+
cls._schema_base_resource_properties_read.discriminate_by(
504+
"object_type",
505+
"DefaultResourceProperties",
506+
)
507+
)
476508

477509
_schema_inner_error_read = None
478510

src/dataprotection/azext_dataprotection/aaz/latest/dataprotection/backup_instance/_resume_protection.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ class ResumeProtection(AAZCommand):
2222
"""
2323

2424
_aaz_info = {
25-
"version": "2024-04-01",
25+
"version": "2025-07-01",
2626
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}/resumeprotection", "2024-04-01"],
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.dataprotection/backupvaults/{}/backupinstances/{}/resumeprotection", "2025-07-01"],
2828
]
2929
}
3030

@@ -59,6 +59,11 @@ def _build_arguments_schema(cls, *args, **kwargs):
5959
help="The name of the backup vault.",
6060
required=True,
6161
id_part="name",
62+
fmt=AAZStrArgFormat(
63+
pattern="^[A-Za-z][-A-Za-z0-9]*[A-Za-z0-9]$",
64+
max_length=50,
65+
min_length=2,
66+
),
6267
)
6368
return cls._args_schema
6469

@@ -87,7 +92,7 @@ def __call__(self, *args, **kwargs):
8792
session,
8893
self.on_200,
8994
self.on_error,
90-
lro_options={"final-state-via": "azure-async-operation"},
95+
lro_options={"final-state-via": "location"},
9196
path_format_arguments=self.url_parameters,
9297
)
9398
if session.http_response.status_code in [200]:
@@ -96,7 +101,7 @@ def __call__(self, *args, **kwargs):
96101
session,
97102
self.on_200,
98103
self.on_error,
99-
lro_options={"final-state-via": "azure-async-operation"},
104+
lro_options={"final-state-via": "location"},
100105
path_format_arguments=self.url_parameters,
101106
)
102107

@@ -143,7 +148,7 @@ def url_parameters(self):
143148
def query_parameters(self):
144149
parameters = {
145150
**self.serialize_query_param(
146-
"api-version", "2024-04-01",
151+
"api-version", "2025-07-01",
147152
required=True,
148153
),
149154
}

0 commit comments

Comments
 (0)