Skip to content

Commit c522329

Browse files
author
Suyash Choudhary
committed
Update Storage Mover CLI commands and API versions to 2025-12-01
- Updated the API version for job definition commands: start-job, stop-job, update, and wait. - Enhanced job definition update command with new properties: connections, data integrity validation, preserve permissions, and schedule. - Updated job run commands: list, show, with new properties for scheduled execution time and warnings. - Updated project commands: create, delete, list, show, and update with new API version and improved descriptions. - Added support for S3 with HMAC in endpoint commands: create and update. - Bumped package version to 1.3.0.
1 parent c9666ae commit c522329

56 files changed

Lines changed: 2828 additions & 257 deletions

Some content is hidden

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

src/storage-mover/HISTORY.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
Release History
44
===============
55

6+
1.3.0
7+
+++++
8+
* Updated to the 2025-12-01 GA API version.
9+
* Added `connection` resource commands (create, delete, list, show, update, wait).
10+
* Added S3-compatible storage endpoint type (`create-for-s3-with-hmac`, `update-for-s3-with-hmac`).
11+
* Added `schedule`, `connections`, `preserve-permissions`, and `data-integrity-validation` parameters to job definition commands.
12+
613
1.2.1
714
+++++
815
* Added system assigned MI creation as part of az storage-mover endpoint create-for-storage-container command.

src/storage-mover/azext_storage_mover/_help.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,29 @@
135135
-n "endpoint_multi_cloud_connector" --description endpointMultiCloudConnectorDescUpdate
136136
"""
137137

138+
helps['storage-mover endpoint create-for-s3-with-hmac'] = """
139+
type: command
140+
short-summary: Creates an Endpoint resource for S3-compatible storage using HMAC credentials.
141+
examples:
142+
- name: endpoint create-for-s3-with-hmac
143+
text: >
144+
az storage-mover endpoint create-for-s3-with-hmac -g "rg" --storage-mover-name "mover_name"
145+
-n "endpoint_s3" --source-uri "https://s3.example.com/bucket" --source-type BACKBLAZE
146+
--access-key-uri "https://keyvault.vault.azure.net/secrets/access-key"
147+
--secret-key-uri "https://keyvault.vault.azure.net/secrets/secret-key"
148+
--description endpointS3Desc
149+
"""
150+
151+
helps['storage-mover endpoint update-for-s3-with-hmac'] = """
152+
type: command
153+
short-summary: Updates an Endpoint resource for S3-compatible storage using HMAC credentials.
154+
examples:
155+
- name: endpoint update-for-s3-with-hmac
156+
text: >
157+
az storage-mover endpoint update-for-s3-with-hmac -g "rg" --storage-mover-name "mover_name"
158+
-n "endpoint_s3" --description endpointS3DescUpdate
159+
"""
160+
138161
helps['storage-mover endpoint identity assign'] = """
139162
type: command
140163
short-summary: Assigns a managed identity to an Endpoint resource.

src/storage-mover/azext_storage_mover/_params.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,15 @@ def load_arguments(self, _): # pylint: disable=unused-argument
5858
with self.argument_context('storage-mover endpoint ' + command) as c:
5959
c.argument('password_uri', help='The Azure Key Vault secret URI which stores the password. Use empty string to clean-up existing value.')
6060
c.argument('username_uri', help='The Azure Key Vault secret URI which stores the username. Use empty string to clean-up existing value.')
61+
62+
with self.argument_context('storage-mover endpoint create-for-s3-with-hmac') as c:
63+
c.argument('source_uri', help='The URI which points to the S3-compatible source.')
64+
c.argument('source_type', arg_type=get_enum_type(['BACKBLAZE', 'CLOUDFLARE', 'GCS', 'IBM', 'MINIO']),
65+
help='The source type of the S3WithHmac endpoint.')
66+
c.argument('other_source_type_description',
67+
help='The description for other source type of S3WithHmac endpoint.')
68+
69+
for command in ['create-for-s3-with-hmac', 'update-for-s3-with-hmac']:
70+
with self.argument_context('storage-mover endpoint ' + command) as c:
71+
c.argument('access_key_uri', help='The Azure Key Vault secret URI which stores the access key. Use empty string to clean-up existing value.')
72+
c.argument('secret_key_uri', help='The Azure Key Vault secret URI which stores the secret key. Use empty string to clean-up existing value.')

