Skip to content

[AutoPR @azure-arm-compute]-generated-from-SDK Generation - JS-6169346#38183

Closed
azure-sdk wants to merge 1 commit intomainfrom
sdkauto/@azure-arm-compute-6169346
Closed

[AutoPR @azure-arm-compute]-generated-from-SDK Generation - JS-6169346#38183
azure-sdk wants to merge 1 commit intomainfrom
sdkauto/@azure-arm-compute-6169346

Conversation

@azure-sdk
Copy link
Copy Markdown
Collaborator

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.

@github-actions github-actions Bot added the Mgmt This issue is related to a management-plane library. label Apr 17, 2026
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

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
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.

🔴 Design ConcernCHANGELOG.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 {
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.

🔴 Design Concernarm-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.

@JialinHuang803
Copy link
Copy Markdown
Member

JialinHuang803 commented Apr 18, 2026

Breaking Change Analysis: @azure/arm-compute v23.3.0 -> v24.0.0

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:

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-01 tag) included Microsoft.Compute/CloudserviceRP/stable/2024-11-04/cloudService.json. The new TypeSpec project at Microsoft.Compute/Compute does NOT include CloudService APIs -- the client.tsp only 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/*Collection wrapper 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 (ComputeManagementClient extending coreClient.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. listOSUpgradeHistory was renamed to getOSUpgradeHistory to 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 XxxResponse wrapper (containing only response headers) to void, 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. AvailabilitySetSkuTypes was not used by AvailabilitySet.sku (which uses the generic Sku type).

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

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

Labels

Mgmt This issue is related to a management-plane library. refresh PR for SDK refresh

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants