code: func (os *OpenStack) GetAttachmentDiskPath(instanceID, volumeID string) (string, error) {
  	// See issue #33128 - Cinder does not always tell you the right device path, as such
  	// we must only use this value as a last resort.
  	volume, err := os.getVolume(volumeID)
  	if err != nil {
  		return "", err
  	}
  	if volume.Status != volumeInUseStatus {
  		return "", fmt.Errorf("can not get device path of volume %s, its status is %s ", volume.Name, volume.Status)
  	}
  	if volume.AttachedServerID != "" {
  		if instanceID == volume.AttachedServerID {
  			// Attachment[0]["device"] points to the device path
  			// see http://developer.openstack.org/api-ref-blockstorage-v1.html
  			return volume.AttachedDevice, nil
  		}
  		return "", fmt.Errorf("disk %q is attached to a different compute: %q, should be detached before proceeding", volumeID, volume.AttachedServerID)
  	}
  	return "", fmt.Errorf("volume %s has no ServerId", volumeID)
  }
docs: // GetAttachmentDiskPath gets device path of attached volume to the compute running kubelet, as known by cinder