Skip to content

Commit 9365434

Browse files
authored
feat: Added object.Hash (#105)
1 parent 3a30256 commit 9365434

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ require (
1717
k8s.io/apimachinery v0.31.2
1818
k8s.io/client-go v0.31.2
1919
k8s.io/klog/v2 v2.130.1
20+
k8s.io/kubernetes v1.31.3
2021
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
2122
sigs.k8s.io/controller-runtime v0.19.1
2223
sigs.k8s.io/yaml v1.4.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,8 @@ k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
190190
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
191191
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag=
192192
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98=
193+
k8s.io/kubernetes v1.31.3 h1:oqb7HdfnTelrGlZ6ziNugvQ/L/aJWR704114EAhUn9Q=
194+
k8s.io/kubernetes v1.31.3/go.mod h1:9xmT2buyTYj8TRKwRae7FcuY8k5+xlxv7VivvO0KKfs=
193195
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A=
194196
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
195197
sigs.k8s.io/controller-runtime v0.19.1 h1:Son+Q40+Be3QWb+niBXAg2vFiYWolDjjRfO8hn/cxOk=

object/object.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@ package object
22

33
import (
44
"fmt"
5+
"hash/fnv"
56
"reflect"
7+
"strconv"
68

79
"github.com/samber/lo"
810
"k8s.io/apimachinery/pkg/runtime"
911
"k8s.io/apimachinery/pkg/runtime/schema"
1012
"k8s.io/apimachinery/pkg/types"
1113
"k8s.io/client-go/kubernetes/scheme"
14+
"k8s.io/kubernetes/pkg/util/hash"
1215
"sigs.k8s.io/controller-runtime/pkg/client"
1316
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
1417
"sigs.k8s.io/yaml"
@@ -50,3 +53,9 @@ func Unmarshal[T any](raw []byte) *T {
5053
lo.Must0(yaml.Unmarshal(raw, &t))
5154
return &t
5255
}
56+
57+
func Hash(o any) string {
58+
h := fnv.New64a()
59+
hash.DeepHashObject(h, o)
60+
return strconv.FormatUint(uint64(h.Sum64()), 10)
61+
}

0 commit comments

Comments
 (0)