func()

in internal/k8sCommon/k8sclient/endpointslicewatcher.go [116:186]


func (w *EndpointSliceWatcher) extractEndpointSliceKeyValuePairs(slice *discv1.EndpointSlice) []kvPair {
	var pairs []kvPair
	isFirstPod := true
	svcName := slice.Labels["kubernetes.io/service-name"]

	for _, endpoint := range slice.Endpoints {
		if endpoint.TargetRef != nil {
			if endpoint.TargetRef.Kind != "Pod" {
				continue
			}

			podName := endpoint.TargetRef.Name
			ns := endpoint.TargetRef.Namespace

			var nodeName string
			if endpoint.NodeName != nil {
				nodeName = *endpoint.NodeName
			}

			w.logger.Debug("Processing endpoint",
				zap.String("podName", podName),
				zap.String("namespace", ns),
				zap.String("nodeName", nodeName),
			)

			derivedWorkload := InferWorkloadName(podName, svcName)
			if derivedWorkload == "" {
				w.logger.Warn("failed to infer workload name from Pod name")
				continue
			}

			fullWl := NewPodMetadata(derivedWorkload, ns, nodeName)

			// Build IP and IP:port pairs
			for _, addr := range endpoint.Addresses {
				// "ip" -> PodMetadata
				pairs = append(pairs, kvPair{
					key:       addr,
					value:     fullWl,
					isService: false,
				})

				// "ip:port" -> PodMetadata for each port
				for _, portDef := range slice.Ports {
					if portDef.Port != nil {
						ipPort := fmt.Sprintf("%s:%d", addr, *portDef.Port)
						pairs = append(pairs, kvPair{
							key:       ipPort,
							value:     fullWl,
							isService: false,
						})
					}
				}
			}

			// Build service name -> PodMetadata pair from the first pod
			if isFirstPod {
				isFirstPod = false
				if svcName != "" && ns != "" {
					pairs = append(pairs, kvPair{
						key:       svcName + "@" + ns,
						value:     fullWl,
						isService: true,
					})
				}
			}
		}
	}

	return pairs
}