Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

brokkr-agent::k8s::objects Rust

Functions

brokkr-agent::k8s::objects::create_k8s_objects

pub

#![allow(unused)]
fn main() {
fn create_k8s_objects (deployment_object : DeploymentObject , agent_id : Uuid ,) -> Result < Vec < DynamicObject > , Box < dyn std :: error :: Error > >
}

Creates Kubernetes objects from a brokkr deployment object’s YAML content.

Parameters:

NameTypeDescription
deployment_object-The deployment object containing YAML content

Returns:

  • Result<Vec<DynamicObject>, Box<dyn std::error::Error>> - List of created K8s objects or error
Source
#![allow(unused)]
fn main() {
pub fn create_k8s_objects(
    deployment_object: DeploymentObject,
    agent_id: Uuid,
) -> Result<Vec<DynamicObject>, Box<dyn std::error::Error>> {
    let mut k8s_objects = Vec::new();

    let yaml_docs = utils::multidoc_deserialize(&deployment_object.yaml_content)?;

    for yaml_doc in yaml_docs {
        // Skip null documents
        if yaml_doc.is_null() {
            continue;
        }

        let mut obj: DynamicObject = serde_yaml::from_value(yaml_doc)?;
        let mut annotations = BTreeMap::new();
        annotations.insert(
            STACK_LABEL.to_string(),
            deployment_object.stack_id.to_string(),
        );
        annotations.insert(
            CHECKSUM_ANNOTATION.to_string(),
            deployment_object.yaml_checksum.to_string(),
        );
        annotations.insert(
            DEPLOYMENT_OBJECT_ID_LABEL.to_string(),
            deployment_object.id.to_string(),
        );
        annotations.insert(LAST_CONFIG_ANNOTATION.to_string(), format!("{:?}", obj));

        annotations.insert(
            BROKKR_AGENT_OWNER_ANNOTATION.to_string(),
            agent_id.to_string(),
        );

        obj.metadata.annotations = Some(annotations);

        let kind = obj
            .types
            .as_ref()
            .map(|t| t.kind.clone())
            .unwrap_or_default();

        // Move namespace and CRDs to the front of objects list for apply
        if kind == "Namespace" || kind == "CustomResourceDefinition" {
            k8s_objects.insert(0, obj);
        } else {
            k8s_objects.push(obj);
        }
    }

    Ok(k8s_objects)
}
}

brokkr-agent::k8s::objects::verify_object_ownership

pub

#![allow(unused)]
fn main() {
fn verify_object_ownership (object : & DynamicObject , agent_id : & Uuid) -> bool
}
Source
#![allow(unused)]
fn main() {
pub fn verify_object_ownership(object: &DynamicObject, agent_id: &Uuid) -> bool {
    object
        .metadata
        .annotations
        .as_ref()
        .and_then(|annotations| annotations.get(BROKKR_AGENT_OWNER_ANNOTATION))
        .map(|value| value == &agent_id.to_string())
        .unwrap_or(false)
}
}