REST API Server
The REST API Server is respecting the hexagonal architecture architectural pattern and Command Query Responsibility Segregation (CQRS) pattern.
- the
apifolder contains the Go code for Operator's CRDs - the
configfolder contains the YAML manifests - the
restfolder contains the REST over HTTP layer. This package main responsibilities are to map HTTP requests tocore's Commands and Queries, trigger thecorelogic, and mapcore's Responses back to HTTP Responses. - the
corefolder contains the application main logic. It validates requests, access the persistence layer to fetch the correct data and produces a response. - the
persistencefolder contains the persistence layer code. More in details, it contains caches and Kubernetes client implementation.
Following the flow of an HTTP Request, the request will be initially processed by the code in the rest package.
It validates the HTTP Request and builds a Command or Query to use for invoking the handlers in the core package.
The core package performs validation, authorization, may apply some transformation, before invoking the logic in the persistence package.
In case of a Command it will perform update or create, in case of a Query it will retrieve some data.
Finally, the core will build a Response and provide it back to the rest package which will map it to an HTTP Response.
Run Tests
To run unit tests you can execute the make test command.
To run e2e tests, take a look at the Run End-to-End Test section.