kubeclient 0.1.0

An ergonomic Kubernetes API client to manage Kubernetes resources
Documentation
use super::*;
use serde_json::Value;

pub(crate) static DAEMON_SET_INFO: KindInfo = KindInfo {
    plural: "daemonsets",
    default_namespace: Some("default"),
    api: V1_BETA_API,
};

#[derive(Serialize, Deserialize, Debug)]
pub struct DaemonSet {
    pub spec: DaemonSetSpec,
    pub metadata: Metadata,
    pub status: Option<DaemonSetStatus>,
}

#[derive(Serialize, Deserialize, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct DaemonSetSpec {
    pub selector: Option<Value>,
    pub template: Option<Value>,
}

#[derive(Serialize, Deserialize, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct DaemonSetStatus {
    pub current_number_scheduled : u32,
    pub desired_number_scheduled : u32,
    pub number_misscheduled : u32,
    pub number_ready : u32,
}

#[derive(Serialize, Deserialize, Debug, Default)]
pub struct DaemonSetList {
    items: Vec<DaemonSet>,
}

impl DaemonSet {
    pub fn new(name: &str) -> DaemonSet {
        let spec = DaemonSetSpec::default();
        let metadata = Metadata{ name: Some(name.to_owned()), ..Default::default() };
        DaemonSet { spec, metadata, status: None }
    }
}

impl Resource for DaemonSet {
    fn kind() -> Kind { Kind::DaemonSet }
}

impl ListableResource for DaemonSet {
    type ListResponse = DaemonSetList;
    fn list_items(response: Self::ListResponse) -> Vec<Self> {
        response.items
    }
}