feat: Topology, inventory, score, its all coming together and compiles. I think its very usable as a first alpha version. Game on

This commit is contained in:
Jean-Gabriel Gill-Couture
2024-09-08 22:42:29 -04:00
parent ff3d53c704
commit df714e216a
13 changed files with 105 additions and 48 deletions

View File

@@ -1,7 +1,6 @@
use fqm::{inventory::get_inventory, topology::fqm_topology};
use harmony::{
inventory::InventoryFilter,
maestro::Maestro,
maestro::Maestro,
modules::opnsense_dhcp::OPNSenseDhcpScore,
};
use log::info;
@@ -12,9 +11,9 @@ async fn main() {
tokio::spawn(async move {
info!("FQM Harmony Starting");
let maestro = Maestro::new(get_inventory());
let topology = fqm_topology();
let score = OPNSenseDhcpScore::new(InventoryFilter::new(vec![]));
let maestro = Maestro::new(get_inventory(), topology.clone());
let score = OPNSenseDhcpScore::new(topology);
let result = maestro.interpret(score).await.unwrap();
info!("{result}");
}).await.unwrap();

View File

@@ -1,18 +1,19 @@
use std::net::Ipv4Addr;
use std::sync::Arc;
use cidr::Ipv4Cidr;
use harmony::infra::opnsense::OPNSenseFirewall;
use harmony::topology::{HAClusterTopology, IpAddress, UnmanagedRouter};
pub fn fqm_topology() -> HAClusterTopology {
let opnsense_firewall = Box::new(OPNSenseFirewall::new(IpAddress::V4(Ipv4Addr::new(10, 10, 8, 2))));
let opnsense_firewall = Arc::new(OPNSenseFirewall::new(IpAddress::V4(Ipv4Addr::new(10, 10, 8, 2))));
HAClusterTopology {
firewall: opnsense_firewall.clone(),
control_plane: vec![],
ceph_hosts: vec![],
switch: vec![],
router: Box::new(UnmanagedRouter::new(
router: Arc::new(UnmanagedRouter::new(
IpAddress::V4(Ipv4Addr::new(10, 10, 8, 1)),
Ipv4Cidr::new(Ipv4Addr::new(10, 10, 8, 0), 22).expect("Subnet is valid"),
)),