Skip to content

Commit 60ca15d

Browse files
authored
Merge pull request #468 from gianlucam76/fix-166
Fix handling of extra metadata
2 parents d4b11c7 + 6529b6e commit 60ca15d

File tree

2 files changed

+52
-54
lines changed

2 files changed

+52
-54
lines changed

controllers/handlers_helm.go

+6-23
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"errors"
2323
"fmt"
2424
"os"
25-
"reflect"
2625
"strconv"
2726
"strings"
2827
"time"
@@ -1670,16 +1669,15 @@ func addExtraMetadata(ctx context.Context, requestedChart *configv1alpha1.HelmCh
16701669
return nil
16711670
}
16721671

1673-
// Current hash of current metadata (extraLabels and extraAnnotations)
1674-
metadataHash := getMetadataHash(clusterSummary)
1672+
if clusterSummary.Spec.ClusterProfileSpec.ExtraAnnotations == nil &&
1673+
clusterSummary.Spec.ClusterProfileSpec.ExtraLabels == nil {
16751674

1676-
// Get hash of last deployed metadata
1677-
lastDeployedMetadataHash := getMetadataHashFromHelmChartSummary(requestedChart, clusterSummary)
1678-
1679-
if reflect.DeepEqual(metadataHash, lastDeployedMetadataHash) {
1680-
return updateMetadataHashOnHelmChartSummary(ctx, requestedChart, metadataHash, clusterSummary)
1675+
return nil
16811676
}
16821677

1678+
// Current hash of current metadata (extraLabels and extraAnnotations)
1679+
metadataHash := getMetadataHash(clusterSummary)
1680+
16831681
actionConfig, err := actionConfigInit(requestedChart.ReleaseNamespace, kubeconfig)
16841682
if err != nil {
16851683
return err
@@ -1775,18 +1773,3 @@ func updateMetadataHashOnHelmChartSummary(ctx context.Context, requestedChart *c
17751773

17761774
return err
17771775
}
1778-
1779-
func getMetadataHashFromHelmChartSummary(requestedChart *configv1alpha1.HelmChart,
1780-
clusterSummary *configv1alpha1.ClusterSummary) []byte {
1781-
1782-
for i := range clusterSummary.Status.HelmReleaseSummaries {
1783-
rs := &clusterSummary.Status.HelmReleaseSummaries[i]
1784-
if rs.ReleaseName == requestedChart.ReleaseName &&
1785-
rs.ReleaseNamespace == requestedChart.ReleaseNamespace {
1786-
1787-
return rs.MetadataHash
1788-
}
1789-
}
1790-
1791-
return nil
1792-
}

controllers/resourcesummary_collection.go

+46-31
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2828
apierrors "k8s.io/apimachinery/pkg/api/errors"
2929
"k8s.io/apimachinery/pkg/types"
30+
"k8s.io/client-go/util/retry"
3031
"sigs.k8s.io/controller-runtime/pkg/client"
3132

3233
configv1alpha1 "github.com/projectsveltos/addon-controller/api/v1alpha1"
@@ -115,11 +116,11 @@ func collectResourceSummariesFromCluster(ctx context.Context, c client.Client,
115116
// ignore deleted ClassifierReport
116117
continue
117118
}
118-
if rs.Status.ResourcesChanged || rs.Status.HelmResourcesChanged {
119+
if rs.Status.ResourcesChanged || rs.Status.HelmResourcesChanged || rs.Status.KustomizeResourcesChanged {
119120
// process resourceSummary
120121
err = processResourceSummary(ctx, c, remoteClient, rs, l)
121122
if err != nil {
122-
return nil
123+
return err
123124
}
124125
}
125126
}
@@ -160,45 +161,59 @@ func processResourceSummary(ctx context.Context, c, remoteClient client.Client,
160161
var clusterSummaryNamespace string
161162
clusterSummaryNamespace, ok = rs.Labels[libsveltosv1alpha1.ClusterSummaryNamespaceLabel]
162163
if !ok {
163-
logger.V(logs.LogInfo).Info("clusterSummaryspace name label not set. Cannot process it")
164+
logger.V(logs.LogInfo).Info("clusterSummary namespace label not set. Cannot process it")
164165
return nil
165166
}
166167

167-
clusterSummary := &configv1alpha1.ClusterSummary{}
168-
err := c.Get(ctx, types.NamespacedName{Namespace: clusterSummaryNamespace, Name: clusterSummaryName}, clusterSummary)
169-
if err != nil {
170-
if apierrors.IsNotFound(err) {
171-
logger.V(logs.LogInfo).Info("clusterSummary not found. Nothing to do.")
172-
return nil
168+
err := retry.RetryOnConflict(retry.DefaultRetry, func() error {
169+
clusterSummary := &configv1alpha1.ClusterSummary{}
170+
err := c.Get(ctx, types.NamespacedName{Namespace: clusterSummaryNamespace, Name: clusterSummaryName},
171+
clusterSummary)
172+
if err != nil {
173+
if apierrors.IsNotFound(err) {
174+
logger.V(logs.LogInfo).Info("clusterSummary not found. Nothing to do.")
175+
return nil
176+
}
177+
return err
173178
}
174-
return err
175-
}
176179

177-
if !clusterSummary.DeletionTimestamp.IsZero() {
178-
logger.V(logs.LogInfo).Info("clusterSummary is marked for deletion. Nothing to do.")
179-
return nil
180-
}
180+
if !clusterSummary.DeletionTimestamp.IsZero() {
181+
logger.V(logs.LogInfo).Info("clusterSummary is marked for deletion. Nothing to do.")
182+
return nil
183+
}
181184

182-
l := logger.WithValues("clusterSummary", clusterSummary.Name)
183-
for i := range clusterSummary.Status.FeatureSummaries {
184-
if clusterSummary.Status.FeatureSummaries[i].FeatureID == configv1alpha1.FeatureHelm {
185-
if rs.Status.HelmResourcesChanged {
186-
l.V(logs.LogDebug).Info("redeploy helm")
187-
clusterSummary.Status.FeatureSummaries[i].Hash = nil
188-
clusterSummary.Status.FeatureSummaries[i].Status = configv1alpha1.FeatureStatusProvisioning
189-
}
190-
} else if clusterSummary.Status.FeatureSummaries[i].FeatureID == configv1alpha1.FeatureResources {
191-
if rs.Status.ResourcesChanged {
192-
l.V(logs.LogDebug).Info("redeploy resources")
193-
clusterSummary.Status.FeatureSummaries[i].Hash = nil
194-
clusterSummary.Status.FeatureSummaries[i].Status = configv1alpha1.FeatureStatusProvisioning
185+
l := logger.WithValues("clusterSummary", clusterSummary.Name)
186+
for i := range clusterSummary.Status.FeatureSummaries {
187+
if clusterSummary.Status.FeatureSummaries[i].FeatureID == configv1alpha1.FeatureHelm {
188+
if rs.Status.HelmResourcesChanged {
189+
l.V(logs.LogDebug).Info("redeploy helm")
190+
clusterSummary.Status.FeatureSummaries[i].Hash = nil
191+
clusterSummary.Status.FeatureSummaries[i].Status = configv1alpha1.FeatureStatusProvisioning
192+
}
193+
} else if clusterSummary.Status.FeatureSummaries[i].FeatureID == configv1alpha1.FeatureResources {
194+
if rs.Status.ResourcesChanged {
195+
l.V(logs.LogDebug).Info("redeploy resources")
196+
clusterSummary.Status.FeatureSummaries[i].Hash = nil
197+
clusterSummary.Status.FeatureSummaries[i].Status = configv1alpha1.FeatureStatusProvisioning
198+
}
199+
} else if clusterSummary.Status.FeatureSummaries[i].FeatureID == configv1alpha1.FeatureKustomize {
200+
if rs.Status.KustomizeResourcesChanged {
201+
l.V(logs.LogDebug).Info("redeploy kustomization resources")
202+
clusterSummary.Status.FeatureSummaries[i].Hash = nil
203+
clusterSummary.Status.FeatureSummaries[i].Status = configv1alpha1.FeatureStatusProvisioning
204+
}
195205
}
196206
}
197-
}
198207

199-
err = c.Status().Update(ctx, clusterSummary)
208+
err = c.Status().Update(ctx, clusterSummary)
209+
if err != nil {
210+
logger.V(logs.LogInfo).Info(fmt.Sprintf("failed to update ClusterSummary status: %v", err))
211+
return err
212+
}
213+
return nil
214+
})
215+
200216
if err != nil {
201-
logger.V(logs.LogInfo).Info(fmt.Sprintf("failed to update ClusterSummary status: %v", err))
202217
return err
203218
}
204219

0 commit comments

Comments
 (0)