本文整理匯總了Python中WMQuality.Emulators.DataBlockGenerator.DataBlockGenerator.DataBlockGenerator類的典型用法代碼示例。如果您正苦於以下問題:Python DataBlockGenerator類的具體用法?Python DataBlockGenerator怎麽用?Python DataBlockGenerator使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了DataBlockGenerator類的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: listFiles
def listFiles(self, datasetPath, retriveList):
res = []
dbg = DataBlockGenerator()
for block in dbg.getBlocks(datasetPath):
files = dbg.getFiles(block['Name'])
for f in files:
f['Block'] = block
res.append(f)
return res
示例2: __init__
def __init__(self, dict=None, responseType="json", logger=None,
dbsUrl='https://cmsweb.cern.ch/dbs/prod/global/DBSReader'):
print("Using MockPhEDExApi")
self.dbsUrl = dbsUrl
dict = dict or {}
self.dataBlocks = DataBlockGenerator()
self.subRequests = {}
示例3: __init__
def __init__(self, *args, **kwargs):
# add the end point to prevent the existence check fails.
self['endpoint'] = "phedex_emulator"
self.dataBlocks = DataBlockGenerator()
self.subRequests = {}
self.deletionRequests = {}
self.deletionRequestId = 0
示例4: __init__
class DBSReader:
"""
Mock up dbs access
"""
def __init__(self, *args, **kwargs):
print "Using DBS Emulator ..."
self.dataBlocks = DataBlockGenerator()
def getFileBlocksInfo(self, dataset, onlyClosedBlocks = True):
"""Fake block info"""
return self.dataBlocks.getBlocks(dataset)
def listFileBlockLocation(self, block):
"""Fake locations"""
return self.dataBlocks.getLocation(block)
def listFilesInBlock(self, block):
"""Fake files"""
return self.dataBlocks.getFiles(block)
def getFileBlock(self, block):
"""Return block + locations"""
result = { block : {
"StorageElements" : self.listFileBlockLocation(block),
"Files" : self.listFilesInBlock(block),
"IsOpen" : False,
}
}
return result
def getDatasetInfo(self, dataset):
"""Dataset summary"""
result = {}
result['number_of_events'] = sum([x['NumberOfEvents']
for x in self.dataBlocks.getBlocks(dataset)])
result['number_of_files'] = sum([x['NumberOfFiles']
for x in self.dataBlocks.getBlocks(dataset)])
result['path'] = dataset
return result
示例5: MockPhEDExApi
class MockPhEDExApi(object):
"""
Version of Services/PhEDEx intended to be used with mock or unittest.mock
"""
def __init__(self, dict=None, responseType="json", logger=None,
dbsUrl='https://cmsweb.cern.ch/dbs/prod/global/DBSReader'):
print("Using MockPhEDExApi")
self.dbsUrl = dbsUrl
dict = dict or {}
self.dataBlocks = DataBlockGenerator()
self.subRequests = {}
def sitesByBlock(self, block):
"""
Centralize the algorithm to decide where a block is based on the hash name
Args:
block: the name of the block
Returns:
sites: a fake list of sites where the data is
"""
if hash(block) % 3 == 0:
sites = ['T2_XX_SiteA']
elif hash(block) % 3 == 1:
sites = ['T2_XX_SiteA', 'T2_XX_SiteB']
else:
sites = ['T2_XX_SiteA', 'T2_XX_SiteB', 'T2_XX_SiteC']
return sites
def getReplicaPhEDExNodesForBlocks(self, block=None, dataset=None, complete='y'):
"""
Args:
block: the name of the block
dataset: the name of the dataset
complete: ??
Returns:
a fake list of blocks and the fakes sites they are at
"""
if isinstance(dataset, list):
dataset = dataset[0] # Dataset is a list in these tests
if dataset:
# TODO: Generalize this and maybe move dataset detection into sitesByBlock
if dataset == PILEUP_DATASET:
return {
'%s#0fcb2b12-d27e-11e0-91b1-003048caaace' % dataset: ['T2_XX_SiteA', 'T2_XX_SiteB', 'T2_XX_SiteC']}
else:
try:
DBS3Reader(PROD_DBS).checkDatasetPath(dataset)
blocks = DBS3Reader(PROD_DBS).dbs.listBlocks(dataset=dataset)
singleBlock = blocks[0]['block_name']
return {singleBlock: self.sitesByBlock(singleBlock)}
except DBSReaderError:
return {'%s#0fcb2b12-d27e-11e0-91b1-003048caaace' % dataset: []}
replicas = {}
for oneBlock in block:
if oneBlock.split('#')[0] == PILEUP_DATASET:
# Pileup is at a single site
sites = ['T2_XX_SiteC']
_BLOCK_LOCATIONS[oneBlock] = sites
else:
sites = self.sitesByBlock(block=oneBlock)
_BLOCK_LOCATIONS[oneBlock] = sites
replicas.update({oneBlock: sites})
return replicas
def getReplicaInfoForBlocks(self, **args):
"""
Where are blocks located
"""
data = {"phedex": {"request_timestamp": 1254762796.13538, "block": []}}
for block in args['block']:
blocks = data['phedex']['block']
# files = self.dataBlocks.getFiles(block)
# locations = self.dataBlocks.getLocation(block)
sites = self.sitesByBlock(block=block)
blocks.append({'files': 1, 'name': block, 'replica': [{'node': x} for x in sites]})
return data
def getSubscriptionMapping(self, *dataItems, **kwargs):
"""
Fake version of the existing PhEDEx method
"""
dataItems = list(set(dataItems)) # force unique items
locationMap = {}
for dataItem in dataItems:
sites = self.sitesByBlock(block=dataItem)
locationMap.update({dataItem: sites})
#.........這裏部分代碼省略.........
示例6: PhEDEx
class PhEDEx(dict):
"""
"""
def __init__(self, *args, **kwargs):
# add the end point to prevent the existence check fails.
self['endpoint'] = "phedex_emulator"
self.dataBlocks = DataBlockGenerator()
self.subRequests = {}
def injectBlocks(self, node, xmlData, verbose = 0, strict = 1):
"""
do nothing don't inject block.
"""
return None
def getNodeSE(self, value):
return 'dummy.se.from.emulator'
def subscribe(self, subscription, xmlData):
"""
Store the subscription information in the object,
tests can retrieve it and verify it
"""
args = {}
args['node'] = []
for node in subscription.nodes:
args['node'].append(node)
document = parseString(xmlData)
datasets = document.getElementsByTagName("dataset")
for dataset in datasets:
datasetName = dataset.getAttribute("name")
if datasetName not in self.subRequests:
self.subRequests[datasetName] = []
args['data'] = xmlData
args['level'] = subscription.level
args['priority'] = subscription.priority
args['move'] = subscription.move
args['static'] = subscription.static
args['custodial'] = subscription.custodial
args['group'] = subscription.group
args['request_only'] = subscription.request_only
self.subRequests[datasetName].append(args)
return
def getReplicaInfoForFiles(self, **args):
"""
_getReplicaInfoForFiles_
TODO: Need to be implemented correctly,
Currently not used
Retrieve file replica information from PhEDEx.
block block name, with '*' wildcards, can be multiple (*). required when no lfn is specified.
node node name, can be multiple (*)
se storage element name, can be multiple (*)
update_since unix timestamp, only return replicas updated since this
time
create_since unix timestamp, only return replicas created since this
time
complete y or n. if y, return only file replicas from complete block
replicas. if n only return file replicas from incomplete block
replicas. default is to return either.
dist_complete y or n. if y, return only file replicas from blocks
where all file replicas are available at some node. if
n, return only file replicas from blocks which have
file replicas not available at any node. default is
to return either.
subscribed y or n, filter for subscription. default is to return either.
custodial y or n. filter for custodial responsibility. default is
to return either.
group group name. default is to return replicas for any group.
lfn logical file nam
"""
return None
def getNodeMap(self):
"""
_getNodeMap_
Retrieve information about nodes known to this PhEDEx instance. Each
node entry will have the following keys:
name - PhEDEx node name
se - Storage element name
kind - Node type, e.g. 'Disk' or 'MSS'
technology - Node technology, e.g. 'Castor'
id - Node id
Return some MSS, Buffer and Disk nodes
"""
nodeMappings = {"phedex" : {"node" : []}}
#.........這裏部分代碼省略.........
示例7: __init__
def __init__(self, url, **contact):
self.dataBlocks = DataBlockGenerator()
args = { "url" : url, "level" : 'ERROR', "version" : 'DBS_2_0_9'}
self.dbs = _MockDBSApi(args)
示例8: __init__
class PhEDEx:
"""
"""
def __init__(self, *args, **kwargs):
print "Using PhEDEx Emulator ...."
self.dataBlocks = DataBlockGenerator()
def getReplicaInfoForBlocks(self, **args):
"""
Where are blocks located
"""
for block in args['block']:
data = {"phedex":{"request_timestamp":1254762796.13538, "block" : []}}
blocks = data['phedex']['block']
files = self.dataBlocks.getFiles(block)
locations = self.dataBlocks.getLocation(block)
blocks.append({"files": len(files), "name": block,
'replica' : [{'se' : x } for x in locations]})
return data
def subscriptions(self, **args):
"""
Where is data subscribed - for now just replicate blockreplicas
"""
data = {'phedex' : {"request_timestamp" : 1254850198.15418,
'dataset' : []}}
# different structure depending on whether we ask for dataset or blocks
if args.has_key('dataset') and args['dataset']:
for dataset in args['dataset']:
# TODO needs to add correct file numbers
data['phedex']['dataset'].append({'name' : dataset, 'files' : 5,
'subscription' : []})
subs = data['phedex']['dataset'][-1]['subscription']
#FIXME: Take from self.locations
subs.append({'node': 'SiteA', 'custodial': 'n', 'suspend_until': None,
'level': 'dataset', 'move': 'n', 'request': '47983',
'time_created': '1232989000', 'priority': 'low',
'time_update': None, 'node_id': '781',
'suspended': 'n', 'group': None})
return data
elif args.has_key('block') and args['block']:
for block in args['block']:
dataset = self.dataBlocks.getDataset('block')
# TODO needs to add correct file numbers
data['phedex']['dataset'].append({'name' : dataset, 'files' : 5,
'block' : []})
blocks = data['phedex']['dataset'][-1]['block']
locations= self.dataBlocks.getLocation(block)
blocks.append({"bytes":"10438786614", "files":"5", "is_open":"n",
"name": args['block'],
"id":"454370", "subscription"
:[ {'node' : x } for x in locations]
#{"priority":"normal", "request":"51253", "time_created":"1245165314",
# "move":"n", "suspend_until":None, "node":"SiteA",
# "time_update":"1228905272", "group":None, "level":"block",
# "node_id":"641", "custodial":"n", "suspended":"n"}]
})
return data
def emulator(self):
return "PhEDEx emulator ...."
示例9: __init__
class DBSReader:
"""
Mock up dbs access
"""
def __init__(self, url, **contact):
self.dataBlocks = DataBlockGenerator()
args = { "url" : url, "level" : 'ERROR', "version" : 'DBS_2_0_9'}
self.dbs = _MockDBSApi(args)
def getFileBlocksInfo(self, dataset, onlyClosedBlocks = True,
blockName = '*', locations = True):
"""Fake block info"""
blocks = [x for x in self.dataBlocks.getBlocks(dataset)
if x['Name'] == blockName or blockName == '*']
if locations:
for block in blocks:
block['StorageElementList'] = [{'Role' : '', 'Name' : x} for x in \
self.listFileBlockLocation(block['Name'])]
return blocks
def listFileBlockLocation(self, block):
"""Fake locations"""
return self.dataBlocks.getLocation(block)
def listFilesInBlock(self, block):
"""Fake files"""
return self.dataBlocks.getFiles(block)
def listFilesInBlockWithParents(self, block):
return self.dataBlocks.getFiles(block, True)
def getFileBlock(self, block):
"""Return block + locations"""
result = { block : {
"StorageElements" : self.listFileBlockLocation(block),
"Files" : self.listFilesInBlock(block),
"IsOpen" : False,
}
}
return result
def getFileBlockWithParents(self, fileBlockName):
"""
_getFileBlockWithParents_
return a dictionary:
{ blockName: {
"StorageElements" : [<se list>],
"Files" : dictionaries representing each file
}
}
files
"""
result = { fileBlockName: {
"StorageElements" : self.listFileBlockLocation(fileBlockName),
"Files" : self.listFilesInBlockWithParents(fileBlockName),
"IsOpen" : False,
}
}
return result
def listRuns(self, dataset = None, block = None):
def getRunsFromBlock(b):
results = []
for x in self.dataBlocks.getFiles(b):
results.extend([y['RunNumber'] for y in x['LumiList']])
return results
if block:
return getRunsFromBlock(block)
if dataset:
runs = []
for block in self.dataBlocks.getBlocks(dataset):
runs.extend(getRunsFromBlock(block['Name']))
return runs
return None
def getDBSSummaryInfo(self, dataset=None, block=None):
"""Dataset summary"""
def getLumisectionsInBlock(b):
lumis = set()
for file in self.dataBlocks.getFiles(b):
for x in file['LumiList']:
lumis.add(x['LumiSectionNumber'])
return lumis
result = {}
if block:
result['NumberOfEvents'] = sum([x['NumberOfEvents']
for x in self.dataBlocks.getFiles(block)])
result['NumberOfFiles'] = len(self.dataBlocks.getFiles(block))
result['NumberOfLumis'] = len(getLumisectionsInBlock(block))
#.........這裏部分代碼省略.........