Skip to content

[StorageMover] Upgrade API version to 2026-05-01 - #30308

Merged
NoriZC merged 3 commits into
Azure:mainfrom
sssash18:feature/storagemover-api-2026-05-01
Oct 21, 2026
Merged

NoriZC merged 3 commits into
Azure:mainfrom
sssash18:feature/storagemover-api-2026-05-01

Conversation

@sssash18

@sssash18 Suyash Choudhary (sssash18) commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

🤖 PR Validation — ⚠️ Review suggested

Tests
⚠️ 20/20
️✔️Az.Accounts
️✔️Build
️✔️PowerShell Core - Windows
️✔️Windows PowerShell - Windows
⚠️Az.StorageMover
️✔️Build
️✔️PowerShell Core - Windows
️✔️Windows PowerShell - Windows
️✔️Breaking Change Check
️✔️PowerShell Core - Windows
️✔️Windows PowerShell - Windows
⚠️Signature Check
⚠️PowerShell Core - Windows
Type Cmdlet Description Remediation
⚠️ Get-AzStorageMover Get-AzStorageMover Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMover Get-AzStorageMover changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverAgent Get-AzStorageMoverAgent Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverAgent Get-AzStorageMoverAgent changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverConnection Get-AzStorageMoverConnection Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverConnection Get-AzStorageMoverConnection changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverEndpoint Get-AzStorageMoverEndpoint Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverEndpoint Get-AzStorageMoverEndpoint changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverJobDefinition Get-AzStorageMoverJobDefinition Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverJobDefinition Get-AzStorageMoverJobDefinition changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverJobRun Get-AzStorageMoverJobRun Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverJobRun Get-AzStorageMoverJobRun changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverProject Get-AzStorageMoverProject Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverProject Get-AzStorageMoverProject changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ New-AzStorageMoverUploadLimitWeeklyRecurrenceObject New-AzStorageMoverUploadLimitWeeklyRecurrenceObject changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️Windows PowerShell - Windows
Type Cmdlet Description Remediation
⚠️ Get-AzStorageMover Get-AzStorageMover Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMover Get-AzStorageMover changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverAgent Get-AzStorageMoverAgent Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverAgent Get-AzStorageMoverAgent changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverConnection Get-AzStorageMoverConnection Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverConnection Get-AzStorageMoverConnection changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverEndpoint Get-AzStorageMoverEndpoint Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverEndpoint Get-AzStorageMoverEndpoint changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverJobDefinition Get-AzStorageMoverJobDefinition Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverJobDefinition Get-AzStorageMoverJobDefinition changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverJobRun Get-AzStorageMoverJobRun Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverJobRun Get-AzStorageMoverJobRun changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ Get-AzStorageMoverProject Get-AzStorageMoverProject Changes the ConfirmImpact but does not set the SupportsShouldProcess property to true in the cmdlet attribute. Determine if the cmdlet should implement ShouldProcess and if so determine if it should implement Force / ShouldContinue
⚠️ Get-AzStorageMoverProject Get-AzStorageMoverProject changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️ New-AzStorageMoverUploadLimitWeeklyRecurrenceObject New-AzStorageMoverUploadLimitWeeklyRecurrenceObject changes the confirm impact. Please ensure that the change in ConfirmImpact is justified Verify that ConfirmImpact is changed appropriately by the cmdlet. It is very rare for a cmdlet to change the ConfirmImpact.
⚠️Help Example Check
⚠️PowerShell Core - Windows
Type Cmdlet Example Line RuleName Description Extent Remediation
⚠️ New-AzStorageMoverAzSmbFileShareEndpoint 1 1 Unassigned_Variable New-AzStorageMoverAzSmbFileShareEndpoint -StorageAccountResourceId $accountresourceid is a null-valued parameter value. -StorageAccountResourceId Assign value for $accountresourceid.
⚠️ New-AzStorageMoverAzSmbFileShareEndpoint 1 1 Unassigned_Variable New-AzStorageMoverAzSmbFileShareEndpoint -StorageAccountResourceId $accountresourceid is a null-valued parameter value. -StorageAccountResourceId Assign value for $accountresourceid.
⚠️Windows PowerShell - Windows
Type Cmdlet Example Line RuleName Description Extent Remediation
⚠️ New-AzStorageMoverAzSmbFileShareEndpoint 1 1 Unassigned_Variable New-AzStorageMoverAzSmbFileShareEndpoint -StorageAccountResourceId $accountresourceid is a null-valued parameter value. -StorageAccountResourceId Assign value for $accountresourceid.
⚠️ New-AzStorageMoverAzSmbFileShareEndpoint 1 1 Unassigned_Variable New-AzStorageMoverAzSmbFileShareEndpoint -StorageAccountResourceId $accountresourceid is a null-valued parameter value. -StorageAccountResourceId Assign value for $accountresourceid.
️✔️Help File Existence Check
️✔️PowerShell Core - Windows
️✔️Windows PowerShell - Windows
️✔️File Change Check
️✔️PowerShell Core - Windows
️✔️Windows PowerShell - Windows
️✔️UX Metadata Check
️✔️PowerShell Core - Windows
️✔️Windows PowerShell - Windows
️✔️Test
️✔️PowerShell Core - Linux
️✔️PowerShell Core - MacOS
️✔️PowerShell Core - Windows
️✔️Windows PowerShell - Windows

