Skip to content

Resource-discovery parity: surface the resources cloudemu already emulates (only 7–8 types today) #295

Description

@thzgajendra

Summary

cloudemu has a two-layer coverage picture, and the two are badly out of sync:

  • Emulation (API) layer — broad. ~23 service categories are implemented across AWS/Azure/GCP with real SDK-compat wire handlers (only 3 known per-cell gaps).
  • Discovery (inventory) layer — very narrow. resourcediscovery walks only 5 drivers and emits only 8 resource types total. Every SDK-compat inventory API (Resource Explorer 2, Resource Graph, Cloud Asset) is a 1:1 re-label of those same 8.

So even though RDS/EKS/ELB/ElastiCache/SNS/SQS/Bedrock/SageMaker etc. are emulated, none of them appear when a client enumerates resources via RE2 / Resource Graph / Cloud Asset. The discovery layer should surface the resources cloudemu already models (and, over time, the broader provider catalog).

Evidence: resourcediscovery/walkers.go (6 walkers, 8 type constants L30-39), resourcediscovery/engine.go L102-130; server/aws/resourceexplorer2/handler.go + filter.go; server/azure/resourcegraph/kql.go (mapAzureType) + handler.go; server/gcp/cloudasset/filter.go (mapGCPAssetType).

Resource types surfaced in discovery TODAY (exhaustive)

Engine type AWS RE2 Azure Resource Graph GCP Cloud Asset
Instance compute:instance microsoft.compute/virtualmachines compute.googleapis.com/Instance
VPC networking:vpc microsoft.network/virtualnetworks compute.googleapis.com/Network
Subnet networking:subnet microsoft.network/subnets compute.googleapis.com/Subnetwork
SecurityGroup networking:securitygroup microsoft.network/networksecuritygroups compute.googleapis.com/Firewall
Bucket storage:bucket microsoft.storage/storageaccounts storage.googleapis.com/Bucket
Table database:table microsoft.documentdb/databaseaccounts firestore.googleapis.com/Database
Function serverless:function microsoft.web/sites cloudfunctions.googleapis.com/Function
Workspace (Azure only) microsoft.databricks/workspaces

Emulated-service coverage (for reference)

All 20 portable categories are implemented for all 3 providers. Specialized categories with per-cell gaps: Bedrock (AWS only), Databricks (Azure only), AI Search (Azure only). Note: statemachine/ is a generic FSM helper, not Step Functions / Workflows / Logic Apps — those are not emulated.

Remaining — prioritized backlog

Workstream A — surface what's already emulated (high-leverage, cheap)

The drivers exist; each needs a walker + an entry in the three type-mapping tables (resourceexplorer2/{handler,filter}.go, resourcegraph/kql.go mapAzureType/portableToAzureType, cloudasset/filter.go mapGCPAssetType/portableToGCPAssetType). Order:

  1. Relational DB (all) — RDS/Aurora/DocumentDB/Neptune (instance+cluster+snapshot+proxy), Redshift, Cloud SQL, Azure SQL / postgres-flex / mysql-flex. Driver: relationaldb/.
  2. Kubernetes (all) — EKS cluster/nodegroup, GKE cluster/nodepool, AKS managedclusters(+agentpools).
  3. Load Balancer (all) — ALB/NLB/GWLB, GCP LB, Azure LB/App Gateway. Driver: loadbalancer/.
  4. Cache (all) — ElastiCache, Memorystore/Redis, Azure Cache.
  5. Container Registry — ECR, Artifact Registry, ACR.
  6. Message Queue + Notification — SQS/PubSub/Service Bus, SNS.
  7. Secrets — Secrets Manager / Secret Manager / Key Vault.
  8. DNS — Route 53 zones, Cloud DNS ManagedZone, Azure DNS.
  9. IAM — user/role/policy/group (note: cloudasset searchAllIamPolicies returns empty today).
  10. Networking sub-types — NAT GW / IGW / EIP / VPC peering (AWS); Disk/Address/Router/ForwardingRule (GCP); disks/public-IP/NIC/App-Gateway (Azure).
  11. ML / GenAI — SageMaker*, Vertex AI kinds, Azure AI (CognitiveServices + MachineLearningServices), Bedrock*.
  12. Monitoring/Logging — CloudWatch alarms/dashboards/logs; Azure Insights/Log Analytics.

Also refine existing mappings: GCP compute Disk/Snapshot are collapsed; Database→Table maps Firestore only to Database (finer kinds expected).

Workstream B — net-new emulation (larger)

  • AWS: EBS volume/snapshot, EIP, NAT GW, IGW, VPC peering, EFS, KMS, OpenSearch, MSK, MemoryDB, Kinesis(+analytics), DAX, EMR(+serverless), Glue, DMS, Step Functions, WAF, GuardDuty, CloudTrail, Config, ACM, SES, WorkSpaces, Transfer, Beanstalk, App Runner, Lightsail.
  • GCP: BigQuery, Spanner, Bigtable, AlloyDB, Dataproc/Dataflow/Composer, Filestore, Memcache, API Gateway, App Engine, Workflows, TPU, Notebooks, compute Interconnect/NodeGroup.
  • Azure: SQL servers/DB (relational, distinct from Cosmos), Container Instances, Data Factory, Synapse, HDInsight, Kusto/Data Explorer, Logic Apps, NetApp, Recovery Services, IoT Hub, API Management, Container Apps, SQL MI, Stream Analytics, and remaining network sub-types (DDoS/ExpressRoute/Front Door/Network Watcher/Traffic Manager/VPN Gateway).

Counts (types surfaced in discovery today)

  • AWS — 7 surfaced.
  • Azure — 8 surfaced.
  • GCP — 7 surfaced.

Fastest path = Workstream A: write walkers over drivers cloudemu already has, and add matching type-mapping entries in the three inventory handlers.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions