Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions src/checks/kubelet_status.rs
Original file line number Diff line number Diff line change
@@ -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<KubeletStatus, anyhow::Error> {
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"))
}

1 change: 1 addition & 0 deletions src/checks/mod.rs
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
pub mod cli_version;
pub mod kubelet_status;
10 changes: 10 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
);
}