'Clone volume from snapshot.
Extend the volume if the size of the volume is more than the snapshot.'

def _clone_volume_from_snapshot(self, volume, snapshot):

    reserve = (not self.configuration.san_thin_provision)
    pool_name = self.configuration.nimble_pool_name
    self.APIExecutor.clone_vol(volume, snapshot, reserve, self._group_target_enabled, self._storage_protocol, pool_name)
    if (volume['size'] > snapshot['volume_size']):
        vol_size = (volume['size'] * units.Ki)
        reserve_size = (100 if reserve else 0)
        data = {'data': {'size': vol_size, 'reserve': reserve_size, 'warn_level': int(WARN_LEVEL), 'limit': 100, 'snap_limit': DEFAULT_SNAP_QUOTA}}
        LOG.debug('Edit    Vol    request    %(data)s', {'data': data})
        self.APIExecutor.edit_vol(volume['name'], data)
    return self._get_model_info(volume['name'])
