Prepare, configure, and manage Firecracker microVMs in seconds!
virtualization
linux
microvm
firecracker
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}