in event-exporter/kubernetes/podlabels/cache_collector.go [122:160]
func getLabelsFromPod(pod *corev1.Pod) map[string]string {
transformedLabels := map[string]string{}
for _, owner := range pod.GetObjectMeta().GetOwnerReferences() {
switch owner.Kind {
case "DaemonSet":
transformedLabels[ownerTypeKeyName] = "DaemonSet"
transformedLabels[ownerNameKeyName] = owner.Name
case "StatefulSet":
transformedLabels[ownerTypeKeyName] = "StatefulSet"
transformedLabels[ownerNameKeyName] = owner.Name
case "ReplicaSet":
// Pod that is eventually owned by Deployment has pod name:
// <DeploymentName>-<PodTemplateHash>-<RandomString>
// and owner replicaset name: <DeploymentName>-<PodTemplateHash>
if templateHashSuffix := "-" + pod.GetObjectMeta().GetLabels()["pod-template-hash"]; len(templateHashSuffix) > 1 {
if ownerName, ok := strings.CutSuffix(owner.Name, templateHashSuffix); ok {
transformedLabels[ownerTypeKeyName] = "Deployment"
transformedLabels[ownerNameKeyName] = ownerName
}
}
case "Job":
if ownerName, ok := stripUnixTimeSuffix(owner.Name); ok {
// Pod that is eventually owned by a CronJob has pod name:
// <CronJobName>-<UnixTimeInMin>-<RandomString>
// and owner job name: <CronJobName>-<UnixTimeInMin>
transformedLabels[ownerTypeKeyName] = "CronJob"
transformedLabels[ownerNameKeyName] = ownerName
} else if jobsetName := pod.GetObjectMeta().GetLabels()[jobSetNameLabelKey]; jobsetName != "" {
// Pod that is eventually owned by a JobSet has the jobset name label set.
transformedLabels[ownerTypeKeyName] = "JobSet"
transformedLabels[ownerNameKeyName] = jobsetName
} else {
transformedLabels[ownerTypeKeyName] = "Job"
transformedLabels[ownerNameKeyName] = owner.Name
}
}
}
return transformedLabels
}