27def generateMonitoringJSON(menuName, chainDicts, fileName):
28
29
30 summaryDict = {
31 "filetype": "hltmonitoringsummary",
32 "name": __getMenuBaseName(menuName),
33 "signatures": {}
34 }
35
36
37 for chain in chainDicts:
38 chain_name = chain['chainName']
39 __log.debug("[HLTMonitoring::generateMonitoringJSON] Processing Chain %s ...", chain_name)
40
41
42 if 'express' in chain['stream']:
43 if len(chain['monGroups']) == 0:
44 __log.warning( "[HLTMonitoring::generateMonitoringJSON]Chain %s is in the express stream and doesn't have any monGroup", chain_name)
45
46
47 if len(chain['monGroups']) == 0:
48 continue
49
50 __log.debug("[HLTMonitoring::generateMonitoringJSON] Chain %s has monitoring groups!", chain_name)
51
52
53 for entry in chain['monGroups']:
54 if (entry == 'detMon'):
55 monSignature = 'detMon'
56 monGroup = ''
57 else:
58 monSignature = entry.split(':')[0]
59 monGroup = entry.split(':')[1]
60
61 if monSignature not in summaryDict['signatures']:
62 summaryDict['signatures'][monSignature] = {chain_name: [monGroup]}
63 else:
64
65
66 if chain_name not in summaryDict['signatures'][monSignature]:
67 summaryDict['signatures'][monSignature].update({chain_name: [monGroup]})
68 else:
69 summaryDict['signatures'][monSignature][chain_name].append(monGroup)
70
71
72 __log.info( "Writing Summary of HLT Monitoring JSON to %s", fileName)
73 with open(fileName, 'w') as outfile:
74 json.dump(summaryDict, outfile, indent = 4, sort_keys=False )