'Make sure concerto snapshot resource area exists on volume.
:param volume_id:  Cinder volume ID corresponding to the backend LUN
:raises:
VolumeBackendAPIException: if cinder volume does not exist
on backnd, or SRA could not be created.'

def _ensure_snapshot_resource_area(self, volume_id):

    ctxt = context.get_admin_context()
    volume = api.volume_get(ctxt, volume_id)
    spec_dict = {}
    if (not volume):
        msg = (_('Failed    to    ensure    snapshot    resource    area,    could    not    locate    volume    for    id    %s') % volume_id)
        raise exception.VolumeBackendAPIException(data=msg)
    if (not self.vmem_mg.snapshot.lun_has_a_snapshot_resource(lun=volume_id)):
        lun_size_mb = (volume['size'] * units.Ki)
        if (lun_size_mb < 500):
            snap_size_mb = lun_size_mb
        elif (lun_size_mb < 2000):
            snap_size_mb = (0.5 * lun_size_mb)
        else:
            snap_size_mb = (0.2 * lun_size_mb)
        snap_size_mb = int(math.ceil(snap_size_mb))
        spec_dict = self._process_extra_specs(volume)
        try:
            selected_pool = self._get_storage_pool(volume, snap_size_mb, spec_dict['pool_type'], None)
            LOG.debug('Creating    SRA    of    %(ssmb)sMB    for    lun    of    %(lsmb)sMB    on    %(vol_id)s', {'ssmb': snap_size_mb, 'lsmb': lun_size_mb, 'vol_id': volume_id})
        except exception.ViolinResourceNotFound:
            raise
        except Exception:
            msg = _('No    suitable    storage    pool    found')
            LOG.exception(msg)
            raise exception.ViolinBackendErr(message=msg)
        res = self.vmem_mg.snapshot.create_snapshot_resource(lun=volume_id, size=snap_size_mb, enable_notification=False, policy=CONCERTO_DEFAULT_SRA_POLICY, enable_expansion=CONCERTO_DEFAULT_SRA_ENABLE_EXPANSION, expansion_threshold=CONCERTO_DEFAULT_SRA_EXPANSION_THRESHOLD, expansion_increment=CONCERTO_DEFAULT_SRA_EXPANSION_INCREMENT, expansion_max_size=CONCERTO_DEFAULT_SRA_EXPANSION_MAX_SIZE, enable_shrink=CONCERTO_DEFAULT_SRA_ENABLE_SHRINK, storage_pool_id=selected_pool['storage_pool_id'])
        if (not res['success']):
            msg = (_('Failed    to    create    snapshot    resource    area    on    volume    %(vol)s:    %(res)s.') % {'vol': volume_id, 'res': res['msg']})
            raise exception.VolumeBackendAPIException(data=msg)
