kdash 0.0.3

A fast and simple dashboard for Kubernetes
use k8s_openapi::{api::apps::v1::ReplicaSet, chrono::Utc};

use super::utils;

#[derive(Clone)]
pub struct KubeReplicaSet {
  pub name: String,
  pub namespace: String,
  pub desired: i32,
  pub current: i32,
  pub ready: i32,
  pub age: String,
}

impl KubeReplicaSet {
  pub fn from_api(rp: &ReplicaSet) -> Self {
    let (current, ready) = match rp.status.as_ref() {
      Some(s) => (s.replicas, s.ready_replicas.unwrap_or_default()),
      _ => (0, 0),
    };

    KubeReplicaSet {
      name: rp.metadata.name.clone().unwrap_or_default(),
      namespace: rp.metadata.namespace.clone().unwrap_or_default(),
      age: utils::to_age(rp.metadata.creation_timestamp.as_ref(), Utc::now()),
      desired: rp
        .spec
        .as_ref()
        .map_or(0, |s| s.replicas.unwrap_or_default()),
      current,
      ready,
    }
  }
}