func (attacher *rbdAttacher) WaitForAttach(spec *volume.Spec, devicePath string, pod *v1.Pod, timeout time.Duration) (string, error) {
	klog.V(4).Infof("rbd: waiting for attach volume (name: %s) for pod (name: %s, uid: %s)", spec.Name(), pod.Name, pod.UID)
	mounter, err := attacher.plugin.createMounterFromVolumeSpecAndPod(spec, pod)
	if err != nil {
		klog.Warningf("failed to create mounter: %v", spec)
		return "", err
	}
	realDevicePath, err := attacher.manager.AttachDisk(*mounter)
	if err != nil {
		return "", err
	}
	klog.V(3).Infof("rbd: successfully wait for attach volume (spec: %s, pool: %s, image: %s) at %s", spec.Name(), mounter.Pool, mounter.Image, realDevicePath)
	return realDevicePath, nil
}
// WaitForAttach implements Attacher.WaitForAttach. It's called by kubelet to
// attach volume onto the node.
// This method is idempotent, callers are responsible for retrying on failure.
WaitForAttach implements Attacher.WaitForAttach. It's called by kubelet to
attach volume onto the node.
This method is idempotent, callers are responsible for retrying on failure.
// WaitForAttach implements Attacher . WaitForAttach . It ' s called by kubelet to // attach volume onto the node . // This method is idempotent callers are responsible for retrying on failure .
func (attacher *rbdAttacher) WaitForAttach(spec *volume.Spec, devicePath string, pod *v1.Pod, timeout time.Duration) (string, error) {
	klog.V(4).Infof("rbd: waiting for attach volume (name: %s) for pod (name: %s, uid: %s)", spec.Name(), pod.Name, pod.UID)
	mounter, err := attacher.plugin.createMounterFromVolumeSpecAndPod(spec, pod)
	if err != nil {
		klog.Warningf("failed to create mounter: %v", spec)
		return "", err
	}
	realDevicePath, err := attacher.manager.AttachDisk(*mounter)
	if err != nil {
		return "", err
	}
	klog.V(3).Infof("rbd: successfully wait for attach volume (spec: %s, pool: %s, image: %s) at %s", spec.Name(), mounter.Pool, mounter.Image, realDevicePath)
	return realDevicePath, nil
}
func ( attacher * rbdAttacher ) WaitForAttach ( spec * volume . Spec , devicePath string , pod * v1 . Pod , timeout time . Duration ) ( string , error ) { klog . V ( 4 ) . Infof ( " " , spec . Name ( ) , pod . Name , pod . UID ) mounter , err := attacher . plugin . createMounterFromVolumeSpecAndPod ( spec , pod ) if err != nil { klog . Warningf ( " " , spec ) return " " , err } realDevicePath , err := attacher . manager . AttachDisk ( * mounter ) if err != nil { return " " , err } klog . V ( 3 ) . Infof ( " " , spec . Name ( ) , mounter . Pool , mounter . Image , realDevicePath ) return realDevicePath , nil }
WaitForAttach implements Attacher.WaitForAttach.
WaitForAttach implements Attacher . WaitForAttach .