package terraform
import (
- "crypto/md5"
- "encoding/hex"
+ "fmt"
+
+ "github.com/hashicorp/terraform/addrs"
)
-// PathCacheKey returns a cache key for a module path.
+// PathObjectCacheKey is like PathCacheKey but includes an additional name
+// to be included in the key, for module-namespaced objects.
//
-// TODO: test
-func PathCacheKey(path []string) string {
- // There is probably a better way to do this, but this is working for now.
- // We just create an MD5 hash of all the MD5 hashes of all the path
- // elements. This gets us the property that it is unique per ordering.
- hash := md5.New()
- for _, p := range path {
- single := md5.Sum([]byte(p))
- if _, err := hash.Write(single[:]); err != nil {
- panic(err)
- }
- }
-
- return hex.EncodeToString(hash.Sum(nil))
+// The result of this function is guaranteed unique for any distinct pair
+// of path and name, but is not guaranteed to be in any particular format
+// and in particular should never be shown to end-users.
+func PathObjectCacheKey(path addrs.ModuleInstance, objectName string) string {
+ return fmt.Sprintf("%s|%s", path.String(), objectName)
}