83 lines
1.8 KiB
Go
83 lines
1.8 KiB
Go
package resources
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
|
|
"github.com/dapr-sandbox/dapr-kubernetes-operator/pkg/pointer"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
)
|
|
|
|
func OwnerReference(owner client.Object) metav1.OwnerReference {
|
|
return metav1.OwnerReference{
|
|
APIVersion: owner.GetObjectKind().GroupVersionKind().GroupVersion().String(),
|
|
Kind: owner.GetObjectKind().GroupVersionKind().Kind,
|
|
Name: owner.GetName(),
|
|
UID: owner.GetUID(),
|
|
BlockOwnerDeletion: pointer.Any(true),
|
|
Controller: pointer.Any(true),
|
|
}
|
|
}
|
|
|
|
func OwnerReferences(owner client.Object) []metav1.OwnerReference {
|
|
return []metav1.OwnerReference{
|
|
OwnerReference(owner),
|
|
}
|
|
}
|
|
|
|
func Annotations(target *unstructured.Unstructured, annotations map[string]string) {
|
|
m := target.GetAnnotations()
|
|
|
|
if m == nil {
|
|
m = make(map[string]string)
|
|
}
|
|
|
|
for k, v := range annotations {
|
|
m[k] = v
|
|
}
|
|
|
|
target.SetAnnotations(m)
|
|
}
|
|
|
|
func Labels(target *unstructured.Unstructured, labels map[string]string) {
|
|
m := target.GetLabels()
|
|
|
|
if m == nil {
|
|
m = make(map[string]string)
|
|
}
|
|
|
|
for k, v := range labels {
|
|
m[k] = v
|
|
}
|
|
|
|
target.SetLabels(m)
|
|
}
|
|
|
|
func Ref(obj *unstructured.Unstructured) string {
|
|
name := obj.GetName()
|
|
if obj.GetNamespace() == "" {
|
|
name = obj.GetNamespace() + ":" + obj.GetName()
|
|
}
|
|
|
|
return fmt.Sprintf(
|
|
"%s:%s:%s",
|
|
obj.GroupVersionKind().Kind,
|
|
obj.GroupVersionKind().GroupVersion().String(),
|
|
name,
|
|
)
|
|
}
|
|
|
|
func UnstructuredFor(group string, version string, kind string) *unstructured.Unstructured {
|
|
u := unstructured.Unstructured{}
|
|
u.SetGroupVersionKind(schema.GroupVersionKind{
|
|
Kind: kind,
|
|
Group: group,
|
|
Version: version,
|
|
})
|
|
|
|
return &u
|
|
}
|