in kubernetes/metadata/pod.go [87:141]
func (p *pod) GenerateK8s(obj kubernetes.Resource, opts ...FieldOptions) mapstr.M {
po, ok := obj.(*kubernetes.Pod)
if !ok {
return nil
}
out := p.resource.GenerateK8s("pod", obj, opts...)
// check if Pod is handled by a ReplicaSet which is controlled by a Deployment.
// The hierarchy there is Deployment->ReplicaSet->Pod.
if p.addResourceMetadata.Deployment {
if p.replicaset != nil {
rsName, _ := out.GetValue("replicaset.name")
if rsName, ok := rsName.(string); ok {
meta := p.replicaset.GenerateFromName(po.Namespace + "/" + rsName)
deploymentName, _ := meta.GetValue("deployment.name")
if deploymentName != "" {
_, _ = out.Put("deployment.name", deploymentName)
}
}
}
}
// check if Pod is handled by a Job which is controlled by a CronJob.
// The hierarchy there is CronJob->Job->Pod
if p.addResourceMetadata.CronJob {
if p.job != nil {
jobName, _ := out.GetValue("job.name")
if jobName, ok := jobName.(string); ok {
meta := p.job.GenerateFromName(po.Namespace + "/" + jobName)
cronjobName, _ := meta.GetValue("cronjob.name")
if cronjobName != "" {
_, _ = out.Put("cronjob.name", cronjobName)
}
}
}
}
if p.node != nil {
meta := p.node.GenerateFromName(po.Spec.NodeName, WithMetadata("node"))
if meta != nil {
_, _ = out.Put("node", meta["node"])
} else {
_, _ = out.Put("node.name", po.Spec.NodeName)
}
} else {
_, _ = out.Put("node.name", po.Spec.NodeName)
}
if po.Status.PodIP != "" {
_, _ = out.Put("pod.ip", po.Status.PodIP)
}
return out
}