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:
| Name | Type | Description |
|---|---|---|
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)
}
}