Prepare, configure, and manage Firecracker microVMs in seconds!
virtualization linux microvm firecracker
at main 46 lines 1.4 kB view raw
1use chrono::{DateTime, Utc}; 2 3pub fn format_duration_ago(created: DateTime<Utc>) -> String { 4 let now = Utc::now(); 5 let duration = now - created; 6 7 let seconds = duration.num_seconds(); 8 let minutes = duration.num_minutes(); 9 let hours = duration.num_hours(); 10 let days = duration.num_days(); 11 let weeks = duration.num_weeks(); 12 let months = days / 30; // Approximate months 13 let years = days / 365; // Approximate years 14 15 if years > 0 { 16 format!("{} year{} ago", years, if years == 1 { "" } else { "s" }) 17 } else if months > 0 { 18 format!("{} month{} ago", months, if months == 1 { "" } else { "s" }) 19 } else if weeks > 0 { 20 format!("{} week{} ago", weeks, if weeks == 1 { "" } else { "s" }) 21 } else if days > 0 { 22 format!("{} day{} ago", days, if days == 1 { "" } else { "s" }) 23 } else if hours > 0 { 24 format!("{} hour{} ago", hours, if hours == 1 { "" } else { "s" }) 25 } else if minutes > 0 { 26 format!( 27 "{} minute{} ago", 28 minutes, 29 if minutes == 1 { "" } else { "s" } 30 ) 31 } else { 32 format!( 33 "{} second{} ago", 34 seconds, 35 if seconds == 1 { "" } else { "s" } 36 ) 37 } 38} 39 40pub fn format_status(status: &str, date: DateTime<Utc>) -> String { 41 if status == "RUNNING" { 42 format!("Up {}", format_duration_ago(date)) 43 } else { 44 status.to_string() 45 } 46}