예제 #1
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "CMSSWVersion", "Requestor", "ScramArch",
         "PrimaryDataset", "GlobalTag", "RequestSizeEvents",
         "GenConfigCacheID", "StepOneConfigCacheID", "StepTwoConfigCacheID",
         "GenOutputModuleName", "StepOneOutputModuleName"]
예제 #2
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "CMSSWVersion",
         "AcquisitionEra",
         "ScramArch",
         "GlobalTag",
         "TaskChain",
         ]
     self.optionalFields = [
         "SiteWhitelist",
         "SiteBlacklist",
         "BlockWhitelist",
         "BlockBlacklist",
         "RunWhitelist",
         "RunBlacklist",
         "ProcessingVersion",
         "CouchUrl",
         "CouchDBName",
         "DbsUrl",
         "UnmergedLFNBase",
         "MergedLFNBase",
         "MinMergeSize",
         "MaxMergeSize",
         "MaxMergeEvents"
         ]
예제 #3
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "CMSSWVersion",
         "ScramArch",
         "GlobalTag",
         "InputDataset",
         "StepOneConfigCacheID",
         ]
     self.optionalFields = [
         "StepThreeConfigCacheID",
         "StepOneOutputModuleName"
         "StepTwoConfigCacheID",
         "StepTwoOutputModuleName",
         "SiteWhitelist",
         "SiteBlacklist",
         "BlockWhitelist",
         "BlockBlacklist",
         "RunWhitelist",
         "RunBlacklist",
         "CouchUrl",
         "CouchDBName",
         "DbsUrl",
         "UnmergedLFNBase",
         "MergedLFNBase",
         "MinMergeSize",
         "MaxMergeSize",
         "MaxMergeEvents"
         ]
예제 #4
0
    def validate(self):
        """
        _validate_

        Check that basic required parameters are provided and do some more
        detailed checks on each of the parameters for the chain sub steps
        """
        RequestSchema.validate(self)

        try:
            numTasks = int(self['TaskChain'])
        except ValueError:
            msg = "TaskChain parameter is not an Integer"
            raise RuntimeError(msg)

        for i in range(1, numTasks + 1):
            if not self.has_key("Task%s" % i):
                msg = "No Task%s entry present in request" % i
                raise RuntimeError, msg

            if i == 1:
                if self['Task1'].has_key('InputDataset'):
                    validateProcFirstTask(self['Task1'])
                else:
                    validateGenFirstTask(self['Task1'])
                validateSubTask(self['Task1'], firstTask=True)
            else:
                validateSubTask(self['Task%s' % i])
예제 #5
0
    def validate(self):
        """
        _validate_
        
        Check that basic required parameters are provided and do some more
        detailed checks on each of the parameters for the chain sub steps
        """
        RequestSchema.validate(self)
        
        try:
            numTasks = int(self['TaskChain'])
        except ValueError:
            msg = "TaskChain parameter is not an Integer"
            raise RuntimeError(msg)
            
        for i in range (1, numTasks+1):
            if not self.has_key("Task%s" % i):
                msg = "No Task%s entry present in request" % i
                raise RuntimeError, msg

            if i == 1:
                if self['Task1'].has_key('InputDataset'):
                    validateProcFirstTask(self['Task1'])
                else:
                    validateGenFirstTask(self['Task1'])
                validateSubTask(self['Task1'], firstTask = True)
            else:
                validateSubTask(self['Task%s' % i])
예제 #6
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "CMSSWVersion",
         "ScramArch",
         "GlobalTag",
         "InputDataset"
         ]
     self.optionalFields = [
         "SiteWhitelist",
         "SiteBlacklist",
         "BlockWhitelist",
         "BlockBlacklist",
         "RunWhitelist",
         "RunBlacklist",
         "Scenario",
         "ProcessingConfig",
         "ProcessingVersion",
         "SkimConfig",
         "CouchUrl",
         "CouchDBName",
         "DbsUrl",
         "UnmergedLFNBase",
         "MergedLFNBase",
         "MinMergeSize",
         "MaxMergeSize",
         "MaxMergeEvents"
         ]
예제 #7
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "CMSSWVersion", "Requestor", "ScramArch", "PrimaryDataset",
         "GlobalTag", "RequestSizeEvents", "GenConfigCacheID",
         "StepOneConfigCacheID", "StepTwoConfigCacheID",
         "GenOutputModuleName", "StepOneOutputModuleName"
     ]
