Skip to content

Commit 1903f73

Browse files
Merge remote-tracking branch 'upstream/dev' into announce-deprecation-of-network-resource-provisioning-from-any-flexible-server-commands
2 parents 00f6884 + 8fbf679 commit 1903f73

110 files changed

Lines changed: 12116 additions & 7436 deletions

File tree

Some content is hidden

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

.gitattributes

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ build_scripts/windows/scripts/az eol=lf
1616
# sh scripts should be LF
1717
*.sh eol=lf
1818

19+
# Git hook scripts (no extension) should be LF to work on macOS/Linux
20+
.githooks/pre-commit eol=lf
21+
.githooks/pre-push eol=lf
22+
1923
# Generated latest index assets should always use LF to avoid cross-platform churn
2024
src/azure-cli-core/azure/cli/core/commandIndex.latest.json text eol=lf
2125
src/azure-cli-core/azure/cli/core/helpIndex.latest.json text eol=lf

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
/src/azure-cli-core/ @necusjz @DanielMicrosoft @ReaNAiveD @yonzhan @bebound @jiasli
1717
/src/azure-cli-core/azure/cli/core/_profile.py @isra-fel @notyashhh @xuming-ms @teresaritorto
1818
/src/azure-cli-core/azure/cli/core/auth/ @isra-fel @notyashhh @xuming-ms @teresaritorto
19+
/src/azure-cli-core/azure/cli/core/cloud.py @isra-fel @notyashhh @xuming-ms @teresaritorto
1920
/src/azure-cli-core/azure/cli/core/extension/ @VeryEarly @Pan-Qi @jsntcy @necusjz
2021
/src/azure-cli-core/azure/cli/core/style.py @NoriZC @yanzhudd @teresaritorto
2122
/src/azure-cli-core/azure/cli/core/aaz/ @VeryEarly @Pan-Qi @jsntcy @necusjz

