fix: clippy #164
| @ -3,10 +3,7 @@ use std::time::Duration; | |||||||
| use derive_new::new; | use derive_new::new; | ||||||
| use k8s_openapi::{ | use k8s_openapi::{ | ||||||
|     ClusterResourceScope, NamespaceResourceScope, |     ClusterResourceScope, NamespaceResourceScope, | ||||||
|     api::{ |     api::{apps::v1::Deployment, core::v1::Pod}, | ||||||
|         apps::v1::Deployment, |  | ||||||
|         core::v1::{Pod, PodStatus}, |  | ||||||
|     }, |  | ||||||
| }; | }; | ||||||
| use kube::{ | use kube::{ | ||||||
|     Client, Config, Error, Resource, |     Client, Config, Error, Resource, | ||||||
| @ -23,7 +20,7 @@ use kube::{ | |||||||
| }; | }; | ||||||
| use log::{debug, error, trace}; | use log::{debug, error, trace}; | ||||||
| use serde::{Serialize, de::DeserializeOwned}; | use serde::{Serialize, de::DeserializeOwned}; | ||||||
| use serde_json::{Value, json}; | use serde_json::json; | ||||||
| use similar::TextDiff; | use similar::TextDiff; | ||||||
| use tokio::{io::AsyncReadExt, time::sleep}; | use tokio::{io::AsyncReadExt, time::sleep}; | ||||||
| 
 | 
 | ||||||
| @ -71,7 +68,7 @@ impl K8sClient { | |||||||
|         } else { |         } else { | ||||||
|             Api::default_namespaced_with(self.client.clone(), &gvk) |             Api::default_namespaced_with(self.client.clone(), &gvk) | ||||||
|         }; |         }; | ||||||
|         Ok(resource.get(name).await?) |         resource.get(name).await | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub async fn get_deployment( |     pub async fn get_deployment( | ||||||
| @ -84,7 +81,7 @@ impl K8sClient { | |||||||
|         } else { |         } else { | ||||||
|             Api::default_namespaced(self.client.clone()) |             Api::default_namespaced(self.client.clone()) | ||||||
|         }; |         }; | ||||||
|         Ok(deps.get_opt(name).await?) |         deps.get_opt(name).await | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub async fn get_pod(&self, name: &str, namespace: Option<&str>) -> Result<Option<Pod>, Error> { |     pub async fn get_pod(&self, name: &str, namespace: Option<&str>) -> Result<Option<Pod>, Error> { | ||||||
| @ -93,7 +90,7 @@ impl K8sClient { | |||||||
|         } else { |         } else { | ||||||
|             Api::default_namespaced(self.client.clone()) |             Api::default_namespaced(self.client.clone()) | ||||||
|         }; |         }; | ||||||
|         Ok(pods.get_opt(name).await?) |         pods.get_opt(name).await | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub async fn scale_deployment( |     pub async fn scale_deployment( | ||||||
| @ -170,14 +167,12 @@ impl K8sClient { | |||||||
|         loop { |         loop { | ||||||
|             let pod = self.get_pod(pod_name, namespace).await?; |             let pod = self.get_pod(pod_name, namespace).await?; | ||||||
| 
 | 
 | ||||||
|             if let Some(p) = pod { |             if let Some(p) = pod | ||||||
|                 if let Some(status) = p.status { |                 && let Some(status) = p.status | ||||||
|                     if let Some(phase) = status.phase { |                 && let Some(phase) = status.phase | ||||||
|                         if phase.to_lowercase() == "running" { |                 && phase.to_lowercase() == "running" | ||||||
|                             return Ok(()); |             { | ||||||
|                         } |                 return Ok(()); | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if elapsed >= timeout_secs { |             if elapsed >= timeout_secs { | ||||||
| @ -240,7 +235,7 @@ impl K8sClient { | |||||||
| 
 | 
 | ||||||
|                 if let Some(s) = status.status { |                 if let Some(s) = status.status { | ||||||
|                     let mut stdout_buf = String::new(); |                     let mut stdout_buf = String::new(); | ||||||
|                     if let Some(mut stdout) = process.stdout().take() { |                     if let Some(mut stdout) = process.stdout() { | ||||||
|                         stdout |                         stdout | ||||||
|                             .read_to_string(&mut stdout_buf) |                             .read_to_string(&mut stdout_buf) | ||||||
|                             .await |                             .await | ||||||
|  | |||||||
| @ -212,11 +212,11 @@ impl K8sAnywhereTopology { | |||||||
|             .await?; |             .await?; | ||||||
|         let ready_replicas = ic.data["status"]["availableReplicas"].as_i64().unwrap_or(0); |         let ready_replicas = ic.data["status"]["availableReplicas"].as_i64().unwrap_or(0); | ||||||
|         if ready_replicas >= 1 { |         if ready_replicas >= 1 { | ||||||
|             return Ok(()); |             Ok(()) | ||||||
|         } else { |         } else { | ||||||
|             return Err(PreparationError::new( |             Err(PreparationError::new( | ||||||
|                 "openshift-ingress-operator not available".to_string(), |                 "openshift-ingress-operator not available".to_string(), | ||||||
|             )); |             )) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ pub struct InventoryRepositoryFactory; | |||||||
| impl InventoryRepositoryFactory { | impl InventoryRepositoryFactory { | ||||||
|     pub async fn build() -> Result<Box<dyn InventoryRepository>, RepoError> { |     pub async fn build() -> Result<Box<dyn InventoryRepository>, RepoError> { | ||||||
|         Ok(Box::new( |         Ok(Box::new( | ||||||
|             SqliteInventoryRepository::new(&(*DATABASE_URL)).await?, |             SqliteInventoryRepository::new(&DATABASE_URL).await?, | ||||||
|         )) |         )) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -36,7 +36,7 @@ impl HttpServer for OPNSenseFirewall { | |||||||
|     async fn serve_file_content(&self, file: &FileContent) -> Result<(), ExecutorError> { |     async fn serve_file_content(&self, file: &FileContent) -> Result<(), ExecutorError> { | ||||||
|         let path = match &file.path { |         let path = match &file.path { | ||||||
|             crate::data::FilePath::Relative(path) => { |             crate::data::FilePath::Relative(path) => { | ||||||
|                 format!("{OPNSENSE_HTTP_ROOT_PATH}/{}", path.to_string()) |                 format!("{OPNSENSE_HTTP_ROOT_PATH}/{}", path) | ||||||
|             } |             } | ||||||
|             crate::data::FilePath::Absolute(path) => { |             crate::data::FilePath::Absolute(path) => { | ||||||
|                 return Err(ExecutorError::ConfigurationError(format!( |                 return Err(ExecutorError::ConfigurationError(format!( | ||||||
|  | |||||||
| @ -182,16 +182,12 @@ pub(crate) fn get_health_check_for_backend( | |||||||
|     let uppercase = binding.as_str(); |     let uppercase = binding.as_str(); | ||||||
|     match uppercase { |     match uppercase { | ||||||
|         "TCP" => { |         "TCP" => { | ||||||
|             if let Some(checkport) = haproxy_health_check.checkport.content.as_ref() { |             if let Some(checkport) = haproxy_health_check.checkport.content.as_ref() | ||||||
|                 if !checkport.is_empty() { |                 && !checkport.is_empty() | ||||||
|                     return Some(HealthCheck::TCP(Some(checkport.parse().unwrap_or_else( |             { | ||||||
|                         |_| { |                 return Some(HealthCheck::TCP(Some(checkport.parse().unwrap_or_else( | ||||||
|                             panic!( |                     |_| panic!("HAProxy check port should be a valid port number, got {checkport}"), | ||||||
|                                 "HAProxy check port should be a valid port number, got {checkport}" |                 )))); | ||||||
|                             ) |  | ||||||
|                         }, |  | ||||||
|                     )))); |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|             Some(HealthCheck::TCP(None)) |             Some(HealthCheck::TCP(None)) | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ mod tftp; | |||||||
| use std::sync::Arc; | use std::sync::Arc; | ||||||
| 
 | 
 | ||||||
| pub use management::*; | pub use management::*; | ||||||
| use opnsense_config_xml::Host; |  | ||||||
| use tokio::sync::RwLock; | use tokio::sync::RwLock; | ||||||
| 
 | 
 | ||||||
| use crate::{executors::ExecutorError, topology::LogicalHost}; | use crate::{executors::ExecutorError, topology::LogicalHost}; | ||||||
|  | |||||||
| @ -1,10 +1,8 @@ | |||||||
| use async_trait::async_trait; | use async_trait::async_trait; | ||||||
| use kube::{Api, api::GroupVersionKind}; | use kube::api::GroupVersionKind; | ||||||
| use log::{debug, warn}; |  | ||||||
| use non_blank_string_rs::NonBlankString; | use non_blank_string_rs::NonBlankString; | ||||||
| use serde::Serialize; | use serde::Serialize; | ||||||
| use serde::de::DeserializeOwned; | use std::{str::FromStr, sync::Arc}; | ||||||
| use std::{process::Command, str::FromStr, sync::Arc}; |  | ||||||
| 
 | 
 | ||||||
| use crate::{ | use crate::{ | ||||||
|     data::Version, |     data::Version, | ||||||
| @ -12,10 +10,7 @@ use crate::{ | |||||||
|     inventory::Inventory, |     inventory::Inventory, | ||||||
|     modules::helm::chart::{HelmChartScore, HelmRepository}, |     modules::helm::chart::{HelmChartScore, HelmRepository}, | ||||||
|     score::Score, |     score::Score, | ||||||
|     topology::{ |     topology::{HelmCommand, K8sclient, Topology, ingress::Ingress, k8s::K8sClient}, | ||||||
|         HelmCommand, K8sclient, PreparationError, PreparationOutcome, Topology, ingress::Ingress, |  | ||||||
|         k8s::K8sClient, |  | ||||||
|     }, |  | ||||||
| }; | }; | ||||||
| use harmony_types::id::Id; | use harmony_types::id::Id; | ||||||
| 
 | 
 | ||||||
| @ -119,13 +114,13 @@ impl ArgoInterpret { | |||||||
| 
 | 
 | ||||||
|                 match ic.data["status"]["domain"].as_str() { |                 match ic.data["status"]["domain"].as_str() { | ||||||
|                     Some(domain) => return Ok(domain.to_string()), |                     Some(domain) => return Ok(domain.to_string()), | ||||||
|                     None => return Err(InterpretError::new("Could not find domain".to_string())), |                     None => Err(InterpretError::new("Could not find domain".to_string())), | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             false => { |             false => { | ||||||
|                 todo!() |                 todo!() | ||||||
|             } |             } | ||||||
|         }; |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -190,7 +190,7 @@ impl< | |||||||
|                 info!("Deploying {} to target {target:?}", self.application.name()); |                 info!("Deploying {} to target {target:?}", self.application.name()); | ||||||
| 
 | 
 | ||||||
|                 let score = ArgoHelmScore { |                 let score = ArgoHelmScore { | ||||||
|                     namespace: format!("{}", self.application.name()), |                     namespace: self.application.name().to_string(), | ||||||
|                     openshift: true, |                     openshift: true, | ||||||
|                     argo_apps: vec![ArgoApplication::from(CDApplicationConfig { |                     argo_apps: vec![ArgoApplication::from(CDApplicationConfig { | ||||||
|                         // helm pull oci://hub.nationtech.io/harmony/harmony-example-rust-webapp-chart --version 0.1.0
 |                         // helm pull oci://hub.nationtech.io/harmony/harmony-example-rust-webapp-chart --version 0.1.0
 | ||||||
| @ -198,8 +198,8 @@ impl< | |||||||
|                         helm_chart_repo_url: "hub.nationtech.io/harmony".to_string(), |                         helm_chart_repo_url: "hub.nationtech.io/harmony".to_string(), | ||||||
|                         helm_chart_name: format!("{}-chart", self.application.name()), |                         helm_chart_name: format!("{}-chart", self.application.name()), | ||||||
|                         values_overrides: None, |                         values_overrides: None, | ||||||
|                         name: format!("{}", self.application.name()), |                         name: self.application.name().to_string(), | ||||||
|                         namespace: format!("{}", self.application.name()), |                         namespace: self.application.name().to_string(), | ||||||
|                     })], |                     })], | ||||||
|                 }; |                 }; | ||||||
|                 score |                 score | ||||||
|  | |||||||
| @ -3,7 +3,6 @@ use std::sync::Arc; | |||||||
| use crate::modules::application::{ | use crate::modules::application::{ | ||||||
|     Application, ApplicationFeature, InstallationError, InstallationOutcome, |     Application, ApplicationFeature, InstallationError, InstallationOutcome, | ||||||
| }; | }; | ||||||
| use crate::modules::monitoring::application_monitoring::application_monitoring_score::ApplicationMonitoringScore; |  | ||||||
| use crate::modules::monitoring::application_monitoring::rhobs_application_monitoring_score::ApplicationRHOBMonitoringScore; | use crate::modules::monitoring::application_monitoring::rhobs_application_monitoring_score::ApplicationRHOBMonitoringScore; | ||||||
| 
 | 
 | ||||||
| use crate::modules::monitoring::kube_prometheus::crd::rhob_alertmanager_config::RHOBObservability; | use crate::modules::monitoring::kube_prometheus::crd::rhob_alertmanager_config::RHOBObservability; | ||||||
|  | |||||||
| @ -194,10 +194,10 @@ impl RustWebapp { | |||||||
|                     Some(body_full(tar_data.into())), |                     Some(body_full(tar_data.into())), | ||||||
|                 ); |                 ); | ||||||
| 
 | 
 | ||||||
|                 while let Some(mut msg) = image_build_stream.next().await { |                 while let Some(msg) = image_build_stream.next().await { | ||||||
|                     trace!("Got bollard msg {msg:?}"); |                     trace!("Got bollard msg {msg:?}"); | ||||||
|                     match msg { |                     match msg { | ||||||
|                         Ok(mut msg) => { |                         Ok(msg) => { | ||||||
|                             if let Some(progress) = msg.progress_detail { |                             if let Some(progress) = msg.progress_detail { | ||||||
|                                 info!( |                                 info!( | ||||||
|                                     "Build progress {}/{}", |                                     "Build progress {}/{}", | ||||||
| @ -511,25 +511,23 @@ ingress: | |||||||
|         fs::write(chart_dir.join("values.yaml"), values_yaml)?; |         fs::write(chart_dir.join("values.yaml"), values_yaml)?; | ||||||
| 
 | 
 | ||||||
|         // Create templates/_helpers.tpl
 |         // Create templates/_helpers.tpl
 | ||||||
|         let helpers_tpl = format!( |         let helpers_tpl = r#" | ||||||
|             r#" | {{/* | ||||||
| {{{{/* |  | ||||||
| Expand the name of the chart. | Expand the name of the chart. | ||||||
| */}}}} | */}} | ||||||
| {{{{- define "chart.name" -}}}} | {{- define "chart.name" -}} | ||||||
| {{{{- default .Chart.Name $.Values.nameOverride | trunc 63 | trimSuffix "-" }}}} | {{- default .Chart.Name $.Values.nameOverride | trunc 63 | trimSuffix "-" }} | ||||||
| {{{{- end }}}} | {{- end }} | ||||||
| 
 | 
 | ||||||
| {{{{/* | {{/* | ||||||
| Create a default fully qualified app name. | Create a default fully qualified app name. | ||||||
| We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). | ||||||
| */}}}} | */}} | ||||||
| {{{{- define "chart.fullname" -}}}} | {{- define "chart.fullname" -}} | ||||||
| {{{{- $name := default .Chart.Name $.Values.nameOverride }}}} | {{- $name := default .Chart.Name $.Values.nameOverride }} | ||||||
| {{{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}}} | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} | ||||||
| {{{{- end }}}} | {{- end }} | ||||||
| "#
 | "#.to_string();
 | ||||||
|         ); |  | ||||||
|         fs::write(templates_dir.join("_helpers.tpl"), helpers_tpl)?; |         fs::write(templates_dir.join("_helpers.tpl"), helpers_tpl)?; | ||||||
| 
 | 
 | ||||||
|         // Create templates/service.yaml
 |         // Create templates/service.yaml
 | ||||||
|  | |||||||
| @ -66,8 +66,7 @@ impl HelmCommandExecutor { | |||||||
|             .is_none() |             .is_none() | ||||||
|         { |         { | ||||||
|             if self.chart.repo.is_none() { |             if self.chart.repo.is_none() { | ||||||
|                 return Err(std::io::Error::new( |                 return Err(std::io::Error::other( | ||||||
|                     ErrorKind::Other, |  | ||||||
|                     "Chart doesn't exist locally and no repo specified", |                     "Chart doesn't exist locally and no repo specified", | ||||||
|                 )); |                 )); | ||||||
|             } |             } | ||||||
| @ -107,10 +106,10 @@ impl HelmCommandExecutor { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn run_command(mut self, mut args: Vec<String>) -> Result<Output, std::io::Error> { |     pub fn run_command(mut self, mut args: Vec<String>) -> Result<Output, std::io::Error> { | ||||||
|         if let Some(d) = self.debug { |         if let Some(d) = self.debug | ||||||
|             if d { |             && d | ||||||
|                 args.push("--debug".to_string()); |         { | ||||||
|             } |             args.push("--debug".to_string()); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         let path = if let Some(p) = self.path { |         let path = if let Some(p) = self.path { | ||||||
| @ -234,28 +233,28 @@ impl HelmChart { | |||||||
|             args.push(kv); |             args.push(kv); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if let Some(crd) = self.include_crds { |         if let Some(crd) = self.include_crds | ||||||
|             if crd { |             && crd | ||||||
|                 args.push("--include-crds".to_string()); |         { | ||||||
|             } |             args.push("--include-crds".to_string()); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if let Some(st) = self.skip_tests { |         if let Some(st) = self.skip_tests | ||||||
|             if st { |             && st | ||||||
|                 args.push("--skip-tests".to_string()); |         { | ||||||
|             } |             args.push("--skip-tests".to_string()); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if let Some(sh) = self.skip_hooks { |         if let Some(sh) = self.skip_hooks | ||||||
|             if sh { |             && sh | ||||||
|                 args.push("--no-hooks".to_string()); |         { | ||||||
|             } |             args.push("--no-hooks".to_string()); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if let Some(d) = self.debug { |         if let Some(d) = self.debug | ||||||
|             if d { |             && d | ||||||
|                 args.push("--debug".to_string()); |         { | ||||||
|             } |             args.push("--debug".to_string()); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         args |         args | ||||||
|  | |||||||
| @ -63,7 +63,7 @@ impl<T: Topology + HttpServer> Interpret<T> for StaticFilesHttpInterpret { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         for f in self.score.files.iter() { |         for f in self.score.files.iter() { | ||||||
|             http_server.serve_file_content(&f).await? |             http_server.serve_file_content(f).await? | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         http_server.commit_config().await?; |         http_server.commit_config().await?; | ||||||
|  | |||||||
| @ -92,7 +92,7 @@ impl<T: Topology> Interpret<T> for DiscoverHostForRoleInterpret { | |||||||
|                     ); |                     ); | ||||||
|                     return Err(InterpretError::new(format!( |                     return Err(InterpretError::new(format!( | ||||||
|                         "Could not select host : {}", |                         "Could not select host : {}", | ||||||
|                         e.to_string() |                         e | ||||||
|                     ))); |                     ))); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  | |||||||
| @ -9,9 +9,7 @@ use crate::{ | |||||||
|     inventory::Inventory, |     inventory::Inventory, | ||||||
|     modules::{ |     modules::{ | ||||||
|         application::Application, |         application::Application, | ||||||
|         monitoring::kube_prometheus::crd::{ |         monitoring::kube_prometheus::crd::rhob_alertmanager_config::RHOBObservability, | ||||||
|             crd_alertmanager_config::CRDPrometheus, rhob_alertmanager_config::RHOBObservability, |  | ||||||
|         }, |  | ||||||
|         prometheus::prometheus::PrometheusApplicationMonitoring, |         prometheus::prometheus::PrometheusApplicationMonitoring, | ||||||
|     }, |     }, | ||||||
|     score::Score, |     score::Score, | ||||||
|  | |||||||
| @ -1,12 +1,8 @@ | |||||||
| use std::collections::BTreeMap; |  | ||||||
| 
 |  | ||||||
| use kube::CustomResource; | use kube::CustomResource; | ||||||
| use schemars::JsonSchema; | use schemars::JsonSchema; | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
| 
 | 
 | ||||||
| use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheuses::{ | use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheuses::LabelSelector; | ||||||
|     LabelSelector, PrometheusSpec, |  | ||||||
| }; |  | ||||||
| 
 | 
 | ||||||
| /// MonitoringStack CRD for monitoring.rhobs/v1alpha1
 | /// MonitoringStack CRD for monitoring.rhobs/v1alpha1
 | ||||||
| #[derive(CustomResource, Serialize, Deserialize, Debug, Clone, JsonSchema)] | #[derive(CustomResource, Serialize, Deserialize, Debug, Clone, JsonSchema)] | ||||||
|  | |||||||
| @ -52,6 +52,12 @@ pub struct OKDSetup02BootstrapInterpret { | |||||||
|     status: InterpretStatus, |     status: InterpretStatus, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | impl Default for OKDSetup02BootstrapInterpret { | ||||||
|  |     fn default() -> Self { | ||||||
|  |         Self::new() | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| impl OKDSetup02BootstrapInterpret { | impl OKDSetup02BootstrapInterpret { | ||||||
|     pub fn new() -> Self { |     pub fn new() -> Self { | ||||||
|         let version = Version::from("1.0.0").unwrap(); |         let version = Version::from("1.0.0").unwrap(); | ||||||
| @ -98,9 +104,9 @@ impl OKDSetup02BootstrapInterpret { | |||||||
|                 InterpretError::new(format!("Failed to create okd installation directory : {e}")) |                 InterpretError::new(format!("Failed to create okd installation directory : {e}")) | ||||||
|             })?; |             })?; | ||||||
|         if !exit_status.success() { |         if !exit_status.success() { | ||||||
|             return Err(InterpretError::new(format!( |             return Err(InterpretError::new( | ||||||
|                 "Failed to create okd installation directory" |                 "Failed to create okd installation directory".to_string(), | ||||||
|             ))); |             )); | ||||||
|         } else { |         } else { | ||||||
|             info!( |             info!( | ||||||
|                 "Created OKD installation directory {}", |                 "Created OKD installation directory {}", | ||||||
|  | |||||||
| @ -254,7 +254,7 @@ impl RHOBAlertingInterpret { | |||||||
| 
 | 
 | ||||||
|         let stack = MonitoringStack { |         let stack = MonitoringStack { | ||||||
|             metadata: ObjectMeta { |             metadata: ObjectMeta { | ||||||
|                 name: Some(format!("{}-monitoring", self.sender.namespace.clone()).into()), |                 name: Some(format!("{}-monitoring", self.sender.namespace.clone())), | ||||||
|                 namespace: Some(self.sender.namespace.clone()), |                 namespace: Some(self.sender.namespace.clone()), | ||||||
|                 labels: Some([("monitoring-stack".into(), "true".into())].into()), |                 labels: Some([("monitoring-stack".into(), "true".into())].into()), | ||||||
|                 ..Default::default() |                 ..Default::default() | ||||||
| @ -278,7 +278,7 @@ impl RHOBAlertingInterpret { | |||||||
|             .get_domain(&format!("alert-manager-{}", self.sender.namespace.clone())) |             .get_domain(&format!("alert-manager-{}", self.sender.namespace.clone())) | ||||||
|             .await?; |             .await?; | ||||||
|         let name = format!("{}-alert-manager", self.sender.namespace.clone()); |         let name = format!("{}-alert-manager", self.sender.namespace.clone()); | ||||||
|         let backend_service = format!("alertmanager-operated"); |         let backend_service = "alertmanager-operated".to_string(); | ||||||
|         let namespace = self.sender.namespace.clone(); |         let namespace = self.sender.namespace.clone(); | ||||||
|         let alert_manager_ingress = K8sIngressScore { |         let alert_manager_ingress = K8sIngressScore { | ||||||
|             name: fqdn!(&name), |             name: fqdn!(&name), | ||||||
| @ -295,7 +295,7 @@ impl RHOBAlertingInterpret { | |||||||
|             .get_domain(&format!("prometheus-{}", self.sender.namespace.clone())) |             .get_domain(&format!("prometheus-{}", self.sender.namespace.clone())) | ||||||
|             .await?; |             .await?; | ||||||
|         let name = format!("{}-prometheus", self.sender.namespace.clone()); |         let name = format!("{}-prometheus", self.sender.namespace.clone()); | ||||||
|         let backend_service = format!("prometheus-operated"); |         let backend_service = "prometheus-operated".to_string(); | ||||||
|         let prometheus_ingress = K8sIngressScore { |         let prometheus_ingress = K8sIngressScore { | ||||||
|             name: fqdn!(&name), |             name: fqdn!(&name), | ||||||
|             host: fqdn!(&prometheus_domain), |             host: fqdn!(&prometheus_domain), | ||||||
|  | |||||||
| @ -25,7 +25,7 @@ pub struct CephRemoveOsd { | |||||||
| 
 | 
 | ||||||
| impl<T: Topology + K8sclient> Score<T> for CephRemoveOsd { | impl<T: Topology + K8sclient> Score<T> for CephRemoveOsd { | ||||||
|     fn name(&self) -> String { |     fn name(&self) -> String { | ||||||
|         format!("CephRemoveOsdScore") |         "CephRemoveOsdScore".to_string() | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     #[doc(hidden)] |     #[doc(hidden)] | ||||||
| @ -118,14 +118,14 @@ impl CephRemoveOsdInterpret { | |||||||
|                 if let Some(status) = deployment.status { |                 if let Some(status) = deployment.status { | ||||||
|                     let ready_count = status.ready_replicas.unwrap_or(0); |                     let ready_count = status.ready_replicas.unwrap_or(0); | ||||||
|                     if ready_count >= 1 { |                     if ready_count >= 1 { | ||||||
|                         return Ok(Outcome::success(format!( |                         Ok(Outcome::success(format!( | ||||||
|                             "'{}' is ready with {} replica(s).", |                             "'{}' is ready with {} replica(s).", | ||||||
|                             &toolbox_dep, ready_count |                             &toolbox_dep, ready_count | ||||||
|                         ))); |                         ))) | ||||||
|                     } else { |                     } else { | ||||||
|                         return Err(InterpretError::new( |                         Err(InterpretError::new( | ||||||
|                             "ceph-tool-box not ready in cluster".to_string(), |                             "ceph-tool-box not ready in cluster".to_string(), | ||||||
|                         )); |                         )) | ||||||
|                     } |                     } | ||||||
|                 } else { |                 } else { | ||||||
|                     Err(InterpretError::new(format!( |                     Err(InterpretError::new(format!( | ||||||
| @ -181,15 +181,14 @@ impl CephRemoveOsdInterpret { | |||||||
|                 ) |                 ) | ||||||
|                 .await?; |                 .await?; | ||||||
| 
 | 
 | ||||||
|             if let Some(deployment) = dep { |             if let Some(deployment) = dep | ||||||
|                 if let Some(status) = deployment.status { |                 && let Some(status) = deployment.status | ||||||
|                     if status.replicas.unwrap_or(1) == 0 && status.ready_replicas.unwrap_or(1) == 0 |                 && status.replicas.unwrap_or(1) == 0 | ||||||
|                     { |                 && status.ready_replicas.unwrap_or(1) == 0 | ||||||
|                         return Ok(Outcome::success( |             { | ||||||
|                             "Deployment successfully scaled down.".to_string(), |                 return Ok(Outcome::success( | ||||||
|                         )); |                     "Deployment successfully scaled down.".to_string(), | ||||||
|                     } |                 )); | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if start.elapsed() > timeout { |             if start.elapsed() > timeout { | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ pub struct CephVerifyClusterHealth { | |||||||
| 
 | 
 | ||||||
| impl<T: Topology + K8sclient> Score<T> for CephVerifyClusterHealth { | impl<T: Topology + K8sclient> Score<T> for CephVerifyClusterHealth { | ||||||
|     fn name(&self) -> String { |     fn name(&self) -> String { | ||||||
|         format!("CephValidateClusterHealth") |         "CephValidateClusterHealth".to_string() | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn create_interpret(&self) -> Box<dyn Interpret<T>> { |     fn create_interpret(&self) -> Box<dyn Interpret<T>> { | ||||||
| @ -80,14 +80,14 @@ impl CephVerifyClusterHealthInterpret { | |||||||
|                 if let Some(status) = deployment.status { |                 if let Some(status) = deployment.status { | ||||||
|                     let ready_count = status.ready_replicas.unwrap_or(0); |                     let ready_count = status.ready_replicas.unwrap_or(0); | ||||||
|                     if ready_count >= 1 { |                     if ready_count >= 1 { | ||||||
|                         return Ok(Outcome::success(format!( |                         Ok(Outcome::success(format!( | ||||||
|                             "'{}' is ready with {} replica(s).", |                             "'{}' is ready with {} replica(s).", | ||||||
|                             &toolbox_dep, ready_count |                             &toolbox_dep, ready_count | ||||||
|                         ))); |                         ))) | ||||||
|                     } else { |                     } else { | ||||||
|                         return Err(InterpretError::new( |                         Err(InterpretError::new( | ||||||
|                             "ceph-tool-box not ready in cluster".to_string(), |                             "ceph-tool-box not ready in cluster".to_string(), | ||||||
|                         )); |                         )) | ||||||
|                     } |                     } | ||||||
|                 } else { |                 } else { | ||||||
|                     Err(InterpretError::new(format!( |                     Err(InterpretError::new(format!( | ||||||
| @ -123,9 +123,9 @@ impl CephVerifyClusterHealthInterpret { | |||||||
|             .await?; |             .await?; | ||||||
| 
 | 
 | ||||||
|         if health.contains("HEALTH_OK") { |         if health.contains("HEALTH_OK") { | ||||||
|             return Ok(Outcome::success( |             Ok(Outcome::success( | ||||||
|                 "Ceph Cluster in healthy state".to_string(), |                 "Ceph Cluster in healthy state".to_string(), | ||||||
|             )); |             )) | ||||||
|         } else { |         } else { | ||||||
|             Err(InterpretError::new(format!( |             Err(InterpretError::new(format!( | ||||||
|                 "Ceph cluster unhealthy {}", |                 "Ceph cluster unhealthy {}", | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user