Exemple #1
0
    def jsonResponse(self, **kwargs):
        t0 = self._timeNow()
        result = yield self.any.executeQuery(**kwargs)

        queryTime = self._timeNow() - t0
        total, hits = result.total, result.hits
        jsonResponse = JsonDict({'total': total})

        if hits:
            if hasattr(result, 'items'):
                jsonResponse['items'] = result.items
            else:
                jsonResponse['items'] = []
                for hit in hits:
                    jsonResponse['items'].append((yield self.any.retrieveData(
                        identifier=hit.id, name=self._defaultRecordSchema)))

        drilldownData = getattr(result, 'drilldownData', None)
        if drilldownData is not None:
            jsonFacets = jsonResponse.setdefault('facets', {})
            for facet in drilldownData:
                jsonFacets.setdefault(facet['fieldname'], facet["terms"])

        searchTime = self._timeNow() - t0
        jsonResponse['querytimes'] = {
            'handlingTime': self._querytime(searchTime),
            'queryTime': self._querytime(queryTime),
        }
        if result.queryTime:
            jsonResponse["querytimes"]["indexTime"] = self._querytime(
                result.queryTime / 1000.0)

        raise StopIteration(jsonResponse)
 def _configure(self):
     configuration = JsonDict({
         "path": {
             "data": ensureDir(self.stateDir, 'data'),
             "logs": ensureDir(self.stateDir, 'logs'),
             "work": ensureDir(self.stateDir, 'work'), # temporary files
             "conf": self.configDir,
             "plugins": ensureDir(self.stateDir, 'plugins'),
         },
         "cluster":{
             "name": self.name,
         },
         "http":{
             "port": self.port,
         },
         "transport": {
             "tcp": {
                 "port": self.transportPort
             }
         }
     })
     self._configureIndex(configuration)
     if self.identifier:
         configuration.setdefault("node", dict())['name'] = self.identifier
     with open(self.configFile, 'w') as f:
         configuration.dump(f, indent=4, sort_keys=True)
    def jsonResponse(self, args, logDict):
        t0 = self._timeNow()
        result = yield self.any.executeQuery(**args.queryKwargs)

        queryTime = self._timeNow() - t0
        total, hits = result.total, result.hits
        jsonResponse = JsonDict({'total': total})
        logDict['numberOfRecords'] = total

        if hits:
            if hasattr(result, 'items'):
                jsonResponse['items'] = result.items
            else:
                jsonResponse['items'] = yield self._getItems(
                    identifiers=[hit.id for hit in hits],
                    recordSchema=args.recordSchema)

        drilldownData = getattr(result, 'drilldownData', None)
        if drilldownData is not None:
            jsonFacets = jsonResponse.setdefault('facets', {})
            for facet in drilldownData:
                jsonFacets.setdefault(facet['fieldname'], facet["terms"])

        searchTime = self._timeNow() - t0
        jsonResponse['querytimes'] = {
            'handlingTime': self._querytime(searchTime),
            'queryTime': self._querytime(queryTime),
        }
        logDict['handlingTime'] = self._querytime(searchTime)
        logDict['queryTime'] = self._querytime(queryTime)
        if result.queryTime:
            jsonResponse["querytimes"]["indexTime"] = self._querytime(
                result.queryTime / 1000.0)
            logDict["indexTime"] = self._querytime(result.queryTime / 1000.0)

        return jsonResponse
Exemple #4
0
class Group(object):
    def __init__(self, stateDir, identifier):
        self._filepath = join(stateDir, identifier + '.group')
        self.exists = isfile(self._filepath)
        self._data = JsonDict(identifier=identifier)
        if self.exists:
            self._data = JsonDict.load(self._filepath)

    @property
    def identifier(self):
        return self._data['identifier']

    def save(self):
        self._data.dump(self._filepath)
        return self

    @property
    def usernames(self):
        return self._data.get('usernames', [])

    def addUsername(self, name):
        self._data.setdefault('usernames', []).append(name)
        return self.save()

    def removeUsername(self, name):
        self._data['usernames'] = [u for u in self.usernames if u != name]
        return self.save()

    @property
    def domainIds(self):
        return self._data.get('domainIds', [])

    def addDomainId(self, domainId):
        self._data.setdefault('domainIds', []).append(domainId)
        return self.save()

    def removeDomainId(self, domainId):
        self._data['domainIds'] = [d for d in self.domainIds if d != domainId]
        return self.save()

    @property
    def groupInfo(self):
        return self._data.get('info', {})

    def updateGroupInfo(self, data):
        cur = self.groupInfo
        cur.update(data)
        return self.setGroupInfo(cur)

    def setGroupInfo(self, data):
        self._data['info'] = data
        return self.save()

    def _groupInfo(name, default=None):
        return lambda s: s.groupInfo.get(name, default)

    def _setGroupInfo(name, fn=lambda x: x):
        return lambda s, v: s.updateGroupInfo({name: fn(v)})

    adminGroup = property(_groupInfo('adminGroup', False),
                          _setGroupInfo('adminGroup', bool))
    name = property(_groupInfo('name', ''), _setGroupInfo('name'))
    logoUrl = property(_groupInfo('logoUrl'), _setGroupInfo('logoUrl'))

    def setName(self, name):
        self.name = name
        return self