[App Service] BREAKING CHANGE: Revamp az webapp list-runtimes with structured table output#32903
[App Service] BREAKING CHANGE: Revamp az webapp list-runtimes with structured table output#32903
az webapp list-runtimes with structured table output#32903Conversation
Replace flat string-list output with structured table showing OS, Runtime, Version, Config, Support status, and End of Life date. Changes: - Output is now a list of dicts instead of flat string list (breaking change) - Add --runtime filter (dotnet/node/php/python/java) - Add --support filter (supported/active/near/eol/all) - Show EOL dates and support lifecycle status (Active/Near/EOL) - Include Java EOL dates by cross-referencing the Java stack data - Register table transformer for clean -o table rendering - Remove deprecated --linux and --show-runtime-details params - Update tests and recording
️✔️AzureCLI-FullTest
|
❌AzureCLI-BreakingChangeTest
Please submit your Breaking Change Pre-announcement ASAP if you haven't already. Please note:
|
|
Thank you for your contribution! We will review the pull request and get back to you soon. |
|
The git hooks are available for azure-cli and azure-cli-extensions repos. They could help you run required checks before creating the PR. Please sync the latest code with latest dev branch (for azure-cli) or main branch (for azure-cli-extensions). pip install azdev --upgrade
azdev setup -c <your azure-cli repo path> -r <your azure-cli-extensions repo path>
|
az webapp list-runtimes with structured table outputaz webapp list-runtimes with structured table output
There was a problem hiding this comment.
Pull request overview
Revamps az webapp list-runtimes from a flat string list to a structured runtime table and introduces filtering by runtime family and support lifecycle.
Changes:
- Updated
webapp list-runtimesto return structured rows with OS/runtime/version/config/support/EOL and added table transformer. - Added
--runtimeand--supportfilters; removed deprecated--linuxand--show-runtime-details. - Updated stack parsing to compute support status and attach Java EOL dates by cross-referencing Java stack metadata.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands.py | Adds basic scenario invocations for new --runtime and --support filters. |
| src/azure-cli/azure/cli/command_modules/appservice/custom.py | Implements structured stack output, support/EOL computation, new filters, and Java EOL cross-referencing. |
| src/azure-cli/azure/cli/command_modules/appservice/commands.py | Adds table transformer for ordered table columns for list-runtimes. |
| src/azure-cli/azure/cli/command_modules/appservice/_params.py | Removes deprecated params and adds new --runtime/--support CLI arguments. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| results.append({ | ||
| 'OS': stack.os, | ||
| 'runtime': stack.runtime_family, | ||
| 'version': stack.version_label or '', | ||
| 'config': stack.display_name, | ||
| 'support': support_status, | ||
| 'end_of_life': stack.eol_date or '-', | ||
| }) |
There was a problem hiding this comment.
The structured output mixes casing/styles in its keys (OS vs end_of_life vs lowercase keys). Since this command’s JSON output is a breaking-change surface, it would be better to pick one consistent schema (all lowercase snake_case is common in CLI JSON) and let the table transformer control human-friendly column titles. This also avoids forcing API consumers to handle special-case keys like OS.
| if support_status == 'EOL': | ||
| continue | ||
| elif support_filter == 'active': | ||
| if support_status not in ('Active', 'n/a'): |
There was a problem hiding this comment.
The --support active filter currently includes stacks with support_status == 'n/a' (i.e., missing/unparseable EOL), which makes the filter semantics ambiguous: active usually implies a known, non-EOL lifecycle. Consider either (1) excluding n/a from active, or (2) renaming n/a to something explicit like Unknown and documenting/handling it as a separate category.
| if support_status not in ('Active', 'n/a'): | |
| # Only treat stacks with a known, non-EOL lifecycle as "active". | |
| # Stacks with unknown support status ('n/a') are intentionally excluded. | |
| if support_status != 'Active': |
Related command
az webapp list-runtimesDescription
Replace the flat string-list output of
az webapp list-runtimeswith a structured table showing OS, Runtime, Version, Config, Support lifecycle status, and End of Life date.Add new
--runtimefilter (dotnet/node/php/python/java) and--supportfilter (supported/active/near/eol/all) parameters.Include Java EOL dates by cross-referencing the Java stack data with container entries.
Remove deprecated
--linuxand--show-runtime-detailsparameters.Testing Guide
History Notes
[App Service] BREAKING CHANGE:
az webapp list-runtimes: Output changed from flat string list to structured list of dicts with keys: os, runtime, version, config, support, end_of_life. Added--runtimeand--supportfilter parameters. Removed deprecated--linuxand--show-runtime-detailsparameters.This checklist is used to make sure that common guidelines for a pull request are followed.
The PR title and description has followed the guideline in Submitting Pull Requests.
I adhere to the Command Guidelines.
I adhere to the Error Handling Guidelines.