예제 #8
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.setdefault("CMSSWVersion", None)
     self.setdefault("ConfigCacheID", None)
     self.setdefault("PileupDataset", None)
     self.validateFields = [
         "CMSSWVersion", "ConfigCacheID", "PrimaryDataset"
     ]
예제 #9
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "OriginalRequestName",
         "InitialTaskPath",
         "ACDCServer",
         "ACDCDatabase"
         ]
예제 #10
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.setdefault("CMSSWVersion", None)
     self.setdefault("ProcessingVersion", None)
     self.setdefault("GlobalTag", None)
     self.setdefault("InputDataset", None)
     self.setdefault("DBSURL", None)
     self.validateFields = [
         "CMSSWVersion", "ConfigCacheID", "GlobalTag", "InputDataset"
     ]
예제 #11
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.setdefault("CMSSWVersion", None)
     self.setdefault("ProdConfigCacheID", None)
     self.setdefault("PileupDataset", None)
     self.validateFields = [
         "CMSSWVersion",
         "ProdConfigCacheID",
         "PrimaryDataset"
         ]
예제 #12
0
 def __init__(self):
     RequestSchema.__init__(self)
     # not used yet
     self.validateFields = [
         'InputDatasets',
         'CMSSWVersion',
         'ScramArch',
         'Group',
         'DbsUrl'
         ]
예제 #13
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "CMSSWVersion", "ScramArch", "GlobalTag", "InputDataset"
     ]
     self.optionalFields = [
         "SiteWhitelist", "SiteBlacklist", "BlockWhitelist",
         "BlockBlacklist", "RunWhitelist", "RunBlacklist", "Scenario",
         "ProcessingConfig", "ProcessingVersion", "SkimConfig", "CouchUrl",
         "CouchDBName", "DbsUrl", "UnmergedLFNBase", "MergedLFNBase",
         "MinMergeSize", "MaxMergeSize", "MaxMergeEvents"
     ]
예제 #14
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.setdefault("CMSSWVersion", None)
     self.setdefault("ProcessingVersion", None)
     self.setdefault("GlobalTag", None)
     self.setdefault("InputDataset", None)
     self.setdefault("DBSURL", None)
     self.validateFields = [
         "CMSSWVersion",
         "ConfigCacheID",
         "GlobalTag",
         "InputDataset"
         ]
예제 #15
0
    def validate(self):
        def _checkSiteList(list):
            if self.has_key(list) and hasattr(self,'allCMSNames'):
                for site in self[list]:
                    if not site in self.allCMSNames: #self.allCMSNames needs to be initialized to allow sitelisk check
                        raise RuntimeError("The site " + site + " provided in the " + list + " param has not been found. Check https://cmsweb.cern.ch/sitedb/json/index/SEtoCMSName?name= for a list of known sites")

        RequestSchema.validate(self)

        _checkSiteList("SiteWhitelist")
        _checkSiteList("SiteBlacklist")

        if self.get("RequestName").count(' ') > 0:
            raise RuntimeError("RequestName cannot contain spaces")
예제 #16
0
def getNewRequestSchema(reqInputArgs):
    """
    Create a new schema
    
    """
    reqSchema = RequestSchema()
    reqSchema.update(reqInputArgs)

    currentTime = time.strftime("%y%m%d_%H%M%S", time.localtime(time.time()))
    secondFraction = int(10000 * (time.time() % 1.0))
    requestString = reqSchema.get("RequestString", "")
    if requestString != "":
        reqSchema["RequestName"] = "%s_%s_%s_%s" % (reqSchema["Requestor"], requestString, currentTime, secondFraction)
    else:
        reqSchema["RequestName"] = "%s_%s_%s" % (reqSchema["Requestor"], currentTime, secondFraction)
    return reqSchema
예제 #17
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "CMSSWVersion",
         "AcquisitionEra",
         "ScramArch",
         "GlobalTag",
         "TaskChain",
     ]
     self.optionalFields = [
         "SiteWhitelist", "SiteBlacklist", "BlockWhitelist",
         "BlockBlacklist", "RunWhitelist", "RunBlacklist",
         "ProcessingVersion", "CouchUrl", "CouchDBName", "DbsUrl",
         "UnmergedLFNBase", "MergedLFNBase", "MinMergeSize", "MaxMergeSize",
         "MaxMergeEvents"
     ]
