refactor/ns #74
| @ -31,21 +31,21 @@ impl KubePrometheusConfig { | |||||||
|         Self { |         Self { | ||||||
|             namespace: None, |             namespace: None, | ||||||
|             default_rules: true, |             default_rules: true, | ||||||
|             windows_monitoring: true, |             windows_monitoring: false, | ||||||
|             alert_manager: true, |             alert_manager: true, | ||||||
|             grafana: true, |             grafana: true, | ||||||
|             node_exporter: true, |             node_exporter: false, | ||||||
|             prometheus: true, |             prometheus: true, | ||||||
|             kubernetes_service_monitors: true, |             kubernetes_service_monitors: true, | ||||||
|             kubernetes_api_server: true, |             kubernetes_api_server: false, | ||||||
|  | |||||||
|             kubelet: true, |             kubelet: true, | ||||||
|             kube_controller_manager: true, |             kube_controller_manager: false, | ||||||
|             kube_etcd: true, |             kube_etcd: false, | ||||||
|             kube_proxy: true, |             kube_proxy: false, | ||||||
|             kube_state_metrics: true, |             kube_state_metrics: true, | ||||||
|             prometheus_operator: true, |             prometheus_operator: true, | ||||||
|             core_dns: true, |             core_dns: false, | ||||||
|             kube_scheduler: true, |             kube_scheduler: false, | ||||||
|             alert_receiver_configs: vec![], |             alert_receiver_configs: vec![], | ||||||
|             alert_rules: vec![], |             alert_rules: vec![], | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -1,3 +1,2 @@ | |||||||
| pub mod config; | pub mod config; | ||||||
| pub mod kube_prometheus_helm_chart; | pub mod kube_prometheus_helm_chart; | ||||||
| pub mod types; |  | ||||||
|  | |||||||
| @ -1,142 +0,0 @@ | |||||||
| // // in your build_score function...
 |  | ||||||
| //
 |  | ||||||
| // // --- Step 1: Define the structs that match the ENTIRE values.yaml structure ---
 |  | ||||||
| //
 |  | ||||||
| // #[derive(Serialize, Debug)]
 |  | ||||||
| // #[serde(rename_all = "camelCase")]
 |  | ||||||
| // struct FullValues {
 |  | ||||||
| //     // Top-level keys for each component
 |  | ||||||
| //     prometheus: Prometheus,
 |  | ||||||
| //     grafana: Grafana,
 |  | ||||||
| //     alertmanager: Alertmanager,
 |  | ||||||
| //     kube_state_metrics: KubeStateMetrics,
 |  | ||||||
| //     prometheus_operator: PrometheusOperator,
 |  | ||||||
| //     // Add other components like nodeExporter if you enable them
 |  | ||||||
| //
 |  | ||||||
| //     // Key for your custom rules
 |  | ||||||
| //     additional_prometheus_rules_map: AlertManagerAdditionalPromRules,
 |  | ||||||
| // }
 |  | ||||||
| //
 |  | ||||||
| // #[derive(Serialize, Debug)]
 |  | ||||||
| // #[serde(rename_all = "camelCase")]
 |  | ||||||
| // struct Prometheus {
 |  | ||||||
| //     enabled: bool,
 |  | ||||||
| //     prometheus_spec: PrometheusSpec,
 |  | ||||||
| // }
 |  | ||||||
| //
 |  | ||||||
| // #[derive(Serialize, Debug)]
 |  | ||||||
| // #[serde(rename_all = "camelCase")]
 |  | ||||||
| // struct PrometheusSpec {
 |  | ||||||
| //     resources: K8sResources,
 |  | ||||||
| // }
 |  | ||||||
| //
 |  | ||||||
| // #[derive(Serialize, Debug)]
 |  | ||||||
| // #[serde(rename_all = "camelCase")]
 |  | ||||||
| // struct Grafana {
 |  | ||||||
| //     enabled: bool,
 |  | ||||||
| //     resources: K8sResources,
 |  | ||||||
| //     sidecar: GrafanaSidecar,
 |  | ||||||
| // }
 |  | ||||||
| //
 |  | ||||||
| // #[derive(Serialize, Debug)]
 |  | ||||||
| // #[serde(rename_all = "camelCase")]
 |  | ||||||
| // struct GrafanaSidecar {
 |  | ||||||
| //     resources: K8sResources,
 |  | ||||||
| // }
 |  | ||||||
| //
 |  | ||||||
| // #[derive(Serialize, Debug)]
 |  | ||||||
| // #[serde(rename_all = "camelCase")]
 |  | ||||||
| // struct Alertmanager {
 |  | ||||||
| //     enabled: bool,
 |  | ||||||
| //     config: AlertManagerConfig, // Your existing struct for this
 |  | ||||||
| //     alert_manager_spec: AlertManagerSpec,
 |  | ||||||
| // }
 |  | ||||||
| //
 |  | ||||||
| // #[derive(Serialize, Debug)]
 |  | ||||||
| // #[serde(rename_all = "camelCase")]
 |  | ||||||
| // struct AlertManagerSpec {
 |  | ||||||
| //     resources: K8sResources,
 |  | ||||||
| //     // You will need to add a `config_reloader` field here for its resources
 |  | ||||||
| // }
 |  | ||||||
| //
 |  | ||||||
| // // Define KubeStateMetrics, PrometheusOperator, etc. in the same way
 |  | ||||||
| // // ...
 |  | ||||||
| //
 |  | ||||||
| // // Your K8sResources struct (flat, with strings)
 |  | ||||||
| // #[derive(Serialize, Debug)]
 |  | ||||||
| // struct K8sResources {
 |  | ||||||
| //     requests: ResourceValues,
 |  | ||||||
| //     limits: ResourceValues,
 |  | ||||||
| // }
 |  | ||||||
| //
 |  | ||||||
| // #[derive(Serialize, Debug)]
 |  | ||||||
| // struct ResourceValues {
 |  | ||||||
| //     cpu: String,
 |  | ||||||
| //     memory: String,
 |  | ||||||
| // }
 |  | ||||||
| //
 |  | ||||||
| //
 |  | ||||||
| // // --- Step 2: Populate the single, unified struct ---
 |  | ||||||
| //
 |  | ||||||
| // // Prepare your alertmanager config
 |  | ||||||
| // let mut alert_manager_channel_config = build_your_alert_manager_config(); // Your existing logic
 |  | ||||||
| //
 |  | ||||||
| // // Prepare your custom rules
 |  | ||||||
| // let merged_rules = build_your_prometheus_rules(); // Your existing logic
 |  | ||||||
| //
 |  | ||||||
| // // Define the resource profiles
 |  | ||||||
| // let heavy_res = K8sResources { /* ... */ };
 |  | ||||||
| // let medium_res = K8sResources { /* ... */ };
 |  | ||||||
| // let light_res = K8sResources { /* ... */ };
 |  | ||||||
| //
 |  | ||||||
| // // Create the single source of truth for your values
 |  | ||||||
| // let full_values = FullValues {
 |  | ||||||
| //     prometheus: Prometheus {
 |  | ||||||
| //         enabled: config.prometheus,
 |  | ||||||
| //         prometheus_spec: PrometheusSpec {
 |  | ||||||
| //             resources: heavy_res,
 |  | ||||||
| //         },
 |  | ||||||
| //     },
 |  | ||||||
| //     grafana: Grafana {
 |  | ||||||
| //         enabled: config.grafana,
 |  | ||||||
| //         resources: medium_res,
 |  | ||||||
| //         sidecar: GrafanaSidecar {
 |  | ||||||
| //             resources: light_res,
 |  | ||||||
| //         },
 |  | ||||||
| //     },
 |  | ||||||
| //     alertmanager: Alertmanager {
 |  | ||||||
| //         enabled: config.alert_manager,
 |  | ||||||
| //         config: alert_manager_channel_config,
 |  | ||||||
| //         alert_manager_spec: AlertManagerSpec {
 |  | ||||||
| //             resources: light_res,
 |  | ||||||
| //             // You'd add the config_reloader resources here
 |  | ||||||
| //         },
 |  | ||||||
| //     },
 |  | ||||||
| //     kube_state_metrics: KubeStateMetrics {
 |  | ||||||
| //         enabled: config.kube_state_metrics,
 |  | ||||||
| //         resources: medium_res,
 |  | ||||||
| //     },
 |  | ||||||
| //     prometheus_operator: PrometheusOperator {
 |  | ||||||
| //         enabled: config.prometheus_operator,
 |  | ||||||
| //         resources: light_res,
 |  | ||||||
| //         // ... and so on for its sidecars
 |  | ||||||
| //     },
 |  | ||||||
| //     additional_prometheus_rules_map: merged_rules,
 |  | ||||||
| // };
 |  | ||||||
| //
 |  | ||||||
| //
 |  | ||||||
| // // --- Step 3: Serialize the single struct ONCE ---
 |  | ||||||
| //
 |  | ||||||
| // let final_values_yaml = serde_yaml::to_string(&full_values)
 |  | ||||||
| //     .expect("Failed to serialize final values YAML");
 |  | ||||||
| //
 |  | ||||||
| // debug!("full values.yaml: \n {:#}", final_values_yaml);
 |  | ||||||
| //
 |  | ||||||
| //
 |  | ||||||
| // // --- Step 4: Use the final string in your Helm score ---
 |  | ||||||
| //
 |  | ||||||
| // HelmChartScore {
 |  | ||||||
| //     // ...
 |  | ||||||
| //     values_yaml: Some(final_values_yaml),
 |  | ||||||
| //     // ...
 |  | ||||||
| // }
 |  | ||||||
| @ -1,7 +1,7 @@ | |||||||
| use std::sync::{Arc, Mutex}; | use std::sync::{Arc, Mutex}; | ||||||
| 
 | 
 | ||||||
| use async_trait::async_trait; | use async_trait::async_trait; | ||||||
| use log::debug; | use log::{debug, error}; | ||||||
| use serde::Serialize; | use serde::Serialize; | ||||||
| 
 | 
 | ||||||
| use crate::{ | use crate::{ | ||||||
| @ -67,6 +67,7 @@ impl Prometheus { | |||||||
|             .get_tenant_config() |             .get_tenant_config() | ||||||
|             .map(|cfg| cfg.name.clone()) |             .map(|cfg| cfg.name.clone()) | ||||||
|             .unwrap_or_else(|| "monitoring".to_string()); |             .unwrap_or_else(|| "monitoring".to_string()); | ||||||
|  |         error!("This must be refactored, see comments in pr #74"); | ||||||
|         debug!("NS: {}", ns); |         debug!("NS: {}", ns); | ||||||
|         self.config.lock().unwrap().namespace = Some(ns); |         self.config.lock().unwrap().namespace = Some(ns); | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	
FIXME only required components.