| 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 import logging
15 log = logging.getLogger("zen.EventView")
16
17 from Globals import DTMLFile, InitializeClass
18 from AccessControl import ClassSecurityInfo
19 from Acquisition import aq_parent
20 from zope.interface import implements
21
22 from Products.ZenModel.ZenModelRM import ZenModelRM
23 from Products.ZenEvents.EventFilter import EventFilter
24 from Products.ZenModel.EventView import IEventView
25 from Products.ZenUtils.FakeRequest import FakeRequest
26
27 from Products.ZenUtils.Utils import unused
28
30 """Create an aciton rule"""
31 ed = CustomEventView(id)
32 context._setObject(id, ed)
33 if REQUEST is not None:
34 REQUEST['RESPONSE'].redirect(context.absolute_url() + '/manage_main')
35
36 addCustomEventView = DTMLFile('dtml/addCustomEventView',globals())
37
38 __pychecker__='no-argsused no-varargsused'
39
41
42 implements(IEventView)
43
44 meta_type = "CustomEventView"
45
46 type = "status"
47 evtypes = ("status", "history")
48 orderby = ""
49 where = ""
50 resultFields = ()
51
52 _properties = ZenModelRM._properties + (
53 {'id':'type', 'type':'selection',
54 'select_variable':'evtypes', 'mode':'w'},
55 {'id':'orderby', 'type':'string', 'mode':'w'},
56 {'id':'where', 'type':'text', 'mode':'w'},
57 {'id':'resultFields', 'type':'lines', 'mode':'w'},
58 )
59
60 factory_type_information = (
61 {
62 'immediate_view' : 'getEventView',
63 'actions' :
64 (
65 { 'id' : 'view'
66 , 'name' : 'View'
67 , 'action' : 'getEventView'
68 , 'permissions' : ("View",)
69 },
70 { 'id' : 'edit'
71 , 'name' : 'Edit'
72 , 'action' : 'editEventView'
73 , 'permissions' : ("Change Settings",)
74 },
75 )
76 },
77 )
78
79 security = ClassSecurityInfo()
80
81
82 security.declareProtected('View', 'zentinelTabs')
84 """Return a list of hashs that define the screen tabs for this object.
85 [{'name':'Name','action':'template','selected':False},...]
86 """
87 tabs = super(CustomEventView, self).zentinelTabs(templateName)
88 if templateName.endswith("Events"): tabs[0]['selected']=True
89 # if we don't have any global roles take away edit tab
90 if self.hasNoGlobalRoles():
91 return [tabs[0]]
92 return tabs
93
94
96 """Return the breadcrumb links for this object add CustomViews list.
97 [('url','id'), ...]
98 """
99 crumbs = super(CustomEventView, self).breadCrumbs(terminator)
100 url = aq_parent(self).absolute_url_path() + "/editEventViews"
101 crumbs.insert(-1,(url,'Event Views'))
102 return crumbs
103
104
106 """Return the default screen for this custom view.
107 """
108 if self.type == "status":
109 return self.viewEvents()
110 else:
111 return self.viewHistoryEvents()
112
113
115 """Return the current event manager for this object.
116 """
117 if self.type == "status":
118 return self.ZenEventManager
119 else:
120 return self.ZenEventHistory
121
122
124 if self.resultFields:
125 return self.resultFields
126 return self.getEventManager().defaultResultFields
127
128
133
134
139
140
142 """Return the current event summary for this custom view.
143 """
144 zem = self.getEventManager()
145 return zem.getEventSummary(self.getWhere(),severity,state)
146
147
149 """Return the current event list for this custom view.
150 """
151 zem = self.getEventManager()
152 return zem.getEventList(self.getResultFields(),
153 self.getWhere(),
154 self.getOrderBy(),
155 **kwargs)
156 getEventHistoryList = getEventList
157
158
161 """
162 Return the event detail for an event within the context of a device
163 or other device organizer
164 """
165 evt = self.getEventManager().getEventDetailFromStatusOrHistory(
166 evid, dedupid, better)
167 return evt.__of__(self)
168
169
172
173
174 security.declareProtected('Manage Events','manage_addLogMessage')
176 """
177 Add a log message to an event
178 """
179 self.getEventManager().manage_addLogMessage(evid, message)
180 if REQUEST: return self.callZenScreen(REQUEST)
181
182
183 security.declareProtected('Manage Events','manage_deleteEvents')
185 """Delete events form this managed entity.
186 """
187 # If we pass REQUEST in to the getEventManager().manage_deleteEvents()
188 # call we don't get a proper refresh of the event console. It only
189 # works if self.callZenScreen() is called from here rather than down
190 # in the event manager. I'm not sure why. Using FakeResult to fetch
191 # the message seems like best workaround for now.
192 request = FakeRequest()
193 self.getEventManager().manage_deleteEvents(evids, request)
194 if REQUEST:
195 request.setMessage(REQUEST)
196 return self.callZenScreen(REQUEST)
197
198
199 security.declareProtected('Manage Events','manage_deleteHeartbeat')
201 """Delete events form this managed entity.
202 """
203 dev = self.device()
204 if dev:
205 return self.getEventManager().manage_deleteHeartbeat(dev.id, REQUEST)
206 if REQUEST:
207 return self.callZenScreen(REQUEST)
208
209
210 security.declareProtected('Manage Events','manage_ackEvents')
212 """Set event state form this managed entity.
213 """
214 return self.getEventManager().manage_ackEvents(evids, REQUEST)
215
216
217 security.declareProtected('Manage Events','manage_setEventStates')
219 """Set event state form this managed entity.
220 """
221 return self.getEventManager().manage_setEventStates(
222 eventState, evids, REQUEST)
223
224
225 security.declareProtected('Manage Events','manage_createEventMap')
227 """Create an event map from an event or list of events.
228 """
229 screen = self.getEventManager().manage_createEventMap(
230 eventClass, evids, REQUEST)
231 if REQUEST:
232 if screen: return screen
233 return self.callZenScreen(REQUEST)
234
235
236 security.declareProtected('Change Settings', 'manage_editEventView')
238 """Update user settings.
239 """
240 import WhereClause
241 if REQUEST and not REQUEST.form.has_key('where'):
242 clause = WhereClause.fromFormVariables(self.genMeta(), REQUEST.form)
243 if clause:
244 REQUEST.form['where'] = clause
245 return self.zmanage_editProperties(REQUEST)
246
247
248 security.declareProtected('Manage Events','manage_deleteBatchEvents')
249 - def manage_deleteBatchEvents(self, selectstatus='none', goodevids=[],
250 badevids=[], filter='',
251 offset=0, count=50, fields=[],
252 getTotalCount=True,
253 startdate=None, enddate=None,
254 severity=2, state=1, orderby='',
255 REQUEST=None, **kwargs):
256 """Delete events form this managed entity.
257 """
258 unused(count)
259 evids = self.getEventManager().getEventBatchME(self.dmd.Events,
260 where=self.getWhere(),
261 selectstatus=selectstatus,
262 goodevids=goodevids,
263 badevids=badevids,
264 filter=filter,
265 offset=offset, fields=fields,
266 getTotalCount=getTotalCount,
267 startdate=startdate,
268 enddate=enddate, severity=severity,
269 state=state, orderby=orderby,
270 **kwargs)
271 request = FakeRequest()
272 self.manage_deleteEvents(evids, request)
273 return request.get('message', '')
274
276 """Delete events form this managed entity.
277 """
278 request = FakeRequest()
279 self.getEventManager().manage_undeleteEvents(evids, request)
280 if REQUEST:
281 request.setMessage(REQUEST)
282 return self.callZenScreen(REQUEST)
283
284
285 #security.declareProtected('Manage Events','manage_undeleteBatchEvents')
286 - def manage_undeleteBatchEvents(self, selectstatus='none', goodevids=[],
287 badevids=[], filter='',
288 offset=0, count=50, fields=[],
289 getTotalCount=True,
290 startdate=None, enddate=None,
291 severity=2, state=1, orderby='',
292 REQUEST=None, **kwargs):
293 """Delete events form this managed entity.
294 Only called from event console, so uses FakeRequest to avoid
295 page rendering.
296 """
297 unused(count)
298 evids = self.ZenEventHistory.getEventBatchME(self.dmd.Events,
299 where=self.getWhere(),
300 selectstatus=selectstatus,
301 goodevids=goodevids,
302 badevids=badevids,
303 filter=filter,
304 offset=offset, fields=fields,
305 getTotalCount=getTotalCount,
306 startdate=startdate,
307 enddate=enddate, severity=severity,
308 state=state, orderby=orderby,
309 **kwargs)
310 request = FakeRequest()
311 self.manage_undeleteEvents(evids, request)
312 return request.get('message', '')
313
314
315 security.declareProtected('Manage Events','manage_ackBatchEvents')
316 - def manage_ackBatchEvents(self, selectstatus='none', goodevids=[],
317 badevids=[], filter='',
318 offset=0, count=50, fields=[],
319 getTotalCount=True,
320 startdate=None, enddate=None,
321 severity=2, state=1, orderby='',
322 REQUEST=None, **kwargs):
323 """Delete events form this managed entity.
324 Only called from event console, so uses FakeRequest to avoid
325 page rendering.
326 """
327 unused(count)
328 evids = self.getEventManager().getEventBatchME(self.dmd.Events,
329 where=self.getWhere(),
330 selectstatus=selectstatus,
331 goodevids=goodevids,
332 badevids=badevids,
333 filter=filter,
334 offset=offset, fields=fields,
335 getTotalCount=getTotalCount,
336 startdate=startdate,
337 enddate=enddate, severity=severity,
338 state=state, orderby=orderby,
339 **kwargs)
340 request = FakeRequest()
341 self.manage_ackEvents(evids, request)
342 return request.get('message', '')
343
344
345 InitializeClass(CustomEventView)
346
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0beta1 on Fri Aug 28 03:05:14 2009 | http://epydoc.sourceforge.net |