Dependency on symphony
Resource Manager currently depends on a project called symphony.
This project is not publicly accessible and without access to it, Resource Manager cannot be built. In that case, use pre built docker images from dockerhub.
- ent - ORM schema and generated code for the DB
- ORM schema
- graphQL schema and generated code for graphQL server
- graphQL server
- core codebase for pools and resoruce allocation
- multitenancy, RBAC and DB connection management
- psql DB connection provider
- logging framework
- integration tests
- pkg - helm chart for Resource Manager
It is advised to build Resource Manager as a docker image using Dockerfile and run it as a docker container.
The reason is that Resource Manager uses wasmer and pre built js and python engines for wasm. These are not part of the codebase and thus simply running Resource Manager would fail, unless you provide these resources e.g. by copying them out of Resource Manager built docker image.
Resource Manager utilizes wire to generate wiring code between major
components. Regenerating wiring is not part of standard build process ! After modifying any of the wire.go files perform:
Resource Manager exposes graphQL API and this is the schema.
Built in strategies
Resource Manager provides a number of built in strategies for built in resource types and are loaded into Resource Manager at startup.
Resource types associated with these strategies can be found in load_builtin_resources.go.
There's a number of tests testing core components that require wasmer, quickjs and python packages to be available. It is recommended to run these tests in a docker container.
export WASMER_BIN=~/.wasmer/bin/wasmer export WASMER_JSemail@example.com/build/qjs.wasm export WASMER_PYfirstname.lastname@example.org/bin/python.wasm export WASMER_PY_LIBemail@example.com/lib/ go test -run Integration ./pools/...
Support for tracing (distributed tracing). Streams data into a collector such as Jaeger. Default is Nop. See main parameters or telementry/config.go for further details to enable jaeger tracing
Basic health info of the app (also checks if mysql connection is healthy)
# server can serve requests http://localhost:8884/healthz/liveness # server works fine http://localhost:8884/healthz/readiness
Prometheus style metrics are exposed at: