From 9d0aa406e45e229e8bec626da4cc9bd65756b516 Mon Sep 17 00:00:00 2001 From: jeangab Date: Sat, 21 Sep 2024 09:35:49 -0400 Subject: [PATCH] wip: Trying to figure out a nice way to have inventory and topology bound, maybe creating nodes that have this only purpose would make sense --- harmony-rs/harmony/src/domain/cluster/mod.rs | 0 harmony-rs/harmony/src/domain/hardware/mod.rs | 8 ++++---- harmony-rs/harmony/src/infra/hp_ilo/mod.rs | 18 ++++++++++++++++++ harmony-rs/harmony/src/infra/intel_amt/mod.rs | 3 ++- harmony-rs/harmony/src/infra/mod.rs | 1 + harmony-rs/harmony/src/infra/opnsense/mod.rs | 3 ++- 6 files changed, 27 insertions(+), 6 deletions(-) delete mode 100644 harmony-rs/harmony/src/domain/cluster/mod.rs create mode 100644 harmony-rs/harmony/src/infra/hp_ilo/mod.rs diff --git a/harmony-rs/harmony/src/domain/cluster/mod.rs b/harmony-rs/harmony/src/domain/cluster/mod.rs deleted file mode 100644 index e69de29..0000000 diff --git a/harmony-rs/harmony/src/domain/hardware/mod.rs b/harmony-rs/harmony/src/domain/hardware/mod.rs index cd88332..2a1fdb4 100644 --- a/harmony-rs/harmony/src/domain/hardware/mod.rs +++ b/harmony-rs/harmony/src/domain/hardware/mod.rs @@ -31,10 +31,10 @@ pub enum HostCategory { #[derive(Debug, new, Clone)] pub struct NetworkInterface { - name: String, - mac_address: MacAddress, - speed: u64, - plugged_in: bool, + pub name: String, + pub mac_address: MacAddress, + pub speed: u64, + pub plugged_in: bool, } type MacAddress = String; diff --git a/harmony-rs/harmony/src/infra/hp_ilo/mod.rs b/harmony-rs/harmony/src/infra/hp_ilo/mod.rs new file mode 100644 index 0000000..dc47a8c --- /dev/null +++ b/harmony-rs/harmony/src/infra/hp_ilo/mod.rs @@ -0,0 +1,18 @@ +use derive_new::new; +use crate::topology::{IpAddress, MacAddress, ManagementInterface}; + +#[derive(new)] +pub struct HPIlo { + ip_address: IpAddress, + mac_address: MacAddress, +} + +impl ManagementInterface for HPIlo { + fn boot_to_pxe(&self) { + todo!() + } + + fn get_ip(&self) -> IpAddress { + self.ip_address + } +} diff --git a/harmony-rs/harmony/src/infra/intel_amt/mod.rs b/harmony-rs/harmony/src/infra/intel_amt/mod.rs index 9142827..d51310b 100644 --- a/harmony-rs/harmony/src/infra/intel_amt/mod.rs +++ b/harmony-rs/harmony/src/infra/intel_amt/mod.rs @@ -1,9 +1,10 @@ use derive_new::new; -use crate::topology::{IpAddress, ManagementInterface}; +use crate::topology::{IpAddress, MacAddress, ManagementInterface}; #[derive(new)] pub struct IntelAmtManagement { ip_address: IpAddress, + mac_address: MacAddress, } impl ManagementInterface for IntelAmtManagement { diff --git a/harmony-rs/harmony/src/infra/mod.rs b/harmony-rs/harmony/src/infra/mod.rs index 95431ae..6240d17 100644 --- a/harmony-rs/harmony/src/infra/mod.rs +++ b/harmony-rs/harmony/src/infra/mod.rs @@ -1,3 +1,4 @@ pub mod executors; pub mod opnsense; pub mod intel_amt; +pub mod hp_ilo; diff --git a/harmony-rs/harmony/src/infra/opnsense/mod.rs b/harmony-rs/harmony/src/infra/opnsense/mod.rs index 77de885..b25a4f1 100644 --- a/harmony-rs/harmony/src/infra/opnsense/mod.rs +++ b/harmony-rs/harmony/src/infra/opnsense/mod.rs @@ -1,9 +1,10 @@ use derive_new::new; -use crate::topology::{Backend, DhcpServer, DnsServer, Firewall, FirewallError, FirewallRule, Frontend, IpAddress, LoadBalancer, LoadBalancerError}; +use crate::{hardware::NetworkInterface, topology::{Backend, DhcpServer, DnsServer, Firewall, FirewallError, FirewallRule, Frontend, IpAddress, LoadBalancer, LoadBalancerError}}; #[derive(new, Clone)] pub struct OPNSenseFirewall { ip_address: IpAddress, + interfaces: Vec, } impl Firewall for OPNSenseFirewall {