From 95241a6fd05f4a71f0db8c2f946d7ba76c9672d8 Mon Sep 17 00:00:00 2001 From: Mario Voigt Date: Tue, 25 Feb 2025 20:16:57 +0100 Subject: [PATCH] Move to custom structure for actor_connection mapping - test --- bffhd/actors/mod.rs | 9 +++++++-- bffhd/config/dhall.rs | 33 ++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/bffhd/actors/mod.rs b/bffhd/actors/mod.rs index bd8facf..631d406 100644 --- a/bffhd/actors/mod.rs +++ b/bffhd/actors/mod.rs @@ -243,8 +243,13 @@ pub fn load( .compat(), ); - let mut actor_map: HashMap = config - .actor_connections + let mut actor_connections_data_vec: Vec<(String, String)> = vec![]; + for actor_connection in config.actor_connections.clone().into_iter() { + actor_connections_data_vec.push((actor_connection.machine, actor_connection.actor)); + } + + let mut actor_map: HashMap = + actor_connections_data_vec .iter() .filter_map(|(k, v)| { if let Some(resource) = resources.get_by_id(v) { diff --git a/bffhd/config/dhall.rs b/bffhd/config/dhall.rs index f327c53..68a45da 100644 --- a/bffhd/config/dhall.rs +++ b/bffhd/config/dhall.rs @@ -90,11 +90,12 @@ pub struct Config { /// Actors to load and their configuration options pub actors: HashMap, - pub actor_connections: HashMap, + pub actor_connections: Vec, /// Initiators to load and their configuration options pub initiators: HashMap, - pub init_connections: HashMap, + pub init_connections: Vec<(String, String)>, + } impl Config { @@ -109,6 +110,18 @@ pub struct ModuleConfig { pub params: HashMap, } +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ParamsConfig { + pub module: String, + pub params: Vec, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ActorConnectionConfig { + pub machine: String, + pub actor: String, +} + pub(crate) fn deser_option<'de, D, T>(d: D) -> std::result::Result, D::Error> where D: serde::Deserializer<'de>, @@ -124,6 +137,16 @@ impl Default for Config { let mut roles: HashMap = HashMap::new(); let mut machines: HashMap = HashMap::new(); + let mut initiator_123_params: HashMap = HashMap::new(); + initiator_123_params.insert("args".to_string(), "".to_string() ); + initiator_123_params.insert("cmd".to_string(), "echo".to_string() ); + + let mut actor_connections_vec: Vec = vec![ + ActorConnectionConfig {machine: "resource_a".to_string(), actor: "actor_123".to_string()}, + ActorConnectionConfig {machine: "resource_b".to_string(), actor: "actor_123".to_string()} + ]; + + roles.insert( "admin".to_string(), Role { @@ -223,7 +246,7 @@ impl Default for Config { "initiator_123".to_string(), ModuleConfig { module: "Process".to_string(), - params: HashMap::new(), + params: initiator_123_params, }, ); @@ -248,9 +271,9 @@ impl Default for Config { roles, machines, actors, - actor_connections: vec!(("actor".to_string(), "actor_123".to_string()), ("machine".to_string(),"resource_a".to_string())).into_iter().collect(), + actor_connections: actor_connections_vec, initiators, - init_connections: vec!(("initiator".to_string(), "initiator_123".to_string()), ("machine".to_string(),"resource_b".to_string())).into_iter().collect(), + init_connections: vec![("initiator_123".to_string(), "resource_b".to_string())], } } }