diff --git a/src/checks/kubelet_status.rs b/src/checks/kubelet_status.rs new file mode 100644 index 0000000..ed59cbb --- /dev/null +++ b/src/checks/kubelet_status.rs @@ -0,0 +1,36 @@ +use std::process::Command; +use anyhow::Result; +use anyhow::anyhow; + +#[derive(Debug, Clone)] +pub struct KubeletStatus { + pub status: String +} + +pub fn check() -> Result { + let msg: &'static str = "Failed to run kubelet"; + let output = match Command::new("/usr/bin/systemctl") + .arg("status") + .arg("kubelet.service") + .output() + { + Ok(c) => c, + Err(_) => return Err(anyhow!(msg)), + }; + + if !output.status.success() { + return Err(anyhow!("kubelet failed with an error " )); + } + + let stdout = String::from_utf8(output.stdout).expect(msg); + + for line in stdout.lines() { + if line.contains("Active: ") { + return Ok(KubeletStatus { + status: line.to_string(), + }); + } + } + Err(anyhow!("Failed to read systemd status")) +} + diff --git a/src/checks/mod.rs b/src/checks/mod.rs index ae3c5eb..84da5aa 100644 --- a/src/checks/mod.rs +++ b/src/checks/mod.rs @@ -1 +1,2 @@ pub mod cli_version; +pub mod kubelet_status; \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index dea9bea..8ef64d9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,4 +10,14 @@ fn main() { "✅ kubectl version {}.{}", cli_version.client_version.major, cli_version.client_version.minor ); + + let kubelet_status = match checks::kubelet_status::check() { + Ok(c) => c, + Err(e) => panic!("❌ Failed to check kubelet status: {}", e), + }; + + println!( + "✅ kubelet status {}", + kubelet_status.status + ); }