mirror of
https://github.com/LibreQoE/LibreQoS.git
synced 2025-02-25 18:55:32 -06:00
Format run
This commit is contained in:
parent
abe16aff39
commit
cbd0a785ce
@ -1,11 +1,11 @@
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
use serde::Serialize;
|
||||
use crate::errors::UispIntegrationError;
|
||||
use crate::ip_ranges::IpRanges;
|
||||
use lqos_config::Config;
|
||||
use tracing::{error, info};
|
||||
use crate::uisp_types::UispDevice;
|
||||
use lqos_config::Config;
|
||||
use serde::Serialize;
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
use tracing::{error, info};
|
||||
|
||||
#[derive(Serialize, Debug)]
|
||||
struct ShapedDevice {
|
||||
@ -29,14 +29,14 @@ pub async fn build_flat_network(
|
||||
ip_ranges: IpRanges,
|
||||
) -> Result<(), UispIntegrationError> {
|
||||
// Load the devices from UISP
|
||||
let devices = uisp::load_all_devices_with_interfaces(config.clone()).await
|
||||
let devices = uisp::load_all_devices_with_interfaces(config.clone())
|
||||
.await
|
||||
.map_err(|e| {
|
||||
error!("Unable to load device list from UISP");
|
||||
error!("{e:?}");
|
||||
UispIntegrationError::UispConnectError
|
||||
})?;
|
||||
let sites = uisp::load_all_sites(config.clone()).await
|
||||
.map_err(|e| {
|
||||
let sites = uisp::load_all_sites(config.clone()).await.map_err(|e| {
|
||||
error!("Unable to load device list from UISP");
|
||||
error!("{e:?}");
|
||||
UispIntegrationError::UispConnectError
|
||||
@ -44,8 +44,7 @@ pub async fn build_flat_network(
|
||||
|
||||
// Create a {} network.json
|
||||
let net_json_path = Path::new(&config.lqos_directory).join("network.json");
|
||||
fs::write(net_json_path, "{}\n")
|
||||
.map_err(|e| {
|
||||
fs::write(net_json_path, "{}\n").map_err(|e| {
|
||||
error!("Unable to access network.json");
|
||||
error!("{e:?}");
|
||||
UispIntegrationError::WriteNetJson
|
||||
@ -57,7 +56,10 @@ pub async fn build_flat_network(
|
||||
if let Some(site_id) = &site.identification {
|
||||
if let Some(site_type) = &site_id.site_type {
|
||||
if site_type == "endpoint" {
|
||||
let (download_max, upload_max) = site.qos(config.queues.generated_pn_download_mbps, config.queues.generated_pn_upload_mbps);
|
||||
let (download_max, upload_max) = site.qos(
|
||||
config.queues.generated_pn_download_mbps,
|
||||
config.queues.generated_pn_upload_mbps,
|
||||
);
|
||||
let download_min = (download_max as f32
|
||||
* config.uisp_integration.commit_bandwidth_multiplier)
|
||||
as u64;
|
||||
|
@ -1,10 +1,10 @@
|
||||
use crate::errors::UispIntegrationError;
|
||||
use crate::uisp_types::UispSite;
|
||||
use csv::ReaderBuilder;
|
||||
use lqos_config::Config;
|
||||
use std::collections::HashMap;
|
||||
use std::path::Path;
|
||||
use tracing::{error, info};
|
||||
use crate::uisp_types::UispSite;
|
||||
|
||||
pub type BandwidthOverrides = HashMap<String, (f32, f32)>;
|
||||
|
||||
@ -75,7 +75,10 @@ pub fn apply_bandwidth_overrides(sites: &mut [UispSite], bandwidth_overrides: &B
|
||||
// Apply the overrides
|
||||
site.max_down_mbps = *down as u32;
|
||||
site.max_up_mbps = *up as u32;
|
||||
info!("Bandwidth override for {} applied ({} / {})", &site.name, site.max_down_mbps, site.max_up_mbps);
|
||||
info!(
|
||||
"Bandwidth override for {} applied ({} / {})",
|
||||
&site.name, site.max_down_mbps, site.max_up_mbps
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
@ -15,7 +15,9 @@ mod zero_capacity_sites;
|
||||
use crate::errors::UispIntegrationError;
|
||||
use crate::ip_ranges::IpRanges;
|
||||
use crate::strategies::full::ap_promotion::promote_access_points;
|
||||
use crate::strategies::full::bandwidth_overrides::{apply_bandwidth_overrides, get_site_bandwidth_overrides};
|
||||
use crate::strategies::full::bandwidth_overrides::{
|
||||
apply_bandwidth_overrides, get_site_bandwidth_overrides,
|
||||
};
|
||||
use crate::strategies::full::client_site_promotion::promote_clients_with_children;
|
||||
use crate::strategies::full::network_json::write_network_file;
|
||||
use crate::strategies::full::parse::parse_uisp_datasets;
|
||||
@ -26,10 +28,10 @@ use crate::strategies::full::squash_single_entry_aps::squash_single_aps;
|
||||
use crate::strategies::full::tree_walk::walk_tree_for_routing;
|
||||
use crate::strategies::full::uisp_fetch::load_uisp_data;
|
||||
use crate::strategies::full::utils::{print_sites, warn_of_no_parents_and_promote};
|
||||
use crate::strategies::full::zero_capacity_sites::correct_zero_capacity_sites;
|
||||
use crate::uisp_types::{UispSite, UispSiteType};
|
||||
pub use bandwidth_overrides::BandwidthOverrides;
|
||||
use lqos_config::Config;
|
||||
use crate::strategies::full::zero_capacity_sites::correct_zero_capacity_sites;
|
||||
|
||||
/// Attempt to construct a full hierarchy topology for the UISP network.
|
||||
pub async fn build_full_network(
|
||||
@ -101,8 +103,6 @@ pub async fn build_full_network(
|
||||
// Correct any sites with zero capacity
|
||||
correct_zero_capacity_sites(&mut sites, &config);
|
||||
|
||||
|
||||
|
||||
// Print Sites
|
||||
if let Some(root_idx) = sites.iter().position(|s| s.name == root_site) {
|
||||
// Issue No Parent Warnings
|
||||
|
@ -31,10 +31,7 @@ pub fn parse_uisp_datasets(
|
||||
(sites, data_links, devices)
|
||||
}
|
||||
|
||||
fn parse_sites(
|
||||
sites_raw: &[Site],
|
||||
config: &Config,
|
||||
) -> Vec<UispSite> {
|
||||
fn parse_sites(sites_raw: &[Site], config: &Config) -> Vec<UispSite> {
|
||||
let sites: Vec<UispSite> = sites_raw
|
||||
.iter()
|
||||
.map(|s| UispSite::from_uisp(s, config))
|
||||
|
@ -39,10 +39,7 @@ fn handle_multiple_internet_connected_sites(
|
||||
let mut root_site_name = String::new();
|
||||
let mut candidates = Vec::new();
|
||||
|
||||
data_links
|
||||
.iter()
|
||||
.filter(|l| !l.can_delete)
|
||||
.for_each(|l| {
|
||||
data_links.iter().filter(|l| !l.can_delete).for_each(|l| {
|
||||
candidates.push(l.from_site_name.clone());
|
||||
});
|
||||
|
||||
@ -188,8 +185,6 @@ mod test {
|
||||
];
|
||||
let result = find_root_site(&cfg, &mut sites, &data_links);
|
||||
assert!(result.is_ok());
|
||||
assert!(sites
|
||||
.iter()
|
||||
.any(|s| s.name == "INSERTED_INTERNET"));
|
||||
assert!(sites.iter().any(|s| s.name == "INSERTED_INTERNET"));
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,15 @@ pub fn write_shaped_devices(
|
||||
let mut shaped_devices = Vec::new();
|
||||
|
||||
// Traverse
|
||||
traverse(sites, root_idx, 0, devices, &mut shaped_devices, config, root_idx);
|
||||
traverse(
|
||||
sites,
|
||||
root_idx,
|
||||
0,
|
||||
devices,
|
||||
&mut shaped_devices,
|
||||
config,
|
||||
root_idx,
|
||||
);
|
||||
|
||||
// Write the CSV
|
||||
let mut writer = csv::WriterBuilder::new()
|
||||
@ -146,7 +154,15 @@ fn traverse(
|
||||
for (child_idx, child) in sites.iter().enumerate() {
|
||||
if let Some(parent_idx) = child.selected_parent {
|
||||
if parent_idx == idx {
|
||||
traverse(sites, child_idx, depth + 1, devices, shaped_devices, config, root_idx);
|
||||
traverse(
|
||||
sites,
|
||||
child_idx,
|
||||
depth + 1,
|
||||
devices,
|
||||
shaped_devices,
|
||||
config,
|
||||
root_idx,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
use crate::uisp_types::{UispSite, UispSiteType};
|
||||
use tracing::warn;
|
||||
use lqos_config::Config;
|
||||
use tracing::warn;
|
||||
use uisp::Device;
|
||||
|
||||
/// Counts how many devices are present at a siteId. It's a simple
|
||||
@ -46,7 +46,12 @@ fn iterate_child_sites(sites: &[UispSite], parent: usize, indent: usize) {
|
||||
});
|
||||
}
|
||||
|
||||
pub fn warn_of_no_parents_and_promote(sites: &mut Vec<UispSite>, devices_raw: &[Device], root_idx: usize, config: &Config) {
|
||||
pub fn warn_of_no_parents_and_promote(
|
||||
sites: &mut Vec<UispSite>,
|
||||
devices_raw: &[Device],
|
||||
root_idx: usize,
|
||||
config: &Config,
|
||||
) {
|
||||
let mut orphans = Vec::new();
|
||||
|
||||
sites
|
||||
@ -78,7 +83,11 @@ pub fn warn_of_no_parents_and_promote(sites: &mut Vec<UispSite>, devices_raw: &[
|
||||
sites.push(orphanage);
|
||||
|
||||
for orphan_id in orphans {
|
||||
if let Some((_, site)) = sites.iter_mut().enumerate().find(|(idx, s)| *idx != root_idx && s.id == orphan_id) {
|
||||
if let Some((_, site)) = sites
|
||||
.iter_mut()
|
||||
.enumerate()
|
||||
.find(|(idx, s)| *idx != root_idx && s.id == orphan_id)
|
||||
{
|
||||
site.selected_parent = Some(orgphanage_id);
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
use lqos_config::Config;
|
||||
use crate::uisp_types::UispSite;
|
||||
use lqos_config::Config;
|
||||
|
||||
pub fn correct_zero_capacity_sites(sites: &mut [UispSite], config: &Config) {
|
||||
for i in 0 .. sites.len() {
|
||||
for i in 0..sites.len() {
|
||||
if sites[i].max_down_mbps == 0 {
|
||||
if let Some(parent_idx) = sites[i].selected_parent {
|
||||
sites[i].max_down_mbps = sites[parent_idx].max_down_mbps;
|
||||
|
@ -40,10 +40,7 @@ impl Default for UispSite {
|
||||
}
|
||||
|
||||
impl UispSite {
|
||||
pub fn from_uisp(
|
||||
value: &Site,
|
||||
config: &Config,
|
||||
) -> Self {
|
||||
pub fn from_uisp(value: &Site, config: &Config) -> Self {
|
||||
let mut uisp_parent_id = None;
|
||||
|
||||
if let Some(id) = &value.identification {
|
||||
|
Loading…
Reference in New Issue
Block a user