Skip to content

Commit 1101723

Browse files
authored
Merge pull request #1230 from gianlucam76/resourcesummary-labels
(bug) ResourceSummary use annotations for clusterSummary info
2 parents bb2b76b + 15cb7b3 commit 1101723

9 files changed

Lines changed: 150 additions & 60 deletions

controllers/handlers_helm.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -491,10 +491,6 @@ func handleCharts(ctx context.Context, clusterSummary *configv1beta1.ClusterSumm
491491
}
492492

493493
releaseReports, chartDeployed, deployError := walkChartsAndDeploy(ctx, c, clusterSummary, kubeconfig, mgmtResources, logger)
494-
// Even if there is a deployment error do not return just yet. Update various status and clean stale resources.
495-
if deployError != nil {
496-
logger.V(logs.LogInfo).Info("MGIANLUC handleCharts failed")
497-
}
498494

499495
// If there was an helm release previous managed by this ClusterSummary and currently not referenced
500496
// anymore, such helm release has been successfully remove at this point. So
@@ -535,7 +531,6 @@ func handleCharts(ctx context.Context, clusterSummary *configv1beta1.ClusterSumm
535531
}
536532

537533
if deployError != nil {
538-
logger.V(logs.LogInfo).Info("MGIANLUC handleCharts failed")
539534
return deployError
540535
}
541536

@@ -599,7 +594,6 @@ func walkChartsAndDeploy(ctx context.Context, c client.Client, clusterSummary *c
599594
instantiatedChart.ChartName, instantiatedChart.ReleaseName, err)
600595
continue
601596
}
602-
logger.V(logs.LogInfo).Info("MGIANLUC walkChartsAndDeploy failed")
603597
return releaseReports, chartDeployed, err
604598
}
605599