Description

Upgrades Az.StorageMover to the Storage Mover 2026-05-01 stable API (Azure/azure-rest-api-specs#44795, pinned to commit f89d3d95044e14c679785fa9e0d28c7c97af870a), regenerated on the existing AutoRest PowerShell v4 base.

New cmdlet

  • Invoke-AzStorageMoverReconcileJobDefinition for the new POST .../jobDefinitions/{jobDefinitionName}/reconcileJob action, which reconciles the running job and returns its job run resource ID. It is renamed from the AutoRest default Invoke-AzStorageMoverReconcileJobDefinitionJob to match Start-/Stop-AzStorageMoverJobDefinition.

New parameters

  • -EndpointKind (Source/Target) on all New-AzStorageMover*Endpoint cmdlets.
  • -EnableCrossTenantTransfer and -AllowedStorageAccount on New-/Update-AzStorageMoverAzStorageContainerEndpoint and New-/Update-AzStorageMoverAzSmbFileShareEndpoint.
  • -SourceType on New-AzStorageMoverNfsEndpoint (NfsMount/FSX-EFS) and New-AzStorageMoverSmbEndpoint (SmbMount/FSX-SMB); NFSv4_1 added to the -NfsVersion completer.
  • Generated from the spec: -IsCrossTenantJob, -CrossTenantEndpointTenantId and -CrossTenantEndpointResourceId on New-AzStorageMoverJobDefinition; -SyncMode, -MoverSyncedUntil and -ScheduleRepeatInterval on New-/Update-AzStorageMoverJobDefinition; the Hourly schedule frequency and OnPremToCloudAgentLess job type.

Other changes

  • A README directive rewrites the Connections_Delete description to one line, so the generated help for Remove-AzStorageMoverConnection no longer shows a literal \n.
  • Regenerated docs and markdown help; added examples for the new cmdlet and for the cross-tenant and FSX scenarios; updated ChangeLog.md.
  • Existing test recordings are relabeled from api-version 2025-12-01 to 2026-05-01, the same approach as Storage mover api version 2025-12-01 #29446.
  • New tests, added to the matching per-cmdlet test files:
    • Live-recorded scenarios: CreateExpandedCrossTenant (New-AzStorageMoverAzStorageContainerEndpoint), UpdateExpandedCrossTenant (Update-AzStorageMoverAzStorageContainerEndpoint), CreateExpandedWithEndpointKind (New-AzStorageMoverAzSmbFileShareEndpoint), CreateExpandedFsxEfs (New-AzStorageMoverNfsEndpoint), CreateExpandedFsxSmb (New-AzStorageMoverSmbEndpoint), and CreateCrossTenant (New-AzStorageMoverJobDefinition), which targets a real partner-tenant endpoint.
    • Offline request checks, using a mocked service call or the request model, for what the service can't confirm today: Azure SMB file share cross-tenant settings, the sourceType and NFSv4_1 payloads, -EndpointKind on the remaining endpoint types, hourly and sync job settings, and the reconcile cmdlet's parameter sets.
    • env.json gains keys for the new scenarios' resources (existing keys are unchanged). setupEnv and cleanupEnv create and remove them for future re-recordings, and the partner tenant details come from the SM_XT_PARTNER_* environment variables (CreateCrossTenant is skipped without them). Partner tenant and subscription IDs are placeholders in env.json and the recordings.

Service behavior observed with API 2026-05-01

  • The service currently rejects enableCrossTenantTransfer/allowedStorageAccounts on AzureStorageSmbFileShare endpoints (InvalidRequestPropertyValue), although the spec declares them. The parameters follow the spec and are covered by the offline tests only.
  • The service accepts sourceType on NFS and SMB mount endpoints but does not return it in responses.
  • reconcileJob returned 404 for every job state we tried, so the generated Invoke-AzStorageMoverReconcileJobDefinition test stubs stay skipped.

Validation

  • ./tools/BuildScripts/BuildModules.ps1 -Configuration Debug -TargetModule StorageMover: succeeded, 0 errors.
  • ./artifacts/Debug/Az.StorageMover/StorageMover.Autorest/test-module.ps1 -Playback (Pester 4.10.1): passed, 69 passed, 0 failed, 10 skipped (6 existing skips and the 4 generated reconcile stubs).
  • Live recording of the new scenarios against API 2026-05-01 in eastus2euap and eastus: passed. The scenarios were recorded in one live run, and each scenario's request and response sequence is stored under its test name in the cmdlet's recording file.
  • ./tools/ExecuteCIStep.ps1 -StaticAnalysis -Configuration Debug -TargetModule StorageMover: passed with exit code 0; no breaking changes, only existing severity-2 signature warnings on the Get-* cmdlets.

Mandatory Checklist

  • SHOULD update ChangeLog.md file(s) appropriately
    • Update src/{{SERVICE}}/{{SERVICE}}/ChangeLog.md.
      • A snippet outlining the change(s) made in the PR should be written under the ## Upcoming Release header in the past tense.
    • Should not change ChangeLog.md if no new release is required, such as fixing test case only.
  • SHOULD regenerate markdown help files if there is cmdlet API change. Instruction
  • SHOULD have proper test coverage for changes in pull request.
  • SHOULD NOT adjust version of module manually in pull request

- Regenerated Az.StorageMover from the 2026-05-01 stable spec (Azure/azure-rest-api-specs f89d3d95)
- Added Invoke-AzStorageMoverReconcileJobDefinition for the new reconcileJob action
- Added EndpointKind, cross-tenant transfer and SourceType parameters to the endpoint cmdlets
- Updated docs, help, examples, ChangeLog, test recordings, and added offline and live-recorded tests

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 19, 2026 11:44
@azure-pipelines

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

@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

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

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.

🟡 Changes recommended

The assembly-version reset must be reverted to preserve release-managed metadata.

1 open issue
What changed in this PR

Upgrades the AutoRest-based Az.StorageMover module to API 2026-05-01, extending endpoint configuration and job management.

Changes:

  • Adds job reconciliation, cross-tenant parameters, endpoint kinds, source types, and scheduling options.
  • Updates generation configuration, module exports, documentation, and examples.
  • Adds live scenarios and reconcile test stubs; relabels existing recordings for the new API.
File Description
src/​StorageMover/​StorageMover/​help/​Update-AzStorageMoverJobDefinition.md Documents synchronization and scheduling parameters.
src/​StorageMover/​StorageMover/​help/​Update-AzStorageMoverAzStorageContainerEndpoint.md Documents cross-tenant updates and examples.
src/​StorageMover/​StorageMover/​help/​Update-AzStorageMoverAzSmbFileShareEndpoint.md Documents cross-tenant update parameters.
src/​StorageMover/​StorageMover/​help/​New-AzStorageMoverSmbEndpoint.md Documents endpoint kind and FSX-SMB sources.
src/​StorageMover/​StorageMover/​help/​New-AzStorageMoverS3WithHmacEndpoint.md Documents endpoint kind.
src/​StorageMover/​StorageMover/​help/​New-AzStorageMoverNfsEndpoint.md Documents endpoint kind and FSX-EFS sources.
src/​StorageMover/​StorageMover/​help/​New-AzStorageMoverMultiCloudConnectorEndpoint.md Documents endpoint kind and corrects example.
src/​StorageMover/​StorageMover/​help/​New-AzStorageMoverAzStorageContainerEndpoint.md Documents cross-tenant endpoint creation.
src/​StorageMover/​StorageMover/​help/​New-AzStorageMoverAzSmbFileShareEndpoint.md Documents endpoint kind and cross-tenant parameters.
src/​StorageMover/​StorageMover/​help/​New-AzStorageMoverAzNfsFileShareEndpoint.md Documents endpoint kind and corrects example.
src/​StorageMover/​StorageMover/​help/​Invoke-AzStorageMoverReconcileJobDefinition.md Adds reconcile cmdlet reference.
src/​StorageMover/​StorageMover/​help/​Get-AzStorageMover.md Corrects example numbering.
src/​StorageMover/​StorageMover/​help/​Az.StorageMover.md Updates cmdlet index.
src/​StorageMover/​StorageMover/​ChangeLog.md Describes new API capabilities.
src/​StorageMover/​StorageMover/​Az.StorageMover.psd1 Exports reconcile cmdlet and updates Accounts dependency.
src/​StorageMover/​StorageMover.Autorest/​UX/​Microsoft.StorageMover/​storageMovers.json Updates API metadata.
src/​StorageMover/​StorageMover.Autorest/​UX/​Microsoft.StorageMover/​storageMovers-projects.json Updates API metadata.
src/​StorageMover/​StorageMover.Autorest/​UX/​Microsoft.StorageMover/​storageMovers-projects-jobDefinitions.json Adds reconcile action and updates API metadata.
src/​StorageMover/​StorageMover.Autorest/​UX/​Microsoft.StorageMover/​storageMovers-projects-jobDefinitions-jobRuns.json Updates API metadata.
src/​StorageMover/​StorageMover.Autorest/​UX/​Microsoft.StorageMover/​storageMovers-endpoints.json Updates API metadata.
src/​StorageMover/​StorageMover.Autorest/​UX/​Microsoft.StorageMover/​storageMovers-connections.json Updates API metadata and description formatting.
src/​StorageMover/​StorageMover.Autorest/​UX/​Microsoft.StorageMover/​storageMovers-agents.json Updates API metadata.
src/​StorageMover/​StorageMover.Autorest/​test/​Update-AzStorageMoverS3WithHmacEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Update-AzStorageMoverProject.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Update-AzStorageMoverNfsEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Update-AzStorageMoverMultiCloudConnectorEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Update-AzStorageMoverJobDefinition.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Update-AzStorageMoverAzStorageContainerEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Update-AzStorageMoverAzNfsFileShareEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Update-AzStorageMoverAgent.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Update-AzStorageMover.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Unregister-AzStorageMoverAgent.Recording.json Updates recorded request and polling URLs.
src/​StorageMover/​StorageMover.Autorest/​test/​StorageMover.Api20260501.Tests.ps1 Adds five endpoint and cross-tenant scenarios.
src/​StorageMover/​StorageMover.Autorest/​test/​Remove-AzStorageMoverJobDefinition.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Remove-AzStorageMoverEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​New-AzStorageMoverS3WithHmacEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​New-AzStorageMoverProject.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​New-AzStorageMoverNfsEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​New-AzStorageMoverMultiCloudConnectorEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​New-AzStorageMoverAzStorageContainerEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​New-AzStorageMoverAzNfsFileShareEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​New-AzStorageMover.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Invoke-AzStorageMoverReconcileJobDefinition.Tests.ps1 Adds four skipped reconcile test stubs.
src/​StorageMover/​StorageMover.Autorest/​test/​Get-AzStorageMoverProject.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Get-AzStorageMoverJobRun.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Get-AzStorageMoverJobDefinition.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Get-AzStorageMoverEndpoint.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Get-AzStorageMoverAgent.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​test/​Get-AzStorageMover.Recording.json Relabels recording API version.
src/​StorageMover/​StorageMover.Autorest/​README.md Pins specification and adds generation directives.
src/​StorageMover/​StorageMover.Autorest/​Properties/​AssemblyInfo.cs Changes assembly-version metadata during regeneration.
src/​StorageMover/​StorageMover.Autorest/​generate-info.json Refreshes generation identifier.
src/​StorageMover/​StorageMover.Autorest/​examples/​Update-AzStorageMoverAzStorageContainerEndpoint.md Adds allow-list replacement and disabling examples.
src/​StorageMover/​StorageMover.Autorest/​examples/​New-AzStorageMoverSmbEndpoint.md Adds FSX-SMB example.
src/​StorageMover/​StorageMover.Autorest/​examples/​New-AzStorageMoverNfsEndpoint.md Adds FSX-EFS example.
src/​StorageMover/​StorageMover.Autorest/​examples/​New-AzStorageMoverJobDefinition.md Adds cross-tenant job example.
src/​StorageMover/​StorageMover.Autorest/​examples/​New-AzStorageMoverAzStorageContainerEndpoint.md Adds cross-tenant endpoint example.
src/​StorageMover/​StorageMover.Autorest/​examples/​Invoke-AzStorageMoverReconcileJobDefinition.md Adds reconcile usage example.
src/​StorageMover/​StorageMover.Autorest/​docs/​Update-AzStorageMoverJobDefinition.md Documents synchronization and scheduling parameters.
src/​StorageMover/​StorageMover.Autorest/​docs/​Update-AzStorageMoverAzStorageContainerEndpoint.md Documents cross-tenant updates and examples.
src/​StorageMover/​StorageMover.Autorest/​docs/​Update-AzStorageMoverAzSmbFileShareEndpoint.md Documents cross-tenant update parameters.
src/​StorageMover/​StorageMover.Autorest/​docs/​New-AzStorageMoverSmbEndpoint.md Documents endpoint kind and FSX-SMB sources.
src/​StorageMover/​StorageMover.Autorest/​docs/​New-AzStorageMoverS3WithHmacEndpoint.md Refreshes reference and adds endpoint kind.
src/​StorageMover/​StorageMover.Autorest/​docs/​New-AzStorageMoverNfsEndpoint.md Documents endpoint kind and FSX-EFS sources.
src/​StorageMover/​StorageMover.Autorest/​docs/​New-AzStorageMoverMultiCloudConnectorEndpoint.md Documents endpoint kind.
src/​StorageMover/​StorageMover.Autorest/​docs/​New-AzStorageMoverAzStorageContainerEndpoint.md Documents cross-tenant endpoint creation.
src/​StorageMover/​StorageMover.Autorest/​docs/​New-AzStorageMoverAzSmbFileShareEndpoint.md Documents endpoint kind and cross-tenant parameters.
src/​StorageMover/​StorageMover.Autorest/​docs/​New-AzStorageMoverAzNfsFileShareEndpoint.md Documents endpoint kind.
src/​StorageMover/​StorageMover.Autorest/​docs/​Invoke-AzStorageMoverReconcileJobDefinition.md Adds reconcile cmdlet reference.
src/​StorageMover/​StorageMover.Autorest/​docs/​Az.StorageMover.md Refreshes module metadata and cmdlet index.
src/​StorageMover/​StorageMover.Autorest/​custom/​UpdateAzStorageMoverAzStorageContainerEndpoint.ps1 Forwards cross-tenant update properties.
src/​StorageMover/​StorageMover.Autorest/​custom/​UpdateAzStorageMoverAzSmbFileShareEndpoint.ps1 Forwards cross-tenant update properties.
src/​StorageMover/​StorageMover.Autorest/​custom/​NewAzStorageMoverSmbEndpoint.ps1 Adds endpoint kind and source type.
src/​StorageMover/​StorageMover.Autorest/​custom/​NewAzStorageMoverS3WithHmacEndpoint.ps1 Adds endpoint kind.
src/​StorageMover/​StorageMover.Autorest/​custom/​NewAzStorageMoverNfsEndpoint.ps1 Adds endpoint kind, source type, and NFSv4_1 completion.
src/​StorageMover/​StorageMover.Autorest/​custom/​NewAzStorageMoverMultiCloudConnectorEndpoint.ps1 Adds endpoint kind.
src/​StorageMover/​StorageMover.Autorest/​custom/​NewAzStorageMoverAzStorageContainerEndpoint.ps1 Adds endpoint kind and cross-tenant properties.
src/​StorageMover/​StorageMover.Autorest/​custom/​NewAzStorageMoverAzSmbFileShareEndpoint.ps1 Adds endpoint kind and cross-tenant properties.
src/​StorageMover/​StorageMover.Autorest/​custom/​NewAzStorageMoverAzNfsFileShareEndpoint.ps1 Adds endpoint kind.

Review effort: Balanced

Comment thread src/StorageMover/StorageMover.Autorest/Properties/AssemblyInfo.cs Outdated
- Moved the live scenarios into the matching cmdlet test files and their recordings
- Moved the offline request checks into the matching cmdlet test files
- Added the scenario resources to env.json, setupEnv and cleanupEnv

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 19, 2026 12:09
@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

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

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.

🟡 Changes recommended

One or more issues must be addressed before approval.

2 open issues

Review effort: Balanced

Comment on lines +18 to +20
It 'Reconcile' -skip {
{ throw [System.NotImplementedException] } | Should -Not -Throw
}
Regeneration reset Properties/AssemblyInfo.cs to the AutoRest placeholder 0.1.0.0; restore the version from main.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 19, 2026 12:26
@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

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

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.

🔵 Needs a closer look

One or more issues must be addressed before approval.

1 open issue
1 previously missed issue

In code that hasn't changed since last review

Medium severity Avoid null partner account in expanded cross-tenant allow-list

src/​StorageMover/​StorageMover.Autorest/​test/​utils.ps1:179

When SM_XT_PARTNER_STORAGE_ACCOUNT_ID is unset, this stores null, but UpdateExpandedCrossTenant still runs and includes it alongside CrossTenantStorageAccountId in -AllowedStorageAccount. That sends an invalid storage-account resource ID to the service, so recording without the optional partner configuration fails rather than just skipping CreateCrossTenant. Please supply valid standalone allow-list test data when no partner is configured, or skip all scenarios that require that configuration.

1 resolved since last review

Review effort: Balanced

@teresaritorto Teresa Ritorto (teresaritorto) added the Request X Engineering Agent Ask the agent to triage this issue or review this PR label Oct 20, 2026
@x-engineering-agent

x-engineering-agent Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

X Engineering Agent Report

Review — Comments

Suyash Choudhary (@sssash18)

CI is green, but one confirmed regression-test finding remains at d6ba77d9eda1409f0541cdf7cb633f6cb9eb76c2.

Copilot feedback assessment
  • Assembly-version comment 4313459390 is resolved in this revision: src/StorageMover/StorageMover.Autorest/Properties/AssemblyInfo.cs:23-24 sets both file and assembly versions to 2.0.0; this file is absent from the current diff. No version change is requested.
  • Reconcile-test comment 4313702157 is confirmed; it is consolidated below rather than duplicated.
Upstream CI

The supplied snapshot reports 13 passed checks and zero failed or pending checks. There are no CI failures to attribute. No checks were rerun for this review.

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.

That last line is the supplied coverage helper's applicability result, not proof of the new PowerShell scenarios. Independent inspection finds the execution gap below. Additional limits: the new hourly/sync cases in src/StorageMover/StorageMover.Autorest/test/New-AzStorageMoverJobDefinition.Tests.ps1:116-130 and src/StorageMover/StorageMover.Autorest/test/Update-AzStorageMoverJobDefinition.Tests.ps1:27-37 serialize models without invoking the cmdlets, so they do not establish runtime parameter binding, service acceptance, or output. The update recording src/StorageMover/StorageMover.Autorest/test/Update-AzStorageMoverJobDefinition.Recording.json contains only the existing UpdateExpanded scenario. Before merge, request focused cmdlet-level coverage for Hourly/PT1H, SyncMode and MoverSyncedUntil, including recorded request/response assertions where service support is available. The large new-job recording was truncated by the governed reader; its complete scenario coverage was not independently verified.

The blob update recording src/StorageMover/StorageMover.Autorest/test/Update-AzStorageMoverAzStorageContainerEndpoint.Recording.json does exercise preserving an omitted enable flag, replacing the allowed-account list, and explicitly sending false plus an empty list. In contrast, the SMB cross-tenant tests in src/StorageMover/StorageMover.Autorest/test/New-AzStorageMoverAzSmbFileShareEndpoint.Tests.ps1 and src/StorageMover/StorageMover.Autorest/test/Update-AzStorageMoverAzSmbFileShareEndpoint.Tests.ps1 mock the underlying endpoint cmdlet. Their serialization assertions do not prove SMB service support; the changed src/StorageMover/StorageMover.Autorest/test/New-AzStorageMoverAzSmbFileShareEndpoint.Recording.json exercises EndpointKind, not enabling cross-tenant transfer. Obtain a focused service-backed recording when supported; do not treat the offline checks as an end-to-end transfer test.

Confirmed finding

Medium — Reconcile execution is never exercised. In src/StorageMover/StorageMover.Autorest/test/Invoke-AzStorageMoverReconcileJobDefinition.Tests.ps1:18-39, all four execution cases are skipped placeholders and the sole active case checks parameter-set names and output-type metadata. The corresponding src/StorageMover/StorageMover.Autorest/test/Invoke-AzStorageMoverReconcileJobDefinition.Recording.json is absent at this head. Incorrect POST routing or returned job-run ID mapping can therefore pass this suite, unlike the existing Start/Stop tests that invoke their actions.

Implement the named and identity-based cases using recorded exchanges or a mocked HTTP pipeline through the actual cmdlet, not only command metadata or a model. Verify POST to the selected job definition's /reconcileJob route with API 2026-05-01, assert the returned job-run resource ID, and assert failed responses propagate. Rerun this focused test file with execution cases enabled; for recorded playback, add its matching recording. This is a test-strength finding, not a claim that the cmdlet currently misroutes requests.

The API source pin, rename directive, public export and upcoming-release notes align with the advertised additions. Full Codegen provenance, service execution and sovereign-cloud availability were not independently verified.

Risk assessment — 41/100 · Medium

The Medium rating is driven by security-sensitive behavior.

  • Change scope: 102 changed files, 4400 changed lines (+3771 / -629), including 9 production files.
  • Affected components: storagemover
  • Risk drivers: security-sensitive behavior (+28)
  • Regression evidence: Changed regression tests are included, reducing risk.
  • Confidence: High because changed-line patches were available for every production file.
  • Required review: Owning-squad review is required for storagemover before merge.

Posted by x-engineering-agent (Reviewer)

@x-engineering-agent x-engineering-agent Bot added the X Engineering Agent Reviewed Agent reviewed this PR label Oct 20, 2026
@NoriZC NoriZC self-assigned this Oct 21, 2026
@NoriZC
NoriZC merged commit 100fa02 into Azure:main Oct 21, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Request X Engineering Agent Ask the agent to triage this issue or review this PR X Engineering Agent Reviewed Agent reviewed this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants