use indexmap::IndexMap;
use crate::controller::ControllerPlaybook;
use crate::document::{MachineDoc, NetworkDoc, ReachDoc};
#[derive(Debug, Default)]
pub(crate) struct Draft {
pub(crate) networks: IndexMap<String, NetworkDoc>,
pub(crate) machines: IndexMap<String, MachineDoc>,
pub(crate) routers: IndexMap<String, Vec<String>>,
pub(crate) reach: Vec<ReachDoc>,
pub(crate) controller: Vec<ControllerPlaybook>,
}
impl Draft {
pub(crate) fn attach(&mut self, node: &str, net: &str, octet: u8) {
if let Some(nets) = self.routers.get_mut(node) {
nets.push(net.to_owned());
} else if let Some(m) = self.machines.get_mut(node) {
m.networks.insert(net.to_owned(), octet);
}
}
pub(crate) fn is_router(&self, node: &str) -> bool {
self.routers.contains_key(node)
}
}