| Trees | Indices | Help |
|
|---|
|
|
1 ###########################################################################
2 #
3 # This program is part of Zenoss Core, an open source monitoring platform.
4 # Copyright (C) 2007, 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 as published by
8 # the Free Software Foundation.
9 #
10 # For complete information please visit: http://www.zenoss.com/oss/
11 #
12 ###########################################################################
13
14 from PerformanceConfig import PerformanceConfig
15 from ZODB.POSException import POSError
16 from Products.ZenRRD.zencommand import Cmd, DeviceConfig, DataPointConfig
17 from Products.ZenHub.PBDaemon import translateError
18 from Products.DataCollector.Plugins import getParserLoader
19 import logging
20 log = logging.getLogger('zen.CommandConfig')
21
23 """Return list of command definitions.
24 """
25 perfServer = comp.device().getPerformanceServer()
26 for templ in comp.getRRDTemplates():
27 basepath = comp.rrdPath()
28 for ds in templ.getRRDDataSources('COMMAND'):
29 if not ds.enabled: continue
30 parserName = getattr(ds, "parser", "Auto")
31 ploader = getParserLoader(dmd, parserName)
32 if ploader is None:
33 log.error("Could not load %s plugin", parserName)
34 continue
35 component_name = ds.getComponent(comp)
36 parser = ploader.create()
37 points = []
38 for dp in ds.getRRDDataPoints():
39 dpc = DataPointConfig()
40 dpc.id = dp.id
41 dpc.component = component_name
42 dpc.rrdPath = "/".join((basepath, dp.name()))
43 dpc.rrdType = dp.rrdtype
44 dpc.rrdCreateCommand = dp.getRRDCreateCommand(perfServer)
45 dpc.rrdMin = dp.rrdmin
46 dpc.rrdMax = dp.rrdmax
47 dpc.data = parser.dataForParser(comp, dp)
48 points.append(dpc)
49 cmd = Cmd()
50 cmd.useSsh = getattr(ds, 'usessh', False)
51 cmd.cycleTime = ds.cycletime
52 cmd.component = component_name
53 cmd.eventClass = ds.eventClass
54 cmd.eventKey = ds.eventKey or ds.id
55 cmd.severity = ds.severity
56 cmd.parser = ploader
57 cmd.command = ds.getCommand(comp)
58 cmd = commandCache.setdefault(cmd.commandKey(), cmd)
59 cmd.points.extend(points)
60 commandSet.add(cmd)
61 return comp.getThresholdInstances('COMMAND')
62
63
65 if not dev.monitorDevice():
66 return None
67 cache = {}
68 cmds = set()
69 threshs = getComponentCommands(dev, cache, cmds, dev.getDmd())
70 for o in dev.getMonitoredComponents(collector="zencommand"):
71 threshs.extend(getComponentCommands(o, cache, cmds, dev.getDmd()))
72 if cmds:
73 d = DeviceConfig()
74 d.lastChange = dev.getLastChange()
75 d.device = dev.id
76 d.ipAddress = dev.getManageIp()
77 d.port = dev.getProperty('zCommandPort')
78 d.username = dev.getProperty('zCommandUsername')
79 d.password = dev.getProperty('zCommandPassword')
80 d.loginTimeout = dev.getProperty('zCommandLoginTimeout')
81 d.commandTimeout = dev.getProperty('zCommandCommandTimeout')
82 d.keyPath = dev.getProperty('zKeyPath')
83 d.maxOids = dev.getProperty('zMaxOIDPerRequest')
84 d.concurrentSessions = dev.getProperty('zSshConcurrentSessions')
85 d.commands = list(cmds)
86 d.thresholds = threshs
87 return d
88 return None
89
90
92
93 @translateError
95 return self.getDataSourceCommands(devices)
96
97
100
101
104
105
107 '''Get the command configuration for all devices.
108 '''
109 result = []
110 for dev in self.config.devices():
111 if devices and dev.id not in devices: continue
112 dev = dev.primaryAq()
113 try:
114 cmdinfo = getDeviceCommands(dev)
115 if not cmdinfo: continue
116 result.append(cmdinfo)
117 except POSError: raise
118 except:
119 self.log.exception("device %s", dev.id)
120 return result
121
123 from Products.ZenModel.RRDDataSource import RRDDataSource
124 if isinstance(object, RRDDataSource):
125 if object.sourcetype != 'COMMAND':
126 return
127
128 PerformanceConfig.update(self, object)
129
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0beta1 on Mon Oct 19 14:44:24 2009 | http://epydoc.sourceforge.net |