| 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")
21
23
24 componentSplit = '\n'
25
26 componentScanner = ''
27
28 scanners = ()
29
30 componentScanValue = 'id'
31
33 return globalPrepId(id, subchar)
34
37
39
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
71
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1.1812 on Tue Oct 11 12:51:46 2011 | http://epydoc.sourceforge.net |