INNER CODE UNIT · Go
waitForVolumeAttachments
kubernetes-sigs/aws-ebs-csi-driver · cmd/hooks/prestop.go:100
func waitForVolumeAttachments(clientset kubernetes.Interface, nodeName string) error {
allAttachmentsDeleted := make(chan struct{})
factory := informers.NewSharedInformerFactory(clientset, 0)
informer := factory.Storage().V1().VolumeAttachments().Informer()
_, err := informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
DeleteFunc: func(obj any) {
klog.V(5).InfoS("DeleteFunc: VolumeAttachment deleted", "node", nodeName)
va, ok := obj.(*storagev1.VolumeAttachment)
if !ok {
klog.Error("DeleteFunc: error asserting object as type VolumeAttachment", "obj", va)
}
if va.Spec.NodeName == nodeName {
if err := checkVolumeAttachments(clientset, nodeName, allAttachmentsDeleted); err != nil {
klog.ErrorS(err, "DeleteFunc: error checking VolumeAttachments")
}
}