src/storage-mover/azext_storage_mover/aaz/latest/storage_mover/_create.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,13 @@
1515
"storage-mover create",
1616
)
1717
class Create(AAZCommand):
18-
"""Creates a top-level Storage Mover resource.
19-
20-
:example: storage-mover create
21-
az storage-mover create -g {rg} -n {mover_name} -l eastus2 --tags {{key1:value1}} --description ExampleDesc
18+
"""Create a top-level Storage Mover resource.
2219
"""
2320

2421
_aaz_info = {
25-
"version": "2025-07-01",
22+
"version": "2025-12-01",
2623
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-07-01"],
24+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-12-01"],
2825
]
2926
}
3027

@@ -51,6 +48,9 @@ def _build_arguments_schema(cls, *args, **kwargs):
5148
options=["-n", "--name", "--storage-mover-name"],
5249
help="The name of the Storage Mover resource.",
5350
required=True,
51+
fmt=AAZStrArgFormat(
52+
pattern="^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
53+
),
5454
)
5555

5656
# define Arg Group "Properties"
@@ -148,7 +148,7 @@ def url_parameters(self):
148148
def query_parameters(self):
149149
parameters = {
150150
**self.serialize_query_param(
151-
"api-version", "2025-07-01",
151+
"api-version", "2025-12-01",
152152
required=True,
153153
),
154154
}

src/storage-mover/azext_storage_mover/aaz/latest/storage_mover/_delete.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,16 @@
1313

1414
@register_command(
1515
"storage-mover delete",
16-
confirmation="WARNING: Deleting a storage mover will cascade delete all contained resources. This will stop all ongoing migrations and break all trust relationships with registered agents.\nAre you sure you want to delete this storage mover and all its contained resources?",
16+
confirmation="Are you sure you want to perform this operation?",
1717
)
1818
class Delete(AAZCommand):
19-
"""Deletes a Storage Mover resource.
20-
21-
:example: storage-mover delete
22-
az storage-mover delete -g {rg} -n {mover_name}
19+
"""Delete a Storage Mover resource.
2320
"""
2421

2522
_aaz_info = {
26-
"version": "2025-07-01",
23+
"version": "2025-12-01",
2724
"resources": [
28-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-07-01"],
25+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-12-01"],
2926
]
3027
}
3128

@@ -54,6 +51,9 @@ def _build_arguments_schema(cls, *args, **kwargs):
5451
help="The name of the Storage Mover resource.",
5552
required=True,
5653
id_part="name",
54+
fmt=AAZStrArgFormat(
55+
pattern="^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
56+
),
5757
)
5858
return cls._args_schema
5959

@@ -143,7 +143,7 @@ def url_parameters(self):
143143
def query_parameters(self):
144144
parameters = {
145145
**self.serialize_query_param(
146-
"api-version", "2025-07-01",
146+
"api-version", "2025-12-01",
147147
required=True,
148148
),
149149
}

src/storage-mover/azext_storage_mover/aaz/latest/storage_mover/_list.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,14 @@
1515
"storage-mover list",
1616
)
1717
class List(AAZCommand):
18-
"""Lists all Storage Movers in a subscription.
19-
20-
:example: storage-mover list
21-
az storage-mover list -g {rg}
18+
"""List all Storage Movers in a subscription.
2219
"""
2320

2421
_aaz_info = {
25-
"version": "2025-07-01",
22+
"version": "2025-12-01",
2623
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/providers/microsoft.storagemover/storagemovers", "2025-07-01"],
28-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers", "2025-07-01"],
24+
["mgmt-plane", "/subscriptions/{}/providers/microsoft.storagemover/storagemovers", "2025-12-01"],
25+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers", "2025-12-01"],
2926
]
3027
}
3128

@@ -112,7 +109,7 @@ def url_parameters(self):
112109
def query_parameters(self):
113110
parameters = {
114111
**self.serialize_query_param(
115-
"api-version", "2025-07-01",
112+
"api-version", "2025-12-01",
116113
required=True,
117114
),
118115
}
@@ -253,7 +250,7 @@ def url_parameters(self):
253250
def query_parameters(self):
254251
parameters = {
255252
**self.serialize_query_param(
256-
"api-version", "2025-07-01",
253+
"api-version", "2025-12-01",
257254
required=True,
258255
),
259256
}

src/storage-mover/azext_storage_mover/aaz/latest/storage_mover/_show.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,13 @@
1515
"storage-mover show",
1616
)
1717
class Show(AAZCommand):
18-
"""Gets a Storage Mover resource.
19-
20-
:example: storage-mover show
21-
az storage-mover show -g {rg} -n {mover_name}
18+
"""Get a Storage Mover resource.
2219
"""
2320

