diff --git a/src/python/WMComponent/DBS3Buffer/DBSBufferBlock.py b/src/python/WMComponent/DBS3Buffer/DBSBufferBlock.py index 1a1fd63bc5..8a166ded30 100644 --- a/src/python/WMComponent/DBS3Buffer/DBSBufferBlock.py +++ b/src/python/WMComponent/DBS3Buffer/DBSBufferBlock.py @@ -232,10 +232,17 @@ def setProcessingVer(self, procVer): Set the block's processing version. """ # compatibility statement for old style proc ver (still needed ?) - if procVer.count("-") == 1: - self.data["processing_era"]["processing_version"] = procVer.split("-v")[1] + pver = procVer + if isinstance(pver, str) or isinstance(pver, bytes): + procVer = int(pver) + elif isinstance(pver, int): + procVer = pver + elif pver == None: + procVer = 0 else: - self.data["processing_era"]["processing_version"] = procVer + msg = "Provided procVer=%s of type %s cannot be converted to int" % (procVer, type(procVer)) + raise Exception(msg) + self.data["processing_era"]["processing_version"] = procVer self.data["processing_era"]["create_by"] = "WMAgent" self.data["processing_era"]["description"] = "" diff --git a/src/python/WMComponent/DBS3Buffer/DBSBufferFile.py b/src/python/WMComponent/DBS3Buffer/DBSBufferFile.py index d258544c9d..beee930153 100644 --- a/src/python/WMComponent/DBS3Buffer/DBSBufferFile.py +++ b/src/python/WMComponent/DBS3Buffer/DBSBufferFile.py @@ -387,8 +387,16 @@ def setProcessingVer(self, ver): Set the era """ - - self['processingVer'] = ver + if isinstance(ver, str) or isinstance(ver, bytes): + procVer = int(ver) + elif isinstance(ver, int): + procVer = ver + elif ver == None: + procVer = 0 + else: + msg = "Provided procVer=%s of type %s cannot be converted to int" % (ver, type(ver)) + raise Exception(msg) + self['processingVer'] = procVer return def setAcquisitionEra(self, era): diff --git a/src/python/WMCore/WMSpec/WMWorkload.py b/src/python/WMCore/WMSpec/WMWorkload.py index fdd161ca2f..f85e641d0b 100644 --- a/src/python/WMCore/WMSpec/WMWorkload.py +++ b/src/python/WMCore/WMSpec/WMWorkload.py @@ -949,6 +949,9 @@ def setProcessingVersion(self, processingVersions): Change the processing version for all tasks in the spec and then update all of the output LFNs and datasets to use the new processing version. + + :param processingVersions: can be any data-type but it is set from StdBase + which performs the input data sanitization/type already. """ stepNameMapping = self.getStepMapping() @@ -956,7 +959,15 @@ def setProcessingVersion(self, processingVersions): task.setProcessingVersion(processingVersions, stepChainMap=stepNameMapping) self.updateLFNsAndDatasets() - self.data.properties.processingVersion = processingVersions + if isinstance(processingVersions, int): + procVer = processingVersions + elif isinstance(processingVersions, dict) or isinstance(processingVersions, list): + procVer = processingVersions + else: + msg = "Provided procVer=%s of type %s cannot be converted to int" \ + % (processingVersions, type(processingVersions)) + raise Exception(msg) + self.data.properties.processingVersion = procVer return def setProcessingString(self, processingStrings): diff --git a/test/python/WMComponent_t/DBS3Buffer_t/DBSBufferFile_t.py b/test/python/WMComponent_t/DBS3Buffer_t/DBSBufferFile_t.py index 3062a937ea..231b095a52 100644 --- a/test/python/WMComponent_t/DBS3Buffer_t/DBSBufferFile_t.py +++ b/test/python/WMComponent_t/DBS3Buffer_t/DBSBufferFile_t.py @@ -947,7 +947,7 @@ def testProperties(self): configContent="MOREGIBBERISH") testFileA.setDatasetPath("/Cosmics/CRUZET09-PromptReco-v1/RECO") testFileA.setValidStatus(validStatus="VALID") - testFileA.setProcessingVer(ver="ProcVer") + testFileA.setProcessingVer(ver="123") testFileA.setAcquisitionEra(era="AcqEra") testFileA.setGlobalTag(globalTag="GlobalTag") testFileA.setDatasetParent(datasetParent="Parent")