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