Esempio n. 1
0
 def buildCMGDBReport(self):
     """Finds CMGDB ID of parent sample and sample"""
     cmgdbAPI = CmgdbToolsApi(self.development)
     cmgdbAPI.connect()
     self.dataset_details['CMGDBID'] = cmgdbAPI.getDatasetIDWithName(
         self.dataset_details['CMGDBName'])
     self.dataset_details['ParentCMGDBID'] = cmgdbAPI.getDatasetIDWithName(
         self.dataset_details['ParentCMGDBName'])
    def __init__(self, username, development=False):
        """Initialise CMGDB and set username of who is publishing

        'force' takes a boolean value which determines whether
        a lack of log file can be ignored
        """
        self.development = development
        self._username = username
        self._cmgdbAPI = CmgdbToolsApi(self.development)
        self._cmgdbAPI.connect()
Esempio n. 3
0
    def __init__(self, username, password, development=False):
        """Initialise CMGDB and set username and password
			
		'username' takes the NICE username of the current user, NOT the files owner on EOS
		'password' takes the NICE password of the current user
		'force' takes a boolean value which determines whether a lack of log file can be ignored
		"""
        self.development = development
        self._cmgdbAPI = CmgdbToolsApi(self.development)
        self._cmgdbAPI.connect()
        self._username = username
        self._password = password
def addInformationToCMGDB(dir_name, valRunInfo, development=False):
    validationRunsLibraryPath = "/afs/cern.ch/user/a/anantoni/www/cmg-compare-validation-runs/ValidationRuns"
    cmgdbAPI = CmgdbToolsApi(development)
    cmgdbAPI.connect()

    #get all the information from the validation run object
    release_info = valRunInfo.getReleaseInfo()
    components_info = valRunInfo.getComponentsInfo()
    analyzers_info = valRunInfo.getAnalyzersInfo()
    root_files_info = valRunInfo.getRootFilesInfo()

    taghash = []
    for i in release_info['Tags']:
        a = hash((i['package'], i['tag']))  # Create hash code for the tag set
        taghash.append(a)
    taghash.sort()
    endhash = hash(tuple(taghash))

    tagSetID = cmgdbAPI.getTagSetID(
        endhash)  # check if tag set is already on CMGDB

    if tagSetID is None:  # If it isn't found, add the tags, and the tag set
        if release_info['Tags']:
            tagIDs = []
            for row in release_info['Tags']:
                tagID = cmgdbAPI.addTag(row["package"], row["tag"])
                if tagID is not None:
                    tagIDs.append(tagID)

            tagSetID = cmgdbAPI.addTagSet(release_info['Release'], endhash)
            for tagID in tagIDs:
                cmgdbAPI.addTagToSet(tagID, tagSetID)

    if tagSetID is not None:
        validationRunID = cmgdbAPI.addValidationRun(
            tagSetID, components_info[components_info.keys()[0]]
            ['number of events processed'])
    for component in components_info.keys():
        for analyzer in analyzers_info.keys():
            analyzerID = cmgdbAPI.addAnalyzer(analyzer)
            for root_file in root_files_info[component][analyzer]:

                datasetInfo = cmgdbAPI.addRootFilesToValidationRunWithAnalyzerOnDataset(
                    validationRunID,
                    components_info[component]['dataset_on_eos'], component,
                    analyzer, root_file)
                destinationPath = os.path.join(validationRunsLibraryPath,
                                               datasetInfo[1],
                                               datasetInfo[2][1:],
                                               repr(validationRunID))
                os.system("mkdir -p " + destinationPath)
                os.system("cp -r " + component + " " + destinationPath)
