Skip to content

Commit e0c8236

Browse files
varshaprasad96openshift-cherrypick-robot
authored and
openshift-cherrypick-robot
committed
Revert "fix: issue-5041 (operator-framework#5042)"
This reverts commit 57ac0fe. Signed-off-by: varshaprasad96 <[email protected]>
1 parent 030fc1a commit e0c8236

File tree

2 files changed

+12
-53
lines changed

2 files changed

+12
-53
lines changed

internal/helm/release/manager.go

+7-33
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"encoding/json"
2121
"errors"
2222
"fmt"
23-
"reflect"
2423
"strings"
2524

2625
jsonpatch "gomodules.xyz/jsonpatch/v3"
@@ -127,52 +126,27 @@ func (m *manager) Sync(ctx context.Context) error {
127126
m.deployedRelease = deployedRelease
128127
m.isInstalled = true
129128

130-
m.isUpgradeRequired, err = m.isUpgrade(deployedRelease)
131-
if err != nil {
132-
return fmt.Errorf("failed to get upgrade status: %w", err)
133-
}
129+
m.isUpgradeRequired = m.isUpgrade(deployedRelease)
130+
134131
return nil
135132
}
136133

137134
func notFoundErr(err error) bool {
138135
return err != nil && strings.Contains(err.Error(), "not found")
139136
}
140137

141-
// This is caused by the different logic of loading from local and loading from secret
142-
// For example, the Raw field, which has the tag `json:"-"`, causes the Unmarshal to be lost when it into Release
143-
// We need to make them follow the JSON tag
144-
// see: https://github.com/helm/helm/blob/cf0c6fed519d48101cd69ce01a355125215ee46f/pkg/storage/driver/util.go#L81
145-
func equalJSONStruct(a, b interface{}) (bool, error) {
146-
if reflect.ValueOf(a).IsNil() || reflect.ValueOf(b).IsNil() {
147-
return apiequality.Semantic.DeepEqual(a, b), nil
148-
}
149-
150-
aBuf, bBuf := &bytes.Buffer{}, &bytes.Buffer{}
151-
err := json.NewEncoder(aBuf).Encode(a)
152-
if err != nil {
153-
return false, err
154-
}
155-
err = json.NewEncoder(bBuf).Encode(b)
156-
return aBuf.String() == bBuf.String(), err
157-
}
158-
159-
func (m manager) isUpgrade(deployedRelease *rpb.Release) (bool, error) {
138+
func (m manager) isUpgrade(deployedRelease *rpb.Release) bool {
160139
if deployedRelease == nil {
161-
return false, nil
140+
return false
162141
}
163142

164143
// Judging whether to skip updates
165144
skip := m.namespace == deployedRelease.Namespace
166145
skip = skip && m.releaseName == deployedRelease.Name
146+
skip = skip && apiequality.Semantic.DeepEqual(m.chart, deployedRelease.Chart)
147+
skip = skip && apiequality.Semantic.DeepEqual(m.values, deployedRelease.Config)
167148

168-
ok, err := equalJSONStruct(m.chart, deployedRelease.Chart)
169-
if err != nil {
170-
return false, err
171-
}
172-
skip = skip && ok
173-
174-
ok, err = equalJSONStruct(m.values, deployedRelease.Config)
175-
return !(skip && ok), err
149+
return !skip
176150
}
177151

178152
func (m manager) getDeployedRelease() (*rpb.Release, error) {

internal/helm/release/manager_test.go

+5-20
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
package release
1616

1717
import (
18-
"bytes"
19-
"encoding/json"
2018
"testing"
2119

2220
"github.com/stretchr/testify/assert"
@@ -249,20 +247,11 @@ func TestManagerisUpgrade(t *testing.T) {
249247
name: "different values",
250248
releaseName: "deployed",
251249
releaseNs: "deployed-ns",
252-
values: map[string]interface{}{"key": "1", "int": int32(1)},
250+
values: map[string]interface{}{"key": "1"},
253251
chart: newTestChart(t, "./testdata/simple"),
254-
deployedRelease: newTestRelease(newTestChart(t, "./testdata/simple"), map[string]interface{}{"key": "", "int": int64(1)}, "deployed", "deployed-ns"),
252+
deployedRelease: newTestRelease(newTestChart(t, "./testdata/simple"), map[string]interface{}{"key": ""}, "deployed", "deployed-ns"),
255253
want: true,
256254
},
257-
{
258-
name: "nil values",
259-
releaseName: "deployed",
260-
releaseNs: "deployed-ns",
261-
values: nil,
262-
chart: newTestChart(t, "./testdata/simple"),
263-
deployedRelease: newTestRelease(newTestChart(t, "./testdata/simple"), map[string]interface{}{}, "deployed", "deployed-ns"),
264-
want: false,
265-
},
266255
}
267256
for _, test := range tests {
268257
t.Run(test.name, func(t *testing.T) {
@@ -272,9 +261,8 @@ func TestManagerisUpgrade(t *testing.T) {
272261
values: test.values,
273262
chart: test.chart,
274263
}
275-
isUpgrade, err := m.isUpgrade(test.deployedRelease)
264+
isUpgrade := m.isUpgrade(test.deployedRelease)
276265
assert.Equal(t, test.want, isUpgrade)
277-
assert.Equal(t, nil, err)
278266
})
279267
}
280268
}
@@ -285,16 +273,13 @@ func newTestChart(t *testing.T, path string) *cpb.Chart {
285273
return chart
286274
}
287275

288-
func newTestRelease(chart *cpb.Chart, values map[string]interface{}, name, namespace string) *rpb.Release { // nolint: unparam
276+
func newTestRelease(chart *cpb.Chart, values map[string]interface{}, name, namespace string) *rpb.Release {
289277
release := rpb.Mock(&rpb.MockReleaseOptions{
290278
Name: name,
291279
Namespace: namespace,
280+
Chart: chart,
292281
Version: 1,
293282
})
294-
295-
buffer := &bytes.Buffer{}
296-
_ = json.NewEncoder(buffer).Encode(chart)
297-
_ = json.NewDecoder(buffer).Decode(release.Chart)
298283
release.Config = values
299284
return release
300285
}

0 commit comments

Comments
 (0)