'Creates a volume from a snapshot.
:param volume: volume object
:param snapshot: snapshot object
:returns: model_update
:raises: VolumeBackendAPIException:'

def create_volume_from_snapshot(self, volume, snapshot):

    LOG.debug('Entering    create_volume_from_snapshot.')
    model_update = {}
    extra_specs = self._initial_setup(volume)
    sourcedevice_id = self._find_device_on_array(snapshot, extra_specs)
    from_snapvx = (False if sourcedevice_id else True)
    clone_dict = self._create_cloned_volume(volume, snapshot, extra_specs, is_snapshot=False, from_snapvx=from_snapvx)
    if self.utils.is_replication_enabled(extra_specs):
        rep_update = self._replicate_volume(volume, snapshot['name'], clone_dict, extra_specs)
        model_update.update(rep_update)
    model_update.update({'provider_location': six.text_type(clone_dict)})
    return model_update
