def readPrimaryDataset(prdsName): priDSVector = dbsclient.PriDSVector() client.readPrimaryDataset(prdsName, priDSVector) print "no of Primary Datasets ",priDSVector.size() for i in range( priDSVector.size() ): print "************************************************************************************************" primaryDsId = dbsclient.intp_value(priDSVector[i].t_primary_dataset_id.getValue()) print "primary_dataset_id = ",primaryDsId print "primary_dataset_name = ",dbsclient.stringp_value(priDSVector[i].t_primary_dataset_name.getValue()) print "primary_dataset_description = ",dbsclient.intp_value(priDSVector[i].t_primary_dataset_description.getValue()) readProcessingPath(primaryDsId)
def readEvCollFiles(evCollId): evCollFileVector = dbsclient.EVCollFileVector() client.readEvCollFiles(evCollId, evCollFileVector) print "no of Files in Event Collection",evCollFileVector.size() for i in range( evCollFileVector.size() ): print "************************************************************************************************" print "file_logical_name = ",dbsclient.stringp_value(evCollFileVector[i].t_file_logical_name.getValue()) print "file_guid = ",dbsclient.stringp_value(evCollFileVector[i].t_file_guid.getValue()) print "file_inblock = ",dbsclient.intp_value(evCollFileVector[i].t_file_inblock.getValue())
def readProcessingPath(primaryDsId): proPathVector = dbsclient.ProPathVector() client.readProcessingPath(primaryDsId, proPathVector) print "no of Processing Path ",proPathVector.size() for i in range( proPathVector.size() ): print "************************************************************************************************" proDsId = dbsclient.intp_value(proPathVector[i].t_processed_dataset_id.getValue()) print "processed_dataset_id = ",proDsId print "data tiername = ",dbsclient.stringp_value(proPathVector[i].t_data_tier_name.getValue()) readEvColls(proDsId)
def readEvColls(proDsId): evCollVector = dbsclient.EVCollVector() client.readEvColls(proDsId, evCollVector) print "no of Event Collections ",evCollVector.size() for i in range( evCollVector.size() ): evCollId = dbsclient.intp_value(evCollVector[i].t_event_collection_id.getValue()) print "************************************************************************************************" print "status = ",dbsclient.intp_value(evCollVector[i].t_info_evcoll_status.getValue()) print "validation_status = ",dbsclient.intp_value(evCollVector[i].t_info_evcoll_validation_status.getValue()) print "processed_dataset = ",dbsclient.intp_value(evCollVector[i].t_event_collection_processed_dataset.getValue()) print "events = ",dbsclient.intp_value(evCollVector[i].t_info_evcoll_events.getValue()) print "collection_index = ",dbsclient.intp_value(evCollVector[i].t_event_collection_collection_index.getValue()) print "id = ",evCollId print "name = ",dbsclient.stringp_value(evCollVector[i].t_info_evcoll_name.getValue()) readEvCollFiles(evCollId)
def readEvCollFiles(self, evCollId): filesByBlock = {} evCollFileVector = dbsclient.EVCollFileVector() evCollInfo = dbsclient.Fileview_ClientAPIData() evCollInfo.t_evcoll_file_evcoll = dbsclient.AINT(evCollId) self.client.readEvCollFiles(evCollInfo, evCollFileVector) print "no of Files in Event Collection",evCollFileVector.size() for i in range( evCollFileVector.size() ): print "************************************************************************************************" lfn = dbsclient.stringp_value(evCollFileVector[i].t_file_logical_name.getValue()) guid = dbsclient.stringp_value(evCollFileVector[i].t_file_guid.getValue()) inBlock = dbsclient.intp_value(evCollFileVector[i].t_file_inblock.getValue()) print "file_logical_name = ", lfn print "file_guid = ", guid print "file_inblock = ", inBlock if not filesByBlock.has_key(inBlock): filesByBlock[inBlock] = [(lfn, guid)] else : filesByBlock[inBlock].append((lfn, guid)) return filesByBlock
def readEvColls(self, proDsId): evCollInfoList = [] evCollVector = dbsclient.EVCollVector() evCollInfo = dbsclient.Evcollview_ClientAPIData() evCollInfo.t_event_collection_processed_dataset = dbsclient.AINT(proDsId) self.client.readEvColls(evCollInfo, evCollVector) print "no of Event Collections ",evCollVector.size() for i in range( evCollVector.size() ): evCollId = dbsclient.intp_value(evCollVector[i].t_event_collection_id.getValue()) events = dbsclient.intp_value(evCollVector[i].t_info_evcoll_events.getValue()) name = dbsclient.stringp_value(evCollVector[i].t_info_evcoll_name.getValue()) evcollInfo = (evCollId, events, name) evCollInfoList.append(evcollInfo) print "************************************************************************************************" print "status = ",dbsclient.intp_value(evCollVector[i].t_info_evcoll_status.getValue()) print "validation_status = ",dbsclient.intp_value(evCollVector[i].t_info_evcoll_validation_status.getValue()) print "processed_dataset = ",dbsclient.intp_value(evCollVector[i].t_event_collection_processed_dataset.getValue()) print "events = ", events print "collection_index = ",dbsclient.intp_value(evCollVector[i].t_event_collection_collection_index.getValue()) print "id = ",evCollId print "name = ", name return evCollInfoList
def getDatasetProvenance(self, pathName, parentDataTiers): """ API Call that returns list of DBS Datasets (Processed/Analysis) corresponding to all parent datatiers requested by user """ raise dbsApi.DbsApiException(args="getDatasetProvenance() API Call Not Implemented") # get the names of primary dataset, data tier and processed dataset tokens = pathName.split('/') primaryDSName = tokens[1] dataTier = tokens[2] processedDSName = tokens[3] #Get the list existing Parent DataTiers provInfo = dbsclient.Datasetprovenenceevchild_ClientAPIData() provInfo.t_primary_dataset_name = dbsclient.ASTR(primaryDSName) provInfo.t_data_tier_name = dbsclient.ASTR(dataTier) provInfo.t_processed_dataset_name = dbsclient.ASTR(processedDSName) childIds=[] provInfoRet = self.readProvInfoChild(provInfo) for i in range( provInfoRet.size() ) : childId = dbsclient.intp_value(provInfoRet[i].t_evcoll_parentage_child.getValue()) if childId not in childIds: childIds.append(childId) #print "CHILD IDs ", childIds if len(childIds) == 0 : errorMessage = "No Parents found for this Dataset " + pathName raise dbsApi.DbsApiException(args=errorMessage) provInfo = dbsclient.Datasetprovenenceevparent_ClientAPIData() #provInfo.t_evcoll_parentage_child = dbsclient.AINT(224) provInfo.t_evcoll_parentage_child = dbsclient.AINT(childIds[0]) provInfoRet = self.readProvInfoParent(provInfo) print "After self.readProvInfoParent provInfoRet is ",provInfoRet dt_procDS_map = {} for i in range( provInfoRet.size() ) : print "************************************************************************************************" currProvInfo = provInfoRet[i] processed_dataset_name = dbsclient.stringp_value(currProvInfo.t_processed_dataset_name.getValue()) print " t_processed_dataset_name: " ,processed_dataset_name #print " t_processing_path_data_tier: ", dbsclient.intp_value(currProvInfo.t_processing_path_data_tier.getValue()) #print " t_processing_path_id: ", dbsclient.intp_value(currProvInfo.t_processing_path_id.getValue()) parentage_type_name = dbsclient.stringp_value(currProvInfo.t_parentage_type_name.getValue()) print " t_parentage_type_name: " ,parentage_type_name primaryDsId = dbsclient.intp_value(currProvInfo.t_primary_dataset_id.getValue()) print " t_primary_dataset_id: " , primaryDsId #print " t_processing_path_full_path: " ,dbsclient.stringp_value(currProvInfo.t_processing_path_full_path.getValue()) #print " t_primary_dataset_name: ",dbsclient.stringp_value(currProvInfo.t_primary_dataset_name.getValue()) #print " t_evcoll_parentage_parent: ", dbsclient.intp_value(currProvInfo.t_evcoll_parentage_parent.getValue()) procDSId = dbsclient.intp_value(currProvInfo.t_processed_dataset_id.getValue()) print " t_processed_dataset_id: ", procDSId dTier=dbsclient.stringp_value(currProvInfo.t_data_tier_name.getValue()) print " t_data_tier.name: ", dTier #print " t_evcoll_parentage_child: ", dbsclient.intp_value(currProvInfo.t_evcoll_parentage_child.getValue()) if not dt_procDS_map.has_key(dTier): dt_procDS_map[dTier]=processed_dataset_name, parentage_type_name #if not dt_procDS_map.has_key(data_tier_name): # dt_procDS_map[data_tier_name]=processed_dataset_name parentPathList = [] dsList = DbsDatasetList() print "dt_procDS_map: ", dt_procDS_map if len(dt_procDS_map) < 1: raise dbsApi.DbsApiException(args="No parent path found") for aAskedTier in parentDataTiers: l_processed_dataset_name, l_parentage_type_name = dt_procDS_map[aAskedTier] #parentPath = "/"+primaryDSName+"/"+aAskedTier+"/"+dt_procDS_map[aAskedTier] parentPath = "/"+primaryDSName+"/"+aAskedTier+"/"+l_processed_dataset_name dsList.append(DbsDataset(primaryDSName, parentPath, aAskedTier, l_parentage_type_name)) parentPathList.append(parentPath) print parentPath #return parentPathList return dsList