Skip to content

v1.9.0 — Full SDK-compat coverage across every service

Choose a tag to compare

@NitinKumar004 NitinKumar004 released this 11 Jul 19:05
cf19cc6

cloudemu Release Notes — v1.9.0

Full SDK-compat coverage. This release wires the last seven service domains through the SDK-compat HTTP layer, so every service driver cloudemu ships now speaks its cloud's real wire protocol across AWS, Azure, and GCP. Point the real aws-sdk-go-v2, azure-sdk-for-go, and cloud.google.com/go clients at a local endpoint and drive Load Balancer, Secrets, DNS, Cache, Logging, Notification, and Event Bus — no code changes, no Docker, no accounts. Completes #143.

✨ Features

Load Balancer — SDK-compat across AWS, Azure, and GCP

AWS ELBv2, Azure Load Balancer, and GCP Load Balancing now drive the existing loadbalancer driver: load balancers, target groups / backend pools, listeners / rules, and target registration & health — with each provider's native create / describe / delete semantics and typed errors.

Secrets — SDK-compat across AWS, Azure, and GCP

AWS Secrets Manager, Azure Key Vault (secrets data plane), and GCP Secret Manager now speak their real protocols against the secrets driver: secret lifecycle, value versioning / staging, and access — including Key Vault's bearer-challenge handshake.

DNS — SDK-compat across AWS, Azure, and GCP

AWS Route 53, Azure DNS, and GCP Cloud DNS drive the dns driver: hosted zones / managed zones and record sets (A/AAAA/CNAME/TXT/NS/PTR), with real change-batch / record semantics and typed errors.

Cache — SDK-compat across AWS, Azure, and GCP

AWS ElastiCache, Azure Cache for Redis, and GCP Memorystore now serve the cache driver's cluster/instance control plane: create / describe / list / delete with each provider's LRO and error shapes.

Logging — SDK-compat across AWS, Azure, and GCP

AWS CloudWatch Logs, Azure Log Analytics, and GCP Cloud Logging drive the logging driver: log groups / streams (or workspaces), put / get / filter log events, with AWS epoch-millis timestamps and typed errors.

Notification — SDK-compat across AWS, Azure, and GCP

AWS SNS, Azure Notification Hubs, and GCP FCM drive the notification driver: topics / subscriptions / publish (SNS), namespaces & hubs (Notification Hubs), and messages:send (FCM).

Event Bus — SDK-compat across AWS, Azure, and GCP

AWS EventBridge, Azure Event Grid, and GCP Eventarc drive the eventbus driver: event buses / topics / triggers, rules & targets, and event publishing.

Technical Details

Load Balancer
  • AWS ELBv2 (server/aws/elbv2, query protocol) — CreateLoadBalancer, DescribeLoadBalancers (by ARN / by name / all), DeleteLoadBalancer; target groups, listeners, rules; RegisterTargets / DeregisterTargets / DescribeTargetHealth. Registered before EC2 with a disjoint action set. Typed errors incl. LoadBalancerNotFoundException, TargetGroupNotFoundException, RuleNotFoundException; a Describe by a non-existent name returns NotFound (not the whole fleet).
  • Azure LB (server/azure/loadbalancer, ARM Microsoft.Network/loadBalancers) — CreateOrUpdate / Get / List / Delete; backend pools → target groups, load-balancing rules → listeners. Matches only loadBalancers (disjoint from network/dns).
  • GCP LB (server/gcp/loadbalancer, compute REST) — global backendServices + forwardingRules insert / get / list / delete; a forwarding rule referencing a missing backend service errors rather than dangling.
Secrets
  • AWS Secrets Manager (AWS JSON 1.1) — CreateSecret, DescribeSecret, ListSecrets, DeleteSecret, GetSecretValue, PutSecretValue, ListSecretVersionIds; AWSCURRENT/AWSPREVIOUS staging; ARN or name lookup; typed ResourceNotFoundException / ResourceExistsException.
  • Azure Key Vault (/secrets/… data plane) — SetSecret, GetSecret (current / by version), list properties & versions, DeleteSecret; models the 401 + WWW-Authenticate bearer challenge.
  • GCP Secret Manager (secretmanager/v1) — secrets create / get / list / delete, :addVersion, versions list / get, :access; latest alias.
DNS
  • AWS Route 53 (REST/XML) — CreateHostedZone, GetHostedZone, ListHostedZones, DeleteHostedZone, ChangeResourceRecordSets (CREATE/UPSERT/DELETE), ListResourceRecordSets; record-level change errors map to InvalidChangeBatch; CallerReference round-trips.
  • Azure DNS (ARM Microsoft.Network/dnsZones) — zones CRUD + record sets for A/AAAA/CNAME/TXT/NS/PTR; case-insensitive zone-name resolution.
  • GCP Cloud DNS (dns/v1) — managedZones create / get / list / delete (by name or numeric id), changes.create (validated up front), resourceRecordSets.list.
Cache
  • AWS ElastiCache (query protocol) — CreateCacheCluster, DescribeCacheClusters (get / list), DeleteCacheCluster; endpoint / configuration-endpoint split; typed CacheClusterNotFound / CacheClusterAlreadyExists.
  • Azure Cache for Redis (ARM Microsoft.Cache/redis) — CreateOrUpdate / Get / List / Delete; SKU ↔ node type; inline LRO.
  • GCP Memorystore (redis/v1) — instances create / get / list / delete with google.longrunning.Operation envelopes.
  • Scope: cluster/instance control plane. The Redis data plane (GET/SET/…) has no cloud-SDK surface and is intentionally out of scope.
Logging
  • AWS CloudWatch Logs (AWS JSON 1.1) — log groups & streams CRUD, PutLogEvents, GetLogEvents, FilterLogEvents; epoch-millis timestamps.
  • Azure Log Analytics (ARM Microsoft.OperationalInsights/workspaces) — a workspace maps to a driver log group; CreateOrUpdate / Get / List / Delete (inline LRO). The data-plane log-query API is out of scope.
  • GCP Cloud Logging (v2) — entries:write → put events, entries:list → get / filter (whole-token logName matching), logs.list, logs.delete.
Notification
  • AWS SNS (query protocol) — CreateTopic, DeleteTopic, ListTopics, GetTopicAttributes, Subscribe, Unsubscribe, ListSubscriptions(ByTopic), Publish; ARN ↔ name; idempotent CreateTopic; typed NotFoundException.
  • Azure Notification Hubs (ARM Microsoft.NotificationHubs) — namespaces & hubs CRUD (inline LRO).
  • GCP FCM (fcm/v1) — messages:send → publish (honors validateOnly as a no-side-effect dry run). FCM's REST surface has no topic/subscription CRUD, so none is fabricated.
Event Bus
  • AWS EventBridge (AWS JSON 1.1) — event buses, rules (+ enable/disable), targets, PutEvents; typed ResourceNotFoundException / ResourceAlreadyExistsException.
  • Azure Event Grid (ARM Microsoft.EventGrid/topics) — topics → event buses CRUD (inline LRO). Data-plane event publish is a separate endpoint (out of scope).
  • GCP Eventarc (eventarc/v1) — triggers → rules create / get / list / delete (LRO), with atomic rollback if target wiring fails.