You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Az.EdgeAction] Adopt stable 2026-10-01 API and expand scenario coverage - #30269
Updates Az.EdgeAction to the stable 2026-10-01 API, with scenario coverage, recordings, public help, and a self-contained development guide. AutoRest is pinned to Azure/azure-rest-api-specs commit 2e2b290fd446b03bbddcdc31098ff97e7218f0cf, using specification/cdn/resource-manager/Microsoft.Cdn/EdgeActions/stable/2026-10-01/openapi.json. This is the intended input in both README and how-to; the earlier 65eb9311d304dcf9874d05fdec39ea65baae8db8 pin is superseded, not equivalent. See validation provenance below.
Changes
Refreshes maintained AutoRest configuration, UX metadata, command help, examples, and the module changelog. Intentional public-surface change: the parent Update-AzEdgeAction PATCH schema is reduced to its supported tags field. The generated expanded parameter sets no longer expose -Property, -SkuName, or -SkuTier: the properties model is empty and the service rejects supplied SKU values. All four parent Update parameter sets remain, including Tag, JSON, and identity inputs; New-AzEdgeAction retains SKU parameters. Both help copies reflect this change.
Adds active Update scenarios for EdgeActions, versions, and execution filters. Parent tag replacement uses expanded parameters; clearing uses -JsonString '{"tags":{}}' because the current expanded serializer omits empty objects. Version tests preserve default/deployment state; default changes use Switch-AzEdgeActionVersionDefault. Filter tests cover version, header, and tag updates, including omitted-property preservation.
Updates all 15 scenario recording files together with compatible env.json metadata and separates fixture setup/cleanup recording contexts. Each run generates a resource group named rgps-powershellsdk-edgeaction-tests-<12 hex characters> and a distinct randomized name for each scenario fixture. Collision checks refuse pre-existing resources; persisted ownership and subscription/tenant/environment checks restrict cleanup to confirmed run-owned resources. Cleanup deletes execution filters, non-default versions, the current default version, then the parent and run-owned group. Azure resource names are not deliberately reused across runs. Concurrent runs still require separate artifact directories because environment metadata and recording files are shared within one directory.
After confirmed Record cleanup, normalizes the resource-group name to powershellsdk-edgeaction-tests-rgname and replaces polling URL t, c, s, and h query values with Sanitized consistently in headers, request URLs, and lookup keys. Normalization detects lookup collisions before writing recordings and preserves operation IDs, API versions, other query parameters, embedded payload strings, and recording counters. Existing complete recordings can be sanitized without live re-recording, followed by offline Playback. Maintained offline tests cover normalization and recovery on Windows PowerShell 5.1 and PowerShell 7, including inherited previous-configuration settings.
Adds maintained response-contract assertions for successful resource responses, asynchronous status, and final Location results. Non-status monitor fields are outside the current assertion scope; the documented compatibility exceptions remain explicit.
Documents manual prerequisites, package access, shared repository preparation/build commands, parent help/MAML generation, and direct artifact Record/Playback. The guide distinguishes repository, artifact, and complete standalone layouts. Recording review and selective source copy-back remain explicit manual steps.
Scope and ownership
Module-specific developer tools and their local-only regression tests are not required by this SDK PR's documented workflow. Optional helpers under src/EdgeAction/tools, their private-file ignore rules, and the developer-tools guide are preserved separately in draft #30296.
The PR contains no generated/EdgeAction changes or AssemblyInfo.cs changes. Generated/build outputs remain local; repository automation owns the separate generated-code archive PR. Source HTTP recordings are reviewed test inputs, not generated-code archives. This PR does not change the shared serializer or certify comprehensive recording sanitization.
Validation
Specification provenance:2e2b290fd446b03bbddcdc31098ff97e7218f0cf is the current source generation input. The historical local build and Playback reports did not retain enough binary provenance to establish which specification commit produced those binaries. They are not evidence that a fresh client was generated from this pin, and are not asserted to validate either pin specifically. No fresh local generation/build was performed during the latest test/documentation follow-ups.
Latest full local offline Playback: at source commit 88128498822, an isolated copy of the existing built module was refreshed with the maintained test/helper/recording/environment files. With $scratch pointing to that copy, Invoke-Pester -Script (Join-Path $scratch 'test') -PassThru -Show Failed,Summary -OutputFile <review-results.xml> passed on PowerShell 7: 128 passed, 0 failed, 46 skipped. This validates the maintained tests against existing binaries and reviewed recordings, subject to the provenance limitation above. It is not a live Record run; skipped scenarios are not coverage.
Focused maintained regressions:Invoke-Pester -Script .\src\EdgeAction\EdgeAction.Autorest\test\RecordingNormalization.Tests.ps1,.\src\EdgeAction\EdgeAction.Autorest\test\LocationResponse.Tests.ps1 -PassThru -Show Failed,Summary passed with Pester 4.10.1: 105 passed on Windows PowerShell 5.1 and 105 passed on PowerShell 7. The nine normalization tests also passed on both runtimes with UsePreviousConfigForRecord set to true and false and terminating errors enabled. These offline assertions do not validate generated-client provenance.
Historical sanitization checks:pwsh -NoProfile -File .\test-module.ps1 -Playback, run from the artifact module directory, previously passed 23 tests, 0 failed, 46 skipped. An independent structural comparison preserved all 428 recording entries with only intended URL-query substitutions; supplementary local-only sanitizer/ownership regressions passed 54 tests. These historical results are not claimed as current checked-in coverage or fresh generation validation. No service responses were fabricated.
Hosted validation: the automated report preserved above is associated with source commit 88128498822 and reports successful build/test checks with signature warnings. Those are the report's results, not a new local rerun or a blanket green-CI claim. Consult the current checks and their logs for generated-client validation at the current source pin. Full-repository static analysis and full repository test/help-generation targets were not run for this follow-up.
Mandatory Checklist
Please choose the target release of Azure PowerShell. (⚠️Target release is a different concept from API readiness. Please click below links for details.)
Regenerate cmdlets and help from the pinned specification, and add module-local generation and scenario-test tooling with configuration, preflight checks and step logging.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Move test prerequisite installation after built-artifact confirmation without changing commands or runtime behavior.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The public syntax still advertises -SkuName and -SkuTier even though this same contract states that every supplied SKU—including the existing value—is rejected. These parameters can never succeed and mislead users during command discovery. Remove them from the generated PowerShell surface through an AutoRest directive/schema customization and regenerate the cmdlet and help.
Create cmdlet help incorrectly describes PATCH validation
This is help for New-AzEdgeActionVersion, so PATCH-only validation text is inapplicable and implies that this create cmdlet performs updates. Keep the deployment-type description creation-specific, then regenerate the parent module help.
This issue also appears on line 151 of the same file.
Stage only the selected Pester 4.10.1 package in a temporary module search root so the existing harness can import it by name. Clean up after the child exits and clarify startup failures without fresh results.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The no-argument runner defaults to Playback, but all tracked EdgeAction recordings are still keyed to 2025-12-01-preview while generated requests now use 2026-10-01; the guide itself states those recordings cannot satisfy stable requests. Because fresh-result validation rejects failures, the documented default invocation is guaranteed to fail. Refresh the recordings for the stable API before making Playback the default (and add coverage for the newly exposed update behavior).
Create cmdlet help incorrectly describes PATCH-only validation
This is help for New-AzEdgeActionVersion, yet the new parameter text describes PATCH validation and says the property must match an existing value. During creation there is no existing value, so this guidance is misleading for this cmdlet. Keep create-parameter descriptions operation-neutral and place PATCH-only constraints only in Update-AzEdgeActionVersion help.
Populate the missing artifact support source before invoking the existing dependency helper. Cover payload copying, cwd restoration, and existing-install protection with offline fixtures.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
-SkuName and -SkuTier remain public even though the pinned stable contract explicitly says every supplied sku value—including the existing value or null—is rejected. These parameters therefore offer only a guaranteed failing request. Hide/remove the expanded SKU parameters with an AutoRest directive and regenerate the cmdlet/help, while retaining SKU only in JSON input if raw-contract parity is required.
…e tests
Reuse the original dependency helper after consent and configuration validation. Repair incomplete support, preserve complete installations, isolate setup feeds, and validate outputs before authentication or scenarios.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…e tests
Reuse the original dependency helper after consent and configuration validation. Repair incomplete support, preserve complete installations, isolate setup feeds, and validate outputs before authentication or scenarios.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Avoid loading source-folder RequiredAssemblies before importing the artifact binary. Cover artifact assembly selection and cwd restoration on success and failure.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The published changes are already contained in the amended local commit. Retain the verified local tree when resolving overlapping patches, including the assembly fix and user documentation.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Upstream CI: 13 passed, 0 failed. No confirmed semantic or deterministic findings at e2a13f0.
Test validation
Agent live test: Not run; this is a review-only PR. Check author-provided test evidence and upstream CI separately.
Regression coverage: Not applicable to the changed files.
Inspected all 15 recordings: 428 entries use 2026-10-01. Under src/EdgeAction/EdgeAction.Autorest/test/, the matching .Tests.ps1/.Recording.json pairs Update-AzEdgeAction, Update-AzEdgeActionVersion, and Update-AzEdgeActionExecutionFilter exercise tag replacement/JSON clearing, default/deployment preservation, and version/header/tag mapping respectively. Focused rerun: these playback groups plus LocationResponse.Tests.ps1 for asynchronous completion and response shapes. Skipped identity/JSON stubs and documented service-contract exceptions are not comprehensive coverage. No source change requested.
Risk assessment — 11/100 · Low
The Low rating reflects the detected change scope with no elevated security, reliability, customer, operational, dependency, sovereign-cloud, generated-output, or cross-component signal.
Change scope: 67 changed files, 18219 changed lines (+12732 / -5487), including 0 production files.
Affected components: No production component was identified.
Risk drivers: No elevated risk signal was detected.
Regression evidence: No production-code regression-test signal applies.
Confidence: Low because no production changed-line evidence was available.
Required review: No additional owning-squad review signal was detected.
DefaultProfile is still nonfunctional: both the Switch and Get-code wrappers forward it to private cmdlets that explicitly ignore it. This new description can lead users to expect a supplied profile to select a different account or subscription, while the operation uses the current context. Restore the warning and SubscriptionId guidance here, in help/Get-AzEdgeActionVersionCode.md, and in both corresponding EdgeAction.Autorest/docs pages. Correct the wrappers' parameter help comments too so regeneration preserves the warning.
The README and how-to now pin 2e2b290..., but the PR description still identifies 65eb931... as the generation input. The newer specification commit changes asynchronous-operation headers and the deploy response model, so the inputs are not equivalent. Update the description and state which pin the reported build and Playback validated; restore the older pin only if it remains the intended input.
DefaultProfile does not select credentials or subscription
DefaultProfile does not select credentials or subscription for this command. The wrapper forwards it unchanged, while src/Accounts/Accounts/CommonModule/ContextAdapter.cs:343-357 recognizes DefaultContext and otherwise uses the active context. This new description can lead users to retrieve code from the active subscription instead of the supplied profile's subscription. Restore the limitation in both help copies and correct the wrapper's parameter-help comment so regeneration preserves it.
DefaultProfile does not select the command context
DefaultProfile does not select the context for this command. The wrapper forwards it unchanged, while src/Accounts/Accounts/CommonModule/ContextAdapter.cs:343-357 recognizes DefaultContext and otherwise uses the active context. This new description can lead users to switch a default version in the active subscription while believing they selected another profile. Restore the limitation in both help copies and correct the wrapper's parameter-help comment so regeneration preserves it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 PR Validation —⚠️ Review suggested
Description
Updates Az.EdgeAction to the stable
2026-10-01API, with scenario coverage, recordings, public help, and a self-contained development guide. AutoRest is pinned toAzure/azure-rest-api-specscommit2e2b290fd446b03bbddcdc31098ff97e7218f0cf, usingspecification/cdn/resource-manager/Microsoft.Cdn/EdgeActions/stable/2026-10-01/openapi.json. This is the intended input in both README and how-to; the earlier65eb9311d304dcf9874d05fdec39ea65baae8db8pin is superseded, not equivalent. See validation provenance below.Changes
Update-AzEdgeActionPATCH schema is reduced to its supported tags field. The generated expanded parameter sets no longer expose-Property,-SkuName, or-SkuTier: the properties model is empty and the service rejects supplied SKU values. All four parent Update parameter sets remain, including Tag, JSON, and identity inputs;New-AzEdgeActionretains SKU parameters. Both help copies reflect this change.-JsonString '{"tags":{}}'because the current expanded serializer omits empty objects. Version tests preserve default/deployment state; default changes useSwitch-AzEdgeActionVersionDefault. Filter tests cover version, header, and tag updates, including omitted-property preservation.env.jsonmetadata and separates fixture setup/cleanup recording contexts. Each run generates a resource group namedrgps-powershellsdk-edgeaction-tests-<12 hex characters>and a distinct randomized name for each scenario fixture. Collision checks refuse pre-existing resources; persisted ownership and subscription/tenant/environment checks restrict cleanup to confirmed run-owned resources. Cleanup deletes execution filters, non-default versions, the current default version, then the parent and run-owned group. Azure resource names are not deliberately reused across runs. Concurrent runs still require separate artifact directories because environment metadata and recording files are shared within one directory.powershellsdk-edgeaction-tests-rgnameand replaces polling URLt,c,s, andhquery values withSanitizedconsistently in headers, request URLs, and lookup keys. Normalization detects lookup collisions before writing recordings and preserves operation IDs, API versions, other query parameters, embedded payload strings, and recording counters. Existing complete recordings can be sanitized without live re-recording, followed by offline Playback. Maintained offline tests cover normalization and recovery on Windows PowerShell 5.1 and PowerShell 7, including inherited previous-configuration settings.Scope and ownership
Module-specific developer tools and their local-only regression tests are not required by this SDK PR's documented workflow. Optional helpers under
src/EdgeAction/tools, their private-file ignore rules, and the developer-tools guide are preserved separately in draft #30296.The PR contains no
generated/EdgeActionchanges orAssemblyInfo.cschanges. Generated/build outputs remain local; repository automation owns the separate generated-code archive PR. Source HTTP recordings are reviewed test inputs, not generated-code archives. This PR does not change the shared serializer or certify comprehensive recording sanitization.Validation
2e2b290fd446b03bbddcdc31098ff97e7218f0cfis the current source generation input. The historical local build and Playback reports did not retain enough binary provenance to establish which specification commit produced those binaries. They are not evidence that a fresh client was generated from this pin, and are not asserted to validate either pin specifically. No fresh local generation/build was performed during the latest test/documentation follow-ups.88128498822, an isolated copy of the existing built module was refreshed with the maintained test/helper/recording/environment files. With$scratchpointing to that copy,Invoke-Pester -Script (Join-Path $scratch 'test') -PassThru -Show Failed,Summary -OutputFile <review-results.xml>passed on PowerShell 7: 128 passed, 0 failed, 46 skipped. This validates the maintained tests against existing binaries and reviewed recordings, subject to the provenance limitation above. It is not a live Record run; skipped scenarios are not coverage.Invoke-Pester -Script .\src\EdgeAction\EdgeAction.Autorest\test\RecordingNormalization.Tests.ps1,.\src\EdgeAction\EdgeAction.Autorest\test\LocationResponse.Tests.ps1 -PassThru -Show Failed,Summarypassed with Pester 4.10.1: 105 passed on Windows PowerShell 5.1 and 105 passed on PowerShell 7. The nine normalization tests also passed on both runtimes withUsePreviousConfigForRecordset to true and false and terminating errors enabled. These offline assertions do not validate generated-client provenance.pwsh -NoProfile -File .\test-module.ps1 -Playback, run from the artifact module directory, previously passed 23 tests, 0 failed, 46 skipped. An independent structural comparison preserved all 428 recording entries with only intended URL-query substitutions; supplementary local-only sanitizer/ownership regressions passed 54 tests. These historical results are not claimed as current checked-in coverage or fresh generation validation. No service responses were fabricated.88128498822and reports successful build/test checks with signature warnings. Those are the report's results, not a new local rerun or a blanket green-CI claim. Consult the current checks and their logs for generated-client validation at the current source pin. Full-repository static analysis and full repository test/help-generation targets were not run for this follow-up.Mandatory Checklist
Please choose the target release of Azure PowerShell. (⚠️ Target release is a different concept from API readiness. Please click below links for details.)
Check this box to confirm: I have read the Submitting Changes section of
CONTRIBUTING.mdand reviewed the following information:ChangeLog.mdfile(s) appropriatelysrc/{{SERVICE}}/{{SERVICE}}/ChangeLog.md.## Upcoming Releaseheader in the past tense.ChangeLog.mdif no new release is required, such as fixing test case only.