in plugins/processors/k8sdecorator/stores/podstore.go [538:588]
func (p *PodStore) addPodOwnersAndPodName(metric telegraf.Metric, pod *corev1.Pod, kubernetesBlob map[string]interface{}) {
var owners []Owner
podName := ""
for _, owner := range pod.OwnerReferences {
if owner.Kind != "" && owner.Name != "" {
kind := owner.Kind
name := owner.Name
if owner.Kind == ReplicaSet {
rsToDeployment := k8sclient.Get().ReplicaSet.ReplicaSetToDeployment()
if parent := rsToDeployment[owner.Name]; parent != "" {
kind = Deployment
name = parent
} else if parent := parseDeploymentFromReplicaSet(owner.Name); parent != "" {
profiler.Profiler.AddStats([]string{"k8sdecorator", "podstore", "rsToDeploymentMiss"}, 1)
kind = Deployment
name = parent
}
} else if owner.Kind == Job {
if parent := parseCronJobFromJob(owner.Name); parent != "" {
kind = CronJob
name = parent
} else if !p.prefFullPodName {
name = getJobNamePrefix(name)
}
}
owners = append(owners, Owner{OwnerKind: kind, OwnerName: name})
if podName == "" {
if owner.Kind == StatefulSet {
podName = pod.Name
} else if owner.Kind == DaemonSet || owner.Kind == Job || owner.Kind == ReplicaSet || owner.Kind == ReplicationController {
podName = name
}
}
}
}
if len(owners) > 0 {
kubernetesBlob["pod_owners"] = owners
}
// if podName is not set according to a well-known controllers, then set it to its own name
if podName == "" {
if strings.HasPrefix(pod.Name, kubeProxy) && !p.prefFullPodName {
podName = kubeProxy
} else {
podName = pod.Name
}
}
metric.AddTag(PodNameKey, podName)
}