@@ -795,7 +789,6 @@ func handleUpgrade(ctx context.Context, clusterSummary *configv1beta1.ClusterSum
795789
logger.V(logs.LogDebug).Info("upgrade helm release")
796790
err := doUpgradeRelease(ctx, clusterSummary, mgmtResources, currentChart, kubeconfig, registryOptions, logger)
797791
if err != nil {
798-
logger.V(logs.LogInfo).Info("MGIANLUC handleUpgrade failed")
799792
return nil, err
800793
}
801794
var message string
@@ -937,7 +930,6 @@ func handleChart(ctx context.Context, clusterSummary *configv1beta1.ClusterSumma
937930
report, err = handleUpgrade(ctx, clusterSummary, mgmtResources, currentChart, currentRelease, kubeconfig,
938931
registryOptions, logger)
939932
if err != nil {
940-
logger.V(logs.LogInfo).Info("MGIANLUC handleChart failed")
941933
return nil, nil, err
942934
}
943935
} else if shouldUninstall(currentRelease, currentChart) {
@@ -1743,7 +1735,6 @@ func doUpgradeRelease(ctx context.Context, clusterSummary *configv1beta1.Cluster
17431735
err = upgradeRelease(ctx, clusterSummary, settings, requestedChart, kubeconfig, registryOptions,
17441736
values, mgmtResources, logger)
17451737
if err != nil {
1746-
logger.V(logs.LogInfo).Info("MGIANLUC upgradeRelease failed")
17471738
return err
17481739
}
17491740

controllers/resourcesummary.go

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,15 +121,18 @@ func deployResourceSummaryInCluster(ctx context.Context, c client.Client,
121121
resourceSummaryNameInfo := getResourceSummaryNameInfo(clusterNamespace, applicant)
122122

123123
lbls := map[string]string{
124-
sveltos_upgrade.ClusterNameLabel: clusterName,
125-
sveltos_upgrade.ClusterTypeLabel: strings.ToLower(string(clusterType)),
126-
libsveltosv1beta1.ClusterSummaryNameLabel: applicant,
127-
libsveltosv1beta1.ClusterSummaryNamespaceLabel: clusterNamespace,
124+
sveltos_upgrade.ClusterNameLabel: clusterName,
125+
sveltos_upgrade.ClusterTypeLabel: strings.ToLower(string(clusterType)),
126+
}
127+
128+
annotations := map[string]string{
129+
libsveltosv1beta1.ClusterSummaryNameAnnotation: applicant,
130+
libsveltosv1beta1.ClusterSummaryNamespaceAnnotation: clusterNamespace,
128131
}
129132

130133
// Deploy ResourceSummary instance
131134
err = deployResourceSummaryInstance(ctx, clusterClient, resources, kustomizeResources, helmResources,
132-
resourceSummaryNameInfo.Namespace, resourceSummaryNameInfo.Name, lbls, driftExclusions, logger)
135+
resourceSummaryNameInfo.Namespace, resourceSummaryNameInfo.Name, lbls, annotations, driftExclusions, logger)
133136
if err != nil {
134137
return err
135138
}
@@ -399,8 +402,9 @@ func deployDriftDetectionManagerPatchedResources(ctx context.Context, restConfig
399402

400403
func deployResourceSummaryInstance(ctx context.Context, clusterClient client.Client,
401404
resources []libsveltosv1beta1.Resource, kustomizeResources []libsveltosv1beta1.Resource,
402-
helmResources []libsveltosv1beta1.HelmResources, namespace, name string, lbls map[string]string,
403-
driftExclusions []configv1beta1.DriftExclusion, logger logr.Logger) error {
405+
helmResources []libsveltosv1beta1.HelmResources, namespace, name string,
406+
lbls, annotations map[string]string, driftExclusions []configv1beta1.DriftExclusion, logger logr.Logger,
407+
) error {
404408

405409
logger.V(logs.LogDebug).Info("deploy resourceSummary instance")
406410

@@ -415,9 +419,10 @@ func deployResourceSummaryInstance(ctx context.Context, clusterClient client.Cli
415419
logger.V(logsettings.LogDebug).Info("resourceSummary instance not present. creating it.")
416420
toDeployResourceSummary := &libsveltosv1beta1.ResourceSummary{
417421
ObjectMeta: metav1.ObjectMeta{
418-
Name: name,
419-
Namespace: namespace,
420-
Labels: lbls,
422+
Name: name,
423+
Namespace: namespace,
424+
Labels: lbls,
425+
Annotations: annotations,
421426
},
422427
}
423428
if resources != nil {
@@ -450,6 +455,7 @@ func deployResourceSummaryInstance(ctx context.Context, clusterClient client.Cli
450455
}
451456
currentResourceSummary.Spec.Patches = patches
452457
currentResourceSummary.Labels = lbls
458+
currentResourceSummary.Annotations = annotations
453459

454460
logger.V(logsettings.LogDebug).Info("resourceSummary instance already present. updating it.")
455461
return clusterClient.Update(ctx, currentResourceSummary)

controllers/resourcesummary_collection.go

Lines changed: 69 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,7 @@ func collectResourceSummariesFromCluster(ctx context.Context, c client.Client, c
130130
if getAgentInMgmtCluster() {
131131
listOptions = []client.ListOption{
132132
client.MatchingLabels{
133-
sveltos_upgrade.ClusterNameLabel: cluster.Name,
134-
libsveltosv1beta1.ClusterSummaryNamespaceLabel: cluster.Namespace,
133+
sveltos_upgrade.ClusterNameLabel: cluster.Name,
135134
},
136135
}
137136
}
@@ -147,6 +146,15 @@ func collectResourceSummariesFromCluster(ctx context.Context, c client.Client, c
147146

148147
for i := range rsList.Items {
149148
rs := &rsList.Items[i]
149+
150+
ns, ok := getClusterSummaryNamespaceFromResourceSummary(rs, logger)
151+
if !ok {
152+
continue
153+
}
154+
if ns != cluster.Namespace {
155+
continue
156+
}
157+
150158
if !rs.DeletionTimestamp.IsZero() {
151159
// ignore deleted resourceSummary
152160
continue
@@ -178,26 +186,78 @@ func isResourceSummaryInstalled(ctx context.Context, c client.Client) (bool, err
178186
return true, nil
179187
}
180188

189+
func getClusterSummaryNameFromResourceSummary(rs *libsveltosv1beta1.ResourceSummary, logger logr.Logger,
190+
) (string, bool) {
191+
192+
// ResourceSummary previously used labels for ClusterSummary Namespace and Name.
193+
// This information is now stored as annotations. For backward compatibility, we'll
194+
// check annotations first, then labels.
195+
196+
var clusterSummaryName string
197+
ok := false
198+
199+
if rs.Annotations != nil {
200+
clusterSummaryName, ok = rs.Annotations[libsveltosv1beta1.ClusterSummaryNameAnnotation]
201+
}
202+
203+
if !ok { // If not found in annotations, try labels
204+
if rs.Labels != nil {
205+
clusterSummaryName, ok = rs.Labels[libsveltosv1beta1.ClusterSummaryNameLabel]
206+
}
207+
}
208+
209+
if !ok { // If still not found after checking both
210+
logger.V(logs.LogInfo).Info("neither ClusterSummary name annotation nor label are set. Cannot process it.")
211+
return "", false
212+
}
213+
214+
return clusterSummaryName, true
215+
}
216+
217+
func getClusterSummaryNamespaceFromResourceSummary(rs *libsveltosv1beta1.ResourceSummary, logger logr.Logger,
218+
) (string, bool) {
219+
220+
// ResourceSummary previously used labels for ClusterSummary Namespace and Name.
221+
// This information is now stored as annotations. For backward compatibility, we'll
222+
// check annotations first, then labels.
223+
224+
// Get ClusterSummary Namespace
225+
var clusterSummaryNamespace string
226+
ok := false
227+
228+
if rs.Annotations != nil {
229+
clusterSummaryNamespace, ok = rs.Annotations[libsveltosv1beta1.ClusterSummaryNamespaceAnnotation]
230+
}
231+
232+
if !ok { // If not found in annotations, try labels
233+
if rs.Labels != nil {
234+
clusterSummaryNamespace, ok = rs.Labels[libsveltosv1beta1.ClusterSummaryNamespaceLabel]
235+
}
236+
}
237+
238+
if !ok { // If still not found after checking both
239+
logger.V(logs.LogInfo).Info("neither ClusterSummary namespace annotation nor label are set. Cannot process it.")
240+
return "", false
241+
}
242+
243+
return clusterSummaryNamespace, true
244+
}
245+
181246
// clusterClient points to the cluster where ResourceSummary is. That can be
182247
// the management cluster if running in agentless mode or the managed cluster
183248
// otherwise
184249
func processResourceSummary(ctx context.Context, clusterClient client.Client,
185250
rs *libsveltosv1beta1.ResourceSummary, logger logr.Logger) error {
186251

187-
if rs.Labels == nil {
188-
logger.V(logs.LogInfo).Info("labels not set. Cannot process it")
189-
return nil
190-
}
191-
192252
// Get ClusterSummary
193-
clusterSummaryName, ok := rs.Labels[libsveltosv1beta1.ClusterSummaryNameLabel]
253+
clusterSummaryName, ok := getClusterSummaryNameFromResourceSummary(rs, logger)
194254
if !ok {
195255
logger.V(logs.LogInfo).Info("clusterSummary name label not set. Cannot process it")
196256
return nil
197257
}
198258

199259
var clusterSummaryNamespace string
200-
clusterSummaryNamespace, ok = rs.Labels[libsveltosv1beta1.ClusterSummaryNamespaceLabel]
260+
clusterSummaryNamespace, ok = getClusterSummaryNamespaceFromResourceSummary(rs, logger)
201261
if !ok {
202262
logger.V(logs.LogInfo).Info("clusterSummary namespace label not set. Cannot process it")
203263
return nil

controllers/resourcesummary_collection_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ var _ = Describe("ResourceSummary Collection", func() {
4343

4444
clusterSummary := &configv1beta1.ClusterSummary{
4545
ObjectMeta: metav1.ObjectMeta{
46-
Namespace: "default",
46+
Namespace: cluster.Namespace,
4747
Name: clusterProfileNamePrefix + randomString(),
4848
Labels: map[string]string{controllers.ClusterProfileLabelName: randomString()},
4949
},
@@ -90,9 +90,9 @@ var _ = Describe("ResourceSummary Collection", func() {
9090
Expect(waitForObject(context.TODO(), testEnv.Client, ns)).To(Succeed())
9191

9292
resourceSummary := getResourceSummary(nil, nil)
93-
resourceSummary.Labels = map[string]string{
94-
libsveltosv1beta1.ClusterSummaryNameLabel: clusterSummary.Name,
95-
libsveltosv1beta1.ClusterSummaryNamespaceLabel: clusterSummary.Namespace,
93+
resourceSummary.Annotations = map[string]string{
94+
libsveltosv1beta1.ClusterSummaryNameAnnotation: clusterSummary.Name,
95+
libsveltosv1beta1.ClusterSummaryNamespaceAnnotation: clusterSummary.Namespace,
9696
}
9797
Expect(testEnv.Create(context.TODO(), resourceSummary)).To(Succeed())
9898
Expect(waitForObject(context.TODO(), testEnv.Client, resourceSummary)).To(Succeed())

controllers/resourcesummary_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,13 @@ var _ = Describe("ResourceSummary Deployer", func() {
8282

8383
clusterSummaryNamespace := randomString()
8484
clusterSummaryName := randomString()
85-
lbls := map[string]string{
86-
libsveltosv1beta1.ClusterSummaryNameLabel: clusterSummaryName,
87-
libsveltosv1beta1.ClusterSummaryNamespaceLabel: clusterSummaryNamespace,
85+
annotations := map[string]string{
86+
libsveltosv1beta1.ClusterSummaryNameAnnotation: clusterSummaryName,
87+
libsveltosv1beta1.ClusterSummaryNamespaceAnnotation: clusterSummaryNamespace,
8888
}
8989

9090
Expect(controllers.DeployResourceSummaryInstance(ctx, c, resources, nil, nil,
91-
namespace, name, lbls, nil, textlogger.NewLogger(textlogger.NewConfig()))).To(Succeed())
91+
namespace, name, nil, annotations, nil, textlogger.NewLogger(textlogger.NewConfig()))).To(Succeed())
9292

9393
currentResourceSummary := &libsveltosv1beta1.ResourceSummary{}
9494
Expect(c.Get(context.TODO(),
@@ -98,12 +98,12 @@ var _ = Describe("ResourceSummary Deployer", func() {
9898
},
9999
currentResourceSummary)).To(Succeed())
100100

101-
Expect(currentResourceSummary.Labels).ToNot(BeNil())
102-
v, ok := currentResourceSummary.Labels[libsveltosv1beta1.ClusterSummaryNameLabel]
101+
Expect(currentResourceSummary.Annotations).ToNot(BeNil())
102+
v, ok := currentResourceSummary.Annotations[libsveltosv1beta1.ClusterSummaryNameAnnotation]
103103
Expect(ok).To(BeTrue())
104104
Expect(v).To(Equal(clusterSummaryName))
105105

106-
v, ok = currentResourceSummary.Labels[libsveltosv1beta1.ClusterSummaryNamespaceLabel]
106+
v, ok = currentResourceSummary.Annotations[libsveltosv1beta1.ClusterSummaryNamespaceAnnotation]
107107
Expect(ok).To(BeTrue())
108108
Expect(v).To(Equal(clusterSummaryNamespace))
109109

controllers/utils.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -545,9 +545,8 @@ func removeStaleResourceSummary(ctx context.Context, clusterNamespace, clusterNa
545545

546546
rsListOptions := []client.ListOption{
547547
client.MatchingLabels{
548-
sveltos_upgrade.ClusterNameLabel: clusterName,
549-
sveltos_upgrade.ClusterTypeLabel: strings.ToLower(string(clusterType)),
550-
libsveltosv1beta1.ClusterSummaryNamespaceLabel: clusterNamespace,
548+
sveltos_upgrade.ClusterNameLabel: clusterName,
549+
sveltos_upgrade.ClusterTypeLabel: strings.ToLower(string(clusterType)),
551550
},
552551
}
553552

@@ -561,6 +560,15 @@ func removeStaleResourceSummary(ctx context.Context, clusterNamespace, clusterNa
561560

562561
for i := range resourceSummaries.Items {
563562
rs := &resourceSummaries.Items[i]
563+
564+
ns, ok := getClusterSummaryNamespaceFromResourceSummary(rs, logger)
565+
if !ok {
566+
continue
567+
}
568+
if ns != clusterNamespace {
569+
continue
570+
}
571+
564572
err = c.Delete(ctx, rs)
565573
if err != nil {
566574
logger.V(logsettings.LogInfo).Info(

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ require (
1717
github.com/onsi/ginkgo/v2 v2.23.4
1818
github.com/onsi/gomega v1.37.0
1919
github.com/pkg/errors v0.9.1
20-
github.com/projectsveltos/libsveltos v0.55.0
20+
github.com/projectsveltos/libsveltos v0.55.1-0.20250531072413-edada02772df
2121
github.com/prometheus/client_golang v1.22.0
2222
github.com/spf13/pflag v1.0.6
2323
github.com/yuin/gopher-lua v1.1.1

go.sum

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=
22
cel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
3-
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
4-
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
53
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
64
dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
75
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
@@ -331,8 +329,8 @@ github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY=
331329
github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg=
332330
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
333331
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
334-
github.com/projectsveltos/libsveltos v0.55.0 h1:v7n6UUB1YKTuuwqEmX1xVf2uDaE1DCk05kuT0uivkK0=
335-
github.com/projectsveltos/libsveltos v0.55.0/go.mod h1:y70qX2+qA7lydvFp8iEWRyhNs/dJ0KMRjO0kTQiZsgc=
332+
github.com/projectsveltos/libsveltos v0.55.1-0.20250531072413-edada02772df h1:E85h8GmsW39BA0Gx8HA+4CCJ5Y7at+rPJzkc7Sf4NjQ=
333+
github.com/projectsveltos/libsveltos v0.55.1-0.20250531072413-edada02772df/go.mod h1:y70qX2+qA7lydvFp8iEWRyhNs/dJ0KMRjO0kTQiZsgc=
336334
github.com/projectsveltos/lua-utils/glua-json v0.0.0-20250301182851-e4fbb9fd7ff7 h1:KdDtBEJPgavOHlut1gq2i6bFm5dgoNHNsOUC8oe2hK4=
337335
github.com/projectsveltos/lua-utils/glua-json v0.0.0-20250301182851-e4fbb9fd7ff7/go.mod h1:AIzg+JWbfrFWazyM5Ka2fX69r9aFr3+o2Mvn9SfKDYU=
338336
github.com/projectsveltos/lua-utils/glua-runes v0.0.0-20250301182851-e4fbb9fd7ff7 h1:kZzOx+XTEfCRjxw1yACuGhFSyS7ybP/NNJFAZYNARCk=

0 commit comments

Comments
 (0)