def validateCommon(self): """Common validation stuff""" try: Lexicon.requestName(self.wmspec.name()) except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Workflow name validation error: %s" % str(ex)) raise error if self.initialTask.siteWhitelist(): if isinstance(self.initialTask.siteWhitelist(), basestring): error = WorkQueueWMSpecError(self.wmspec, 'Invalid site whitelist: Must be tuple/list but is %s' % type( self.initialTask.siteWhitelist())) raise error try: [Lexicon.cmsname(site) for site in self.initialTask.siteWhitelist()] except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Site whitelist validation error: %s" % str(ex)) raise error else: error = WorkQueueWMSpecError(self.wmspec, "Site whitelist validation error: Empty site whitelist") raise error if self.initialTask.siteBlacklist(): if isinstance(self.initialTask.siteBlacklist(), basestring): error = WorkQueueWMSpecError(self.wmspec, 'Invalid site blacklist: Must be tuple/list but is %s' % type( self.initialTask.siteBlacklist())) raise error try: [Lexicon.cmsname(site) for site in self.initialTask.siteBlacklist()] except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Site blacklist validation error: %s" % str(ex)) raise error # splitter settings if self.args.get('SliceSize', 1) <= 0: error = WorkQueueWMSpecError(self.wmspec, 'Zero or negative SliceSize parameter') raise error if self.args.get('SubSliceSize', 1) <= 0: error = WorkQueueWMSpecError(self.wmspec, 'Zero or negative SubSliceSize parameter') raise error # check input dataset is valid try: if self.initialTask.getInputDatasetPath(): Lexicon.dataset(self.initialTask.getInputDatasetPath()) except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Dataset validation error: %s" % str(ex)) raise error # if pileup is found, check that they are valid datasets try: pileupDatasets = self.wmspec.listPileupDatasets() for dbsUrl in pileupDatasets: for dataset in pileupDatasets[dbsUrl]: Lexicon.dataset(dataset) except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Pileup dataset validation error: %s" % str(ex)) raise error
def validateCommon(self): """Common validation stuff""" try: Lexicon.requestName(self.wmspec.name()) except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Workflow name validation error: %s" % str(ex)) raise error if self.initialTask.siteWhitelist(): if isinstance(self.initialTask.siteWhitelist(), basestring): error = WorkQueueWMSpecError(self.wmspec, 'Invalid site whitelist: Must be tuple/list but is %s' % type( self.initialTask.siteWhitelist())) raise error try: [Lexicon.cmsname(site) for site in self.initialTask.siteWhitelist()] except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Site whitelist validation error: %s" % str(ex)) raise error if self.initialTask.siteBlacklist(): if isinstance(self.initialTask.siteBlacklist(), basestring): error = WorkQueueWMSpecError(self.wmspec, 'Invalid site blacklist: Must be tuple/list but is %s' % type( self.initialTask.siteBlacklist())) raise error try: [Lexicon.cmsname(site) for site in self.initialTask.siteBlacklist()] except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Site blacklist validation error: %s" % str(ex)) raise error # splitter settings if self.args.get('SliceSize', 1) <= 0: error = WorkQueueWMSpecError(self.wmspec, 'Zero or negative SliceSize parameter') raise error if self.args.get('SubSliceSize', 1) <= 0: error = WorkQueueWMSpecError(self.wmspec, 'Zero or negative SubSliceSize parameter') raise error # check input dataset is valid try: if self.initialTask.getInputDatasetPath(): Lexicon.dataset(self.initialTask.getInputDatasetPath()) except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Dataset validation error: %s" % str(ex)) raise error # if pileup is found, check that they are valid datasets try: pileupDatasets = self.wmspec.listPileupDatasets() for dbsUrl in pileupDatasets: for dataset in pileupDatasets[dbsUrl]: Lexicon.dataset(dataset) except Exception as ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Pileup dataset validation error: %s" % str(ex)) raise error
class StartPolicyInterface(PolicyInterface): """Interface for start policies""" def __init__(self, **args): PolicyInterface.__init__(self, **args) self.workQueueElements = [] self.wmspec = None self.team = None self.initialTask = None self.splitParams = None self.dbs_pool = {} self.data = {} self.lumi = None self.couchdb = None self.rejectedWork = [] # List of inputs that were rejected self.pileupData = {} def split(self): """Apply policy to spec""" raise NotImplementedError def validate(self): """Check params and spec are appropriate for the policy""" raise NotImplementedError def validateCommon(self): """Common validation stuff""" try: Lexicon.requestName(self.wmspec.name()) except Exception, ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError( self.wmspec, "Workflow name validation error: %s" % str(ex)) raise error if self.initialTask.siteWhitelist(): if type(self.initialTask.siteWhitelist()) in types.StringTypes: error = WorkQueueWMSpecError( self.wmspec, 'Invalid site whitelist: Must be tuple/list but is %s' % type(self.initialTask.siteWhitelist())) raise error try: [ Lexicon.cmsname(site) for site in self.initialTask.siteWhitelist() ] except Exception, ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError( self.wmspec, "Site whitelist validation error: %s" % str(ex)) raise error
if self.initialTask.siteWhitelist(): if type(self.initialTask.siteWhitelist()) in types.StringTypes: error = WorkQueueWMSpecError(self.wmspec, 'Invalid site whitelist: Must be tuple/list but is %s' % type(self.initialTask.siteWhitelist())) raise error try: [Lexicon.cmsname(site) for site in self.initialTask.siteWhitelist()] except Exception, ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Site whitelist validation error: %s" % str(ex)) raise error if self.initialTask.siteBlacklist(): if type(self.initialTask.siteBlacklist()) in types.StringTypes: error = WorkQueueWMSpecError(self.wmspec, 'Invalid site blacklist: Must be tuple/list but is %s' % type(self.initialTask.siteBlacklist())) raise error try: [Lexicon.cmsname(site) for site in self.initialTask.siteBlacklist()] except Exception, ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError(self.wmspec, "Site blacklist validation error: %s" % str(ex)) raise error # splitter settings if self.args.get('SliceSize', 1) <= 0: error = WorkQueueWMSpecError(self.wmspec, 'Zero or negative SliceSize parameter') raise error if self.args.get('SubSliceSize', 1) <= 0: error = WorkQueueWMSpecError(self.wmspec, 'Zero or negative SubSliceSize parameter') raise error # check input dataset is valid try: if self.initialTask.getInputDatasetPath():
except Exception, ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError( self.wmspec, "Site whitelist validation error: %s" % str(ex)) raise error if self.initialTask.siteBlacklist(): if type(self.initialTask.siteBlacklist()) in types.StringTypes: error = WorkQueueWMSpecError( self.wmspec, 'Invalid site blacklist: Must be tuple/list but is %s' % type(self.initialTask.siteBlacklist())) raise error try: [ Lexicon.cmsname(site) for site in self.initialTask.siteBlacklist() ] except Exception, ex: # can throw many errors e.g. AttributeError, AssertionError etc. error = WorkQueueWMSpecError( self.wmspec, "Site blacklist validation error: %s" % str(ex)) raise error # splitter settings if self.args.get('SliceSize', 1) <= 0: error = WorkQueueWMSpecError( self.wmspec, 'Zero or negative SliceSize parameter') raise error if self.args.get('SubSliceSize', 1) <= 0: error = WorkQueueWMSpecError(