package util

import (
	"crypto/md5"
	"fmt"
)

// TODO(hanlins): Use this function for other controllers.
func UniqueName(namespace, name string) string {
	const k8sNameLengthLimit = 160

	namespacedName := fmt.Sprintf("%s/%s", namespace, name)
	hash := fmt.Sprintf("%x", md5.Sum([]byte(namespacedName)))[:8]

	result := fmt.Sprintf("%s-%s-%s", hash, namespace, name)
	if len(result) > k8sNameLengthLimit {
		result = result[:k8sNameLengthLimit]
	}
	return result
}

func WrapError(ctx string, err error) error {
	if err == nil {
		return fmt.Errorf(ctx)
	}
	return fmt.Errorf("%s: %v", ctx, err)
}
