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
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