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  }