github.com/kotalco/kotal@v0.3.0/controllers/shared/labels.go (about) 1 package shared 2 3 import ( 4 "fmt" 5 "strings" 6 7 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 8 "k8s.io/apimachinery/pkg/runtime/schema" 9 ) 10 11 type CustomResource interface { 12 metav1.Object 13 GroupVersionKind() schema.GroupVersionKind 14 } 15 16 // UpdateLabels adds missing labels to the resource 17 func UpdateLabels(cr CustomResource, client, network string) { 18 19 gvk := cr.GroupVersionKind() 20 group := strings.Replace(gvk.Group, ".kotal.io", "", 1) 21 kind := strings.ToLower(gvk.Kind) 22 23 labels := cr.GetLabels() 24 if labels == nil { 25 labels = map[string]string{} 26 } 27 28 labels["app.kubernetes.io/name"] = client 29 labels["app.kubernetes.io/instance"] = cr.GetName() 30 labels["app.kubernetes.io/component"] = fmt.Sprintf("%s-%s", group, kind) 31 labels["app.kubernetes.io/managed-by"] = "kotal-operator" 32 labels["app.kubernetes.io/created-by"] = fmt.Sprintf("%s-%s-controller", group, kind) 33 labels["kotal.io/protocol"] = group 34 if network != "" { 35 labels["kotal.io/network"] = network 36 } 37 38 cr.SetLabels(labels) 39 40 }