Trees | Indices | Help |
|
---|
|
1 ########################################################################### 2 # 3 # This program is part of Zenoss Core, an open source monitoring platform. 4 # Copyright (C) 2008, Zenoss Inc. 5 # 6 # This program is free software; you can redistribute it and/or modify it 7 # under the terms of the GNU General Public License version 2 or (at your 8 # option) any later version as published by the Free Software Foundation. 9 # 10 # For complete information please visit: http://www.zenoss.com/oss/ 11 # 12 ########################################################################### 13 14 from Products.ZenRRD.CommandParser import CommandParser 15 from Products.ZenUtils.Utils import prepId as globalPrepId 16 import re 17 from pprint import pformat 18 import logging 19 20 log = logging.getLogger("zen.ComponentCommandParser") 2123 24 componentSplit = '\n' 25 26 componentScanner = '' 27 28 scanners = () 29 30 componentScanValue = 'id' 317133 return globalPrepId(id, subchar)34 3739 40 # Map datapoints by data you can find in the command output 41 ifs = {} 42 for dp in cmd.points: 43 dp.component = dp.data['componentScanValue'] 44 points = ifs.setdefault(dp.component, {}) 45 points[dp.id] = dp 46 47 # split data into component blocks 48 parts = cmd.result.output.split(self.componentSplit) 49 50 for part in parts: 51 # find the component match 52 match = re.search(self.componentScanner, part) 53 if not match: continue 54 component = match.groupdict()['component'].strip() 55 if self.componentScanValue == 'id': component = self.prepId(component) 56 points = ifs.get(component, None) 57 if not points: continue 58 59 # find any datapoints 60 for search in self.scanners: 61 match = re.search(search, part) 62 if match: 63 for name, value in match.groupdict().items(): 64 dp = points.get(name, None) 65 if dp is not None: 66 if value in ('-', ''): value = 0 67 result.values.append( (dp, float(value) ) ) 68 69 log.debug(pformat(result)) 70 return result
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1.1812 on Tue Oct 11 12:51:46 2011 | http://epydoc.sourceforge.net |