Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
rcmadhankumar committed Sep 22, 2023
1 parent 9968913 commit 3709ab4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 25 deletions.
7 changes: 2 additions & 5 deletions pkg/kapp/clusterapply/add_or_update_change.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package clusterapply

import (
"encoding/json"
"fmt"
"time"

Expand Down Expand Up @@ -254,7 +253,7 @@ func (c AddOrUpdateChange) recordAppliedResource(savedRes ctlres.Resource) error
}

// Record last applied change on the latest version of a resource
latestResWithHistoryUpdated, madeAnyModifications, err := latestResWithHistory.RecordLastAppliedResource(applyChange)
annotationStr, madeAnyModifications, err := latestResWithHistory.RecordLastAppliedResource(applyChange)
if err != nil {
return true, fmt.Errorf("Recording last applied resource: %w", err)
}
Expand All @@ -264,9 +263,7 @@ func (c AddOrUpdateChange) recordAppliedResource(savedRes ctlres.Resource) error
return true, nil
}

latestResourceAnnotations := latestResWithHistoryUpdated.Annotations()
appliedResAnnValJSONStr, err := json.Marshal(latestResourceAnnotations[ctldiff.AppliedResAnnKey])
jsonStr := fmt.Sprintf("{\"metadata\": {\"annotations\": { \"%s\" : \"%s\", \"%s\": %s}}}", ctldiff.AppliedResDiffMD5AnnKey, latestResourceAnnotations[ctldiff.AppliedResDiffMD5AnnKey], ctldiff.AppliedResAnnKey, appliedResAnnValJSONStr)
jsonStr := fmt.Sprintf("{\"metadata\": {\"annotations\": %s }}", annotationStr)
data := []byte(jsonStr)

_, err = c.identifiedResources.Patch(savedRes, types.MergePatchType, data)
Expand Down
34 changes: 14 additions & 20 deletions pkg/kapp/diff/resource_with_history.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
package diff

import (
"encoding/json"
"fmt"
"os"

Expand Down Expand Up @@ -68,13 +69,13 @@ func (r ResourceWithHistory) AllowsRecordingLastApplied() bool {
return !found
}

func (r ResourceWithHistory) RecordLastAppliedResource(appliedChange Change) (ctlres.Resource, bool, error) {
func (r ResourceWithHistory) RecordLastAppliedResource(appliedChange Change) (string, bool, error) {
// Use compact representation to take as little space as possible
// because annotation value max length is 262144 characters
// (https://github.com/vmware-tanzu/carvel-kapp/issues/48).
appliedResBytes, err := appliedChange.AppliedResource().AsCompactBytes()
if err != nil {
return nil, true, err
return "", true, err
}

diff := appliedChange.OpsDiff()
Expand All @@ -84,37 +85,30 @@ func (r ResourceWithHistory) RecordLastAppliedResource(appliedChange Change) (ct
r.resource.Description(), diff.MinimalMD5(), diff.MinimalString())
}

annsMod := ctlres.StringMapAppendMod{
ResourceMatcher: ctlres.AllMatcher{},
Path: ctlres.NewPathFromStrings([]string{"metadata", "annotations"}),
KVs: map[string]string{
AppliedResAnnKey: string(appliedResBytes),
AppliedResDiffMD5AnnKey: diff.MinimalMD5(),
annsKVS := map[string]string{
AppliedResAnnKey: string(appliedResBytes),
AppliedResDiffMD5AnnKey: diff.MinimalMD5(),

// Following fields useful for debugging:
// debugAppliedResDiffAnnKey: diff.MinimalString(),
// debugAppliedResDiffFullAnnKey: diff.FullString(),
},
// Following fields useful for debugging:
// debugAppliedResDiffAnnKey: diff.MinimalString(),
// debugAppliedResDiffFullAnnKey: diff.FullString(),
}

const annValMaxLen = 262144

// kapp deploy should work without adding disable annotation when annotation value max length exceed
// (https://github.com/vmware-tanzu/carvel-kapp/issues/410)
for _, annVal := range annsMod.KVs {
for _, annVal := range annsKVS {
if len(annVal) > annValMaxLen {
return nil, false, nil
return "", false, nil
}
}

resultRes := r.resource.DeepCopy()

err = annsMod.Apply(resultRes)
result, err := json.Marshal(annsKVS)
if err != nil {
return nil, true, err
return "", false, err
}

return resultRes, true, nil
return string(result), true, nil
}

func (r ResourceWithHistory) CalculateChange(appliedRes ctlres.Resource) (Change, error) {
Expand Down

0 comments on commit 3709ab4

Please sign in to comment.