Skip to main content

module_orchestrator/domain/
model.rs

1use std::collections::HashMap;
2use uuid::Uuid;
3
4use modkit::runtime::InstanceState;
5use modkit_macros::domain_model;
6
7/// Deployment mode of a module.
8#[domain_model]
9#[derive(Debug, Clone, PartialEq, Eq)]
10pub enum DeploymentMode {
11    CompiledIn,
12    OutOfProcess,
13}
14
15/// Domain model for a registered module.
16#[domain_model]
17#[derive(Debug, Clone)]
18pub struct ModuleInfo {
19    pub name: String,
20    pub capabilities: Vec<String>,
21    pub dependencies: Vec<String>,
22    pub deployment_mode: DeploymentMode,
23    pub instances: Vec<InstanceInfo>,
24}
25
26/// Domain model for a running module instance.
27#[domain_model]
28#[derive(Debug, Clone)]
29pub struct InstanceInfo {
30    pub instance_id: Uuid,
31    pub version: Option<String>,
32    pub state: InstanceState,
33    pub grpc_services: HashMap<String, String>,
34}