예제 #18
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "CMSSWVersion",
         "ScramArch",
         "GlobalTag",
         "InputDataset",
         "StepOneConfigCacheID",
     ]
     self.optionalFields = [
         "StepThreeConfigCacheID", "StepOneOutputModuleName"
         "StepTwoConfigCacheID", "StepTwoOutputModuleName", "SiteWhitelist",
         "SiteBlacklist", "BlockWhitelist", "BlockBlacklist",
         "RunWhitelist", "RunBlacklist", "CouchUrl", "CouchDBName",
         "DbsUrl", "UnmergedLFNBase", "MergedLFNBase", "MinMergeSize",
         "MaxMergeSize", "MaxMergeEvents"
     ]
예제 #19
0
def getNewRequestSchema(reqInputArgs):
    """
    Create a new schema
    
    """
    reqSchema = RequestSchema()
    reqSchema.update(reqInputArgs)

    currentTime = time.strftime('%y%m%d_%H%M%S', time.localtime(time.time()))
    secondFraction = int(10000 * (time.time() % 1.0))
    requestString = reqSchema.get('RequestString', "")
    if requestString != "":
        reqSchema['RequestName'] = "%s_%s_%s_%s" % (
            reqSchema['Requestor'], requestString, currentTime, secondFraction)
    else:
        reqSchema['RequestName'] = "%s_%s_%s" % (reqSchema['Requestor'],
                                                 currentTime, secondFraction)
    return reqSchema
예제 #20
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "CMSSWVersion",
         "GlobalTag",
         "InputDatasets",
         "DbsUrl",
         "LFNCategory",
         "OutputTiers"
         ]
     self.optionalFields = [
         "SiteWhitelist",
         "SiteBlackList",
         "BlockWhitelist",
         "BlockBlacklist",
         "RunWhitelist",
         "RunBlacklist",
         "Scenario"
         ]
예제 #21
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.setdefault("ProductionChannel", None)
     self.setdefault("Label", None)
     self.setdefault("Activity", "Production")
     self.setdefault("CMSSWVersion", None)
     self.setdefault("Category", "MC")
     self.setdefault("Configuration", None)
     self.setdefault("PileupDataset", None)
     self.setdefault("FinalDestination", None)
     self.setdefault("PSetHash", None)
     self.setdefault("CmsGenConfiguration", None)
     self.setdefault("CmsGenParameters", None)
     self.setdefault("CmsGenSelectionEfficiency", None)
     self.validateFields = [
         "ProductionChannel",
         "CMSSWVersion",
         "Label",
         "Configuration",
         "PSetHash",
         "CmsGenConfiguration",
         "CmsGenParameters",
         ]
예제 #22
0
    def __init__(self):
        RequestSchema.__init__(self)

        self.validateFields = []
        self.optionalFields = []

        self.validateFields = [
            "CMSSWVersion",
            "ScramArch",
            "InputDataset",
            "Requestor",
            "RequestorDN"
            ]
        self.optionalFields = [
            "SiteWhitelist",
            "SiteBlacklist",
            "BlockWhitelist",
            "BlockBlacklist",
            "RunWhitelist",
            "RunBlacklist",
            "CouchUrl",
            "CouchDBName",
            "DbsUrl",
            ]
예제 #23
0
    def __init__(self):
        RequestSchema.__init__(self)

        self.validateFields = []
        self.optionalFields = []

        self.validateFields = [
            "CMSSWVersion",
            "ScramArch",
            "InputDataset",
            "Requestor",
            "RequestorDN"
            ]
        self.optionalFields = [
            "SiteWhitelist",
            "SiteBlacklist",
            "BlockWhitelist",
            "BlockBlacklist",
            "RunWhitelist",
            "RunBlacklist",
            "CouchUrl",
            "CouchDBName",
            "DbsUrl",
            ]
