argoflows 0.1.1

Argoflows lets you seamlessly integrate and manage Argo Workflows directly from your Rust applications.
Documentation
use argoflows::api::workflow_template;
use argoflows::config::Config;
use argoflows::types::workflow_template::CreateRequest;

fn main() {
    let token = std::env::var("ARGO_TOKEN").expect("the ARGO_TOKEN env variable must be set");

    let cfg = Config::builder()
        .bearer_token(&token)
        .danger_accept_invalid_certs(true)
        .build();
    let cfg = cfg.expect("failed to create client config");

    let tmpl = r#"{
        "apiVersion": "argoproj.io/v1alpha1",
        "kind": "WorkflowTemplate",
        "metadata": {
            "name": "wftmpl-sample",
            "namespace": "argoflows"
        },
        "spec": {
            "arguments": {
                "parameters": [
                    {
                        "name": "message",
                        "value": "hello world"
                    }
                ]
            },
            "templates": [
                {
                    "name": "print-message",
                    "inputs": {
                        "parameters": [
                            {
                                "name": "message"
                            }
                        ]
                    },
                    "container": {
                        "image": "busybox",
                        "command": [
                            "echo"
                        ],
                        "args": [
                            "{{inputs.parameters.message}}"
                        ]
                    }
                }
            ]
        }
    }"#;

    let tmpl = serde_json::from_str(&tmpl).expect("failed to parse workflow template");
    let req = CreateRequest {
        namespace: Some(String::from("argoflows")),
        template: Some(Box::new(tmpl)),
        create_options: None,
    };

    match workflow_template::create_workflow_template(&cfg, "argoflows", req) {
        Ok(t) => println!(
            "Successfully created '{}' workflow template in '{}'",
            t.metadata.name.unwrap(),
            t.metadata.namespace.unwrap()
        ),
        Err(e) => eprintln!("failed to create workflow template: {:?}", e),
    }

    match workflow_template::list_workflow_templates(&cfg, "argoflows", None, None) {
        Ok(r) => println!("Found {} workflow templates", r.items.len()),
        Err(e) => eprintln!("failed to list workflow templates: {:?}", e),
    }

    match workflow_template::get_workflow_template(&cfg, "argoflows", "wftmpl-sample", None) {
        Ok(r) => {
            println!(
                "Found '{}' workflow template in '{}'",
                r.metadata.name.unwrap(),
                r.metadata.namespace.unwrap()
            )
        }
        Err(e) => eprintln!("failed to get workflow template: {:?}", e),
    }

    match workflow_template::delete_workflow_template(&cfg, "argoflows", "wftmpl-sample", None) {
        Ok(_) => println!("successfully deleted workflow template"),
        Err(e) => eprintln!("failed to delete workflow template: {:?}", e),
    }
}