func()

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
}