Repository navigation
AWS → Azure Feature Parity Gaps #473
Copy link
Copy link
Closed
Labels
Post Launch Feature Parity AnalysisPost-launch review of feature parity across cloud providersPost-launch review of feature parity across cloud providerseffort/lWeeksWeeksimpact/all-usersAffects every userAffects every userpriority/p2Backlog-worthyBacklog-worthyseverity/mediumModerate harmModerate harmtriagedItem has been triagedItem has been triagedtype/featNew capabilityNew capabilityurgency/this-sprintWithin the current sprintWithin the current sprint
Description
Summary
This issue tracks the feature parity gaps between the AWS and Azure provider implementations, identified via static analysis of the codebase.
Services Covered
| Domain | AWS | Azure |
|---|---|---|
| Compute | EC2 | Compute (VMs) |
| Relational DB | RDS | Database (Azure SQL) |
| Cache | ElastiCache | Cache (Redis) |
| NoSQL | (none) | CosmosDB |
| Search | OpenSearch | Implemented but unreachable (see below) |
| Data Warehouse | Redshift | (missing) |
| In-memory DB | MemoryDB | (missing) |
| Savings Plans | SavingsPlans | (missing) |
Gaps: Azure Behind AWS
| Feature | AWS | Azure |
|---|---|---|
| Multi-account (Organizations) | Yes — enumerates org accounts automatically | No — GetAccounts discovers subscriptions but GetServiceClient only operates on one at a time |
| Savings Plans | Yes | No |
| Data Warehouse (Redshift) | Yes | No Azure Synapse equivalent |
| MemoryDB | Yes | No |
| Convertible RI exchange | Yes (EC2 only) — ListConvertibleReservedInstances, FindConvertibleOfferings |
No |
| RI Utilization reporting | Yes — GetRIUtilization via Cost Explorer |
No |
Bug: Azure Search Client is Dead Code
providers/azure/services/search/ is fully implemented (GetRecommendations, GetExistingCommitments, PurchaseCommitment, ValidateOffering, GetOfferingDetails, GetValidResourceTypes) but is never reachable — GetSupportedServices() and GetServiceClient() in providers/azure/provider.go have no reference to it.
It needs to be wired up:
- Add
common.ServiceSearchto theGetSupportedServices()return slice - Add a
case common.ServiceSearch:branch inGetServiceClient()returningNewSearchClient(...)
Azure-Only (AWS gaps)
- CosmosDB — no AWS NoSQL equivalent in CUDly
- Azure Search — once wired up, AWS OpenSearch is the counterpart
Notes
- All service clients that are implemented (both providers) share the full
ServiceClientinterface:GetRecommendations,GetExistingCommitments,PurchaseCommitment,ValidateOffering,GetOfferingDetails,GetValidResourceTypes - Azure tags reservations inline at purchase time (embedded in the PUT body); AWS EC2/OpenSearch/Redshift make a separate tagging call post-purchase — this is parity via different mechanisms, not a gap
GetRIUtilizationis an AWS-specific extension explicitly outside theprovider.RecommendationsClientinterface
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Post Launch Feature Parity AnalysisPost-launch review of feature parity across cloud providersPost-launch review of feature parity across cloud providerseffort/lWeeksWeeksimpact/all-usersAffects every userAffects every userpriority/p2Backlog-worthyBacklog-worthyseverity/mediumModerate harmModerate harmtriagedItem has been triagedItem has been triagedtype/featNew capabilityNew capabilityurgency/this-sprintWithin the current sprintWithin the current sprint
Activity
cristim commentedon May 20, 2026
Sub-issues Filed
This meta-tracker has been split into the following triaged sub-issues:
See individual issues for detailed scope, acceptance criteria, and suggested approaches.
cristim commentedon May 20, 2026
PR #560 addresses the Azure Search wiring sub-task:
GetSupportedServices()now includesServiceSearchandGetServiceClient()dispatches toNewSearchClient(). Also fixed the pre-existingServiceOthermisclassification in the search client itself.Remaining open gaps from the original analysis (not addressed by #560):
GetValidResourceTypes/ValidateOfferingpatterns may need integration testing once the client is reachablecristim commentedon May 20, 2026
Status update on the 7 split-out sub-issues:
providers/azure/provider.goswitch +go.modAzure SDK deps, so concurrent agents would merge-conflict heavily. Will pick them up serially after the two P2s land.Plus PR for the Azure Search wiring sub-task is in flight under separate branch
fix/issue-473-azure-search-wiring.feat(providers/azure): add RI utilization reporting (closes #558) (#563)
feat(azure/ri-exchange): list exchangeable Azure VM reservations (refs …
feat(azure): multi-subscription enumeration parity with AWS Organizat…
feat(azure/savings-plans): provider client + dispatch wiring (refs #473)
2 remaining items
fix(providers/azure): wire Azure Search client into provider (closes #…
feat(providers/azure/synapse): add data-warehouse service client (closes
feat(azure/savings-plans): provider client + dispatch wiring (refs #473…
fix(providers/azure): wire Azure Search client into provider (closes #…
feat(providers/azure/synapse): add data-warehouse service client (closes
feat(providers/azure/synapse): add data-warehouse service client (closes
fix(providers/azure): wire Azure Search client into provider (closes #…
feat(providers/azure/synapse): add data-warehouse service client (closes
fix(providers/azure): wire Azure Search client into provider (closes #…
fix(providers/azure): wire Azure Search client into provider (closes #…
feat(azure/compute): CalculateExchange and DoExchange client operations
feat(azure/ri-exchange): find compatible offerings and execute exchan…
feat(azure/ri-exchange): list exchangeable Azure VM reservations (refs …
feat(azure/savings-plans): provider client + dispatch wiring (refs #473…