def validateOptions(self): SubCommand.validateOptions(self) #check the format of jobids self.jobids = '' if getattr(self.options, 'jobids', None): self.jobids = validateJobids(self.options.jobids)
def validateOptions(self): """ Check if the sitelist parameter is a comma separater list of cms sitenames, and put the strings to be passed to the server to self """ SubCommand.validateOptions(self) #Checking if the sites provided by the user are valid cmsnames. Doing this because with only the #server error handling we get: # Server answered with: Invalid input parameter # Reason is: Incorrect 'siteblacklist' parameter #which is not really user friendly. #Moreover, I prefer to be independent from Lexicon. I'll the regex here. sn_re = "^T[1-3]_[A-Z]{2}(_[A-Za-z0-9]+)+$" #sn_re => SiteName_RegularExpression sn_rec = re.compile(sn_re) #sn_rec => SiteName_RegularExpressionCompiled self.sitewhitelist = '' self.siteblsklist = '' for siteList in ['sitewhitelist', 'siteblacklist']: result = '' paramVal = getattr(self.options, siteList, None) if paramVal: for site in paramVal.split(','): if not sn_rec.match(site): raise ConfigException("The sitename %s dows not look like a valid CMS name (not matching %s)" % (site, sn_re) ) result += "&%s=%s" % (siteList, site) setattr(self, siteList, result) #check the format of jobids self.jobids = '' if getattr(self.options, 'jobids', None): self.jobids = validateJobids(self.options.jobids)
def validateOptions(self): SubCommand.validateOptions(self) #check the format of jobids self.jobids = '' if getattr(self.options, 'jobids', None): self.jobids = validateJobids(self.options.jobids)
def validateOptions(self): """ Check if the sitelist parameter is a comma separater list of cms sitenames, and put the strings to be passed to the server to self """ SubCommand.validateOptions(self) #Checking if the sites provided by the user are valid cmsnames. Doing this because with only the #server error handling we get: # Server answered with: Invalid input parameter # Reason is: Incorrect 'siteblacklist' parameter #which is not really user friendly. #Moreover, I prefer to be independent from Lexicon. I'll the regex here. sn_re = "^T[1-3]_[A-Z]{2}(_[A-Za-z0-9]+)+$" #sn_re => SiteName_RegularExpression sn_rec = re.compile(sn_re) #sn_rec => SiteName_RegularExpressionCompiled self.sitewhitelist = '' self.siteblsklist = '' for siteList in ['sitewhitelist', 'siteblacklist']: result = '' paramVal = getattr(self.options, siteList, None) if paramVal: for site in paramVal.split(','): if not sn_rec.match(site): raise ConfigException("The sitename %s dows not look like a valid CMS name (not matching %s)" % (site, sn_re) ) result += "&%s=%s" % (siteList, site) setattr(self, siteList, result) #check the format of jobids self.jobids = '' if getattr(self.options, 'jobids', None): self.jobids = validateJobids(self.options.jobids) # Sanity checks for task sizes. Limits are purposely fairly generous to provide some level of future-proofing. # The server may restrict further. self.numcores = None if self.options.numcores != None: if self.options.numcores < 1 or self.options.numcores > 128: raise ConfigException("The number of requested cores (%d) must be between 1 and 128." % (self.options.numcores)) self.numcores = str(self.options.numcores) self.maxjobruntime = None if self.options.maxjobruntime != None: if self.options.maxjobruntime < 1 or self.options.maxjobruntime > 336: raise ConfigException("The requested max job runtime (%d hours) must be between 1 and 336 hours." % self.options.maxjobruntime) self.maxjobruntime = str(self.options.maxjobruntime) self.maxmemory = None if self.options.maxmemory != None: if self.options.maxmemory < 30 or self.options.maxmemory > 1024*30: raise ConfigException("The requested per-job memory (%d MB) must be between 30 and 30720 MB." % self.options.maxmemory) self.maxmemory = str(self.options.maxmemory) self.priority = None if self.options.priority != None: self.priority = str(self.options.priority)
def validateOptions(self): """ Check if the sitelist parameter is a comma separater list of cms sitenames, and put the strings to be passed to the server to self """ SubCommand.validateOptions(self) ## Check the format of the jobids option. if getattr(self.options, 'jobids'): jobidstuple = validateJobids(self.options.jobids) self.jobids = [str(jobid) for (_, jobid) in jobidstuple] #Checking if the sites provided by the user are valid cmsnames. Doing this because with only the #server error handling we get: # Server answered with: Invalid input parameter # Reason is: Incorrect 'siteblacklist' parameter #which is not really user friendly. #Moreover, I prefer to be independent from Lexicon. I'll the regex here. sn_re = "^T[1-3]_[A-Z]{2}(_[A-Za-z0-9]+)+$" #sn_re => SiteName_RegularExpression sn_rec = re.compile(sn_re) #sn_rec => SiteName_RegularExpressionCompiled for sitelist in ['sitewhitelist', 'siteblacklist']: if getattr(self.options, sitelist) is not None: for i, site_name in enumerate(getattr(self.options, sitelist).split(',')): if not sn_rec.match(site_name): msg = "The site name %s does not look like a valid CMS site name" % (site_name) msg += " (it is not matching the regular expression %s)." % (sn_re) raise ConfigurationException(msg) setattr(self, sitelist, getattr(self.options, sitelist).split(',')) ## Sanity checks for task sizes. Limits are purposely fairly generous to provide ## some level of future-proofing. The server may restrict further. if self.options.maxjobruntime is not None: if self.options.maxjobruntime < 60 or self.options.maxjobruntime > 336*60: msg = "The requested maximum job runtime (%d minutes) must be between 60 and 20160 minutes." % (self.options.maxjobruntime) raise ConfigurationException(msg) self.maxjobruntime = str(self.options.maxjobruntime) if self.options.maxmemory is not None: if self.options.maxmemory < 30 or self.options.maxmemory > 1024*30: msg = "The requested per-job memory (%d MB) must be between 30 and 30720 MB." % (self.options.maxmemory) raise ConfigurationException(msg) self.maxmemory = str(self.options.maxmemory) if self.options.numcores is not None: if self.options.numcores < 1 or self.options.numcores > 128: msg = "The requested number of cores (%d) must be between 1 and 128." % (self.options.numcores) raise ConfigurationException(msg) self.numcores = str(self.options.numcores) if self.options.priority is not None: self.priority = str(self.options.priority)
def validateOptions(self): #Figuring out the destination directory SubCommand.validateOptions(self) self.dest = None if self.options.outputpath is not None: if not os.path.isabs( self.options.outputpath ): self.dest = os.path.abspath( self.options.outputpath ) else: self.dest = self.options.outputpath #convert all to -1 if getattr(self.options, 'quantity', None) == 'all': self.options.quantity = -1 #check the format of jobids if getattr(self.options, 'jobids', None): self.options.jobids = validateJobids(self.options.jobids)
def validateOptions(self): #Figuring out the destination directory SubCommand.validateOptions(self) self.dest = None if self.options.outputpath is not None: if re.match("^[a-z]+://", self.options.outputpath): self.dest = self.options.outputpath elif not os.path.isabs(self.options.outputpath): self.dest = os.path.abspath(self.options.outputpath) else: self.dest = self.options.outputpath #convert all to -1 if getattr(self.options, 'quantity', None) == 'all': self.options.quantity = -1 #check the format of jobids if getattr(self.options, 'jobids', None): self.options.jobids = validateJobids(self.options.jobids) self.dump = self.options.dump
def validateOptions(self): # Figuring out the destination directory SubCommand.validateOptions(self) self.dest = None if self.options.outputpath is not None: if re.match("^[a-z]+://", self.options.outputpath): self.dest = self.options.outputpath elif not os.path.isabs(self.options.outputpath): self.dest = os.path.abspath(self.options.outputpath) else: self.dest = self.options.outputpath # convert all to -1 if getattr(self.options, "quantity", None) == "all": self.options.quantity = -1 # check the format of jobids if getattr(self.options, "jobids", None): self.options.jobids = validateJobids(self.options.jobids) self.dump = self.options.dump