Skip to content

{App Service} Support Isolated v4 plan SKUs - #33892

Open
Jordan Selig (seligj95) wants to merge 4 commits into
Azure:devfrom
seligj95:jordanselig-microsoft-fix-isolated-v4-skus
Open

{App Service} Support Isolated v4 plan SKUs#33892
Jordan Selig (seligj95) wants to merge 4 commits into
Azure:devfrom
seligj95:jordanselig-microsoft-fix-isolated-v4-skus

Conversation

@seligj95

@seligj95 Jordan Selig (seligj95) commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

🤖 PR Validation — ⚠️ Review suggested

Breaking Changes Tests
⚠️ None ️✔️ 130/130
⚠️AzureCLI-BreakingChangeTest
⚠️appservice
rule cmd_name rule_message suggest_message
⚠️ 1010 - ParaPropUpdate appservice list-locations cmd appservice list-locations update parameter sku: updated property choices from ['B1', 'B2', 'B3', 'D1', 'F1', 'FREE', 'I1MV2', 'I1V2', 'I2MV2', 'I2V2', 'I3MV2', 'I3V2', 'I4MV2', 'I4V2', 'I5MV2', 'I5V2', 'I6V2', 'P0V3', 'P0V4', 'P1MV3', 'P1MV4', 'P1V2', 'P1V3', 'P1V4', 'P2MV3', 'P2MV4', 'P2V2', 'P2V3', 'P2V4', 'P3MV3', 'P3MV4', 'P3V2', 'P3V3', 'P3V4', 'P4MV3', 'P4MV4', 'P5MV3', 'P5MV4', 'S1', 'S2', 'S3', 'SHARED', 'WS1', 'WS2', 'WS3'] to ['B1', 'B2', 'B3', 'D1', 'F1', 'FREE', 'I1MV2', 'I1MV4', 'I1V2', 'I1V4', 'I2MV2', 'I2MV4', 'I2V2', 'I2V4', 'I3MV2', 'I3MV4', 'I3V2', 'I3V4', 'I4MV2', 'I4MV4', 'I4V2', 'I4V4', 'I5MV2', 'I5MV4', 'I5V2', 'I5V4', 'I6V2', 'I6V4', 'P0V3', 'P0V4', 'P1MV3', 'P1MV4', 'P1V2', 'P1V3', 'P1V4', 'P2MV3', 'P2MV4', 'P2V2', 'P2V3', 'P2V4', 'P3MV3', 'P3MV4', 'P3V2', 'P3V3', 'P3V4', 'P4MV3', 'P4MV4', 'P5MV3', 'P5MV4', 'S1', 'S2', 'S3', 'SHARED', 'WS1', 'WS2', 'WS3']
⚠️ 1010 - ParaPropUpdate appservice plan create cmd appservice plan create update parameter sku: updated property choices from ['B1', 'B2', 'B3', 'D1', 'F1', 'FREE', 'I1MV2', 'I1V2', 'I2MV2', 'I2V2', 'I3MV2', 'I3V2', 'I4MV2', 'I4V2', 'I5MV2', 'I5V2', 'I6V2', 'P0V3', 'P0V4', 'P1MV3', 'P1MV4', 'P1V2', 'P1V3', 'P1V4', 'P2MV3', 'P2MV4', 'P2V2', 'P2V3', 'P2V4', 'P3MV3', 'P3MV4', 'P3V2', 'P3V3', 'P3V4', 'P4MV3', 'P4MV4', 'P5MV3', 'P5MV4', 'S1', 'S2', 'S3', 'SHARED', 'WS1', 'WS2', 'WS3'] to ['B1', 'B2', 'B3', 'D1', 'F1', 'FREE', 'I1MV2', 'I1MV4', 'I1V2', 'I1V4', 'I2MV2', 'I2MV4', 'I2V2', 'I2V4', 'I3MV2', 'I3MV4', 'I3V2', 'I3V4', 'I4MV2', 'I4MV4', 'I4V2', 'I4V4', 'I5MV2', 'I5MV4', 'I5V2', 'I5V4', 'I6V2', 'I6V4', 'P0V3', 'P0V4', 'P1MV3', 'P1MV4', 'P1V2', 'P1V3', 'P1V4', 'P2MV3', 'P2MV4', 'P2V2', 'P2V3', 'P2V4', 'P3MV3', 'P3MV4', 'P3V2', 'P3V3', 'P3V4', 'P4MV3', 'P4MV4', 'P5MV3', 'P5MV4', 'S1', 'S2', 'S3', 'SHARED', 'WS1', 'WS2', 'WS3']
⚠️ 1010 - ParaPropUpdate appservice plan update cmd appservice plan update update parameter sku: updated property choices from ['B1', 'B2', 'B3', 'D1', 'F1', 'FREE', 'I1MV2', 'I1V2', 'I2MV2', 'I2V2', 'I3MV2', 'I3V2', 'I4MV2', 'I4V2', 'I5MV2', 'I5V2', 'I6V2', 'P0V3', 'P0V4', 'P1MV3', 'P1MV4', 'P1V2', 'P1V3', 'P1V4', 'P2MV3', 'P2MV4', 'P2V2', 'P2V3', 'P2V4', 'P3MV3', 'P3MV4', 'P3V2', 'P3V3', 'P3V4', 'P4MV3', 'P4MV4', 'P5MV3', 'P5MV4', 'S1', 'S2', 'S3', 'SHARED', 'WS1', 'WS2', 'WS3'] to ['B1', 'B2', 'B3', 'D1', 'F1', 'FREE', 'I1MV2', 'I1MV4', 'I1V2', 'I1V4', 'I2MV2', 'I2MV4', 'I2V2', 'I2V4', 'I3MV2', 'I3MV4', 'I3V2', 'I3V4', 'I4MV2', 'I4MV4', 'I4V2', 'I4V4', 'I5MV2', 'I5MV4', 'I5V2', 'I5V4', 'I6V2', 'I6V4', 'P0V3', 'P0V4', 'P1MV3', 'P1MV4', 'P1V2', 'P1V3', 'P1V4', 'P2MV3', 'P2MV4', 'P2V2', 'P2V3', 'P2V4', 'P3MV3', 'P3MV4', 'P3V2', 'P3V3', 'P3V4', 'P4MV3', 'P4MV4', 'P5MV3', 'P5MV4', 'S1', 'S2', 'S3', 'SHARED', 'WS1', 'WS2', 'WS3']
⚠️ 1010 - ParaPropUpdate webapp up cmd webapp up update parameter sku: updated property choices from ['B1', 'B2', 'B3', 'D1', 'F1', 'FREE', 'I1MV2', 'I1V2', 'I2MV2', 'I2V2', 'I3MV2', 'I3V2', 'I4MV2', 'I4V2', 'I5MV2', 'I5V2', 'I6V2', 'P0V3', 'P0V4', 'P1MV3', 'P1MV4', 'P1V2', 'P1V3', 'P1V4', 'P2MV3', 'P2MV4', 'P2V2', 'P2V3', 'P2V4', 'P3MV3', 'P3MV4', 'P3V2', 'P3V3', 'P3V4', 'P4MV3', 'P4MV4', 'P5MV3', 'P5MV4', 'S1', 'S2', 'S3', 'SHARED', 'WS1', 'WS2', 'WS3'] to ['B1', 'B2', 'B3', 'D1', 'F1', 'FREE', 'I1MV2', 'I1MV4', 'I1V2', 'I1V4', 'I2MV2', 'I2MV4', 'I2V2', 'I2V4', 'I3MV2', 'I3MV4', 'I3V2', 'I3V4', 'I4MV2', 'I4MV4', 'I4V2', 'I4V4', 'I5MV2', 'I5MV4', 'I5V2', 'I5V4', 'I6V2', 'I6V4', 'P0V3', 'P0V4', 'P1MV3', 'P1MV4', 'P1V2', 'P1V3', 'P1V4', 'P2MV3', 'P2MV4', 'P2V2', 'P2V3', 'P2V4', 'P3MV3', 'P3MV4', 'P3V2', 'P3V3', 'P3V4', 'P4MV3', 'P4MV4', 'P5MV3', 'P5MV4', 'S1', 'S2', 'S3', 'SHARED', 'WS1', 'WS2', 'WS3']

