Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-10 08:38:58

0001 class SiteCandidate(object):
0002     def __init__(self, siteName, unifiedName=None):
0003         # the site name
0004         self.siteName = siteName
0005         # unified name
0006         self.unifiedName = unifiedName
0007         # the weight for the brokerage
0008         self.weight = 0
0009         # the list of files copied from SE disk
0010         self.localDiskFiles = set()
0011         # the list of files copied from SE tape
0012         self.localTapeFiles = set()
0013         # the list of files cached in non-SE, e.g. on CVMFS
0014         self.cacheFiles = set()
0015         # the list of files read from SE using remote I/O
0016         self.remoteFiles = set()
0017         # the list of all files
0018         self.allFiles = None
0019         # remote access protocol
0020         self.remoteProtocol = None
0021         # remote source if any
0022         self.remoteSource = None
0023         # number of running job
0024         self.nRunningJobs = None
0025         # number of queued jobs
0026         self.nQueuedJobs = None
0027         # number of assigned jobs
0028         self.nAssignedJobs = None
0029         # cap on running jobs
0030         self.nRunningJobsCap = None
0031         # overridden attributes
0032         self.overriddenAttrs = {}
0033 
0034     # add local disk files
0035     def add_local_disk_files(self, files):
0036         self.localDiskFiles = self.localDiskFiles.union([f.fileID for f in files])
0037 
0038     # add local tape files
0039     def add_local_tape_files(self, files):
0040         self.localTapeFiles = self.localTapeFiles.union([f.fileID for f in files])
0041 
0042     # add cache files
0043     def add_cache_files(self, files):
0044         self.cacheFiles = self.cacheFiles.union([f.fileID for f in files])
0045 
0046     # add remote files
0047     def add_remote_files(self, files):
0048         self.remoteFiles = self.remoteFiles.union([f.fileID for f in files])
0049 
0050     # get locality of a file
0051     def getFileLocality(self, fileSpec):
0052         if fileSpec.fileID in self.localDiskFiles:
0053             return "localdisk"
0054         if fileSpec.fileID in self.localTapeFiles:
0055             return "localtape"
0056         if fileSpec.fileID in self.cacheFiles:
0057             return "cache"
0058         if fileSpec.fileID in self.remoteFiles:
0059             return "remote"
0060         return None
0061 
0062     # add available files
0063     def addAvailableFiles(self, fileList):
0064         if self.allFiles is None:
0065             self.allFiles = set()
0066         for tmpFileSpec in fileList:
0067             self.allFiles.add(tmpFileSpec.fileID)
0068 
0069     # check if file is available
0070     def isAvailableFile(self, tmpFileSpec):
0071         # N/A
0072         if self.allFiles is None:
0073             return True
0074         return tmpFileSpec.fileID in self.allFiles
0075 
0076     # check if still can accept jobs
0077     def can_accept_jobs(self):
0078         if self.nRunningJobsCap is None or self.nQueuedJobs is None:
0079             return True
0080         if self.nRunningJobsCap > self.nQueuedJobs:
0081             return True
0082         return False
0083 
0084     # override an attribute
0085     def override_attribute(self, key, value):
0086         self.overriddenAttrs[key] = value
0087 
0088     # get an overridden attribute
0089     def get_overridden_attribute(self, key):
0090         return self.overriddenAttrs.get(key)