Monorepo for the DCM control plane monolith.
cmd/control-plane/ # monolith entrypoint
internal/app/ # wiring, config, shared DB bootstrap
internal/catalog/ # catalog manager
internal/placement/ # placement manager
internal/policy/ # policy manager (CRUD + OPA engine)
internal/sp/ # service provider manager
api/ # OpenAPI specs per domain
pkg/ # generated HTTP clients
test/subsystem/ # per-domain subsystem tests
deploy/ # platform compose, helm chart, postgres init
See the control plane monolith enhancement.
Build and unit tests:
make build
make test
make lint
make check-catalog-aepRun the monolith (pick one):
| Command | Where it runs | Database | Other deps |
|---|---|---|---|
make run |
host | SQLite at /tmp/control-plane.db |
NATS disabled |
make run-dev |
host | Postgres (DB_* defaults) |
Postgres + NATS running locally |
make compose-up |
containers | Postgres in compose | also starts NATS, control-plane, and dcm-ui |
make run # SQLite, no containers
make compose-up # platform stack in containers
make compose-down # stop stack and remove volumesCompose uses POSTGRES_USER and POSTGRES_PASSWORD (defaults in compose
are for local dev only). Override via environment or a .env file; see
deploy/.env.example.
Policy evaluation and placement provisioning run in-process in the monolith
(EvaluationService, PlacementService via local clients). There is no public
HTTP route for policies:evaluateRequest or /resources. Use
make test-policy and make test-placement for unit coverage.
Per-domain subsystem tests still run separately; catalog compose may set
PLACEMENT_MANAGER_URL to reach WireMock placement stubs (test-only; not a
production API on the monolith).
Legacy cmd/*-manager binaries were removed. Use make build / make run.
Build locally:
make image-buildCI pushes to quay.io/dcm-project/control-plane on merges to main and
release/v* branches (and on version tags). See
Releasing
in shared-workflows for tag behavior and version conventions.
Full-stack Compose and Helm packaging live under deploy/:
- Compose: control-plane, postgres, nats, dcm-ui, and optional service providers
- Helm: Kubernetes/OpenShift chart at
deploy/helm/dcm
See deploy/RUN.md for local stack usage and service provider profiles. See deploy/helm/dcm/README.md for cluster installs.
The control-plane API is exposed on :8080.
Service repos push images to quay.io/dcm-project/<service> with the following tags:
| Tag format | Example | When created |
|---|---|---|
main |
main |
Every push to main |
<short-sha> |
a6882f7 |
Every push to main or release/v* branch, and v* git tag pushes |
v<semver>-rc.N |
v0.0.1-rc.2 |
Retag script (promotes a release branch SHA to an RC tag) |
v<semver> |
v0.0.1 |
When a v* git tag is pushed (final release) |
Browse available tags at https://quay.io/repository/dcm-project/<service>?tab=tags.
Pin versions in .env (see deploy/.env.example):
CONTROL_PLANE_VERSION=v0.0.1Omitting the variable defaults to main.