staircase 0.0.7

Kubernetes Step-based Operator
Documentation
use k8s_openapi::api::core::v1::Pod;
use kube::CustomResource;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use staircase::resources::ComponentizedResource;

// Our custom resource
#[derive(CustomResource, Deserialize, Serialize, Clone, Debug, JsonSchema)]
#[kube(
    group = "example.com",
    version = "v1",
    kind = "Foo",
    status = "FooStatus",
    namespaced
)]
pub struct FooSpec {
    info:     String,
    name:     String,
    replicas: i32,
}

#[derive(Serialize, Deserialize, Clone, Debug, Default, JsonSchema)]
pub struct FooStatus {
    pub observed: u64,
}

struct FooPod;

#[derive(Debug, PartialEq, Eq)]
enum Component {
    Main,
}

impl ComponentizedResource for FooPod {
    type Component = Component;
    type Resource = Pod;

    const COMPONENT: Self::Component = Component::Main;
}

fn main() {
    let _ = FooPod;
    let _ = Component::Main;
}