Description

Add Azure CLI support for the Isolated v4 App Service Environment SKUs documented at https://learn.microsoft.com/azure/app-service/environment/app-service-configure-isolated-v4-tier:

  • Accept I1V4-I6V4 and I1MV4-I5MV4 for az appservice plan create/update
  • Map these SKUs to the IsolatedV4 ARM tier
  • Require an App Service Environment and allow zone-redundant plans
  • Update command help and release history
  • Add regression coverage for all supported Isolated v4 SKUs

Testing

  • python3 -m pytest src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_appservice_validators_thru_mock.py -q
  • python3 -m pytest src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestCreateAppServicePlanDefaults -q
  • python3 -m flake8 on all changed Python files
  • Verified a local az appservice plan create ... --sku I1V4 invocation proceeds past argument and SKU validation to ASE lookup

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI lite review requested due to automatic review settings August 13, 2026 14:43
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Azure CLI support for App Service Environment (ASE) Isolated v4 plan SKUs by recognizing the new SKU names and mapping them to the appropriate tier used in plan creation/update flows.

Changes:

  • Introduces ISOLATED_V4_SKUS and uses it to map I*V4/I*MV4 SKUs to the IsolatedV4 tier.
  • Extends App Service plan SKU validation and parameter enums to accept Isolated v4 SKUs and treat them as ASE-only.
  • Adds unit tests covering Isolated v4 tier mapping and ASE requirement, and updates release history.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/azure-cli/HISTORY.rst Documents the new Isolated v4 SKU support in release history.
src/azure-cli/azure/cli/command_modules/appservice/utils.py Maps Isolated v4 SKU names to the IsolatedV4 tier via get_sku_tier.
src/azure-cli/azure/cli/command_modules/appservice/_validators.py Treats Isolated v4 SKUs as ASE-only and allows IsolatedV4 for zone redundancy gating.
src/azure-cli/azure/cli/command_modules/appservice/_params.py Extends the --sku enum/help to include Isolated v4 SKUs.
src/azure-cli/azure/cli/command_modules/appservice/_constants.py Adds the centralized ISOLATED_V4_SKUS list.
src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_appservice_validators_thru_mock.py Adds regression tests for Isolated v4 tier mapping and ASE requirement.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/azure-cli/azure/cli/command_modules/appservice/_params.py
Comment thread src/azure-cli/azure/cli/command_modules/appservice/_params.py
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).

@yonzhan

Copy link
Copy Markdown
Collaborator

App Service

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants