diff --git a/controllers/mgmtcluster_classifier_test.go b/controllers/mgmtcluster_classifier_test.go index aa15171..946faf0 100644 --- a/controllers/mgmtcluster_classifier_test.go +++ b/controllers/mgmtcluster_classifier_test.go @@ -27,6 +27,7 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" + "k8s.io/klog/v2/textlogger" "sigs.k8s.io/controller-runtime/pkg/client/fake" libsveltosv1beta1 "github.com/projectsveltos/libsveltos/api/v1beta1" @@ -93,6 +94,40 @@ var _ = Describe("ManagementClusterClassifier utils", func() { }) }) + Context("fetchResourcesForSelector", func() { + It("excludes a deleting resource unless ResourceSelector.IncludeDeletingResources is set", func() { + deleting := buildUnstructuredConfigMap("deleting-cm", map[string]string{testLabelEnv: testValueProd}) + deleting.SetFinalizers([]string{"projectsveltos.io/test-finalizer"}) + now := metav1.Now() + deleting.SetDeletionTimestamp(&now) + + live := buildUnstructuredConfigMap("live-cm", map[string]string{testLabelEnv: testValueProd}) + + fakeClient := fake.NewClientBuilder(). + WithScheme(mgmtTestScheme()). + WithObjects(deleting, live). + Build() + + logger := textlogger.NewLogger(textlogger.NewConfig(textlogger.Verbosity(1))) + + rs := &libsveltosv1beta1.ResourceSelector{ + Group: "", + Version: corev1.SchemeGroupVersion.Version, + Kind: "ConfigMap", + } + + resources, err := controllers.FetchResourcesForSelector(context.TODO(), fakeClient, rs, logger) + Expect(err).ToNot(HaveOccurred()) + Expect(resources).To(HaveLen(1)) + Expect(resources[0].GetName()).To(Equal(live.GetName())) + + rs.IncludeDeletingResources = true + resources, err = controllers.FetchResourcesForSelector(context.TODO(), fakeClient, rs, logger) + Expect(err).ToNot(HaveOccurred()) + Expect(resources).To(HaveLen(2)) + }) + }) + Context("runClassificationLua", func() { It("returns no clusters for empty resource list", func() { script := ` diff --git a/controllers/mgmtcluster_classifier_utils.go b/controllers/mgmtcluster_classifier_utils.go index 1ad2b17..1a8f62d 100644 --- a/controllers/mgmtcluster_classifier_utils.go +++ b/controllers/mgmtcluster_classifier_utils.go @@ -97,7 +97,7 @@ func fetchResourcesForSelector(ctx context.Context, c client.Client, for i := range list.Items { u := &list.Items[i] - if !u.GetDeletionTimestamp().IsZero() { + if !rs.IncludeDeletingResources && !u.GetDeletionTimestamp().IsZero() { continue } if rs.Name != "" && u.GetName() != rs.Name { diff --git a/go.mod b/go.mod index 5890c63..eef4579 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/onsi/ginkgo/v2 v2.32.2 github.com/onsi/gomega v1.43.0 github.com/pkg/errors v0.9.1 - github.com/projectsveltos/libsveltos v1.15.0 + github.com/projectsveltos/libsveltos v1.15.1-0.20260916064556-4b7dcd8c38fd github.com/prometheus/client_golang v1.24.1 github.com/spf13/pflag v1.0.10 github.com/yuin/gopher-lua v1.1.2 diff --git a/go.sum b/go.sum index 92ebdbc..fe2502f 100644 --- a/go.sum +++ b/go.sum @@ -208,8 +208,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/projectsveltos/libsveltos v1.15.0 h1:O0iE6ZCnft4Dy9P5bgZUG384FdoQGtkE5wWk1g7L2Qk= -github.com/projectsveltos/libsveltos v1.15.0/go.mod h1:YKMqwREDkoQH84WTmixxsB8tN5V0cwOnWQ5hNjrg7xM= +github.com/projectsveltos/libsveltos v1.15.1-0.20260916064556-4b7dcd8c38fd h1:DDcvUiTbr37R6tHMrBtMFjcRtr39VGV1Mm/dVdhyQwE= +github.com/projectsveltos/libsveltos v1.15.1-0.20260916064556-4b7dcd8c38fd/go.mod h1:YKMqwREDkoQH84WTmixxsB8tN5V0cwOnWQ5hNjrg7xM= github.com/projectsveltos/lua-utils/glua-json v0.0.0-20251212200258-2b3cdcb7c0f5 h1:khnc+994UszxZYu69J+R5FKiLA/Nk1JQj0EYAkwTWz0= github.com/projectsveltos/lua-utils/glua-json v0.0.0-20251212200258-2b3cdcb7c0f5/go.mod h1:yVL8KQFa9tmcxgwl9nwIMtKgtmIVC1zaFRSCfOwYvPY= github.com/projectsveltos/lua-utils/glua-runes v0.0.0-20251212200258-2b3cdcb7c0f5 h1:YbsebwRwTRhV8QacvEAdFqxcxHdeu7JTVtsBovbkgos= diff --git a/pkg/agent/sveltos-agent-in-mgmt-cluster.go b/pkg/agent/sveltos-agent-in-mgmt-cluster.go index 1fc58d7..1cb0b81 100644 --- a/pkg/agent/sveltos-agent-in-mgmt-cluster.go +++ b/pkg/agent/sveltos-agent-in-mgmt-cluster.go @@ -63,7 +63,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/sveltos-agent@sha256:234ae2d4ace464b54bfbdb1affad42aca596ab1f55d581539faf7ae5c1479a86 + image: docker.io/projectsveltos/sveltos-agent@sha256:aaaf3ab1e5798b005d959f5c614c14a1c630691f22d93df69ad6ad56186114a5 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/agent/sveltos-agent-in-mgmt-cluster.yaml b/pkg/agent/sveltos-agent-in-mgmt-cluster.yaml index 57a4824..54274c1 100644 --- a/pkg/agent/sveltos-agent-in-mgmt-cluster.yaml +++ b/pkg/agent/sveltos-agent-in-mgmt-cluster.yaml @@ -45,7 +45,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/sveltos-agent@sha256:234ae2d4ace464b54bfbdb1affad42aca596ab1f55d581539faf7ae5c1479a86 + image: docker.io/projectsveltos/sveltos-agent@sha256:aaaf3ab1e5798b005d959f5c614c14a1c630691f22d93df69ad6ad56186114a5 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/agent/sveltos-agent.go b/pkg/agent/sveltos-agent.go index 95a017f..d90b354 100644 --- a/pkg/agent/sveltos-agent.go +++ b/pkg/agent/sveltos-agent.go @@ -222,7 +222,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/sveltos-agent@sha256:234ae2d4ace464b54bfbdb1affad42aca596ab1f55d581539faf7ae5c1479a86 + image: docker.io/projectsveltos/sveltos-agent@sha256:aaaf3ab1e5798b005d959f5c614c14a1c630691f22d93df69ad6ad56186114a5 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/agent/sveltos-agent.yaml b/pkg/agent/sveltos-agent.yaml index b19b3e5..e6d4e12 100644 --- a/pkg/agent/sveltos-agent.yaml +++ b/pkg/agent/sveltos-agent.yaml @@ -204,7 +204,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/sveltos-agent@sha256:234ae2d4ace464b54bfbdb1affad42aca596ab1f55d581539faf7ae5c1479a86 + image: docker.io/projectsveltos/sveltos-agent@sha256:aaaf3ab1e5798b005d959f5c614c14a1c630691f22d93df69ad6ad56186114a5 livenessProbe: failureThreshold: 3 httpGet: