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.
Built in strategies unit tests
These strategies need to be tested/built and packaged for Resource Manager. This test/build process in scrips section of package.json while the packaging part can be found in generate.go.
Resource types associated with these strategies can be found in load_builtin_resources.go.
There's a number of api tests available and can be executed using integration-test.sh. These tests need to be executed against Resource Manager running as a black box (ideally as a container).
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_JSfirstname.lastname@example.org/build/qjs.wasm export WASMER_PYemail@example.com/bin/python.wasm export WASMER_PY_LIBfirstname.lastname@example.org/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: