+-------------------------OmegaGraf Host--------------------------+ +--------+
| +-------+--+ ++
| #---------------------Host Network-------------------+--# | | ||
| | | | ||
| +---------------------------Docker----------------------+-----+ | | User ||
| | | | | | ||
+---------+ | | #-------+-----------OmegaGraf Network-----------+----+--# | | | ||
| ++ | | | | | | | | | ||
| || | | +-------+-------+ +-------+-------+ +-------+----v--+ | | ++-------+|
| ++--+-+->| Telegraf |<--| Prometheus |-->| Grafana | | | +--------+
| vCenter || | | +---------------+ +--------+------+ +---------------+ | |
| || | | | Config | | Config | Data | | Data | | |
| || | | +-------+-------+ +----+---+---+--+ +-------+-------+ | |
| || | | | | | | | |
++--------+| | +----------+----------------+-------+--------------+----------+ |
+---------+ | | | | | |
| +----------v----------------v-------v--------------v----------+ |
| | Filesystem | |
| +-------------------------------------------------------------+ |
+-----------------------------------------------------------------+
OmegaGraf packages all parts of the application in the dotnet release. This emphasizes the "portable" nature of our application.
+--------------------+ +----------------+ +----------------------------+
| | | | | API (/) |
| | | | +----------------------------+
| | | Application | +----------------------------+
| | | | | Docs (/api-docs) |
| | | | +----------------------------+
| | +----------------+ ----------------------------
| | +----------------+ +----------------------------+
| | | | | Web Interface (/) |
| | | | +----------------------------+
| OmegaGraf | | Static Hosting | +----------------------------+
| | | | | Swagger UI (/swagger-ui) |
| | | | +----------------------------+
| | +----------------+ ----------------------------
| | +----------------+ +----------------------------+
| | | | | Dashboards |
| | | | +----------------------------+
| | | Data | +----------------------------+
| | | | | Configuration |
| | | | +----------------------------+
+--------------------+ +----------------+ ----------------------------
OmegaGraf removes control over sensitive aspects of configuration from the user.
OmegaGraf's general convention is to take data from the host (via environment or parameters), and bind that data to a model which is stored and accessible for the rest of the application lifecycle.
For all inputs, inbound data is also bound to a model. On an as-needed basis, data is merged from the aforementioned models. Merged data will be placed into a new model, or passed as parameters depending on context.
+----------------OmegaGraf----------------+
+----------+ | +----------+ +---------+ +----------+ | +---------+
| | | | | | | | | | | |
| +-+-> Bind +--> Merge <--+ Bind <-+-+ Input |
| | | | | | | | | | | |
| Host | | +----------+ +----+----+ +----------+ | +---------+
| | | +----v----+ |
| | | | | |
| <-+---------------+ Action | |
| | | | | |
+----------+ | +---------+ |
+-----------------------------------------+
A simplified example can be observed in the following diagram.
+----------------OmegaGraf----------------+
+----------+ | +----------+ +---------+ +----------+ | +---------+
| | | | | | | | | | | |
| +-+-> HostData +--> ConfF <--+ ConfIn <-+-+ foo/bar |
| | | | | | | | | | | |
| root is: | | +----------+ +----+----+ +----------+ | +---------+
| /var/1 | | +----v----+ |
| | | | | |
| <-+/var/1/foo/bar-+ Write | |
| | | | | |
+----------+ | +---------+ |
+-----------------------------------------+
Requests will use one or more input pipelines (see above) for a container deployment.
+---------------------+
| API |
+---------------------+
|
v
+---------------------+
+------------| Container Module |------------+
| Binding +---------------------+ Binding |
| |
++-----------------------------------------------++
| Data Merge Layer |<-+
++-----------------------------------------------++ |
| | |
| +-------------------+ +-------------------+ | |
+->| Build Models | | Config Models |<-+ |
+-------------------+ +-------------------+ |
| | |
v v |
+-------------------+ +-------------------+ |
| Docker Client | | I/O | |
+-------------------+ +-------------------+ |
| | |
v v |
+--------------------+--------------------+ |
| Docker | Filesystem | |
+--------------------+--------------------+ |
| Host |------+
+-----------------------------------------+