'Do all steps to get zfs volume exported at separate target.
:param volume: reference of volume to be exported'

def _do_export(self, _ctx, volume):

    volume_path = self._get_volume_path(volume)
    vol_map_url = ('san/lunMappings?volume=%s&fields=lun' % volume_path.replace('/', '%2F'))
    data = self.nef.get(vol_map_url).get('data')
    if data:
        model_update = {}
    else:
        tg_name = None
        for tg in self.volumes.keys():
            if (len(self.volumes[tg]) < 20):
                tg_name = tg
                break
        if tg_name:
            target_name = self.targets[tg_name]
        else:
            tg_name = (TARGET_GROUP_PREFIX + uuid.uuid4().hex)
            url = 'san/iscsi/targets'
            data = {'portals': [{'address': self.nef_host}], 'alias': tg_name}
            self.nef.post(url, data)
            data = self.nef.get(('%(url)s?fields=name&alias=%(tg_name)s' % {'url': url, 'tg_name': tg_name}))['data']
            target_name = data[0]['name']
            self._create_target_group(tg_name, target_name)
            self.targets[tg_name] = target_name
            self.volumes[tg_name] = set()
        url = 'san/lunMappings'
        data = {'hostGroup': 'all', 'targetGroup': tg_name, 'volume': volume_path}
        try:
            self.nef.post(url, data)
            self.volumes[tg_name].add(volume_path)
        except exception.NexentaException as e:
            if ('No    such    target    group' in e.args[0]):
                self._create_target_group(tg_name, target_name)
                self._fill_volumes(tg_name)
                self.nef.post(url, data)
            else:
                raise
        data = self.nef.get(vol_map_url).get('data')
        lun = data[0]['lun']
        provider_location = ('%(host)s:%(port)s,1    %(name)s    %(lun)s' % {'host': self.nef_host, 'port': self.configuration.nexenta_iscsi_target_portal_port, 'name': target_name, 'lun': lun})
        model_update = {'provider_location': provider_location}
    return model_update
