use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct ExecutorRules {
pub executors: Vec<ExecutorEntry>,
pub rules: Vec<Rule>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct ExecutorEntry {
pub name: String,
#[serde(rename = "type")]
pub kind: ExecutorKind,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_load1: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min_free_mem: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
#[non_exhaustive]
pub enum ExecutorKind {
Local,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Rule {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub when: Option<Predicate>,
#[serde(rename = "use")]
pub use_executor: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Predicate {
pub executor_has_capacity: String,
}