本文整理汇总了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))
#.........这里部分代码省略.........