dudamel
Purpose and Production Relevance
dudamel is a Java VM manager for Google Cloud Platform. It can create and manage VMs, clone repositories, install Java/Docker, reserve IPs, and expose a small dashboard.
Production relevance: infrastructure experiment/supporting tool. It is not documented as part of the current production tagging request path.
Stack and Main Dependencies
- Java 21.
- Spring Boot 3.2.
- Google Cloud Compute, Secret Manager, Firestore, Pub/Sub, and BigQuery libraries.
- Static HTML/Tailwind/JavaScript dashboard.
Important files and folders:
dudamel/src/main/javadudamel/src/main/resources/staticdudamel/pom.xmldudamel/Dockerfiledudamel/README.md
Business Responsibilities
- Create Google Cloud VMs.
- Reserve and attach static IPs.
- Install runtime dependencies on VMs.
- Clone a configured GitHub repository into the VM.
- Create Pub/Sub resources.
- Store VM metadata.
- Display VM list/status/details in a dashboard.
Technical Architecture and Source-Code Entry Points
The README describes:
- Controllers for VM, config, and health endpoints.
- Services for orchestration, compute, static IPs, Pub/Sub, Firestore, GCP project data, and startup script generation.
- Models and DTOs for VM state.
- Static dashboard assets under resources.
Key Data Flows and Service Integrations
Environment, Deploy, and Runtime Notes
Common commands:
cd dudamel
mvn test
mvn package
Requires GCP credentials and project configuration.
Debugging Checklist
- If VM creation fails, check GCP credentials, quotas, zones, machine type, and service account permissions.
- If startup script fails, inspect VM serial logs and generated script content.
- If repo clone fails, check GitHub URL, branch, and network access.
- If metadata is stale, check Firestore/project service behavior.
Tests or Validation Commands
cd dudamel
mvn test
mvn package
Mastery Checklist
- Explain VM creation from API request to startup script.
- Know which GCP permissions are required.
- Separate useful infrastructure automation ideas from current production runtime.