| Trees | Indices | Help |
|
|---|
|
|
1 ###########################################################################
2 #
3 # This program is part of Zenoss Core, an open source monitoring platform.
4 # Copyright (C) 2010, 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 import logging
14
15 import Globals
16
17 from twisted.spread import pb
18
19 from Products.ZenCollector.services.config import CollectorConfigService
20 from Products.ZenEvents.ZenEventClasses import Status_IpService
21 from Products.ZenModel.ServiceOrganizer import ServiceOrganizer
22 from Products.ZenModel.Service import Service
23
24 log = logging.getLogger('zen.ZenStatusConfig')
25
26
28 """
29 Represents a service component. A single DeviceProxy config will have
30 multiple service proxy components (for each service zenstatus should
31 monitor)
32 """
34 self.device = svc.hostname()
35 self.component = svc.name()
36 self.ip = svc.getManageIp()
37 self.port = svc.getPort()
38 self.sendString = svc.getSendString()
39 self.expectRegex = svc.getExpectRegex()
40 self.timeout = svc.zStatusConnectTimeout
41 self.failSeverity = svc.getFailSeverity()
42 self.status = status
43 self.key = svc.key()
44 self.deviceManageIp = svc.device().manageIp
45
48
49 pb.setUnjellyableForClass(ServiceProxy, ServiceProxy)
50
51
53
55 # Any additional attributes we want to send to daemon should be
56 # added here
57 deviceProxyAttributes = ()
58 CollectorConfigService.__init__(self, dmd,
59 instance,
60 deviceProxyAttributes)
61
63 include = CollectorConfigService._filterDevice(self, device)
64 hasTcpComponents = False
65 for svc in device.getMonitoredComponents(collector='zenstatus'):
66 if svc.getProtocol() == "tcp":
67 hasTcpComponents = True
68
69 return include and hasTcpComponents
70
72 proxy = CollectorConfigService._createDeviceProxy(self, device)
73 proxy.configCycleInterval = self._prefs.statusCycleInterval
74
75 # add each component
76 proxy.components = []
77 for svc in device.getMonitoredComponents(collector='zenstatus'):
78 if svc.getProtocol() == 'tcp':
79 # get component status
80 status = svc.getStatus(Status_IpService)
81 proxy.components.append(ServiceProxy(svc, status))
82
83 # don't bother adding this device proxy if there aren't any services
84 # to monitor
85 if not proxy.components:
86 log.debug("Device %s skipped because there are no components",
87 proxy.id)
88 return None
89
90 return proxy
91
93 """
94 When zProperties are changed on either of these two classes we
95 need to refresh which devices we are monitoring
96 """
97 return (Service, ServiceOrganizer)
98
99 if __name__ == '__main__':
100 from Products.ZenHub.ServiceTester import ServiceTester
101 tester = ServiceTester(ZenStatusConfig)
106 tester.printDeviceProxy = printer
107 tester.showDeviceInfo()
108
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1.1812 on Tue Oct 11 12:51:53 2011 | http://epydoc.sourceforge.net |