[AutoPR @azure-arm-compute]-generated-from-SDK Generation - JS-6169346#38183
[AutoPR @azure-arm-compute]-generated-from-SDK Generation - JS-6169346#38183
Conversation
…pute/Compute/tspconfig.yaml', and CommitSHA: '731c5fa4e0f768bb98e98c0837595677434d3e38' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6169346 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.
There was a problem hiding this comment.
1 design issue found — client name change is not allowed.
The PR renames the main client class from ComputeManagementClient (released in 23.x) to ComputeClient. Per Azure SDK guidelines, client name changes are a breaking change and are not allowed. The fix requires adding @clientName("ComputeManagementClient") in client.tsp in the spec repo and regenerating.
📊 Structured Report
{"agent":"mgmt-reviewer","pr":38183,"summary":"issues_found","findings":[{"file":"sdk/compute/arm-compute/CHANGELOG.md","line":220,"issueType":"design","category":"breaking_change","description":"Client renamed from ComputeManagementClient to ComputeClient; client name changes are not allowed"},{"file":"sdk/compute/arm-compute/review/arm-compute-node.api.md","line":659,"issueType":"design","category":"breaking_change","description":"export class ComputeClient — should be ComputeManagementClient to preserve backward compatibility"}]}⚡ Benchmarked by Management Release Assistant
| - Operation VirtualMachines.beginMigrateToVMScaleSetAndWait has a new signature | ||
| - Operation VirtualMachineScaleSets.beginApproveRollingUpgradeAndWait has a new signature | ||
| - Operation VirtualMachineScaleSetVMs.beginApproveRollingUpgradeAndWait has a new signature | ||
| - Deleted Class ComputeManagementClient |
There was a problem hiding this comment.
🔴 Design Concern — CHANGELOG.md:220
Deleted Class ComputeManagementClient
The main client has been renamed from ComputeManagementClient to ComputeClient. Client name changes are not allowed as they are breaking for existing customers.
Fix: Add @clientName("ComputeManagementClient") to the client definition in client.tsp in the azure-rest-api-specs repo to restore the original name, then trigger SDK regeneration.
| export type ComponentNames = "Microsoft-Windows-Shell-Setup"; | ||
|
|
||
| // @public (undocumented) | ||
| export class ComputeClient { |
There was a problem hiding this comment.
🔴 Design Concern — arm-compute-node.api.md:659
export class ComputeClient
The exported client class is ComputeClient, but the previously released class was ComputeManagementClient. This is a breaking change that is not allowed per Azure SDK guidelines.
Fix: Rename the client back to ComputeManagementClient by adding @clientName("ComputeManagementClient") in client.tsp in the azure-rest-api-specs repo and regenerate the SDK.
Breaking Change Analysis:
|
| Old SDK (main) | New SDK (PR) | |
|---|---|---|
| Generator | Swagger / AutoRest | TypeSpec / emitter |
| Package Version | 23.3.0 | 24.0.0 |
API Versions by Service:
| Service | Old API Version | New API Version | Status |
|---|---|---|---|
| Compute | 2025-04-01 | 2025-04-01 | Same |
| Disk | 2025-01-02 | 2025-01-02 | Same |
| Gallery | 2024-03-03 | 2025-03-03 | Upgraded |
| Sku | 2021-07-01 | 2021-07-01 | Same |
| CloudService | 2024-11-04 | (removed) | Removed from TypeSpec scope |
Spec References:
- Original Swagger (Layer A):
package-2025-04-01tag @217f332(multiple swagger files across 5 API versions) - TypeSpec config:
tspconfig.yaml@731c5fa - Generated Swagger (Layer C):
stable/2025-04-01/@731c5fa
Note: Gallery upgraded from 2024-03-03 to 2025-03-03. However, the Gallery swagger diff shows only additions (10 new GalleryScript/GalleryScriptVersion operations, 21 new definitions) and no removed operations or definitions that map to any CHANGELOG breaking entry. Therefore all 116 breakings are classified as Type 2.
Type 2: Breaking Changes from TypeSpec/Emitter Migration
Total: 116 items (Type 2a: 76 | Type 2b: 40)
Summary by Root Cause
| # | Root Cause | Category | Count | Approved Pattern | Accepted |
|---|---|---|---|---|---|
| 1 | CloudService APIs excluded from TypeSpec scope | Type 2a -- Scope exclusion | 76 | -- | |
| 2 | Collection/list wrapper types removed (paging) | Type 2b -- Emitter | 22 | Pattern 5 | ✅ |
| 3 | Client class deleted / options interface removed | Type 2b -- Emitter | 2 | -- | |
| 4 | Operation renamed (ARM standard naming) | Type 2b -- Emitter | 1 | Pattern 1 | ✅ |
| 5 | LRO response wrapper removal (void return) | Type 2b -- Emitter | 10 | Pattern 7 | ✅ |
| 6 | Orphan type/enum removal | Type 2b -- Emitter | 2 | Pattern 2 | ✅ |
| 7 | Enum member naming changes | Type 2b -- Emitter | 3 | Pattern 3 | ✅ |
Detailed Breakdown
Group 1: CloudService APIs removed (Type 2a -- Scope exclusion) -- 76 items
Root cause: The old swagger readme (
package-2025-04-01tag) includedMicrosoft.Compute/CloudserviceRP/stable/2024-11-04/cloudService.json. The new TypeSpec project atMicrosoft.Compute/Computedoes NOT include CloudService APIs -- theclient.tsponly declares services[Compute, ComputeDisk, ComputeGallery, ComputeSku]. All CloudService-related types, operation groups, enums, and options interfaces are removed because they are out of the TypeSpec project scope.Accepted: (not pre-approved -- requires review)
| Row | CHANGELOG Entry |
|---|---|
| 1 | Removed Interface CloudService |
| 2 | Removed Interface CloudServiceExtensionProfile |
| 3 | Removed Interface CloudServiceExtensionProperties |
| 4 | Removed Interface CloudServiceInstanceView |
| 5 | Removed Interface CloudServiceNetworkProfile |
| 6 | Removed Interface CloudServiceOperatingSystems |
| 7 | Removed Interface CloudServiceOperatingSystemsGetOSFamilyOptionalParams |
| 8 | Removed Interface CloudServiceOperatingSystemsGetOSVersionOptionalParams |
| 9 | Removed Interface CloudServiceOperatingSystemsListOSFamiliesOptionalParams |
| 10 | Removed Interface CloudServiceOperatingSystemsListOSVersionsOptionalParams |
| 11 | Removed Interface CloudServiceOsProfile |
| 12 | Removed Interface CloudServiceProperties |
| 13 | Removed Interface CloudServiceRole |
| 14 | Removed Interface CloudServiceRoleInstances |
| 15 | Removed Interface CloudServiceRoleInstancesDeleteOptionalParams |
| 16 | Removed Interface CloudServiceRoleInstancesGetInstanceViewOptionalParams |
| 17 | Removed Interface CloudServiceRoleInstancesGetOptionalParams |
| 18 | Removed Interface CloudServiceRoleInstancesGetRemoteDesktopFileOptionalParams |
| 19 | Removed Interface CloudServiceRoleInstancesListOptionalParams |
| 20 | Removed Interface CloudServiceRoleInstancesRebuildOptionalParams |
| 21 | Removed Interface CloudServiceRoleInstancesReimageOptionalParams |
| 22 | Removed Interface CloudServiceRoleInstancesRestartOptionalParams |
| 23 | Removed Interface CloudServiceRoleProfile |
| 24 | Removed Interface CloudServiceRoleProfileProperties |
| 25 | Removed Interface CloudServiceRoleProperties |
| 26 | Removed Interface CloudServiceRoles |
| 27 | Removed Interface CloudServiceRolesGetOptionalParams |
| 28 | Removed Interface CloudServiceRoleSku |
| 29 | Removed Interface CloudServiceRolesListOptionalParams |
| 30 | Removed Interface CloudServices |
| 31 | Removed Interface CloudServicesCreateOrUpdateOptionalParams |
| 32 | Removed Interface CloudServicesDeleteInstancesOptionalParams |
| 33 | Removed Interface CloudServicesDeleteOptionalParams |
| 34 | Removed Interface CloudServicesGetInstanceViewOptionalParams |
| 35 | Removed Interface CloudServicesGetOptionalParams |
| 36 | Removed Interface CloudServicesListAllOptionalParams |
| 37 | Removed Interface CloudServicesListOptionalParams |
| 38 | Removed Interface CloudServicesPowerOffOptionalParams |
| 39 | Removed Interface CloudServicesRebuildOptionalParams |
| 40 | Removed Interface CloudServicesReimageOptionalParams |
| 41 | Removed Interface CloudServicesRestartOptionalParams |
| 42 | Removed Interface CloudServicesStartOptionalParams |
| 43 | Removed Interface CloudServicesUpdateDomain |
| 44 | Removed Interface CloudServicesUpdateDomainGetUpdateDomainOptionalParams |
| 45 | Removed Interface CloudServicesUpdateDomainListUpdateDomainsOptionalParams |
| 46 | Removed Interface CloudServicesUpdateDomainWalkUpdateDomainOptionalParams |
| 47 | Removed Interface CloudServicesUpdateOptionalParams |
| 48 | Removed Interface CloudServiceUpdate |
| 49 | Removed Interface CloudServiceVaultAndSecretReference |
| 50 | Removed Interface CloudServiceVaultCertificate |
| 51 | Removed Interface CloudServiceVaultSecretGroup |
| 52 | Removed Interface Extension |
| 53 | Removed Interface InstanceSku |
| 54 | Removed Interface InstanceViewStatusesSummary |
| 55 | Removed Interface LoadBalancerConfiguration |
| 56 | Removed Interface LoadBalancerConfigurationProperties |
| 57 | Removed Interface LoadBalancerFrontendIpConfiguration |
| 58 | Removed Interface LoadBalancerFrontendIpConfigurationProperties |
| 59 | Removed Interface OSFamily |
| 60 | Removed Interface OSFamilyProperties |
| 61 | Removed Interface OSVersion |
| 62 | Removed Interface OSVersionProperties |
| 63 | Removed Interface OSVersionPropertiesBase |
| 64 | Removed Interface ResourceInstanceViewStatus |
| 65 | Removed Interface ResourceWithOptionalLocation |
| 66 | Removed Interface RoleInstance |
| 67 | Removed Interface RoleInstanceNetworkProfile |
| 68 | Removed Interface RoleInstanceProperties |
| 69 | Removed Interface RoleInstances |
| 70 | Removed Interface RoleInstanceView |
| 71 | Removed Interface StatusCodeCount |
| 72 | Removed Interface UpdateDomain |
| 73 | Removed Type Alias CloudServiceSlotType |
| 74 | Removed Type Alias CloudServiceUpgradeMode |
| 75 | Removed Enum KnownCloudServiceSlotType |
| 76 | Removed Enum KnownCloudServiceUpgradeMode |
Group 2: Collection/list wrapper types removed (Type 2b -- Emitter) -- 22 items
Root cause: The modular SDK returns
PagedAsyncIterableIterator<T>directly from list operations, removing the need for*List/*Collectionwrapper types that were generated by AutoRest.Approved pattern: Pattern 5 (paging interface changes)
Accepted: ✅
| Row | CHANGELOG Entry |
|---|---|
| 77 | Removed Interface CommunityGalleryImageList |
| 78 | Removed Interface CommunityGalleryImageVersionList |
| 79 | Removed Interface DiskAccessList |
| 80 | Removed Interface DiskEncryptionSetList |
| 81 | Removed Interface DiskList |
| 82 | Removed Interface DiskRestorePointList |
| 83 | Removed Interface GalleryApplicationList |
| 84 | Removed Interface GalleryApplicationVersionList |
| 85 | Removed Interface GalleryImageList |
| 86 | Removed Interface GalleryImageVersionList |
| 87 | Removed Interface GalleryInVMAccessControlProfileList |
| 88 | Removed Interface GalleryInVMAccessControlProfileVersionList |
| 89 | Removed Interface GalleryList |
| 90 | Removed Interface GalleryScriptList |
| 91 | Removed Interface GalleryScriptVersionList |
| 92 | Removed Interface GallerySoftDeletedResourceList |
| 93 | Removed Interface ResourceUriList |
| 94 | Removed Interface SharedGalleryImageList |
| 95 | Removed Interface SharedGalleryImageVersionList |
| 96 | Removed Interface SharedGalleryList |
| 97 | Removed Interface SnapshotList |
| 98 | Removed Interface VirtualMachineScaleSetListOSUpgradeHistory |
Group 3: Client class deleted (Type 2b -- Emitter) -- 2 items
Root cause: The modular SDK replaces the old flat client class (
ComputeManagementClientextendingcoreClient.ServiceClient) with a structured modular client. The old client class and its options interface are removed.Approved pattern: No exact match in approved patterns
Accepted: (requires review)
| Row | CHANGELOG Entry |
|---|---|
| 99 | Deleted Class ComputeManagementClient |
| 100 | Removed Interface ComputeManagementClientOptionalParams |
Group 4: Operation renamed (Type 2b -- Emitter) -- 1 item
Root cause: TypeSpec uses standard ARM operation naming conventions.
listOSUpgradeHistorywas renamed togetOSUpgradeHistoryto better reflect that it returns a paged list of upgrade history rather than a single resource.Approved pattern: Pattern 1 (operation name changes)
Accepted: ✅
| Row | CHANGELOG Entry |
|---|---|
| 101 | Removed operation VirtualMachineScaleSets.listOSUpgradeHistory (renamed to getOSUpgradeHistory) |
Group 5: LRO response wrapper removal (Type 2b -- Emitter) -- 10 items
Root cause: All 10 entries follow the same pattern -- the return type changed from an
XxxResponsewrapper (containing only response headers) tovoid, because the underlying swagger operation returns 202/204 with no response body. The old AutoRest-generated wrapper exposed only headers which are no longer surfaced in modular SDK.Approved pattern: Pattern 7 (response wrapper removal)
Accepted: ✅
| Row | CHANGELOG Entry | Old Return Type | New Return Type |
|---|---|---|---|
| 102 | Operation AvailabilitySets.beginConvertToVirtualMachineScaleSetAndWait has a new signature |
AvailabilitySetsConvertToVirtualMachineScaleSetResponse |
void |
| 103 | Operation DedicatedHosts.beginRedeployAndWait has a new signature |
DedicatedHostsRedeployResponse |
void |
| 104 | Operation DedicatedHosts.beginRestartAndWait has a new signature |
DedicatedHostsRestartResponse |
void |
| 105 | Operation GalleryInVMAccessControlProfiles.beginDeleteAndWait has a new signature |
GalleryInVMAccessControlProfilesDeleteResponse |
void |
| 106 | Operation GalleryInVMAccessControlProfileVersions.beginDeleteAndWait has a new signature |
GalleryInVMAccessControlProfileVersionsDeleteResponse |
void |
| 107 | Operation GalleryScripts.beginDeleteAndWait has a new signature |
GalleryScriptsDeleteResponse |
void |
| 108 | Operation GalleryScriptVersions.beginDeleteAndWait has a new signature |
GalleryScriptVersionsDeleteResponse |
void |
| 109 | Operation VirtualMachines.beginMigrateToVMScaleSetAndWait has a new signature |
VirtualMachinesMigrateToVMScaleSetResponse |
void |
| 110 | Operation VirtualMachineScaleSets.beginApproveRollingUpgradeAndWait has a new signature |
VirtualMachineScaleSetsApproveRollingUpgradeResponse |
void |
| 111 | Operation VirtualMachineScaleSetVMs.beginApproveRollingUpgradeAndWait has a new signature |
VirtualMachineScaleSetVMsApproveRollingUpgradeResponse |
void |
Group 6: Orphan type/enum removal (Type 2b -- Emitter) -- 2 items
Root cause: Types not referenced by any operation in the generated SDK are pruned by the modular emitter.
AvailabilitySetSkuTypeswas not used byAvailabilitySet.sku(which uses the genericSkutype).Approved pattern: Pattern 2 (orphan type removal)
Accepted: ✅
| Row | CHANGELOG Entry |
|---|---|
| 112 | Removed Type Alias AvailabilitySetSkuTypes |
| 113 | Removed Enum KnownAvailabilitySetSkuTypes |
Group 7: Enum member naming changes (Type 2b -- Emitter) -- 3 items
Root cause: The TypeScript enum member NAMES changed due to different naming conventions in the TypeSpec emitter vs AutoRest. The enum VALUES (the actual string values sent over the wire) are identical between old and new.
Approved pattern: Pattern 3 (common type name changes)
Accepted: ✅
| Row | CHANGELOG Entry | Old Member Name | New Member Name | Wire Value (unchanged) |
|---|---|---|---|---|
| 114 | Enum KnownDiskSecurityTypes no longer has value ConfidentialVMVmguestStateOnlyEncryptedWithPlatformKey |
ConfidentialVMVmguestStateOnlyEncryptedWithPlatformKey |
ConfidentialVMVMGuestStateOnlyEncryptedWithPlatformKey |
ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey |
| 115 | Enum KnownNetworkApiVersion no longer has value TwoThousandTwenty1101 |
TwoThousandTwenty1101 |
NetworkApiVersion20201101 |
2020-11-01 |
| 116 | Enum KnownNetworkApiVersion no longer has value TwoThousandTwentyTwo1101 |
TwoThousandTwentyTwo1101 |
NetworkApiVersion20221101 |
2022-11-01 |
Footer
| Metric | Count |
|---|---|
| Total breaking changes | 116 |
| Type 1 (API version delta) | 0 |
| Type 2 (TypeSpec/Emitter migration) | 116 |
| -- Type 2a (Scope exclusion) | 76 |
| -- Type 2b (Emitter) | 40 |
| Pre-approved (matching patterns) | 38 |
| Requiring review | 78 |
Configurations: 'specification/compute/resource-manager/Microsoft.Compute/Compute/tspconfig.yaml', and CommitSHA: '731c5fa4e0f768bb98e98c0837595677434d3e38' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6169346 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.