Skip to content

Commit c840aab

Browse files
am-limericaguthan
andauthored
[devcenter] Update data plane commands to 2025-08-01-preview, control plane commands to 2025-10-01-preview (Azure#9517)
* Update project env type parameters * Fix environment def example and update style * Fix show logs * Fix spacing * Fix style error * Fix integraion tests * Fix gallery test * Fix gallery test * Fix gallery compute * Update * Update control plane * Update tests and vendored sdk for data plane API * Updates * Update tests * Update version * Update tests * Update log command to support escape characters * Update control plane to 2024-10-01-preview * Changes for force delete only * update api version * remove preview flag * Fix linter errors * Update control plane tests * Update tests * Update commands * Add project policy test * Update * add missing override * Update response * Add tests * Fix image name regex * Update version for Ignite * Update data plane tests * Update control plane tests * Fix control plane tests * Fix nsg * Update params * Update release version * Update data plane 2024-10-01-preview * Remove old dp code * Add devbox list * Add project,pool,schedule * Add devbox * Fix post, add snapshots * Fix post LRO * Add environments * Add additional cmds * Fix help * Fix params * Fix customization task validate * Linter and style fixes * Update version * Update version2 * Update dp tests * Add dev box tests * Add repair test * Add snapshot test * Add customization task test * Add customization group test * Add environment test * Update tests * Update help * Fix tests * Fix examples and show logs output * Handle if there is no next scheduled time * Update HISTORY.rst * Fix syntax errors * Update version * Update * Remove dev center image definition, add tests * Update test * Add example for acitve hours * Updates for dp * Update version * Data plane update * update * fix style * fix help * update tests * update test * Fix issue * update test revert * Update history * Fix test --------- Co-authored-by: Erica Guthan <ericaguthan@microsoft.com>
1 parent 7ccc668 commit c840aab

File tree

232 files changed

+3981
-2427
lines changed

Some content is hidden

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

232 files changed

+3981
-2427
lines changed

src/devcenter/HISTORY.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
33
Release History
44
===============
5+
8.0.0
6+
++++++
7+
* Update control plane API to v2025-10-01-preview
8+
* Update data plane API to v2025-08-01-preview
9+
510
7.0.0
611
++++++
712
* Update control plane API to v2025-04-01-preview

src/devcenter/azext_devcenter/_help.py

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,22 @@
120120
"DevPool" --project-name "DevProject"
121121
"""
122122

123+
helps[
124+
"devcenter dev pool align"
125+
] = """
126+
type: command
127+
short-summary: "Aligns all dev boxes in the pool with the current configuration."
128+
examples:
129+
- name: Align using dev center
130+
text: |-
131+
az devcenter dev pool align --dev-center-name "ContosoDevCenter" --name \
132+
"DevPool" --project-name "DevProject" --targets NetworkProperties HibernateSupport
133+
- name: Align using endpoint
134+
text: |-
135+
az devcenter dev pool align --endpoint "https://8a40af38-3b4c-4672-a6a4-5e964b1870ed-contosodevcenter.centralus.devcenter.azure.com/" --name \
136+
"DevPool" --project-name "DevProject" --targets NetworkProperties HibernateSupport
137+
"""
138+
123139
helps[
124140
"devcenter dev schedule"
125141
] = """
@@ -421,11 +437,11 @@
421437
- name: Align using dev center
422438
text: |-
423439
az devcenter dev dev-box align --name "MyDevBox" --dev-center-name "ContosoDevCenter" \
424-
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000"
440+
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000" --targets NetworkProperties HibernateSupport
425441
- name: Align using endpoint
426442
text: |-
427443
az devcenter dev dev-box align --name "MyDevBox" --endpoint "https://8a40af38-3b4c-4672-a6a4-5e964b1870ed-contosodevcenter.centralus.devcenter.azure.com/" \
428-
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000"
444+
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000" --targets NetworkProperties HibernateSupport
429445
"""
430446

431447
helps[
@@ -453,11 +469,29 @@
453469
- name: Set active hours using dev center
454470
text: |-
455471
az devcenter dev dev-box set-active-hours --name "MyDevBox" --dev-center-name "ContosoDevCenter" \
456-
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000" --time-zone "America/Los_Angeles" --start-time-hour "9" --end-time-hour "17"
472+
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000" --time-zone "America/Los_Angeles" --start-time-hour "9" --end-time-hour "17" \
473+
--days-of-week Monday Tuesday Wednesday Thursday Friday
457474
- name: Set active hours using endpoint
458475
text: |-
459476
az devcenter dev dev-box set-active-hours --name "MyDevBox" --endpoint "https://8a40af38-3b4c-4672-a6a4-5e964b1870ed-contosodevcenter.centralus.devcenter.azure.com/" \
460-
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000" --time-zone "America/Los_Angeles" --start-time-hour "9" --end-time-hour "17"
477+
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000" --time-zone "America/Los_Angeles" --start-time-hour "9" --end-time-hour "17" \
478+
--days-of-week Monday Tuesday Wednesday Thursday Friday
479+
"""
480+
481+
helps[
482+
"devcenter dev dev-box schedule-delete"
483+
] = """
484+
type: command
485+
short-summary: "Creates an action to schedule the deletion of a dev box"
486+
examples:
487+
- name: Schedule delete using dev center
488+
text: |-
489+
az devcenter dev dev-box schedule-delete --name "MyDevBox" --dev-center-name "ContosoDevCenter" \
490+
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000" --delete-at "2027-12-31T23:59:00Z"
491+
- name: Schedule delete using endpoint
492+
text: |-
493+
az devcenter dev dev-box schedule-delete --name "MyDevBox" --endpoint "https://8a40af38-3b4c-4672-a6a4-5e964b1870ed-contosodevcenter.centralus.devcenter.azure.com/" \
494+
--project-name "DevProject" --user-id "00000000-0000-0000-0000-000000000000" --delete-at "2027-12-31T23:59:00Z"
461495
"""
462496

463497
helps[

src/devcenter/azext_devcenter/_params.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,28 @@ def load_arguments(self, _):
142142
help="The name of a pool of " "dev boxes.",
143143
)
144144

145+
with self.argument_context("devcenter dev pool align") as c:
146+
c.argument(
147+
"dev_center",
148+
arg_type=dev_center_type,
149+
)
150+
c.argument(
151+
"project_name",
152+
arg_type=project_type,
153+
)
154+
c.argument(
155+
"endpoint",
156+
arg_type=endpoint,
157+
)
158+
c.argument(
159+
"pool_name",
160+
options_list=["--name", "-n", "--pool-name"],
161+
type=str,
162+
help="The name of a pool of " "dev boxes.",
163+
)
164+
c.argument('targets', nargs='+',
165+
help='Space separated configurations to align on. Possible values are "NetworkProperties", "HibernateSupport", or "SingleSignOnStatus".',)
166+
145167
with self.argument_context("devcenter dev schedule list") as c:
146168
c.argument(
147169
"dev_center",
@@ -327,6 +349,8 @@ def load_arguments(self, _):
327349
"endpoint",
328350
arg_type=endpoint,
329351
)
352+
c.argument('targets', nargs='+',
353+
help='Space separated configurations to align on. Possible values are "NetworkProperties", "HibernateSupport", or "SingleSignOnStatus".',)
330354
c.argument(
331355
"user_id",
332356
type=str,
@@ -409,6 +433,39 @@ def load_arguments(self, _):
409433
type=str,
410434
help="The timezone of the active hours.",
411435
)
436+
c.argument('days_of_week', nargs='+',
437+
help='Space separated days of the week for active hours. Possible values are "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday".',)
438+
439+
with self.argument_context("devcenter dev dev-box schedule-delete") as c:
440+
c.argument(
441+
"dev_center",
442+
arg_type=dev_center_type,
443+
)
444+
c.argument(
445+
"project_name",
446+
arg_type=project_type,
447+
)
448+
c.argument(
449+
"endpoint",
450+
arg_type=endpoint,
451+
)
452+
c.argument(
453+
"user_id",
454+
type=str,
455+
help="The AAD object id of the user. If value is 'me', the identity is taken "
456+
"from the authentication context.",
457+
)
458+
c.argument(
459+
"dev_box_name",
460+
options_list=["--name", "-n", "--dev-box-name"],
461+
type=str,
462+
help="The name of a dev " "box.",
463+
)
464+
c.argument(
465+
"delete_at",
466+
type=str,
467+
help="The scheduled deletion time of the Dev Box, in RFC3339 format.",
468+
)
412469

413470
with self.argument_context("devcenter dev dev-box stop") as c:
414471
c.argument(

src/devcenter/azext_devcenter/_validators.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Licensed under the MIT License. See License.txt in the project root for license information.
44
# --------------------------------------------------------------------------------------------
55
from datetime import datetime
6+
from dateutil import parser
67
import locale
78
import re
89
from azure.cli.core.azclierror import (
@@ -47,19 +48,22 @@ def validate_pool_create(
4748
managed virtual network regions (--managed-virtual-network-regions) should be set."""
4849
raise RequiredArgumentMissingError(error_message)
4950
if not has_value(network_connection_name) and (
50-
virtual_network_type == "Unmanaged" or not has_value(virtual_network_type)
51+
virtual_network_type == "Unmanaged" or not has_value(
52+
virtual_network_type)
5153
):
5254
error_message = """When virtual-network-type is not used or set to "Unmanaged", \
5355
a network connection name (--network-connection) should be set."""
5456
raise RequiredArgumentMissingError(error_message)
5557
if has_value(managed_virtual_network_regions) and (
56-
virtual_network_type == "Unmanaged" or not has_value(virtual_network_type)
58+
virtual_network_type == "Unmanaged" or not has_value(
59+
virtual_network_type)
5760
):
5861
error_message = """When virtual-network-type is not used or set to "Unmanaged", \
5962
managed virtual network regions (--managed-virtual-network-regions) should not be set."""
6063
raise RequiredArgumentMissingError(error_message)
6164
if has_value(devbox_definition_type) and devbox_definition_type == "Value" and (
62-
not has_value(devbox_definition_image_reference) or not has_value(devbox_definition_sku)
65+
not has_value(devbox_definition_image_reference) or not has_value(
66+
devbox_definition_sku)
6367
):
6468
error_message = """When devbox-definition-type is set to "Value", \
6569
dev box definition sku (--devbox-definition-sku) and image reference \
@@ -87,7 +91,8 @@ def validate_time(namespace):
8791
pattern = re.compile(regex)
8892
validation = pattern.match(namespace.delay_time)
8993
if validation is None:
90-
raise InvalidArgumentValueError("--delay-time should be in the format HH:MM")
94+
raise InvalidArgumentValueError(
95+
"--delay-time should be in the format HH:MM")
9196

9297

9398
def validate_endpoint(endpoint, dev_center):
@@ -124,6 +129,16 @@ def validate_env_name_already_exists(env_iterator, name, user_id, project):
124129
raise InvalidArgumentValueError(error_message)
125130

126131

132+
def is_rfc3339(string):
133+
""" Validate RFC3339 datetime format and return datetime object."""
134+
try:
135+
parser.isoparse(string)
136+
except ValueError as exception:
137+
error_message = f"""Input '{string}' not valid RFC3339 format. \
138+
Valid example: 2017-12-31T05:30:00Z"""
139+
raise InvalidArgumentValueError(error_message) from exception
140+
141+
127142
def is_iso8601(namespace):
128143
if namespace.expiration_date is None:
129144
return

src/devcenter/azext_devcenter/aaz/latest/devcenter/admin/attached_network/_create.py

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

2424
_aaz_info = {
25-
"version": "2025-04-01-preview",
25+
"version": "2025-10-01-preview",
2626
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/attachednetworks/{}", "2025-04-01-preview"],
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/attachednetworks/{}", "2025-10-01-preview"],
2828
]
2929
}
3030

@@ -164,7 +164,7 @@ def url_parameters(self):
164164
def query_parameters(self):
165165
parameters = {
166166
**self.serialize_query_param(
167-
"api-version", "2025-04-01-preview",
167+
"api-version", "2025-10-01-preview",
168168
required=True,
169169
),
170170
}

src/devcenter/azext_devcenter/aaz/latest/devcenter/admin/attached_network/_delete.py

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

2525
_aaz_info = {
26-
"version": "2025-04-01-preview",
26+
"version": "2025-10-01-preview",
2727
"resources": [
28-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/attachednetworks/{}", "2025-04-01-preview"],
28+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/attachednetworks/{}", "2025-10-01-preview"],
2929
]
3030
}
3131

@@ -163,7 +163,7 @@ def url_parameters(self):
163163
def query_parameters(self):
164164
parameters = {
165165
**self.serialize_query_param(
166-
"api-version", "2025-04-01-preview",
166+
"api-version", "2025-10-01-preview",
167167
required=True,
168168
),
169169
}

src/devcenter/azext_devcenter/aaz/latest/devcenter/admin/attached_network/_list.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ class List(AAZCommand):
2525
"""
2626

2727
_aaz_info = {
28-
"version": "2025-04-01-preview",
28+
"version": "2025-10-01-preview",
2929
"resources": [
30-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/attachednetworks", "2025-04-01-preview"],
31-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/projects/{}/attachednetworks", "2025-04-01-preview"],
30+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/attachednetworks", "2025-10-01-preview"],
31+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/projects/{}/attachednetworks", "2025-10-01-preview"],
3232
]
3333
}
3434

@@ -143,7 +143,7 @@ def url_parameters(self):
143143
def query_parameters(self):
144144
parameters = {
145145
**self.serialize_query_param(
146-
"api-version", "2025-04-01-preview",
146+
"api-version", "2025-10-01-preview",
147147
required=True,
148148
),
149149
}
@@ -297,7 +297,7 @@ def url_parameters(self):
297297
def query_parameters(self):
298298
parameters = {
299299
**self.serialize_query_param(
300-
"api-version", "2025-04-01-preview",
300+
"api-version", "2025-10-01-preview",
301301
required=True,
302302
),
303303
}

src/devcenter/azext_devcenter/aaz/latest/devcenter/admin/attached_network/_show.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ class Show(AAZCommand):
2525
"""
2626

2727
_aaz_info = {
28-
"version": "2025-04-01-preview",
28+
"version": "2025-10-01-preview",
2929
"resources": [
30-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/attachednetworks/{}", "2025-04-01-preview"],
31-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/projects/{}/attachednetworks/{}", "2025-04-01-preview"],
30+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/attachednetworks/{}", "2025-10-01-preview"],
31+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/projects/{}/attachednetworks/{}", "2025-10-01-preview"],
3232
]
3333
}
3434

@@ -154,7 +154,7 @@ def url_parameters(self):
154154
def query_parameters(self):
155155
parameters = {
156156
**self.serialize_query_param(
157-
"api-version", "2025-04-01-preview",
157+
"api-version", "2025-10-01-preview",
158158
required=True,
159159
),
160160
}
@@ -300,7 +300,7 @@ def url_parameters(self):
300300
def query_parameters(self):
301301
parameters = {
302302
**self.serialize_query_param(
303-
"api-version", "2025-04-01-preview",
303+
"api-version", "2025-10-01-preview",
304304
required=True,
305305
),
306306
}

src/devcenter/azext_devcenter/aaz/latest/devcenter/admin/attached_network/_wait.py

Lines changed: 2 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.devcenter/devcenters/{}/attachednetworks/{}", "2025-04-01-preview"],
23+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/attachednetworks/{}", "2025-10-01-preview"],
2424
]
2525
}
2626

@@ -137,7 +137,7 @@ def url_parameters(self):
137137
def query_parameters(self):
138138
parameters = {
139139
**self.serialize_query_param(
140-
"api-version", "2025-04-01-preview",
140+
"api-version", "2025-10-01-preview",
141141
required=True,
142142
),
143143
}

src/devcenter/azext_devcenter/aaz/latest/devcenter/admin/catalog/_connect.py

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

2424
_aaz_info = {
25-
"version": "2025-04-01-preview",
25+
"version": "2025-10-01-preview",
2626
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/catalogs/{}/connect", "2025-04-01-preview"],
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.devcenter/devcenters/{}/catalogs/{}/connect", "2025-10-01-preview"],
2828
]
2929
}
3030

@@ -153,7 +153,7 @@ def url_parameters(self):
153153
def query_parameters(self):
154154
parameters = {
155155
**self.serialize_query_param(
156-
"api-version", "2025-04-01-preview",
156+
"api-version", "2025-10-01-preview",
157157
required=True,
158158
),
159159
}

0 commit comments

Comments
 (0)