in pkg/controller/controller.go [2108:2149]
func (c *FrameworkController) deletePod(
f *ci.Framework, taskRoleName string, taskIndex int32,
podUID types.UID, confirm bool, force bool) error {
podName := f.TaskStatus(taskRoleName, taskIndex).PodName()
errPfx := fmt.Sprintf(
"[%v][%v][%v]: Failed to delete Pod %v, %v: confirm: %v, force: %v: ",
f.Key(), taskRoleName, taskIndex, podName, podUID, confirm, force)
deleteOptions := &meta.DeleteOptions{Preconditions: &meta.Preconditions{UID: &podUID}}
if force {
deleteOptions.GracePeriodSeconds = common.PtrInt64(0)
}
deleteErr := c.kClient.CoreV1().Pods(f.Namespace).Delete(podName, deleteOptions)
if deleteErr != nil {
if !apiErrors.IsNotFound(deleteErr) {
return fmt.Errorf(errPfx+"%v", deleteErr)
}
} else {
if confirm {
// Confirm it is deleted instead of still deleting.
pod, getErr := c.kClient.CoreV1().Pods(f.Namespace).Get(podName,
meta.GetOptions{})
if getErr != nil {
if !apiErrors.IsNotFound(getErr) {
return fmt.Errorf(errPfx+
"Pod cannot be got from remote: %v", getErr)
}
} else {
if podUID == pod.UID {
return fmt.Errorf(errPfx+
"Pod with DeletionTimestamp %v still exist after deletion",
pod.DeletionTimestamp)
}
}
}
}
klog.Infof(
"[%v][%v][%v]: Succeeded to delete Pod %v, %v: confirm: %v, force: %v",
f.Key(), taskRoleName, taskIndex, podName, podUID, confirm, force)
return nil
}