From 6f986f4cd118162810ee5246cc602fe7e08e0ea8 Mon Sep 17 00:00:00 2001 From: Herbert Wolverson Date: Thu, 25 Apr 2024 13:38:13 -0500 Subject: [PATCH] Handle exception CPE reparenting. --- src/rust/uisp_integration/src/strategies/full/mod.rs | 2 +- .../uisp_integration/src/uisp_types/uisp_device.rs | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/rust/uisp_integration/src/strategies/full/mod.rs b/src/rust/uisp_integration/src/strategies/full/mod.rs index 78d6b76a..54cb3404 100644 --- a/src/rust/uisp_integration/src/strategies/full/mod.rs +++ b/src/rust/uisp_integration/src/strategies/full/mod.rs @@ -44,7 +44,7 @@ pub async fn build_full_network( // Obtain the UISP data and transform it into easier to work with types let (sites_raw, devices_raw, data_links_raw) = load_uisp_data(config.clone()).await?; - let (mut sites, data_links, devices) = parse_uisp_datasets( + let (mut sites, data_links, mut devices) = parse_uisp_datasets( &sites_raw, &data_links_raw, &devices_raw, diff --git a/src/rust/uisp_integration/src/uisp_types/uisp_device.rs b/src/rust/uisp_integration/src/uisp_types/uisp_device.rs index 390664e7..205cd5ce 100644 --- a/src/rust/uisp_integration/src/uisp_types/uisp_device.rs +++ b/src/rust/uisp_integration/src/uisp_types/uisp_device.rs @@ -76,11 +76,19 @@ impl UispDevice { ip_ranges.is_permitted(addr, subnet) }); + // Handle any "exception CPE" entries + let mut site_id = device.get_site_id().unwrap_or("".to_string()); + for exception in config.uisp_integration.exception_cpes.iter() { + if exception.cpe == device.get_name().unwrap() { + site_id = exception.parent.clone(); + } + } + Self { id: device.get_id(), name: device.get_name().unwrap(), mac, - site_id: device.get_site_id().unwrap_or("".to_string()), + site_id, upload, download, ipv4,