Skip to content

AWS → Azure Feature Parity Gaps #473

Description

@rocketri

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:

  1. Add common.ServiceSearch to the GetSupportedServices() return slice
  2. Add a case common.ServiceSearch: branch in GetServiceClient() returning NewSearchClient(...)

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 ServiceClient interface: 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
  • GetRIUtilization is an AWS-specific extension explicitly outside the provider.RecommendationsClient interface

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions