fix: Various demo fixe and rename : RHOBMonitoring -> Monitoring, ContinuousDelivery -> PackagingDeployment, Fix bollard logs #152
| @ -4,8 +4,7 @@ use harmony::{ | ||||
|     inventory::Inventory, | ||||
|     modules::{ | ||||
|         application::{ | ||||
|             ApplicationScore, RustWebFramework, RustWebapp, | ||||
|             features::rhob_monitoring::RHOBMonitoring, | ||||
|             ApplicationScore, RustWebFramework, RustWebapp, features::rhob_monitoring::Monitoring, | ||||
|         }, | ||||
|         monitoring::alert_channel::discord_alert_channel::DiscordWebhook, | ||||
|     }, | ||||
| @ -29,7 +28,7 @@ async fn main() { | ||||
| 
 | ||||
|     let app = ApplicationScore { | ||||
|         features: vec![ | ||||
|             Box::new(RHOBMonitoring { | ||||
|             Box::new(Monitoring { | ||||
|                 application: application.clone(), | ||||
|                 alert_receiver: vec![Box::new(discord_receiver)], | ||||
|             }), | ||||
|  | ||||
| @ -5,7 +5,7 @@ use harmony::{ | ||||
|     modules::{ | ||||
|         application::{ | ||||
|             ApplicationScore, RustWebFramework, RustWebapp, | ||||
|             features::{ContinuousDelivery, Monitoring}, | ||||
|             features::{Monitoring, PackagingDeployment}, | ||||
|         }, | ||||
|         monitoring::alert_channel::{ | ||||
|             discord_alert_channel::DiscordWebhook, webhook_receiver::WebhookReceiver, | ||||
| @ -36,7 +36,7 @@ async fn main() { | ||||
| 
 | ||||
|     let app = ApplicationScore { | ||||
|         features: vec![ | ||||
|             Box::new(ContinuousDelivery { | ||||
|             Box::new(PackagingDeployment { | ||||
|                 application: application.clone(), | ||||
|             }), | ||||
|             Box::new(Monitoring { | ||||
|  | ||||
| @ -3,7 +3,7 @@ use harmony::{ | ||||
|     modules::{ | ||||
|         application::{ | ||||
|             ApplicationScore, RustWebFramework, RustWebapp, | ||||
|             features::{ContinuousDelivery, Monitoring, rhob_monitoring::RHOBMonitoring}, | ||||
|             features::{PackagingDeployment, rhob_monitoring::Monitoring}, | ||||
|         }, | ||||
|         monitoring::alert_channel::discord_alert_channel::DiscordWebhook, | ||||
|     }, | ||||
| @ -21,14 +21,19 @@ async fn main() { | ||||
|         service_port: 8080, | ||||
|     }); | ||||
| 
 | ||||
|     let discord_webhook = DiscordWebhook { | ||||
|         name: "harmony_demo".to_string(), | ||||
|         url: hurl!("http://not_a_url.com"), | ||||
|     }; | ||||
| 
 | ||||
|     let app = ApplicationScore { | ||||
|         features: vec![ | ||||
|             Box::new(ContinuousDelivery { | ||||
|             Box::new(PackagingDeployment { | ||||
|                 application: application.clone(), | ||||
|             }), | ||||
|             Box::new(RHOBMonitoring { | ||||
|             Box::new(Monitoring { | ||||
|                 application: application.clone(), | ||||
|                 alert_receiver: vec![], | ||||
|                 alert_receiver: vec![Box::new(discord_webhook)], | ||||
|             }), | ||||
|         ], | ||||
|         application, | ||||
|  | ||||
| @ -3,7 +3,7 @@ use harmony::{ | ||||
|     modules::{ | ||||
|         application::{ | ||||
|             ApplicationScore, RustWebFramework, RustWebapp, | ||||
|             features::{ContinuousDelivery, Monitoring, rhob_monitoring::RHOBMonitoring}, | ||||
|             features::{PackagingDeployment, rhob_monitoring::Monitoring}, | ||||
|         }, | ||||
|         monitoring::alert_channel::discord_alert_channel::DiscordWebhook, | ||||
|     }, | ||||
| @ -28,10 +28,10 @@ async fn main() { | ||||
| 
 | ||||
|     let app = ApplicationScore { | ||||
|         features: vec![ | ||||
|             Box::new(ContinuousDelivery { | ||||
|             Box::new(PackagingDeployment { | ||||
|                 application: application.clone(), | ||||
|             }), | ||||
|             Box::new(RHOBMonitoring { | ||||
|             Box::new(Monitoring { | ||||
|                 application: application.clone(), | ||||
|                 alert_receiver: vec![Box::new(discord_receiver)], | ||||
|             }), | ||||
|  | ||||
| @ -1,9 +1,10 @@ | ||||
| use async_trait::async_trait; | ||||
| use derive_new::new; | ||||
| use serde::{Deserialize, Serialize}; | ||||
| 
 | ||||
| use super::{HelmCommand, PreparationError, PreparationOutcome, Topology}; | ||||
| 
 | ||||
| #[derive(new)] | ||||
| #[derive(new, Clone, Debug, Serialize, Deserialize)] | ||||
| pub struct LocalhostTopology; | ||||
| 
 | ||||
| #[async_trait] | ||||
|  | ||||
| @ -5,8 +5,8 @@ pub use endpoint::*; | ||||
| mod monitoring; | ||||
| pub use monitoring::*; | ||||
| 
 | ||||
| mod continuous_delivery; | ||||
| pub use continuous_delivery::*; | ||||
| mod packaging_deployment; | ||||
| pub use packaging_deployment::*; | ||||
| 
 | ||||
| mod helm_argocd_score; | ||||
| pub use helm_argocd_score::*; | ||||
|  | ||||
| @ -47,11 +47,11 @@ use crate::{ | ||||
| /// - ArgoCD to install/upgrade/rollback/inspect k8s resources
 | ||||
| /// - Kubernetes for runtime orchestration
 | ||||
| #[derive(Debug, Default, Clone)] | ||||
| pub struct ContinuousDelivery<A: OCICompliant + HelmPackage> { | ||||
| pub struct PackagingDeployment<A: OCICompliant + HelmPackage> { | ||||
|     pub application: Arc<A>, | ||||
| } | ||||
| 
 | ||||
| impl<A: OCICompliant + HelmPackage> ContinuousDelivery<A> { | ||||
| impl<A: OCICompliant + HelmPackage> PackagingDeployment<A> { | ||||
|     async fn deploy_to_local_k3d( | ||||
|         &self, | ||||
|         app_name: String, | ||||
| @ -139,7 +139,7 @@ impl<A: OCICompliant + HelmPackage> ContinuousDelivery<A> { | ||||
| impl< | ||||
|     A: OCICompliant + HelmPackage + Clone + 'static, | ||||
|     T: Topology + HelmCommand + MultiTargetTopology + K8sclient + Ingress + 'static, | ||||
| > ApplicationFeature<T> for ContinuousDelivery<A> | ||||
| > ApplicationFeature<T> for PackagingDeployment<A> | ||||
| { | ||||
|     async fn ensure_installed( | ||||
|         &self, | ||||
| @ -27,7 +27,7 @@ use harmony_types::net::Url; | ||||
| use log::{debug, info}; | ||||
| 
 | ||||
| #[derive(Debug, Clone)] | ||||
| pub struct RHOBMonitoring { | ||||
| pub struct Monitoring { | ||||
|     pub application: Arc<dyn Application>, | ||||
|     pub alert_receiver: Vec<Box<dyn AlertReceiver<RHOBObservability>>>, | ||||
| } | ||||
| @ -43,7 +43,7 @@ impl< | ||||
|         + Ingress | ||||
|         + std::fmt::Debug | ||||
|         + PrometheusApplicationMonitoring<RHOBObservability>, | ||||
| > ApplicationFeature<T> for RHOBMonitoring | ||||
| > ApplicationFeature<T> for Monitoring | ||||
| { | ||||
|     async fn ensure_installed( | ||||
|         &self, | ||||
|  | ||||
| @ -10,7 +10,7 @@ use dockerfile_builder::Dockerfile; | ||||
| use dockerfile_builder::instruction::{CMD, COPY, ENV, EXPOSE, FROM, RUN, USER, WORKDIR}; | ||||
| use dockerfile_builder::instruction_builder::CopyBuilder; | ||||
| use futures_util::StreamExt; | ||||
| use log::{debug, info, log_enabled}; | ||||
| use log::{debug, error, info, log_enabled, trace, warn}; | ||||
| use serde::Serialize; | ||||
| use tar::{Builder, Header}; | ||||
| use walkdir::WalkDir; | ||||
| @ -162,7 +162,7 @@ impl RustWebapp { | ||||
|         &self, | ||||
|         image_name: &str, | ||||
|     ) -> Result<String, Box<dyn std::error::Error>> { | ||||
|         debug!("Generating Dockerfile for '{}'", self.name); | ||||
|         info!("Generating Dockerfile for '{}'", self.name); | ||||
|         let dockerfile = self.get_or_build_dockerfile(); | ||||
|         let quiet = !log_enabled!(log::Level::Debug); | ||||
|         match dockerfile | ||||
| @ -194,8 +194,41 @@ impl RustWebapp { | ||||
|                     Some(body_full(tar_data.into())), | ||||
|                 ); | ||||
| 
 | ||||
|                 while let Some(msg) = image_build_stream.next().await { | ||||
|                     debug!("Message: {msg:?}"); | ||||
|                 while let Some(mut msg) = image_build_stream.next().await { | ||||
|                     trace!("Got bollard msg {msg:?}"); | ||||
|                     match msg { | ||||
|                         Ok(mut msg) => { | ||||
|                             if let Some(progress) = msg.progress_detail { | ||||
|                                 info!( | ||||
|                                     "Build progress {}/{}", | ||||
|                                     progress.current.unwrap_or(0), | ||||
|                                     progress.total.unwrap_or(0) | ||||
|                                 ); | ||||
|                             } | ||||
| 
 | ||||
|                             if let Some(mut log) = msg.stream { | ||||
|                                 if log.ends_with('\n') { | ||||
|                                     log.pop(); | ||||
|                                     if log.ends_with('\r') { | ||||
|                                         log.pop(); | ||||
|                                     } | ||||
|                                 } | ||||
|                                 info!("{log}"); | ||||
|                             } | ||||
| 
 | ||||
|                             if let Some(error) = msg.error { | ||||
|                                 warn!("Build error : {error:?}"); | ||||
|                             } | ||||
| 
 | ||||
|                             if let Some(error) = msg.error_detail { | ||||
|                                 warn!("Build error : {error:?}"); | ||||
|                             } | ||||
|                         } | ||||
|                         Err(e) => { | ||||
|                             error!("Build failed : {e}"); | ||||
|                             return Err(format!("Build failed : {e}").into()); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 Ok(image_name.to_string()) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user