@@ -32,7 +32,6 @@ import (
3232 "helm.sh/helm/v3/pkg/storage/driver"
3333 apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
3434 apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
35- apiequality "k8s.io/apimachinery/pkg/api/equality"
3635 apierrors "k8s.io/apimachinery/pkg/api/errors"
3736 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3837 "k8s.io/apimachinery/pkg/runtime"
@@ -44,6 +43,7 @@ import (
4443
4544 "github.com/operator-framework/operator-sdk/internal/helm/internal/types"
4645 "github.com/operator-framework/operator-sdk/internal/helm/manifestutil"
46+ "k8s.io/apimachinery/pkg/conversion"
4747)
4848
4949// Manager manages a Helm release. It can install, upgrade, reconcile,
@@ -135,6 +135,30 @@ func notFoundErr(err error) bool {
135135 return err != nil && strings .Contains (err .Error (), "not found" )
136136}
137137
138+ var equalities = conversion .EqualitiesOrDie (func (a , b * cpb.Chart ) bool {
139+ if a == nil || b == nil {
140+ return a == nil && b == nil
141+ }
142+ aencode := & bytes.Buffer {}
143+ bencode := & bytes.Buffer {}
144+
145+ _ = json .NewEncoder (aencode ).Encode (a )
146+ _ = json .NewEncoder (bencode ).Encode (b )
147+
148+ return aencode .String () == bencode .String ()
149+ }, func (a , b map [string ]interface {}) bool {
150+ if a == nil || b == nil {
151+ return a == nil && b == nil
152+ }
153+ aencode := & bytes.Buffer {}
154+ bencode := & bytes.Buffer {}
155+
156+ _ = json .NewEncoder (aencode ).Encode (a )
157+ _ = json .NewEncoder (bencode ).Encode (b )
158+
159+ return aencode .String () == bencode .String ()
160+ })
161+
138162func (m manager ) isUpgrade (deployedRelease * rpb.Release ) bool {
139163 if deployedRelease == nil {
140164 return false
@@ -143,8 +167,9 @@ func (m manager) isUpgrade(deployedRelease *rpb.Release) bool {
143167 // Judging whether to skip updates
144168 skip := m .namespace == deployedRelease .Namespace
145169 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 )
170+
171+ skip = skip && equalities .DeepEqual (m .chart , deployedRelease .Chart )
172+ skip = skip && equalities .DeepEqual (m .values , deployedRelease .Config )
148173
149174 return ! skip
150175}
0 commit comments