.github/policies/resourceManagement.yml

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,174 @@ configuration:
109109
- removeLabel:
110110
label: no-recent-activity
111111
description: '[Resolve Workflow] Issue Addressed Label Applied'
112+
- if:
113+
- payloadType: Pull_Request
114+
- isAction:
115+
action: Labeled
116+
- hasLabel:
117+
label: act-identity-squad
118+
then:
119+
- requestReview:
120+
reviewer: act-identity-squad
121+
- mentionUsers:
122+
mentionees:
123+
- act-identity-squad
124+
replyTemplate: ":bell: Routing this PR to ${mentionees}."
125+
assignMentionees: False
126+
description: '[Squad Auto-Assign] Request review & mention when PR labeled act-identity-squad'
127+
- if:
128+
- payloadType: Pull_Request
129+
- isAction:
130+
action: Labeled
131+
- hasLabel:
132+
label: act-observability-squad
133+
then:
134+
- requestReview:
135+
reviewer: act-observability-squad
136+
- mentionUsers:
137+
mentionees:
138+
- act-observability-squad
139+
replyTemplate: ":bell: Routing this PR to ${mentionees}."
140+
assignMentionees: False
141+
description: '[Squad Auto-Assign] Request review & mention when PR labeled act-observability-squad'
142+
- if:
143+
- payloadType: Pull_Request
144+
- isAction:
145+
action: Labeled
146+
- hasLabel:
147+
label: act-codegen-extensibility-squad
148+
then:
149+
- requestReview:
150+
reviewer: act-codegen-extensibility-squad
151+
- mentionUsers:
152+
mentionees:
153+
- act-codegen-extensibility-squad
154+
replyTemplate: ":bell: Routing this PR to ${mentionees}."
155+
assignMentionees: False
156+
description: '[Squad Auto-Assign] Request review & mention when PR labeled act-codegen-extensibility-squad'
157+
- if:
158+
- payloadType: Pull_Request
159+
- isAction:
160+
action: Labeled
161+
- hasLabel:
162+
label: act-quality-productivity-squad
163+
then:
164+
- requestReview:
165+
reviewer: act-quality-productivity-squad
166+
- mentionUsers:
167+
mentionees:
168+
- act-quality-productivity-squad
169+
replyTemplate: ":bell: Routing this PR to ${mentionees}."
170+
assignMentionees: False
171+
description: '[Squad Auto-Assign] Request review & mention when PR labeled act-quality-productivity-squad'
172+
- if:
173+
- payloadType: Pull_Request
174+
- isAction:
175+
action: Labeled
176+
- hasLabel:
177+
label: act-platform-engineering-squad
178+
then:
179+
- requestReview:
180+
reviewer: act-platform-engineering-squad
181+
- mentionUsers:
182+
mentionees:
183+
- act-platform-engineering-squad
184+
replyTemplate: ":bell: Routing this PR to ${mentionees}."
185+
assignMentionees: False
186+
description: '[Squad Auto-Assign] Request review & mention when PR labeled act-platform-engineering-squad'
187+
- if:
188+
- payloadType: Pull_Request
189+
- isAction:
190+
action: Labeled
191+
- hasLabel:
192+
label: act-experience-enablement-squad
193+
then:
194+
- requestReview:
195+
reviewer: act-experience-enablement-squad
196+
- mentionUsers:
197+
mentionees:
198+
- act-experience-enablement-squad
199+
replyTemplate: ":bell: Routing this PR to ${mentionees}."
200+
assignMentionees: False
201+
description: '[Squad Auto-Assign] Request review & mention when PR labeled act-experience-enablement-squad'
202+
- if:
203+
- payloadType: Issues
204+
- isAction:
205+
action: Labeled
206+
- hasLabel:
207+
label: act-identity-squad
208+
then:
209+
- mentionUsers:
210+
mentionees:
211+
- act-identity-squad
212+
replyTemplate: ":bell: Routing this issue to ${mentionees}."
213+
assignMentionees: False
214+
description: '[Squad Auto-Assign] Mention when issue labeled act-identity-squad'
215+
- if:
216+
- payloadType: Issues
217+
- isAction:
218+
action: Labeled
219+
- hasLabel:
220+
label: act-observability-squad
221+
then:
222+
- mentionUsers:
223+
mentionees:
224+
- act-observability-squad
225+
replyTemplate: ":bell: Routing this issue to ${mentionees}."
226+
assignMentionees: False
227+
description: '[Squad Auto-Assign] Mention when issue labeled act-observability-squad'
228+
- if:
229+
- payloadType: Issues
230+
- isAction:
231+
action: Labeled
232+
- hasLabel:
233+
label: act-codegen-extensibility-squad
234+
then:
235+
- mentionUsers:
236+
mentionees:
237+
- act-codegen-extensibility-squad
238+
replyTemplate: ":bell: Routing this issue to ${mentionees}."
239+
assignMentionees: False
240+
description: '[Squad Auto-Assign] Mention when issue labeled act-codegen-extensibility-squad'
241+
- if:
242+
- payloadType: Issues
243+
- isAction:
244+
action: Labeled
245+
- hasLabel:
246+
label: act-quality-productivity-squad
247+
then:
248+
- mentionUsers:
249+
mentionees:
250+
- act-quality-productivity-squad
251+
replyTemplate: ":bell: Routing this issue to ${mentionees}."
252+
assignMentionees: False
253+
description: '[Squad Auto-Assign] Mention when issue labeled act-quality-productivity-squad'
254+
- if:
255+
- payloadType: Issues
256+
- isAction:
257+
action: Labeled
258+
- hasLabel:
259+
label: act-platform-engineering-squad
260+
then:
261+
- mentionUsers:
262+
mentionees:
263+
- act-platform-engineering-squad
264+
replyTemplate: ":bell: Routing this issue to ${mentionees}."
265+
assignMentionees: False
266+
description: '[Squad Auto-Assign] Mention when issue labeled act-platform-engineering-squad'
267+
- if:
268+
- payloadType: Issues
269+
- isAction:
270+
action: Labeled
271+
- hasLabel:
272+
label: act-experience-enablement-squad
273+
then:
274+
- mentionUsers:
275+
mentionees:
276+
- act-experience-enablement-squad
277+
replyTemplate: ":bell: Routing this issue to ${mentionees}."
278+
assignMentionees: False
279+
description: '[Squad Auto-Assign] Mention when issue labeled act-experience-enablement-squad'
112280
- if:
113281
- payloadType: Issue_Comment
114282
- hasLabel:

