Switch HAClusterTopology for K8sAnywhereTopology in lamp example
This commit is contained in:
parent
452ebc2614
commit
0857aba039
@ -1,9 +1,8 @@
|
|||||||
use harmony::{
|
use harmony::{
|
||||||
data::Version,
|
data::Version,
|
||||||
inventory::Inventory,
|
|
||||||
maestro::Maestro,
|
maestro::Maestro,
|
||||||
modules::lamp::{LAMPConfig, LAMPScore},
|
modules::lamp::{LAMPConfig, LAMPScore},
|
||||||
topology::{HAClusterTopology, Url},
|
topology::{K8sAnywhereTopology, Url},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
@ -18,9 +17,7 @@ async fn main() {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let inventory = Inventory::autoload();
|
let maestro = Maestro::<K8sAnywhereTopology>::load_from_env();
|
||||||
let topology = HAClusterTopology::autoload();
|
|
||||||
let mut maestro = Maestro::new(inventory, topology);
|
|
||||||
maestro.register_all(vec![Box::new(lamp_stack)]);
|
maestro.register_all(vec![Box::new(lamp_stack)]);
|
||||||
harmony_tui::init(maestro).await.unwrap();
|
harmony_tui::init(maestro).await.unwrap();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ pub mod tui {
|
|||||||
/// harmony_tui::init(maestro).await.unwrap();
|
/// harmony_tui::init(maestro).await.unwrap();
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub async fn init<T: Topology + std::fmt::Debug + Send + Sync + 'static>(
|
pub async fn init<T: Topology + Send + Sync + 'static>(
|
||||||
maestro: Maestro<T>,
|
maestro: Maestro<T>,
|
||||||
) -> Result<(), Box<dyn std::error::Error>> {
|
) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
HarmonyTUI::new(maestro).init().await
|
HarmonyTUI::new(maestro).init().await
|
||||||
@ -63,12 +63,21 @@ pub struct HarmonyTUI<T: Topology> {
|
|||||||
tui_state: TuiWidgetState,
|
tui_state: TuiWidgetState,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
enum HarmonyTuiEvent<T: Topology> {
|
enum HarmonyTuiEvent<T: Topology> {
|
||||||
LaunchScore(Box<dyn Score<T>>),
|
LaunchScore(Box<dyn Score<T>>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Topology + std::fmt::Debug + Send + Sync + 'static> HarmonyTUI<T> {
|
impl <T: Topology> std::fmt::Display for HarmonyTuiEvent<T> {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
let output = match self {
|
||||||
|
HarmonyTuiEvent::LaunchScore(score) => format!("LaunchScore({})",score.name()),
|
||||||
|
};
|
||||||
|
|
||||||
|
f.write_str(&output)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: Topology + Send + Sync + 'static> HarmonyTUI<T> {
|
||||||
pub fn new(maestro: Maestro<T>) -> Self {
|
pub fn new(maestro: Maestro<T>) -> Self {
|
||||||
let maestro = Arc::new(maestro);
|
let maestro = Arc::new(maestro);
|
||||||
let (_handle, sender) = Self::start_channel(maestro.clone());
|
let (_handle, sender) = Self::start_channel(maestro.clone());
|
||||||
@ -91,7 +100,7 @@ impl<T: Topology + std::fmt::Debug + Send + Sync + 'static> HarmonyTUI<T> {
|
|||||||
let handle = tokio::spawn(async move {
|
let handle = tokio::spawn(async move {
|
||||||
info!("Starting message channel receiver loop");
|
info!("Starting message channel receiver loop");
|
||||||
while let Some(event) = receiver.recv().await {
|
while let Some(event) = receiver.recv().await {
|
||||||
info!("Received event {event:#?}");
|
info!("Received event {event}");
|
||||||
match event {
|
match event {
|
||||||
HarmonyTuiEvent::LaunchScore(score_item) => {
|
HarmonyTuiEvent::LaunchScore(score_item) => {
|
||||||
let maestro = maestro.clone();
|
let maestro = maestro.clone();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user