26 lines
760 B
Go
26 lines
760 B
Go
// Copyright 2015 The Kubernetes Authors.
|
|
// hash.go is copied from kubernetes's pkg/util/hash.go
|
|
// See https://github.com/kubernetes/kubernetes/blob/e1c617a88ec286f5f6cb2589d6ac562d095e1068/pkg/util/hash/hash.go#L25-L37
|
|
|
|
package hash
|
|
|
|
import (
|
|
"hash"
|
|
|
|
"github.com/davecgh/go-spew/spew"
|
|
)
|
|
|
|
// DeepHashObject writes specified object to hash using the spew library
|
|
// which follows pointers and prints actual values of the nested objects
|
|
// ensuring the hash does not change when a pointer changes.
|
|
func DeepHashObject(hasher hash.Hash, objectToWrite interface{}) {
|
|
hasher.Reset()
|
|
printer := spew.ConfigState{
|
|
Indent: " ",
|
|
SortKeys: true,
|
|
DisableMethods: true,
|
|
SpewKeys: true,
|
|
}
|
|
printer.Fprintf(hasher, "%#v", objectToWrite)
|
|
}
|