fix init_connections and actor_connections

This commit is contained in:
Mario Voigt 2025-02-25 20:51:29 +01:00
parent 95241a6fd0
commit 646aae8ef5
3 changed files with 31 additions and 18 deletions

View File

@ -248,12 +248,11 @@ pub fn load(
actor_connections_data_vec.push((actor_connection.machine, actor_connection.actor)); actor_connections_data_vec.push((actor_connection.machine, actor_connection.actor));
} }
let mut actor_map: HashMap<String, _> = let mut actor_map: HashMap<String, _> = actor_connections_data_vec
actor_connections_data_vec
.iter() .iter()
.filter_map(|(k, v)| { .filter_map(|(k, v)| {
if let Some(resource) = resources.get_by_id(v) { if let Some(resource) = resources.get_by_id(k) {
Some((k.clone(), resource.get_signal())) Some((v.clone(), resource.get_signal()))
} else { } else {
tracing::error!(actor=%k, machine=%v, "Machine configured for actor not found!"); tracing::error!(actor=%k, machine=%v, "Machine configured for actor not found!");
None None

View File

@ -94,8 +94,7 @@ pub struct Config {
/// Initiators to load and their configuration options /// Initiators to load and their configuration options
pub initiators: HashMap<String, ModuleConfig>, pub initiators: HashMap<String, ModuleConfig>,
pub init_connections: Vec<(String, String)>, pub init_connections: Vec<InitiatorConnectionConfig>,
} }
impl Config { impl Config {
@ -122,6 +121,12 @@ pub struct ActorConnectionConfig {
pub actor: String, pub actor: String,
} }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InitiatorConnectionConfig {
pub machine: String,
pub initiator: String,
}
pub(crate) fn deser_option<'de, D, T>(d: D) -> std::result::Result<Option<T>, D::Error> pub(crate) fn deser_option<'de, D, T>(d: D) -> std::result::Result<Option<T>, D::Error>
where where
D: serde::Deserializer<'de>, D: serde::Deserializer<'de>,
@ -138,14 +143,19 @@ impl Default for Config {
let mut machines: HashMap<String, MachineDescription> = HashMap::new(); let mut machines: HashMap<String, MachineDescription> = HashMap::new();
let mut initiator_123_params: HashMap<String, String> = HashMap::new(); let mut initiator_123_params: HashMap<String, String> = HashMap::new();
initiator_123_params.insert("args".to_string(), "".to_string() ); initiator_123_params.insert("args".to_string(), "".to_string());
initiator_123_params.insert("cmd".to_string(), "echo".to_string() ); initiator_123_params.insert("cmd".to_string(), "echo".to_string());
let mut actor_connections_vec: Vec<ActorConnectionConfig> = vec![ let mut actor_connections_vec: Vec<ActorConnectionConfig> = vec![ActorConnectionConfig {
ActorConnectionConfig {machine: "resource_a".to_string(), actor: "actor_123".to_string()}, machine: "resource_a".to_string(),
ActorConnectionConfig {machine: "resource_b".to_string(), actor: "actor_123".to_string()} actor: "actor_123".to_string(),
]; }];
let mut initiator_connections_vec: Vec<InitiatorConnectionConfig> =
vec![InitiatorConnectionConfig {
machine: "resource_a".to_string(),
initiator: "initiator_123".to_string(),
}];
roles.insert( roles.insert(
"admin".to_string(), "admin".to_string(),
@ -273,7 +283,7 @@ impl Default for Config {
actors, actors,
actor_connections: actor_connections_vec, actor_connections: actor_connections_vec,
initiators, initiators,
init_connections: vec![("initiator_123".to_string(), "resource_b".to_string())], init_connections: initiator_connections_vec,
} }
} }
} }

View File

@ -103,12 +103,16 @@ pub fn load(
let span = tracing::info_span!("loading initiators"); let span = tracing::info_span!("loading initiators");
let _guard = span.enter(); let _guard = span.enter();
let mut initiator_map: HashMap<String, Resource> = config let mut init_connections_data_vec: Vec<(String, String)> = vec![];
.init_connections for init_connection in config.init_connections.clone().into_iter() {
init_connections_data_vec.push((init_connection.machine, init_connection.initiator));
}
let mut initiator_map: HashMap<String, Resource> = init_connections_data_vec
.iter() .iter()
.filter_map(|(k, v)| { .filter_map(|(k, v)| {
if let Some(resource) = resources.get_by_id(v) { if let Some(resource) = resources.get_by_id(k) {
Some((k.clone(), resource.clone())) Some((v.clone(), resource.clone()))
} else { } else {
tracing::error!(initiator=%k, machine=%v, tracing::error!(initiator=%k, machine=%v,
"Machine configured for initiator not found!"); "Machine configured for initiator not found!");