Skip to content

Support Isolated v4 App Service Plan SKUs - #30005

Open
Jordan Selig (seligj95) wants to merge 2 commits into
Azure:mainfrom
seligj95:jordanselig-microsoft-support-isolated-v4-skus
Open

Support Isolated v4 App Service Plan SKUs#30005
Jordan Selig (seligj95) wants to merge 2 commits into
Azure:mainfrom
seligj95:jordanselig-microsoft-support-isolated-v4-skus

Conversation

@seligj95

Copy link
Copy Markdown

Description

Add Azure PowerShell 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.

  • Support I1V4-I6V4 and I1MV4-I5MV4 in New-AzAppServicePlan and Set-AzAppServicePlan
  • Generate the correct Isolated v4 ARM SKU names instead of falling back to legacy Isolated names such as I1
  • Update parameter completion and help for the new tiers and worker sizes
  • Add focused regression coverage for SKU name generation and create/update request models

Root cause

CmdletHelpers.GetSkuName only special-cased IsolatedV2. Passing -Tier IsolatedV4 -WorkerSize Small therefore produced Sku.Name = I1 with Sku.Tier = IsolatedV4, which the service rejected as a bad request. Equivalent Bicep deployments worked because they supplied the correct I1V4 SKU name directly.

Testing

  • git diff --check
  • Targeted build/test restore attempted but blocked by NuGet SSL connectivity in the local environment

Checklist

  • Updated Websites changelog
  • Updated cmdlet reference help
  • Added regression tests
  • Targeted Websites build and tests (blocked by NuGet SSL connectivity)

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

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

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 Websites module support for the App Service Environment (ASE) Isolated v4 SKUs by generating correct ARM SKU names for create/update flows, updating cmdlet parameter completion/help, and introducing focused regression coverage for SKU model generation.

Changes:

  • Extend SKU name generation to support IsolatedV4 (I1V4I6V4) and IsolatedMV4 (I1MV4I5MV4) and normalize the tier for memory-optimized v4.
  • Refactor App Service Plan create/update paths to use shared SKU construction/update helpers.
  • Add regression tests for SKU tier/name generation behavior and update user-facing help/changelog.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/Websites/Websites/Utilities/CmdletHelpers.cs Adds Isolated v4 SKU name handling plus helper methods to normalize tier and update/create SkuDescription.
src/Websites/Websites/help/Set-AzAppServicePlan.md Updates examples and parameter help text for the new Isolated v4 tiers/worker sizes.
src/Websites/Websites/help/New-AzAppServicePlan.md Adds new examples and updates parameter help/accepted values for Isolated v4 tiers and worker sizes.
src/Websites/Websites/Cmdlets/AppServicePlans/SetAzureAppServicePlan.cs Uses centralized SKU update helper during plan updates and updates argument completion/help.
src/Websites/Websites/Cmdlets/AppServicePlans/NewAzureAppServicePlan.cs Uses centralized SKU creation helper and updates tier/worker-size validation metadata and HyperV messaging.
src/Websites/Websites/ChangeLog.md Adds an “Upcoming Release” entry for Isolated v4 support.
src/Websites/Websites.Test/ScenarioTests/AppServicePlanSkuTests.cs Adds unit-style regression tests for SKU tier/name generation and update behavior.

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

Comment thread src/Websites/Websites/Utilities/CmdletHelpers.cs
@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

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

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

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

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Suppressed comments (1)

src/Websites/Websites/Cmdlets/AppServicePlans/NewAzureAppServicePlan.cs:84

  • The HyperV tier gating uses case-sensitive string comparisons (e.g., Tier != "IsolatedV4"). Since Tier is a free-form string (no ValidateSet), users can pass different casing (e.g., isolatedv4) and incorrectly get the "HyperV switch is only allowed" exception (or skip the PremiumContainer check). Consider using string.Equals(..., OrdinalIgnoreCase) (and a local normalized tier value) and throw an argument-focused exception type instead of Exception.
            if (HyperV.IsPresent &&
                (Tier != "PremiumContainer" && Tier != "PremiumV3" && Tier != "IsolatedV2" && Tier != "PremiumMV3" && Tier != "IsolatedV4" && Tier != "IsolatedMV4"))
            {
                throw new Exception("HyperV switch is only allowed for PremiumContainer, PremiumV3, PremiumMV3, IsolatedV2, IsolatedV4, or IsolatedMV4 tiers");
            }

@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

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

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.

3 participants