Esempio n. 5
0
def unPublish(dsName, fileown, user, development=False):

    if re.search("---", dsName):
        fileown = getDbsUser(dsName)
        dsName2 = getCastor(dsName)
        if dsName2 is None:
            print "\nError, " + dsName + " is not valid, please use valid name\n"
            return None
        else:
            dsName = dsName2

    if len(dsName.lstrip(os.sep).rstrip(os.sep).split(os.sep)) < 3:
        print "Error, " + dsName + " is not valid, please use valid name"
        return None
    elif len(dsName.lstrip(os.sep).rstrip(os.sep).split(os.sep)) < 4:
        print "Dataset " + dsName + "is a CMS base dataset and cannot be published, please use DAS."
        return None

    taskID = None
    loginClear = False

    dataset = None
    try:
        dataset = Dataset(dsName, fileown)  #create the dataset
    except:
        print "Dataset does not exist on eos, proceeding to unpublish"

    cmgdbName = getCMGDBWithUser(dsName, fileown)
    print "\n------DataSet------\n"
    print "CMGDB NAME  : " + cmgdbName
    if dataset:
        dataset.printInfo()
        if dataset.files:  #check if the dataset has root files
            print "\nERROR: Dataset has root files present, you can only unpublish empty datasets!"
            #if it does cancel the unpublishing
            exit(-1)

    print "\n-------CMGDB-------\n"
    ID = None
    cmgdbAPI = CmgdbToolsApi(development)
    cmgdbAPI.connect()
    ID = cmgdbAPI.getDatasetIDWithName(cmgdbName)
    if ID is not None:
        try:
            cmgdbAPI.closeDataset(cmgdbName)
            print "Dataset closed on CMGDB"
        except:
            print "Dataset failed to close"
    else:
        print "Dataset not found on CMGDB"
Esempio n. 6
0
def unPublish(dsName, fileown, user, password, development=False):

    if re.search("---", dsName):
        fileown = getDbsUser(dsName)
        dsName2 = getCastor(dsName)
        if dsName2 is None:
            print "\nError, " + dsName + " is not valid, please use valid name\n"
            return None
        else:
            dsName = dsName2

    if len(dsName.lstrip(os.sep).rstrip(os.sep).split(os.sep)) < 3:
        print "Error, " + dsName + " is not valid, please use valid name"
        return None
    elif len(dsName.lstrip(os.sep).rstrip(os.sep).split(os.sep)) < 4:
        print "Dataset " + dsName + "is a CMS base dataset and cannot be published, please use DAS."
        return None

    taskID = None
    loginClear = False
    if not validLogin(user, password):
        print "Authentication Failed, exiting\n\n"
        sys.exit(1)

    dataset = None
    try:
        dataset = Dataset(dsName, fileown)  #create the dataset
    except:
        print "Dataset does not exist on eos, proceeding to unpublish"

    cmgdbName = getCMGDBWithUser(dsName, fileown)
    print "\n------DataSet------\n"
    print "CMGDB NAME  : " + cmgdbName
    if dataset:
        dataset.printInfo()
        if dataset.files:  #check if the dataset has root files
            print "\nERROR: Dataset has root files present, you can only unpublish empty datasets!"
            #if it does cancel the unpublishing
            exit(-1)

    print "\n------Savanah------\n"

    try:
        if taskID is None:
            taskID = getTaskID(cmgdbName, opts['category_id'], user, password,
                               False)
    except:
        taskID = getTaskID(cmgdbName, '103', user, password, False)
    if taskID is not None:
        browser = SavannahBrowser(user, password, taskID)
        browser.closeTask()
        print "Task closed on Savannah"
        print "URL: https://savannah.cern.ch/task/?" + taskID
    else:
        print "No task was found, no closing neccesary"

    print "\n-------CMGDB-------\n"
    ID = None
    cmgdbAPI = CmgdbToolsApi(development)
    cmgdbAPI.connect()
    ID = cmgdbAPI.getDatasetIDWithName(cmgdbName)
    if ID is not None:
        try:
            cmgdbAPI.closeDataset(cmgdbName)
            print "Dataset closed on CMGDB"
        except:
            print "Dataset failed to close"
    else:
        print "Dataset not found on CMGDB"