internal/metadata/label.go (55 lines of code) (raw):

package metadata type Labels map[string]string func getDefaultLabelsFromInstanceName(instanceName string) Labels { return Labels{ "app.kubernetes.io/name": instanceName, "app.kubernetes.io/component": "teamcity-server", "app.kubernetes.io/part-of": "teamcity", } } func GetLabels(instanceName string, instanceLabels map[string]string) Labels { labels := getDefaultLabelsFromInstanceName(instanceName) for key, value := range instanceLabels { _, isLabelPresent := labels[key] if !isLabelPresent { labels[key] = value } } return labels } func GetStatefulSetLabels(instanceName string, nodeName string, nodeRole string, instanceLabels map[string]string) Labels { commonStatefulSetLabels := GetStatefulSetCommonLabels(instanceName, nodeRole, instanceLabels) nodeNameLabel := getNodeNameLabel(nodeName) return mergeLabels(commonStatefulSetLabels, nodeNameLabel) } func GetStatefulSetCommonLabels(instanceName string, nodeRole string, instanceLabels map[string]string) Labels { commonLabels := GetLabels(instanceName, instanceLabels) nodeResponsibility := getNodeResponsibilityLabel(nodeRole) return mergeLabels(commonLabels, nodeResponsibility) } func getNodeNameLabel(nodeName string) Labels { return Labels{ "teamcity.jetbrains.com/node-name": nodeName, } } func getNodeResponsibilityLabel(nodeRole string) Labels { return Labels{ "teamcity.jetbrains.com/role": nodeRole, } } func getNodeLabels(nodeName string, nodeRole string) Labels { return Labels{ "teamcity.jetbrains.com/node-name": nodeName, "teamcity.jetbrains.com/role": nodeRole, } } func mergeLabels(l1 Labels, l2 Labels) Labels { var merged = make(Labels) for k, v := range l1 { merged[k] = v } for key, value := range l2 { merged[key] = value } return merged }