func Labels()

in internal/manifests/manifestutils/labels.go [24:62]


func Labels(instance metav1.ObjectMeta, name string, image string, component string, filterLabels []string) map[string]string {
	var versionLabel string
	// new map every time, so that we don't touch the instance's label
	base := map[string]string{}
	if nil != instance.Labels {
		for k, v := range instance.Labels {
			if !isFilteredLabel(k, filterLabels) {
				base[k] = v
			}
		}
	}

	for k, v := range SelectorLabels(instance, component) {
		base[k] = v
	}

	if len(image) > 0 {
		version := strings.Split(image, ":")
		for _, v := range version {
			if strings.HasSuffix(v, "@sha256") {
				versionLabel = strings.TrimSuffix(v, "@sha256")
			}
		}
		switch lenVersion := len(version); lenVersion {
		case 3:
			base["app.kubernetes.io/version"] = versionLabel
		case 2:
			base["app.kubernetes.io/version"] = naming.Truncate("%s", 63, version[len(version)-1])
		default:
			base["app.kubernetes.io/version"] = "latest"
		}
	}

	// Don't override the app name if it already exists
	if _, ok := base["app.kubernetes.io/name"]; !ok {
		base["app.kubernetes.io/name"] = name
	}
	return base
}