Architecture

Source Code Details

Source Code

The source code for the DevOps service is available on GitHub.

2 Folder Structure

Folder Role in the code-base Why it matters
api_documentation/ Generates and hosts the OpenAPI / Swagger spec for every REST and gRPC endpoint. It contains a small code-gen harness plus a packaged HTML bundle for publishing the docs. GitHub Keeps API contracts explicit and version-controlled for both internal teams and external integrators.
basecontext/ Shared helpers that enrich Go context.Context with common cross-cutting data (request IDs, auth claims, deadlines). GitHub Guarantees traceability and consistent cancellation semantics across micro-services.
catalog/ All logic for image metadata: push, pull, validate, taint/revoke, and a pluggable cache layer. Sub-packages such as cacheservice/ and providers/ implement storage adapters. GitHub Powers the golden-image workflow so every VM starts from a trusted, versioned manifest.
cmd/ Entry points for each executable (CLI, orchestrator, catalog, reverse-proxy). Builds are wired through Go’s main packages here. GitHub Cleanly separates binaries from libraries, simplifying Docker image builds.
compressor/ Utilities to (de)compress large VM archives before upload or after download. GitHub Reduces network egress costs and speeds up catalog import/export.
config/ Strongly-typed structs + YAML/ENV loaders that capture every tunable system parameter. GitHub Central location for default values, env overrides, and config validation.
constants/ Service-wide enumerations, default strings, HTTP header keys, etc. GitHub Avoids magic strings scattered across the code-base.
controllers/ Thin HTTP / gRPC handler layer that wires routing to the underlying service logic. GitHub Implements the “C” of MVC, keeping transport concerns out of business code.
data/ Embedded assets and static seed files (e.g., SQL migrations, default manifests). GitHub Ensures the service is self-contained at start-up—no external bootstrap scripts needed.
docs/ Developer-facing design notes and ADRs that accompany the code. GitHub Provides living documentation right beside the implementation.
errors/ Centralised error types, gRPC status mapping, and helper wrappers for stack traces. GitHub Gives callers rich, typed feedback while maintaining uniform logging.
install/ Shell scripts and helper manifests for bootstrapping hosts and registering them with the orchestrator. GitHub Accelerates first-time setup in lab and CI environments.
logs/ Custom logger façade that standardises JSON output and hooks into telemetry back-ends. GitHub Provides consistent, structured logs across every micro-service.
mappers/ DTO ↔️ persistence translators, shielding business structs from DB schemas. GitHub Decouples storage evolution from API contracts.
models/ Core domain structs (VM, Host, Manifest, Token, etc.). Acts as the canonical data model. GitHub Shared language across services, DB, and API.
notifications/ Abstraction for outbound webhooks / event streams (Slack, email, Opsgenie). GitHub Enables alerting and CI feedback loops without polluting core logic.
orchestrator/ Heart of the platform: host discovery, VM scheduling, health checks, and lifecycle APIs. Individual Go files map 1-to-1 with REST resources (e.g., get_host_virtual_machines.go). GitHub Ensures the right VM lands on the right macOS host with minimal latency.
pdfile/ Helpers for parsing the Parallels .pvm / .macvm package format (disk images, config). GitHub Makes VM introspection and validation platform-agnostic.
restapi/ OpenAPI-generated client/server glue code plus custom middleware (CORS, auth, metrics). GitHub Keeps transport boilerplate out of business services.
reverse_proxy/ Lightweight TCP/HTTP router that exposes VM services (SSH, RDP, HTTPS) on per-VM sub-domains/ports. Includes a small models/ package for runtime config. GitHub Gives external users a stable URL while hosts and VMs remain private.
security/ Token validation, password hashing, and RBAC policy helpers. GitHub Centralises all authZ/authN concerns in one place.
serviceprovider/ Go interfaces + adapters for external systems (storage, queue, secrets). GitHub Allows swapping S3 for Azure Blob, or adding a new secret vault, without touching business code.
sql/ SQL scripts and migration stubs, often embedded by data/. GitHub Version-controls schema alongside code for repeatable deployments.
startup/ Wiring for dependency injection: builds service graphs, sets up routing, starts HTTP/gRPC servers. GitHub Keeps main.go thin and makes unit-testing easier.
telemetry/ Prometheus metrics, OpenTelemetry traces, and health-check endpoints. GitHub Gives ops teams deep insight into performance and error rates.
tests/ Integration and behaviour-driven tests that spin up in-memory services or Docker-compose stacks. GitHub Protects against regressions across the multi-service surface area.
writers/ Stream/JSON/XML writers for large HTTP responses (log tails, VM exports). GitHub Keeps memory usage predictable when returning big payloads.