v1.9.0 — Full SDK-compat coverage across every service
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, ARMMicrosoft.Network/loadBalancers) — CreateOrUpdate / Get / List / Delete; backend pools → target groups, load-balancing rules → listeners. Matches onlyloadBalancers(disjoint from network/dns). - GCP LB (
server/gcp/loadbalancer, compute REST) — globalbackendServices+forwardingRulesinsert / 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/AWSPREVIOUSstaging; ARN or name lookup; typedResourceNotFoundException/ResourceExistsException. - Azure Key Vault (
/secrets/…data plane) — SetSecret, GetSecret (current / by version), list properties & versions, DeleteSecret; models the 401 +WWW-Authenticatebearer challenge. - GCP Secret Manager (
secretmanager/v1) — secrets create / get / list / delete,:addVersion, versions list / get,:access;latestalias.
DNS
- AWS Route 53 (REST/XML) — CreateHostedZone, GetHostedZone, ListHostedZones, DeleteHostedZone, ChangeResourceRecordSets (CREATE/UPSERT/DELETE), ListResourceRecordSets; record-level change errors map to
InvalidChangeBatch;CallerReferenceround-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 withgoogle.longrunning.Operationenvelopes. - 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-tokenlogNamematching),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 (honorsvalidateOnlyas 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.