1
2
3
4
5
6
7
8
9
10
11
12
13
14 __doc__="""DmdBuilder
15 DmdBuilder builds out the core containment structure used in the dmd database.
16
17 Devices
18 Groups
19 Locations
20 Networks
21 ServiceAreas
22 Services
23 Systems
24
25 """
26
27 from Products.ZenModel.DeviceClass import DeviceClass
28 from Products.ZenModel.Location import Location
29 from Products.ZenModel.DeviceGroup import DeviceGroup
30 from Products.ZenModel.IpNetwork import manage_addIpNetwork
31 from Products.ZenModel.ManufacturerRoot import ManufacturerRoot
32 from Products.ZenModel.MibOrganizer import MibOrganizer
33 from Products.ZenModel.OSProcessOrganizer import OSProcessOrganizer
34 from Products.ZenModel.ServiceOrganizer import ServiceOrganizer
35 from Products.ZenModel.System import System
36 from Products.ZenModel.MonitorClass import MonitorClass
37 from Products.ZenModel.ReportClass import ReportClass
38 from Products.ZenModel.DeviceReportClass import DeviceReportClass
39 from Products.ZenModel.CustomDeviceReportClass import CustomDeviceReportClass
40 from Products.ZenModel.GraphReportClass import GraphReportClass
41 from Products.ZenModel.MultiGraphReportClass import MultiGraphReportClass
42 from Products.ZenModel.DataRoot import DataRoot
43 from Products.ZenModel.ZDeviceLoader import manage_addZDeviceLoader
44 from Products.ZenModel.ZenossInfo import manage_addZenossInfo
45 from Products.ZenWidgets.ZenTableManager import manage_addZenTableManager
46 from Products.ZenModel.PerformanceConf import manage_addPerformanceConf
47 from Products.ZenRRD.RenderServer import manage_addRenderServer
48 from Products.ZenReports.ReportServer import manage_addReportServer
49 from Products.ZenEvents.MySqlEventManager import manage_addMySqlEventManager
50 from Products.ZenEvents.EventClass import manage_addEventClass
51 from Products.CMFCore.DirectoryView import manage_addDirectoryView
52 from Products.ZenModel.UserSettings import manage_addUserSettingsManager
53 from Products.ZenModel.LinkManager import manage_addLinkManager
54 from Products.ZenWidgets.PortletManager import manage_addPortletManager
55 from Products.ZenWidgets.ZenossPortlets import ZenossPortlets
56 from Products.ZenModel.ZenPackManager import manage_addZenPackManager
57 from Products.Jobber.manager import manage_addJobManager
58 from Products.ZenModel.ZenPackPersistence import CreateZenPackPersistenceCatalog
59 from Products.ZenModel.RRDTemplate import CreateRRDTemplatesCatalog
60 from Products.ZenModel.MaintenanceWindow import createMaintenanceWindowCatalog
61 from Products.ZenModel.ZenossSecurity import \
62 MANAGER_ROLE, ZEN_MANAGER_ROLE, ZEN_USER_ROLE, OWNER_ROLE
63
64 classifications = {
65 'Devices': DeviceClass,
66 'Groups': DeviceGroup,
67 'Locations': Location,
68 'Systems': System,
69 'Services': ServiceOrganizer,
70 'Manufacturers': ManufacturerRoot,
71 'Mibs': MibOrganizer,
72 'Processes': OSProcessOrganizer,
73 'Monitors': MonitorClass,
74 'Reports': ReportClass,
75 }
76
78
79
80 dmdroots = (
81 'Devices',
82 'Groups',
83 'Locations',
84 'Systems',
85 'Services',
86 'Processes',
87 'Manufacturers',
88 'Mibs',
89 'Monitors',
90 'Reports',
91 )
92
93
94 monRoots = ('Performance',)
95
96
97 - def __init__(self, portal, evthost, evtuser, evtpass, evtdb, evtport,
98 smtphost, smtpport, pagecommand):
99 self.portal = portal
100 self.evthost = evthost
101 self.evtuser = evtuser
102 self.evtpass = evtpass
103 self.evtport = evtport
104 self.evtdb = evtdb
105 dmd = DataRoot('dmd')
106 self.portal._setObject(dmd.id, dmd)
107 self.dmd = self.portal._getOb('dmd')
108 self.dmd._rq = False
109 self.dmd.smtpHost = smtphost
110 self.dmd.smtpPort = smtpport
111 self.dmd.pageCommand = pagecommand
112 self.dmd.manage_permission('Access contents information',
113 ['Authenticated',
114 MANAGER_ROLE,
115 ZEN_MANAGER_ROLE,
116 ZEN_USER_ROLE,
117 OWNER_ROLE],
118 0)
119
120
124
125
133
134
136 for id, cmd, desc in (
137 ('ping', 'ping -c2 ${device/manageIp}',
138 "Is the device responding to ping?"),
139 ('traceroute', 'traceroute -q 1 -w 2 ${device/manageIp}',
140 "Show the route to the device"),
141 ('DNS forward', 'host ${device/id}',
142 "Name to IP address lookup"),
143 ('DNS reverse', 'host ${device/manageIp}',
144 "IP address to name lookup"),
145 ('snmpwalk', 'snmpwalk -v1 -c${device/zSnmpCommunity}'
146 ' ${here/manageIp} system',
147 "Display the OIDs available on a device"),
148 ):
149 self.dmd.manage_addUserCommand(id, cmd=cmd, desc=desc)
150
151
152 - def addroots(self, base, rlist, classType=None, isInTree=False):
162
163
177
182
184 self.buildRoots()
185 self.buildMonitors()
186 self.buildUserCommands()
187 self.buildReportClasses()
188 self.buildPortlets()
189 manage_addEventClass(self.dmd)
190 manage_addZDeviceLoader(self.dmd)
191 manage_addZenTableManager(self.portal)
192 manage_addZenossInfo(self.portal)
193 manage_addDirectoryView(self.portal,'ZenUtils/js', 'js')
194 manage_addRenderServer(self.portal, "RenderServer")
195 manage_addReportServer(self.portal, "ReportServer")
196 manage_addMySqlEventManager(self.dmd, evthost=self.evthost,
197 evtuser=self.evtuser, evtpass=self.evtpass,
198 evtdb=self.evtdb, evtport=self.evtport)
199 manage_addMySqlEventManager(self.dmd, evthost=self.evthost,
200 evtuser=self.evtuser, evtpass=self.evtpass,
201 evtdb=self.evtdb, evtport=self.evtport,
202 history=True)
203 manage_addUserSettingsManager(self.dmd)
204 manage_addLinkManager(self.dmd)
205 manage_addJobManager(self.dmd)
206 manage_addIpNetwork(self.dmd, "Networks")
207 manage_addZenPackManager(self.dmd)
208 CreateZenPackPersistenceCatalog(self.dmd)
209 CreateRRDTemplatesCatalog(self.dmd)
210 createMaintenanceWindowCatalog(self.dmd)
211