def getWMBSInjectStatus(self, request=None): """ This service only provided by global queue """ options = {'group': True} if request: options.update(key=request) data = self.db.loadView('WorkQueue', 'wmbsInjectStatusByRequest', options) if request: if data['rows']: injectionStatus = data['rows'][0]['value'] inboxElement = self.getInboxElements( elementIDs=[data['rows'][0]['key']]) return injectionStatus and not inboxElement[0].get( 'OpenForNewData', False) else: raise WorkQueueNoMatchingElements("%s not found" % request) else: injectionStatus = dict( (x['key'], x['value']) for x in data.get('rows', [])) inboxElements = self.getInboxElements( elementIDs=injectionStatus.keys()) finalInjectionStatus = [] for element in inboxElements: if not element.get('OpenForNewData', False) and injectionStatus[element._id]: finalInjectionStatus.append({element._id: True}) else: finalInjectionStatus.append({element._id: False}) return finalInjectionStatus
def getWMBSInjectStatus(self, request=None): """ This service only provided by global queue except on draining agent """ options = {'group': True, 'reduce': True} if request: options.update(key=request) data = self.db.loadView('WorkQueue', 'wmbsInjectStatusByRequest', options) if request: if data['rows']: injectionStatus = data['rows'][0]['value'] inboxElement = self.getInboxElements(WorkflowName=request) requestOpen = inboxElement[0].get( 'OpenForNewData', False) if inboxElement else False return injectionStatus and not requestOpen else: raise WorkQueueNoMatchingElements("%s not found" % request) else: injectionStatus = dict( (x['key'], x['value']) for x in data.get('rows', [])) finalInjectionStatus = [] for request in injectionStatus.keys(): inboxElement = self.getInboxElements(WorkflowName=request) requestOpen = inboxElement[0].get( 'OpenForNewData', False) if inboxElement else False finalInjectionStatus.append( {request: injectionStatus[request] and not requestOpen}) return finalInjectionStatus
def getWMBSInjectStatus(self, request=None): """ This service only provided by global queue """ options = {'group': True} if request: options.update(key=request) data = self.db.loadView('WorkQueue', 'wmbsInjectStatusByRequest', options) if request: if data['rows']: return data['rows'][0]['value'] else: raise WorkQueueNoMatchingElements("%s not found" % request) else: return [{x['key']: x['value']} for x in data.get('rows', [])]