'Move a volume with the given name to the current node and mount it.
Since we need to return the filesystem path we wait until the
dataset is mounted locally.
:param unicode Name: The name of the volume.
:param string ID: A unique ID for caller that requested the mount
Right now we do nothing with ID, but it can be used to track
the mount calls when multiple containers are trying to mount
the same volume.
:return: Result that includes the mountpoint.'

@app.route('/VolumeDriver.Mount', methods=['POST'])
@_endpoint(u'Mount')
def volumedriver_mount(self, Name, ID=None):

    d = DeferredContext(self._dataset_id_for_name(Name))
    d.addCallback((lambda dataset_id: self._flocker_client.move_dataset(self._node_id, dataset_id)))
    d.addCallback((lambda dataset: dataset.dataset_id))
    d.addCallback((lambda dataset_id: loop_until(self._reactor, (lambda : self._get_path_from_dataset_id(dataset_id)), repeat(self._POLL_INTERVAL))))
    d.addCallback((lambda p: {u'Err': u'', u'Mountpoint': p.path}))
    timeout(self._reactor, d.result, self._MOUNT_TIMEOUT)
    def handleCancel(failure):
        failure.trap(CancelledError)
        return {u'Err': u'Timed    out    waiting    for    dataset    to    mount.', u'Mountpoint': u''}
    d.addErrback(handleCancel)
    return d.result
