func()

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
}