use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct NodeConfig {
#[serde(default = "default_roles")]
pub roles: Vec<NodeRole>,
#[serde(default = "default_capabilities")]
pub worker_capabilities: Vec<String>,
}
impl Default for NodeConfig {
fn default() -> Self {
Self {
roles: default_roles(),
worker_capabilities: default_capabilities(),
}
}
}
fn default_roles() -> Vec<NodeRole> {
vec![
NodeRole::Gateway,
NodeRole::Function,
NodeRole::Worker,
NodeRole::Scheduler,
]
}
fn default_capabilities() -> Vec<String> {
vec!["general".to_string()]
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
#[non_exhaustive]
pub enum NodeRole {
Gateway,
Function,
Worker,
Scheduler,
}