in pkg/csi/controller.go [407:432]
func (a *attacher) diskIsAttached(ctx context.Context, volume, nodeName string) (bool, error) {
vol, err := parseVolumeHandle(volume)
if err != nil {
return false, err
}
var node corev1.Node
if err := a.k8sClient.Get(ctx, types.NamespacedName{Name: nodeName}, &node); err != nil {
return false, err
}
zone, found := node.GetLabels()[zoneLabel]
if !found {
return false, fmt.Errorf("No zone found for node %s", nodeName)
}
instance, err := a.computeSvc.Instances.Get(vol.project, zone, nodeName).Context(ctx).Do()
if err != nil {
return false, err
}
for _, disk := range instance.Disks {
if disk.DeviceName == vol.name {
return true, nil
}
}
return false, nil
}