feat(ipxe): create empty score shell for ipxe
This commit is contained in:
parent
bfc79abfb6
commit
c8547e38f2
1
data/watchguard/pxe-http-files/.gitattributes
vendored
Normal file
1
data/watchguard/pxe-http-files/.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
slitaz/* filter=lfs diff=lfs merge=lfs -text
|
||||||
@ -10,7 +10,7 @@ use harmony::{
|
|||||||
inventory::Inventory,
|
inventory::Inventory,
|
||||||
maestro::Maestro,
|
maestro::Maestro,
|
||||||
modules::{
|
modules::{
|
||||||
http::HttpScore, okd::{dhcp::OKDDhcpScore, dns::OKDDnsScore}, opnsense::OPNSenseLaunchUpgrade, tftp::TftpScore
|
http::HttpScore, okd::{dhcp::OKDDhcpScore, dns::OKDDnsScore}, opnsense::OPNSenseLaunchUpgrade, tftp::TftpScore, ipxe::IpxeScore
|
||||||
},
|
},
|
||||||
topology::{LogicalHost, UnmanagedRouter, Url},
|
topology::{LogicalHost, UnmanagedRouter, Url},
|
||||||
};
|
};
|
||||||
@ -96,6 +96,7 @@ async fn main() {
|
|||||||
let http_score = HttpScore::new(Url::LocalFolder(
|
let http_score = HttpScore::new(Url::LocalFolder(
|
||||||
"./data/watchguard/pxe-http-files".to_string(),
|
"./data/watchguard/pxe-http-files".to_string(),
|
||||||
));
|
));
|
||||||
|
let ipxe_score = IpxeScore::new();
|
||||||
let mut maestro = Maestro::new(inventory, topology);
|
let mut maestro = Maestro::new(inventory, topology);
|
||||||
maestro.register_all(vec![
|
maestro.register_all(vec![
|
||||||
Box::new(dns_score),
|
Box::new(dns_score),
|
||||||
@ -103,6 +104,7 @@ async fn main() {
|
|||||||
Box::new(load_balancer_score),
|
Box::new(load_balancer_score),
|
||||||
Box::new(tftp_score),
|
Box::new(tftp_score),
|
||||||
Box::new(http_score),
|
Box::new(http_score),
|
||||||
|
Box::new(ipxe_score),
|
||||||
]);
|
]);
|
||||||
harmony_tui::init(maestro).await.unwrap();
|
harmony_tui::init(maestro).await.unwrap();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,6 +16,7 @@ pub enum InterpretName {
|
|||||||
LoadBalancer,
|
LoadBalancer,
|
||||||
Tftp,
|
Tftp,
|
||||||
Http,
|
Http,
|
||||||
|
Ipxe,
|
||||||
Dummy,
|
Dummy,
|
||||||
Panic,
|
Panic,
|
||||||
OPNSense,
|
OPNSense,
|
||||||
@ -29,6 +30,7 @@ impl std::fmt::Display for InterpretName {
|
|||||||
InterpretName::LoadBalancer => f.write_str("LoadBalancer"),
|
InterpretName::LoadBalancer => f.write_str("LoadBalancer"),
|
||||||
InterpretName::Tftp => f.write_str("Tftp"),
|
InterpretName::Tftp => f.write_str("Tftp"),
|
||||||
InterpretName::Http => f.write_str("Http"),
|
InterpretName::Http => f.write_str("Http"),
|
||||||
|
InterpretName::Ipxe => f.write_str("iPXE"),
|
||||||
InterpretName::Dummy => f.write_str("Dummy"),
|
InterpretName::Dummy => f.write_str("Dummy"),
|
||||||
InterpretName::Panic => f.write_str("Panic"),
|
InterpretName::Panic => f.write_str("Panic"),
|
||||||
InterpretName::OPNSense => f.write_str("OPNSense"),
|
InterpretName::OPNSense => f.write_str("OPNSense"),
|
||||||
|
|||||||
74
harmony/src/modules/ipxe.rs
Normal file
74
harmony/src/modules/ipxe.rs
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
use async_trait::async_trait;
|
||||||
|
use derive_new::new;
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
data::{Id, Version},
|
||||||
|
interpret::{Interpret, InterpretError, InterpretName, InterpretStatus, Outcome},
|
||||||
|
inventory::Inventory,
|
||||||
|
score::Score,
|
||||||
|
topology::HAClusterTopology,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[derive(Debug, new, Clone)]
|
||||||
|
pub struct IpxeScore {
|
||||||
|
//files_to_serve: Url,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Score for IpxeScore {
|
||||||
|
fn create_interpret(&self) -> Box<dyn Interpret> {
|
||||||
|
Box::new(IpxeInterpret::new(self.clone()))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn name(&self) -> String {
|
||||||
|
"IpxeScore".to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn clone_box(&self) -> Box<dyn Score> {
|
||||||
|
Box::new(self.clone())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, new, Clone)]
|
||||||
|
pub struct IpxeInterpret {
|
||||||
|
score: IpxeScore,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[async_trait]
|
||||||
|
impl Interpret for IpxeInterpret {
|
||||||
|
async fn execute(
|
||||||
|
&self,
|
||||||
|
_inventory: &Inventory,
|
||||||
|
_topology: &HAClusterTopology,
|
||||||
|
) -> Result<Outcome, InterpretError> {
|
||||||
|
/*
|
||||||
|
let http_server = &topology.http_server;
|
||||||
|
http_server.ensure_initialized().await?;
|
||||||
|
Ok(Outcome::success(format!(
|
||||||
|
"Http Server running and serving files from {}",
|
||||||
|
self.score.files_to_serve
|
||||||
|
)))
|
||||||
|
*/
|
||||||
|
|
||||||
|
Ok(Outcome::success(format!(
|
||||||
|
"Success running {}",
|
||||||
|
self.score.name()
|
||||||
|
)))
|
||||||
|
//Ok(Outcome::success("Success".to_string()))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_name(&self) -> InterpretName {
|
||||||
|
InterpretName::Ipxe
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_version(&self) -> Version {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_status(&self) -> InterpretStatus {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_children(&self) -> Vec<Id> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -7,3 +7,4 @@ pub mod load_balancer;
|
|||||||
pub mod okd;
|
pub mod okd;
|
||||||
pub mod opnsense;
|
pub mod opnsense;
|
||||||
pub mod tftp;
|
pub mod tftp;
|
||||||
|
pub mod ipxe;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user