2421
_aaz_info = {
25-
"version": "2025-07-01",
22+
"version": "2025-12-01",
2623
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-07-01"],
24+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-12-01"],
2825
]
2926
}
3027

@@ -52,6 +49,9 @@ def _build_arguments_schema(cls, *args, **kwargs):
5249
help="The name of the Storage Mover resource.",
5350
required=True,
5451
id_part="name",
52+
fmt=AAZStrArgFormat(
53+
pattern="^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
54+
),
5555
)
5656
return cls._args_schema
5757

@@ -120,7 +120,7 @@ def url_parameters(self):
120120
def query_parameters(self):
121121
parameters = {
122122
**self.serialize_query_param(
123-
"api-version", "2025-07-01",
123+
"api-version", "2025-12-01",
124124
required=True,
125125
),
126126
}

src/storage-mover/azext_storage_mover/aaz/latest/storage_mover/_update.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,12 @@
1616
)
1717
class Update(AAZCommand):
1818
"""Update a top-level Storage Mover resource.
19-
20-
:example: storage-mover update
21-
az storage-mover update -g {rg} -n {mover_name} --tags {{key2:value2}} --description ExampleDesc2
2219
"""
2320

2421
_aaz_info = {
25-
"version": "2025-07-01",
22+
"version": "2025-12-01",
2623
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-07-01"],
24+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-12-01"],
2825
]
2926
}
3027

@@ -54,6 +51,9 @@ def _build_arguments_schema(cls, *args, **kwargs):
5451
help="The name of the Storage Mover resource.",
5552
required=True,
5653
id_part="name",
54+
fmt=AAZStrArgFormat(
55+
pattern="^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
56+
),
5757
)
5858

5959
# define Arg Group "Properties"
@@ -160,7 +160,7 @@ def url_parameters(self):
160160
def query_parameters(self):
161161
parameters = {
162162
**self.serialize_query_param(
163-
"api-version", "2025-07-01",
163+
"api-version", "2025-12-01",
164164
required=True,
165165
),
166166
}
@@ -243,7 +243,7 @@ def url_parameters(self):
243243
def query_parameters(self):
244244
parameters = {
245245
**self.serialize_query_param(
246-
"api-version", "2025-07-01",
246+
"api-version", "2025-12-01",
247247
required=True,
248248
),
249249
}

src/storage-mover/azext_storage_mover/aaz/latest/storage_mover/_wait.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class Wait(AAZWaitCommand):
2020

2121
_aaz_info = {
2222
"resources": [
23-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-07-01"],
23+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.storagemover/storagemovers/{}", "2025-12-01"],
2424
]
2525
}
2626

@@ -48,6 +48,9 @@ def _build_arguments_schema(cls, *args, **kwargs):
4848
help="The name of the Storage Mover resource.",
4949
required=True,
5050
id_part="name",
51+
fmt=AAZStrArgFormat(
52+
pattern="^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
53+
),
5154
)
5255
return cls._args_schema
5356

@@ -116,7 +119,7 @@ def url_parameters(self):
116119
def query_parameters(self):
117120
parameters = {
118121
**self.serialize_query_param(
119-
"api-version", "2025-07-01",
122+
"api-version", "2025-12-01",
120123
required=True,
121124
),
122125
}

src/storage-mover/azext_storage_mover/aaz/latest/storage_mover/agent/__cmd_group.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"storage-mover agent",
1616
)
1717
class __CMDGroup(AAZCommandGroup):
18-
"""Manage Agent resource, which references a hybrid compute machine that can run jobs.
18+
"""Manage Agent
1919
"""
2020
pass
2121

0 commit comments

Comments
 (0)