...

Source file src/edge-infra.dev/pkg/f8n/warehouse/k8s/controllers/lumperctl/controller_utils.go

Documentation: edge-infra.dev/pkg/f8n/warehouse/k8s/controllers/lumperctl

     1  package lumperctl
     2  
     3  import (
     4  	"context"
     5  
     6  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     7  	ctrl "sigs.k8s.io/controller-runtime"
     8  	"sigs.k8s.io/controller-runtime/pkg/client"
     9  
    10  	"edge-infra.dev/pkg/k8s/runtime/inventory"
    11  	"edge-infra.dev/pkg/k8s/runtime/sap"
    12  	"edge-infra.dev/pkg/k8s/unstructured"
    13  )
    14  
    15  type Finalizer struct {
    16  	Name            string
    17  	ResourceManager *sap.ResourceManager
    18  }
    19  
    20  // Finalize loops over the inventory and garbage collects the entries before removing the finalizer.
    21  func (f *Finalizer) Finalize(ctx context.Context, obj client.Object, prune bool) error {
    22  	log := ctrl.LoggerFrom(ctx).WithName("finalizer")
    23  	unstrturdObj, err := unstructured.FromRuntime(obj)
    24  	if err != nil {
    25  		return err
    26  	}
    27  	objInventory, err := inventory.GetUnstructuredInventory(unstrturdObj)
    28  	if err == nil && objInventory != nil && objInventory.Entries != nil && prune {
    29  		objs, _ := objInventory.ListObjects()
    30  
    31  		changeSet, err := f.ResourceManager.DeleteAll(ctx, objs, sap.DeleteOptions{
    32  			PropagationPolicy: metav1.DeletePropagationBackground,
    33  		})
    34  		if err != nil {
    35  			log.Error(err, "garbage collection failed")
    36  			return err
    37  		}
    38  		if changeSet != nil && len(changeSet.Entries) > 0 {
    39  			log.Info("garbage collected", "objects", changeSet)
    40  		}
    41  	}
    42  	return nil
    43  }
    44  

View as plain text