Module finalizers

Module finalizers 

Source
Expand description

Generic finalizer management for Kubernetes resources.

This module provides reusable functions for adding, removing, and handling finalizers on Kubernetes custom resources. It eliminates duplicate finalizer management code across reconcilers.

§Example

use bindy::reconcilers::finalizers::{ensure_finalizer, handle_deletion, FinalizerCleanup};
use bindy::crd::Bind9Cluster;
use kube::Client;
use anyhow::Result;

const FINALIZER: &str = "bind9cluster.dns.firestoned.io/finalizer";

#[async_trait::async_trait]
impl FinalizerCleanup for Bind9Cluster {
    async fn cleanup(&self, client: &Client) -> Result<()> {
        // Perform cleanup operations
        Ok(())
    }
}

async fn reconcile(client: Client, cluster: Bind9Cluster) -> Result<()> {
    // Ensure finalizer is present
    ensure_finalizer(&client, &cluster, FINALIZER).await?;

    // Handle deletion if resource is being deleted
    if cluster.metadata.deletion_timestamp.is_some() {
        return handle_deletion(&client, &cluster, FINALIZER).await;
    }

    // Normal reconciliation logic...
    Ok(())
}

Traits§

FinalizerCleanup
Trait for resources that require cleanup operations when being deleted.

Functions§

ensure_cluster_finalizer
Add a finalizer to a cluster-scoped resource if not already present.
ensure_finalizer
Add a finalizer to a resource if not already present.
handle_cluster_deletion
Handle cluster-scoped resource deletion with cleanup and finalizer removal.
handle_deletion
Handle resource deletion with cleanup and finalizer removal.
remove_cluster_finalizer
Remove a finalizer from a cluster-scoped resource.
remove_finalizer
Remove a finalizer from a resource.