#!/usr/bin/env bash

PROC_NAME="$1"

if [[ -z "$PROC_NAME" ]]; then
  echo "Usage: $0 <process-name>"
  exit 1
fi

PIDS=$(pgrep -f "$PROC_NAME")

if [[ -z "$PIDS" ]]; then
  echo "No process found matching: $PROC_NAME"
  exit 1
fi

allpodjson=`kubectl get pods -A -o json`

for PID in $PIDS; do
  CGROUP=$(cat /proc/$PID/cgroup 2>/dev/null)

  # Extract container ID (supports docker + containerd + cri-o)
  CONTAINER_ID=$(echo "$CGROUP" | grep -oE '(docker|cri-containerd|crio)-[0-9a-f]{64}' | sed 's/.*-//')
  # '

  if [[ -z "$CONTAINER_ID" ]]; then
    echo "PID $PID: Not running in a Kubernetes container"
    continue
  fi

  # Query Kubernetes for pod + container name
  echo "$allpodjson" | jq -r --arg CID "$CONTAINER_ID" '
    .items[]
    | . as $pod
    | $pod.status.containerStatuses[]
    | select(.containerID | contains($CID))
    | "PS '"$PROC_NAME"' PID '"$PID"' → Pod: \($pod.metadata.name)  Namespace: \($pod.metadata.namespace)  Container: \(.name)"
  '
done
