@@ -50,6 +50,7 @@ import (
5050 "github.com/projectsveltos/libsveltos/lib/clusterproxy"
5151 "github.com/projectsveltos/libsveltos/lib/logsettings"
5252 libsveltosset "github.com/projectsveltos/libsveltos/lib/set"
53+ "github.com/projectsveltos/libsveltos/lib/sveltos_upgrade"
5354)
5455
5556//+kubebuilder:rbac:groups=extension.projectsveltos.io,resources=yttsources,verbs=get;list;watch
@@ -498,7 +499,8 @@ func getSortedKustomizationRefs(clusterSummary *configv1beta1.ClusterSummary) []
498499}
499500
500501// Identifies and removes drift detection deployments that are no longer associated with active clusters
501- func removeStaleDriftDetectionManager (ctx context.Context , logger logr.Logger ) {
502+ // Identifies and removes resourceSummary instances from clusters that are no longer existing
503+ func removeStaleDriftDetectionResources (ctx context.Context , logger logr.Logger ) {
502504 listOptions := []client.ListOption {
503505 client.MatchingLabels {
504506 driftDetectionFeatureLabelKey : driftDetectionFeatureLabelValue ,
@@ -507,6 +509,7 @@ func removeStaleDriftDetectionManager(ctx context.Context, logger logr.Logger) {
507509
508510 for {
509511 time .Sleep (time .Minute )
512+
510513 c := getManagementClusterClient ()
511514 driftDetectionDeployments := & appsv1.DeploymentList {}
512515 err := c .List (ctx , driftDetectionDeployments , listOptions ... )
@@ -518,7 +521,15 @@ func removeStaleDriftDetectionManager(ctx context.Context, logger logr.Logger) {
518521 for i := range driftDetectionDeployments .Items {
519522 depl := & driftDetectionDeployments .Items [i ]
520523
521- if ! associatedClusterExist (ctx , c , depl , logger ) {
524+ exist , clusterNs , clusterName , clusterType := deplAssociatedClusterExist (ctx , c , depl , logger )
525+ if ! exist {
526+ // find resourceSummaries from this cluster and remove those.
527+ // Remove deployment only after this one succeed
528+ err = removeStaleResourceSummary (ctx , clusterNs , clusterName , clusterType , logger )
529+ if err != nil {
530+ continue
531+ }
532+
522533 logger .V (logsettings .LogInfo ).Info (fmt .Sprintf ("deleting driftDetection deployment %s/%s" ,
523534 depl .Namespace , depl .Name ))
524535 _ = c .Delete (ctx , depl )
@@ -527,35 +538,72 @@ func removeStaleDriftDetectionManager(ctx context.Context, logger logr.Logger) {
527538 }
528539}
529540
530- func associatedClusterExist (ctx context.Context , c client.Client , depl * appsv1.Deployment , logger logr.Logger ) bool {
541+ func removeStaleResourceSummary (ctx context.Context , clusterNamespace , clusterName string ,
542+ clusterType libsveltosv1beta1.ClusterType , logger logr.Logger ) error {
543+
544+ c := getManagementClusterClient ()
545+
546+ rsListOptions := []client.ListOption {
547+ client.MatchingLabels {
548+ sveltos_upgrade .ClusterNameLabel : clusterName ,
549+ sveltos_upgrade .ClusterTypeLabel : strings .ToLower (string (clusterType )),
550+ libsveltosv1beta1 .ClusterSummaryNamespaceLabel : clusterNamespace ,
551+ },
552+ }
553+
554+ logger .V (logsettings .LogInfo ).Info (fmt .Sprintf ("MGIANLUC %v" , rsListOptions ))
555+
556+ resourceSummaries := & libsveltosv1beta1.ResourceSummaryList {}
557+ err := c .List (ctx , resourceSummaries , rsListOptions ... )
558+ if err != nil {
559+ logger .V (logsettings .LogInfo ).Info (
560+ fmt .Sprintf ("failed to collect resourceSummary instances: %v" , err ))
561+ return err
562+ }
563+
564+ for i := range resourceSummaries .Items {
565+ rs := & resourceSummaries .Items [i ]
566+ err = c .Delete (ctx , rs )
567+ if err != nil {
568+ logger .V (logsettings .LogInfo ).Info (
569+ fmt .Sprintf ("failed to delete resourceSummary instance: %v" , err ))
570+ return err
571+ }
572+ }
573+
574+ return nil
575+ }
576+
577+ func deplAssociatedClusterExist (ctx context.Context , c client.Client , depl * appsv1.Deployment ,
578+ logger logr.Logger ) (exist bool , clusterName , clusterNamespace string , clusterType libsveltosv1beta1.ClusterType ) {
579+
531580 if depl .Labels == nil {
532581 logger .V (logsettings .LogInfo ).Info (fmt .Sprintf ("driftDetection %s/%s has no label" ,
533582 depl .Namespace , depl .Name ))
534- return true
583+ return true , "" , "" , ""
535584 }
536585
537586 clusterNamespace , ok := depl .Labels [driftDetectionClusterNamespaceLabel ]
538587 if ! ok {
539588 logger .V (logsettings .LogInfo ).Info (fmt .Sprintf ("driftDetection %s/%s has no %s label" ,
540589 depl .Namespace , depl .Name , driftDetectionClusterNamespaceLabel ))
541- return true
590+ return true , "" , "" , ""
542591 }
543592
544- clusterName , ok : = depl .Labels [driftDetectionClusterNameLabel ]
593+ clusterName , ok = depl .Labels [driftDetectionClusterNameLabel ]
545594 if ! ok {
546595 logger .V (logsettings .LogInfo ).Info (fmt .Sprintf ("driftDetection %s/%s has no %s label" ,
547596 depl .Namespace , depl .Name , driftDetectionClusterNameLabel ))
548- return true
597+ return true , "" , "" , ""
549598 }
550599
551600 clusterTypeString , ok := depl .Labels [driftDetectionClusterTypeLabel ]
552601 if ! ok {
553602 logger .V (logsettings .LogInfo ).Info (fmt .Sprintf ("driftDetection %s/%s has no %s label" ,
554603 depl .Namespace , depl .Name , driftDetectionClusterTypeLabel ))
555- return true
604+ return true , "" , "" , ""
556605 }
557606
558- var clusterType libsveltosv1beta1.ClusterType
559607 if strings .EqualFold (clusterTypeString , string (libsveltosv1beta1 .ClusterTypeSveltos )) {
560608 clusterType = libsveltosv1beta1 .ClusterTypeSveltos
561609 } else if strings .EqualFold (clusterTypeString , string (libsveltosv1beta1 .ClusterTypeCapi )) {
@@ -565,11 +613,11 @@ func associatedClusterExist(ctx context.Context, c client.Client, depl *appsv1.D
565613 _ , err := clusterproxy .GetCluster (ctx , c , clusterNamespace , clusterName , clusterType )
566614 if err != nil {
567615 if apierrors .IsNotFound (err ) {
568- return false
616+ return false , clusterNamespace , clusterName , clusterType
569617 }
570618 logger .V (logsettings .LogInfo ).Info (fmt .Sprintf ("failed to get cluster %s:%s/%s: %v" ,
571619 clusterNamespace , clusterName , clusterTypeString , err ))
572620 }
573621
574- return true
622+ return true , "" , "" , ""
575623}
0 commit comments