| 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 Acquisition import aq_base
15 from twisted.internet import defer, reactor
16 from ZODB.transact import transact
17 from PerformanceConfig import PerformanceConfig
18 from Products.ZenHub.PBDaemon import translateError
19 from Products.DataCollector.DeviceProxy import DeviceProxy
20
21 from Products.DataCollector.Plugins import loadPlugins
22
23 import logging
24 log = logging.getLogger('zen.ModelerService')
27
28 plugins = None
29
31 PerformanceConfig.__init__(self, dmd, instance)
32 self.config = self.dmd.Monitors.Performance._getOb(self.instance)
33 self.methodPriorityMap = {
34 'applyDataMaps': 0.5,
35 }
36
38 if self.plugins is None:
39 self.plugins = {}
40 for loader in loadPlugins(self.dmd):
41 try:
42 plugin = loader.create()
43 plugin.loader = loader
44 self.plugins[plugin.name()] = plugin
45 except Exception, ex:
46 log.exception(ex)
47
48 result = DeviceProxy()
49 result.id = dev.getId()
50 if not dev.manageIp:
51 dev.setManageIp()
52 result.manageIp = dev.manageIp
53 result.plugins = []
54 for name in dev.zCollectorPlugins:
55 plugin = self.plugins.get(name, None)
56 log.debug('checking plugin %s for device %s' % (name, dev.getId()))
57 if plugin and plugin.condition(dev, log):
58 log.debug('adding plugin %s for device %s' % (name,dev.getId()))
59 result.plugins.append(plugin.loader)
60 plugin.copyDataToProxy(dev, result)
61 result.temp_device = dev.isTempDevice()
62 return result
63
64 @translateError
66 result = []
67 for dc in self.dmd.Devices.getSubOrganizers():
68 localPlugins = getattr(aq_base(dc), 'zCollectorPlugins', False)
69 if not localPlugins: continue
70 result.append((dc.getOrganizerName(), localPlugins))
71 return result
72
73 @translateError
75 result = []
76 for name in names:
77 device = self.getPerformanceMonitor().findDevice(name)
78 if not device:
79 continue
80 device = device.primaryAq()
81 if checkStatus and (device.getPingStatus() > 0
82 or device.getSnmpStatus() > 0):
83 log.info("device %s is down skipping modeling", device.id)
84 continue
85
86 if (device.productionState <
87 device.getProperty('zProdStateThreshold', 0)):
88 log.info("device %s is below zProdStateThreshold", device.id)
89 continue
90 result.append(self.createDeviceProxy(device))
91 return result
92
93 @translateError
95 if monitor is None:
96 monitor = self.instance
97 monitor = self.dmd.Monitors.Performance._getOb(monitor)
98 return [d.id for d in monitor.devices.objectValuesGen()]
99
100 @translateError
102 if monitor is None:
103 monitor = self.instance
104 root = self.dmd.Devices.getOrganizer(organizer)
105 return [d.id for d in root.getSubDevicesGen() \
106 if d.getPerformanceServerName() == monitor]
107
108 @translateError
110 from Products.DataCollector.ApplyDataMap import ApplyDataMap
111 device = self.getPerformanceMonitor().findDevice(device)
112 adm = ApplyDataMap(self)
113 adm.setDeviceClass(device, devclass)
114 def inner(map):
115 if adm._applyDataMap(device, map):
116 changed = True
117 else:
118 changed = False
119 return changed
120 changed = False
121 for map in maps:
122 result = inner(map)
123 changed = changed or result
124 return changed
125
126 @translateError
128 device = self.getPerformanceMonitor().findDevice(device)
129 device.setSnmpLastCollection()
130 from transaction import commit
131 commit()
132
133 @transact
134 @translateError
136 device = self.getPerformanceMonitor().findDevice(device)
137 device.updateDevice(zSnmpVer=version,
138 zSnmpPort=port,
139 zSnmpCommunity=community)
140
144
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1.1812 on Tue Oct 11 12:52:04 2011 | http://epydoc.sourceforge.net |