in benchmarks/benchmark/tools/model-load-benchmark/k8sclient/k8sclient.go [94:126]
func (k *Client) DeletePod(pod *v1.Pod) error {
exists, err := k.PodExists(pod.Name, pod.Namespace)
if err != nil {
return fmt.Errorf("failed to check if pod exists: %v", err)
}
if !exists {
return nil
}
currentPod, err := k.client.CoreV1().Pods(pod.Namespace).Get(context.TODO(), pod.Name, metav1.GetOptions{})
if err != nil {
return fmt.Errorf("failed to get pod: %v", err)
}
// Delete the pod if it's not already being deleted
if currentPod.DeletionTimestamp == nil {
err = k.client.CoreV1().Pods(pod.Namespace).Delete(context.TODO(), pod.Name, metav1.DeleteOptions{})
if err != nil {
return fmt.Errorf("failed to delete pod %s in namespace %s: %v", pod.Name, pod.Namespace, err)
}
}
// Wait for the pod to be deleted
for {
exists, err := k.PodExists(pod.Name, pod.Namespace)
if err != nil {
return fmt.Errorf("failed to check if pod exists: %v", err)
}
if !exists {
return nil
}
time.Sleep(5 * time.Second)
}
}