예제 #24
0
def makeRequest(kwargs, couchUrl, couchDB, wmstatUrl):
    logging.info(kwargs)
    """ Handles the submission of requests """
    # make sure no extra spaces snuck in
    for k, v in kwargs.iteritems():
        if isinstance(v, str):
            kwargs[k] = v.strip()
    # Create a new schema
    schema = RequestSchema()
    schema.update(kwargs)
    
    currentTime = time.strftime('%y%m%d_%H%M%S',
                             time.localtime(time.time()))
    secondFraction = int(10000 * (time.time()%1.0))
    requestString = schema.get('RequestString', "")
    if requestString != "":
        schema['RequestName'] = "%s_%s_%s_%s" % (
        schema['Requestor'], requestString, currentTime, secondFraction)
    else:
        schema['RequestName'] = "%s_%s_%s" % (schema['Requestor'], currentTime, secondFraction)
    schema["Campaign"] = kwargs.get("Campaign", "")
    if 'ProcScenario' in kwargs and 'ProcConfigCacheID' in kwargs:
        # Use input mode to delete the unused one
        inputMode = kwargs.get('inputMode', None)
        if inputMode == 'scenario':
            del schema['ProcConfigCacheID']

    if 'EnableDQMHarvest' not in kwargs:
        schema["EnableHarvesting"] = False

    if kwargs.has_key("InputDataset"):
        schema["InputDatasets"] = [kwargs["InputDataset"]]
    if kwargs.has_key("FilterEfficiency"):
        kwargs["FilterEfficiency"] = float(kwargs["FilterEfficiency"])
    skimNumber = 1
    # a list of dictionaries
    schema["SkimConfigs"] = []
    while kwargs.has_key("SkimName%s" % skimNumber):
        d = {}
        d["SkimName"] = kwargs["SkimName%s" % skimNumber]
        d["SkimInput"] = kwargs["SkimInput%s" % skimNumber]
        d["Scenario"] = kwargs["Scenario"]

        if kwargs.get("Skim%sConfigCacheID" % skimNumber, None) != None:
            d["ConfigCacheID"] = kwargs["Skim%sConfigCacheID" % skimNumber]

        schema["SkimConfigs"].append(d)
        skimNumber += 1

    if kwargs.has_key("DataPileup") or kwargs.has_key("MCPileup"):
        schema["PileupConfig"] = {}
        if kwargs.has_key("DataPileup") and kwargs["DataPileup"] != "":
            schema["PileupConfig"]["data"] = [kwargs["DataPileup"]]
        if kwargs.has_key("MCPileup") and kwargs["MCPileup"] != "":
            schema["PileupConfig"]["mc"] = [kwargs["MCPileup"]]

    for runlist in ["RunWhitelist", "RunBlacklist"]:
        if runlist in kwargs:
            schema[runlist] = parseRunList(kwargs[runlist])
    for blocklist in ["BlockWhitelist", "BlockBlacklist"]:
        if blocklist in kwargs:
            schema[blocklist] = parseBlockList(kwargs[blocklist])
    if "DqmSequences" in kwargs:
            schema["DqmSequences"] = parseDqmSequences(kwargs["DqmSequences"])
    validate(schema)

    # Get the DN
    schema['RequestorDN'] = cherrypy.request.user.get('dn', 'unknown')
    
    try:
        request = buildWorkloadForRequest(typename = kwargs["RequestType"],
                                          schema = schema)
    except WMSpecFactoryException, ex:
        msg = ex._message
        raise HTTPError(400, "Error in Workload Validation: %s" % msg)
예제 #25
0
 def __init__(self):
     RequestSchema.__init__(self)
     # not used yet
     self.validateFields = [
         'InputDatasets', 'CMSSWVersion', 'ScramArch', 'Group', 'DbsUrl'
     ]
예제 #26
0
 def validate(self):
     RequestSchema.validate(self)
예제 #27
0
 def __init__(self):
     RequestSchema.__init__(self)
     self.validateFields = [
         "OriginalRequestName", "InitialTaskPath", "ACDCServer",
         "ACDCDatabase"
     ]
예제 #28
0
 def validate(self):
     RequestSchema.validate(self)
예제 #29
0
 def validate(self):
     RequestSchema.validate(self)
     if self['InputDataset'].count('/') != 3:
         raise RuntimeError, "Need three slashes in InputDataset "+self['InputDataset']
예제 #30
0
 def validate(self):
     RequestSchema.validate(self)
     assert(isinstance(self['OutputTiers'], list))
     for tier in self['OutputTiers']:
         assert(tier in ['RECO', 'AOD', 'ALCA'])
예제 #31
0
 def validate(self):
     RequestSchema.validate(self)
     if self['InputDataset'].count('/') != 3:
         raise RuntimeError, "Need three slashes in InputDataset " + self[
             'InputDataset']