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 29125 126 @translateError31 PerformanceConfig.__init__(self, dmd, instance) 32 self.config = self.dmd.Monitors.Performance._getOb(self.instance) 33 self.methodPriorityMap = { 34 'applyDataMaps': 0.5, 35 }3638 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 result63 64 @translateError66 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 result72 73 @translateError75 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 result92 93 @translateError95 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 @translateError102 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 @translateError110 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 changed120 changed = False 121 for map in maps: 122 result = inner(map) 123 changed = changed or result 124 return changed128 device = self.getPerformanceMonitor().findDevice(device) 129 device.setSnmpLastCollection() 130 from transaction import commit 131 commit()132 133 @transact 134 @translateError136 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 |