code: func (attacher *vsphereVMDKAttacher) Attach(spec *volume.Spec, nodeName types.NodeName) (string, error) {
  	volumeSource, _, err := getVolumeSource(spec)
  	if err != nil {
  		return "", err
  	}
  
  	klog.V(4).Infof("vSphere: Attach disk called for node %s", nodeName)
  
  	// Keeps concurrent attach operations to same host atomic
  	attachdetachMutex.LockKey(string(nodeName))
  	defer attachdetachMutex.UnlockKey(string(nodeName))
  
  	// vsphereCloud.AttachDisk checks if disk is already attached to host and
  	// succeeds in that case, so no need to do that separately.
  	diskUUID, err := attacher.vsphereVolumes.AttachDisk(volumeSource.VolumePath, volumeSource.StoragePolicyName, nodeName)
  	if err != nil {
  		klog.Errorf("Error attaching volume %q to node %q: %+v", volumeSource.VolumePath, nodeName, err)
  		return "", err
  	}
  
  	return filepath.Join(diskByIDPath, diskSCSIPrefix+diskUUID), nil
  }
docs: // Attaches the volume specified by the given spec to the given host.
  // On success, returns the device path where the device was attached on the
  // node.
  // Callers are responsible for retryinging on failure.
  // Callers are responsible for thread safety between concurrent attach and
  // detach operations.