def getTaskJobSummaryByRequest(self, requestName, sampleSize=1): options = { 'reduce': True, 'group_level': 5, 'startkey': [requestName], 'endkey': [requestName, {}] } results = self.couchDB.loadView(self.couchapp, "jobsByStatusWorkflow", options=options) jobDetails = {} for row in results['rows']: # row["key"] = ['workflow', 'task', 'jobstatus', 'exitCode', 'site'] startKey = row["key"][:4] endKey = [] site = row["key"][4] if site: startKey.append(site) endKey.extend(startKey) endKey.append({}) numOfError = row["value"] jobInfo = self.jobDetailByTasks(startKey, endKey, numOfError, sampleSize) jobDetails = nestedDictUpdate(jobDetails, jobInfo) return jobDetails
def updateBulkDocuments(self, doc_ids, paramsToUpdate, updateLimits=1000): uri = '/%s/_bulk_docs/' % self.name conflictDocIDs = [] for ids in grouper(doc_ids, updateLimits): # get original documens docs = self.allDocs(options={"include_docs": True}, keys=ids)['rows'] data = {} data['docs'] = [] for j in docs: doc = {} doc.update(j['doc']) nestedDictUpdate(doc, paramsToUpdate) data['docs'].append(doc) if data['docs']: retval = self.post(uri, data) for result in retval: if result.get('error', None) == 'conflict': conflictDocIDs.append(result['id']) return conflictDocIDs
def updateBulkDocuments(self, doc_ids, paramsToUpdate, updateLimits=1000): uri = '/%s/_bulk_docs/' % self.name conflictDocIDs = [] for ids in grouper(doc_ids, updateLimits): # get original documens docs = self.allDocs(options={"include_docs": True}, keys=ids)['rows'] data = {} data['docs'] = [] for j in docs: doc = {} doc.update(j['doc']) nestedDictUpdate(doc, paramsToUpdate) data['docs'].append(doc) if len(data['docs']) > 0: retval = self.post(uri, data) for result in retval: if result.get('error', None) == 'conflict': conflictDocIDs.append(result['id']) return conflictDocIDs
def getTaskJobSummaryByRequest(self, requestName, sampleSize=1): options = {'reduce': True, 'group_level': 5, 'startkey': [requestName], 'endkey': [requestName, {}]} results = self.couchDB.loadView(self.couchapp, "jobsByStatusWorkflow", options=options) jobDetails = {} for row in results['rows']: # row["key"] = ['workflow', 'task', 'jobstatus', 'exitCode', 'site'] startKey = row["key"][:4] endKey = [] site = row["key"][4] if site: startKey.append(site) endKey.extend(startKey) endKey.append({}) numOfError = row["value"] jobInfo = self.jobDetailByTasks(startKey, endKey, numOfError, sampleSize) jobDetails = nestedDictUpdate(jobDetails, jobInfo) return jobDetails