azure-pipelines.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1094,7 +1094,7 @@ jobs:
10941094
- bash: |
10951095
set -ev
10961096
. env/bin/activate
1097-
python scripts/generate_latest_indices.py verify
1097+
azdev latest-index verify --repo .
10981098
displayName: 'Verify generated latest indices'
10991099
11001100
- job: CheckStyle

doc/assets/batched-ci-pipeline.png

126 KB
Loading

doc/authoring_command_modules/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,27 @@ Style Checks
163163
azdev style <module> [--pylint] [--pep8]
164164
```
165165

166+
Latest Packaged Indices
167+
-----------------------
168+
169+
Use azdev wrappers around Azure CLI's latest index generation script:
170+
171+
```
172+
azdev latest-index generate
173+
azdev latest-index verify
174+
```
175+
176+
You can pass an explicit Azure CLI checkout path when needed:
177+
178+
```
179+
azdev latest-index generate --cli /path/to/azure-cli
180+
azdev latest-index verify --cli /path/to/azure-cli
181+
```
182+
183+
`azdev latest-index verify` exits non-zero when generated output differs from
184+
the checked-in `commandIndex.latest.json` or `helpIndex.latest.json`, making it
185+
CI-friendly.
186+
166187
Submitting Pull Requests
167188
------------------------
168189

doc/scrum-master's-playbook.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
The Scrum Master role of CLI is primarily release-focused, but also includes several ongoing responsibilities:
2-
- Host the weekly sync meeting every Thursday.
32
- Attend office hours held on Tuesday and Friday.
43
- Join this [channel](https://teams.microsoft.com/l/chat/19:e4bb31fd84ab4f2f9375ad848e8a80fa@thread.v2/conversations?context=%7B%22contextType%22%3A%22chat%22%7D). If there is any topic related to CLI requested, make sure to join the call. Request product manager to add you to the meeting series.
5-
- Monitor Batched CI on a regular basis:
4+
- Monitor [Batched CI](https://dev.azure.com/azclitools/public/_build?definitionId=32&_a=summary&repositoryFilter=12&branchFilter=487%2C487%2C487) on a regular basis:
65

7-
![](https://raw.githubusercontent.com/Azure/azure-cli/refs/heads/dev/doc/assets/batched-ci.png)
6+
![](https://raw.githubusercontent.com/Azure/azure-cli/refs/heads/dev/doc/assets/batched-ci-pipeline.png)
87
- Ensure that Batched CI is in a normal state before the release. If there are any failures, coordinate with the corresponding engineer to resolve them.
98

109
The Azure CLI release process is highly automated **with some manual intervention steps** and has evolved to use both Azure DevOps and GitHub Actions.

scripts/generate_latest_indices.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,9 @@ def _run_verify(command_text, help_text):
278278
print('Generated latest index files are out of date:')
279279
for path in mismatched:
280280
print(f' - {path.relative_to(REPO_ROOT)}')
281-
print('Run:')
281+
print('Run either:')
282+
print(' azdev latest-index generate --cli .')
283+
print('or:')
282284
print(' python scripts/generate_latest_indices.py generate')
283285
return 1
284286

src/azure-cli-core/HISTORY.rst

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

6+
2.85.0
7+
++++++
8+
* Resolve CVE-2026-26007 (#32879)
9+
* `az *`: Make `--acquire-policy-token` and `--change-reference` global arguments available by default, removing the need for `core.enable_policy_token` configuration (#32883)
10+
* Resolve CVE-2026-27448 (#33035)
11+
* Resolve CVE-2026-27459 (#33035)
12+
* Resolve CVE-2026-32597 (#33034)
13+
* Resolve CVE-2026-25645 (#33081)
14+
* Resolve CVE-2026-34073 (#33099)
15+
616
2.84.0
717
++++++
818
* Minor fixes

src/azure-cli-core/azure/cli/core/__init__.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@
44
# --------------------------------------------------------------------------------------------
55
# pylint: disable=line-too-long
66

7-
__version__ = "2.84.0"
7+
__version__ = "2.85.0"
88

99
import os
1010
import sys
1111
import json
12-
import timeit
13-
import concurrent.futures
14-
from concurrent.futures import ThreadPoolExecutor
12+
import time
1513

1614
from knack.cli import CLI
1715
from knack.commands import CLICommandsLoader
@@ -322,14 +320,14 @@ def _update_command_table_from_modules(args, command_modules=None):
322320
except ImportError as e:
323321
logger.warning(e)
324322

325-
start_time = timeit.default_timer()
323+
start_time = time.perf_counter()
326324
logger.debug("Loading command modules...")
327325
results = self._load_modules(args, command_modules)
328326

329327
count, cumulative_group_count, cumulative_command_count = \
330328
self._process_results_with_timing(results)
331329

332-
total_elapsed_time = timeit.default_timer() - start_time
330+
total_elapsed_time = time.perf_counter() - start_time
333331
# Summary line
334332
logger.debug(self.item_format_string,
335333
"Total ({})".format(count), total_elapsed_time,
@@ -404,7 +402,7 @@ def _filter_modname(extensions):
404402
# Add to the map. This needs to happen before we load commands as registering a command
405403
# from an extension requires this map to be up-to-date.
406404
# self._mod_to_ext_map[ext_mod] = ext_name
407-
start_time = timeit.default_timer()
405+
start_time = time.perf_counter()
408406
extension_command_table, extension_group_table, extension_command_loader = \
409407
_load_extension_command_loader(self, args, ext_mod)
410408
import_extension_breaking_changes(ext_mod)
@@ -427,7 +425,7 @@ def _filter_modname(extensions):
427425
self.command_table.update(extension_command_table)
428426
self.command_group_table.update(extension_group_table)
429427

430-
elapsed_time = timeit.default_timer() - start_time
428+
elapsed_time = time.perf_counter() - start_time
431429
logger.debug(self.item_ext_format_string, ext_name, elapsed_time,
432430
len(extension_group_table), len(extension_command_table),
433431
ext_dir)
@@ -667,6 +665,8 @@ def load_arguments(self, command=None):
667665

668666
def _load_modules(self, args, command_modules):
669667
"""Load command modules using ThreadPoolExecutor with timeout protection."""
668+
import concurrent.futures
669+
from concurrent.futures import ThreadPoolExecutor
670670
from azure.cli.core.commands import BLOCKED_MODS
671671

672672
results = []
@@ -708,10 +708,10 @@ def _load_single_module(self, mod, args):
708708
from azure.cli.core.commands import _load_module_command_loader
709709
import traceback
710710
try:
711-
start_time = timeit.default_timer()
711+
start_time = time.perf_counter()
712712
module_command_table, module_group_table, command_loader = _load_module_command_loader(self, args, mod)
713713
import_module_breaking_changes(mod)
714-
elapsed_time = timeit.default_timer() - start_time
714+
elapsed_time = time.perf_counter() - start_time
715715
return ModuleLoadResult(mod, module_command_table, module_group_table, elapsed_time, command_loader=command_loader)
716716
except Exception as ex: # pylint: disable=broad-except
717717
tb_str = traceback.format_exc()
@@ -1227,7 +1227,7 @@ def update(self, command_table):
12271227
12281228
:param command_table: The command table built by azure.cli.core.MainCommandsLoader.load_command_table
12291229
"""
1230-
start_time = timeit.default_timer()
1230+
start_time = time.perf_counter()
12311231
self.INDEX[self._COMMAND_INDEX_VERSION] = __version__
12321232
self.INDEX[self._COMMAND_INDEX_CLOUD_PROFILE] = self.cloud_profile
12331233
from collections import defaultdict
@@ -1242,7 +1242,7 @@ def update(self, command_table):
12421242
if module_name not in index[top_command]:
12431243
index[top_command].append(module_name)
12441244

1245-
elapsed_time = timeit.default_timer() - start_time
1245+
elapsed_time = time.perf_counter() - start_time
12461246
self.INDEX[self._COMMAND_INDEX] = index
12471247

12481248
self.update_extension_index(command_table)

0 commit comments

Comments
 (0)