Saltar al contenido principal

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/java
  • dudamel/src/main/resources/static
  • dudamel/pom.xml
  • dudamel/Dockerfile
  • dudamel/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.