# Modules, Pipelines, and Applications
# Module CRD
Module is a namespaced resource representing an atomic unit of execution within ECiDA. The following specification ignores some important aspects (e.g., rich types, preconditions and effects):
metadata:
name: [module-name as name.project.dnssubname], e.g., lr.ml.ecida.org (short name vs. full name?)
version: [module-version]
component: external - e.g., cassandra, kafka, mongodb; (unmanaged by ecida)
| datasource - contains data, atm means nothing apart from different color in UI
| service - accessible from the outside, e.g., UI
spec:
ports:
- list of ports:
kind: signal | hyperparameter | in | out
bind: to_ports_in_container OR ENV_VARS OR to something
containers
- list of container(s) which need to be run for this module
name, image, ports, service?
dependencies: TBD
# Pipeline CRD
Pipeline is a namespaced resource representing a description of one executable workflow.
metadata:
name: [pipeline-name]
spec:
modules:
- list of module references
module: module-name
version: module-version // optional?
as: module-ref // might even be optional, and then module-ref = module-name
- links:
- list of links connecting out-to-in ports of modules, each link:
from:
module: [module-ref]
port-name: [out-port-name]
to:
module: [module-ref]
port-name: [in-port-name]
# Application CRD
Application is a namespaced resource representing a collection of pipelines.
metadata:
name: [application-name]
spec:
pipelines:
- list of pipeline references
Each application should be deployed into a separate namespace according to the Environments and Namespaces rules.