示例#1
0
	def processBlock(self, block):
		if block[DataProvider.Locations] is not None:
			sites = self._locationfilter.filterList(block[DataProvider.Locations])
			if (sites is not None) and (len(sites) == 0) and (len(block[DataProvider.FileList]) != 0):
				if not len(block[DataProvider.Locations]):
					self._log.warning('Block %s is not available at any site!', DataProvider.bName(block))
				elif not len(sites):
					self._log.warning('Block %s is not available at any selected site!', DataProvider.bName(block))
			block[DataProvider.Locations] = sites
		return block
示例#2
0
 def processBlock(self, block):
     if block[DataProvider.Locations] is not None:
         sites = self._locationfilter.filterList(
             block[DataProvider.Locations])
         if (sites is not None) and (len(sites) == 0) and (len(
                 block[DataProvider.FileList]) != 0):
             if not len(block[DataProvider.Locations]):
                 self._log.warning('Block %s is not available at any site!',
                                   DataProvider.bName(block))
             elif not len(sites):
                 self._log.warning(
                     'Block %s is not available at any selected site!',
                     DataProvider.bName(block))
         block[DataProvider.Locations] = sites
     return block
示例#3
0
	def processBlock(self, block):
		# Check entry consistency
		events = sum(imap(lambda x: x[DataProvider.NEntries], block[DataProvider.FileList]))
		if block.setdefault(DataProvider.NEntries, events) != events:
			self._handleError('Inconsistency in block %s: Number of events doesn\'t match (b:%d != f:%d)' % (
				DataProvider.bName(block), block[DataProvider.NEntries], events), self._mode)
		return block
示例#4
0
 def processBlock(self, block):
     # Check entry consistency
     events = sum(
         imap(lambda x: x[DataProvider.NEntries],
              block[DataProvider.FileList]))
     if block.setdefault(DataProvider.NEntries, events) != events:
         self._handleError(
             'Inconsistency in block %s: Number of events doesn\'t match (b:%d != f:%d)'
             % (DataProvider.bName(block), block[DataProvider.NEntries],
                events), self._mode)
     return block
示例#5
0
    def processBlock(self, block):
        # Check uniqueness of URLs
        recordedBlockURL = []
        if self._checkURL != DatasetUniqueMode.ignore:

            def processFI(fiList):
                for fi in fiList:
                    urlHash = md5_hex(
                        repr((fi[DataProvider.URL], fi[DataProvider.NEntries],
                              fi.get(DataProvider.Metadata))))
                    if urlHash in self._recordedURL:
                        msg = 'Multiple occurences of URL: %r!' % fi[
                            DataProvider.URL]
                        msg += ' (This check can be configured with %r)' % 'dataset check unique url'
                        if self._checkURL == DatasetUniqueMode.warn:
                            self._log.warning(msg)
                        elif self._checkURL == DatasetUniqueMode.abort:
                            raise DatasetError(msg)
                        elif self._checkURL == DatasetUniqueMode.skip:
                            continue
                    self._recordedURL.add(urlHash)
                    recordedBlockURL.append(urlHash)
                    yield fi

            block[DataProvider.FileList] = list(
                processFI(block[DataProvider.FileList]))
            recordedBlockURL.sort()

        # Check uniqueness of blocks
        if self._checkBlock != DatasetUniqueMode.ignore:
            blockHash = md5_hex(
                repr((block.get(DataProvider.Dataset),
                      block[DataProvider.BlockName], recordedBlockURL,
                      block[DataProvider.NEntries],
                      block[DataProvider.Locations],
                      block.get(DataProvider.Metadata))))
            if blockHash in self._recordedBlock:
                msg = 'Multiple occurences of block: "%s"!' % DataProvider.bName(
                    block)
                msg += ' (This check can be configured with %r)' % 'dataset check unique block'
                if self._checkBlock == DatasetUniqueMode.warn:
                    self._log.warning(msg)
                elif self._checkBlock == DatasetUniqueMode.abort:
                    raise DatasetError(msg)
                elif self._checkBlock == DatasetUniqueMode.skip:
                    return None
            self._recordedBlock.add(blockHash)
        return block
示例#6
0
	def processBlock(self, block):
		# Check uniqueness of URLs
		recordedBlockURL = []
		if self._checkURL != DatasetUniqueMode.ignore:
			def processFI(fiList):
				for fi in fiList:
					urlHash = md5_hex(repr((fi[DataProvider.URL], fi[DataProvider.NEntries], fi.get(DataProvider.Metadata))))
					if urlHash in self._recordedURL:
						msg = 'Multiple occurences of URL: %r!' % fi[DataProvider.URL]
						msg += ' (This check can be configured with %r)' % 'dataset check unique url'
						if self._checkURL == DatasetUniqueMode.warn:
							self._log.warning(msg)
						elif self._checkURL == DatasetUniqueMode.abort:
							raise DatasetError(msg)
						elif self._checkURL == DatasetUniqueMode.skip:
							continue
					self._recordedURL.add(urlHash)
					recordedBlockURL.append(urlHash)
					yield fi
			block[DataProvider.FileList] = list(processFI(block[DataProvider.FileList]))
			recordedBlockURL.sort()

		# Check uniqueness of blocks
		if self._checkBlock != DatasetUniqueMode.ignore:
			blockHash = md5_hex(repr((block.get(DataProvider.Dataset), block[DataProvider.BlockName],
				recordedBlockURL, block[DataProvider.NEntries],
				block[DataProvider.Locations], block.get(DataProvider.Metadata))))
			if blockHash in self._recordedBlock:
				msg = 'Multiple occurences of block: "%s"!' % DataProvider.bName(block)
				msg += ' (This check can be configured with %r)' % 'dataset check unique block'
				if self._checkBlock == DatasetUniqueMode.warn:
					self._log.warning(msg)
				elif self._checkBlock == DatasetUniqueMode.abort:
					raise DatasetError(msg)
				elif self._checkBlock == DatasetUniqueMode.skip:
					return None
			self._recordedBlock.add(blockHash)
		return block