Skip to content

v2.2.0

Choose a tag to compare

@thzgajendra thzgajendra released this 01 Aug 13:14
· 950 commits to master since this release
2d9b0c5

cloudemu Release Notes — v2.2.0

✨ Features

Managed database services

Nine managed database and data services now work against cloudemu with their real SDKs — including the native child resources a real workload provisions, surfaced in cross-service discovery and priced in the cost catalog:

  • AWS Keyspaces (Cassandra) — keyspaces, tables, and user-defined types over the JSON-1.0 wire.
  • AWS MemoryDB for Redis/Valkey — clusters, subnet and parameter groups, ACLs, snapshots, and fleet-maintenance operations.
  • GCP AlloyDB — clusters, instances, users, databases, and backups.
  • GCP Bigtable Admin — instances, clusters, tables (with column families and GC rules), app profiles, backups, and per-resource IAM.
  • Azure Managed Instance for Apache Cassandra — clusters and datacenters, deallocate/start, status, and invoke-command.
  • Managed SQL — Azure SQL (including Managed Instances), Azure MySQL and PostgreSQL Flexible Server, and GCP Cloud SQL, now with their native child resources: databases, users, firewall rules, elastic pools, and failover groups.

AWS RDS & Bedrock

  • RDS reaches full management-plane parity, and now appears in resource discovery with cost and CloudWatch metrics.
  • Bedrock is complete across bedrock, bedrockruntime, bedrockagent, and bedrockagentruntime.

AWS ECS

  • A new ECS service, so real aws-sdk-go-v2/service/ecs clients work against cloudemu unchanged.
  • EC2 managed-resource visibility — Operator.Managed and IncludeManagedResources on DescribeInstances.

Kubernetes

  • A shared in-memory API server with a synchronous, deterministic reconcile engine that drives objects to a healthy running state on every write.
  • The full cluster lifecycle — create → running → scale → rolling update → teardown — across EKS, GKE, and AKS.
  • Real kubectl works end to end, not just client-go.
  • Clusters and node groups appear in resource discovery.

Standalone server tooling

  • Docker image — pull and run the whole emulated cloud as a container.
  • Testcontainers-Go module — start cloudemu from a Go test in one line.
  • Declarative seed fixtures — preload resources from a fixture file or the /_cloudemu/seed endpoint.
  • Reset control plane/_cloudemu/reset wipes all state between tests for isolation.

S3 object versioning

  • Full version history, versionId operations, delete markers, and versioned multipart completion.

🔧 Enhancements

Improvements that came out of running real infrastructure provisioners against cloudemu — closing behavior gaps so full provision-and-teardown flows work end to end.

SSM Parameter Store

  • GetParametersByPath and DescribeParameters now paginate, so large parameter trees come back page by page, exactly as the real service returns them.
  • Requesting a parameter version that doesn't exist now returns the precise ParameterVersionNotFound error instead of a generic "not found".

S3

  • ListParts now reports the parts you've actually uploaded to a multipart upload, and rejects part numbers outside the valid 1–10000 range.
  • Unsupported operations on S3 sub-resources now return 405 Method Not Allowed, matching real S3.

Azure Table Storage

  • $filter queries that use unsupported expressions or partial-key predicates are now rejected with a clear error, instead of quietly returning incorrect results.
  • $filter expressions with extra whitespace are now parsed correctly.

Technical Details

Managed database services (#307, #305, #304, #303, #308, #309)
  • Each service follows the driver → in-memory provider → portable API → SDK-compat wire-handler layering, with provider unit tests and real-SDK round-trip tests.
  • Keyspaces (#307) and MemoryDB (#305) are control-plane-only and get their own drivers; AlloyDB (#304) and Managed SQL (#303) reuse the shared relationaldb driver and its child resources (Users/Databases/…).
  • Managed Cassandra (#308) models the Microsoft.DocumentDB/cassandraClusters ARM surface (cluster + datacenter parent/child, deallocate/start LRO, invoke-command, status).
  • Bigtable (#309) uses the bigtableadmin/v2 SDK types as the wire format for exact fidelity; recursive GC rules, per-resource IAM, and cascade delete.
RDS (#301) & Bedrock (#298)
  • RDS: expanded from 24 wired actions to comprehensive management-plane parity, added to resource discovery (issue #295 workstream A) and the cost catalog.
  • Bedrock: completes the driver → provider → portable API → restJson1 handler across the remaining surface, with per-subsystem unit and real-SDK round-trip tests.
ECS + EC2 managed visibility (#302, #159, #300)
  • New ECS SDK-compat handler for aws-sdk-go-v2/service/ecs.
  • Operator.Managed + IncludeManagedResources on DescribeInstances, hidden by default via an account setting (ECS Managed Instances are a primary producer of managed EC2 instances).
Kubernetes runtime + discovery (#299, #297)
  • Shared in-memory API server with a no-goroutine synchronous reconcile engine (deterministic).
  • Full lifecycle parity across EKS/GKE/AKS; real kubectl support end-to-end.
  • Clusters and node groups surfaced in cross-service discovery.
Standalone-server tooling (#247, #248, #250, #244)
  • Publishable Docker image (#247); Testcontainers-Go contrib module (#248).
  • Declarative seed fixture loader + /_cloudemu/seed endpoint with validate-before-write and oversize 413 (#250).
  • /_cloudemu/reset admin control plane for test isolation (#244).
S3 versioning & fidelity batches (#266 workstream, #296)
  • S3 real object versioning: history, versionId ops, delete markers, versioned multipart completion.
  • Fidelity batches: SSM pagination, S3 ListParts bounds and sub-resource 405s, Azure table $filter validation, multipart parts-map guarding.
  • AWS provisioning-lifecycle gaps closed against a real provisioner (#296), each covered by an aws-sdk-go-v2 round-trip test.

Full Changelog: v2.1.0...v2.2.0