kratactl: implement guest resolution and rename console to attach

This commit is contained in:
Alex Zenla
2024-03-23 09:48:53 +00:00
parent 7b2de22320
commit e25cbf087d
10 changed files with 136 additions and 58 deletions

View File

@ -1,6 +1,7 @@
use std::collections::HashMap;
use anyhow::Result;
use krata::common::{GuestState, GuestStatus};
use prost_reflect::{DynamicMessage, ReflectMessage, Value};
pub fn proto2dynamic(proto: impl ReflectMessage) -> Result<DynamicMessage> {
@ -56,3 +57,30 @@ pub fn kv2line(map: HashMap<String, String>) -> String {
.collect::<Vec<_>>()
.join(" ")
}
pub fn guest_status_text(status: GuestStatus) -> String {
match status {
GuestStatus::Starting => "starting",
GuestStatus::Started => "started",
GuestStatus::Destroying => "destroying",
GuestStatus::Destroyed => "destroyed",
GuestStatus::Exited => "exited",
GuestStatus::Failed => "failed",
_ => "unknown",
}
.to_string()
}
pub fn guest_state_text(state: Option<&GuestState>) -> String {
let state = state.cloned().unwrap_or_default();
let mut text = guest_status_text(state.status());
if let Some(exit) = state.exit_info {
text.push_str(&format!(" (exit code: {})", exit.code));
}
if let Some(error) = state.error_info {
text.push_str(&format!(" (error: {})", error.message));
}
text
}