| 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' : 'editEventView',
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, REQUEST)
88 if self._selectedTabName(templateName, REQUEST).endswith("Events"):
89 tabs[0]['selected']=True
90 # if we don't have any global roles take away edit tab
91 if self.hasNoGlobalRoles():
92 return [tabs[0]]
93 return tabs
94
95
97 """Return the breadcrumb links for this object add CustomViews list.
98 [('url','id'), ...]
99 """
100 crumbs = super(CustomEventView, self).breadCrumbs(terminator)
101 url = aq_parent(self).absolute_url_path() + "/editEventViews"
102 crumbs.insert(-1,(url,'Event Views'))
103 return crumbs
104
105
107 """Return the url for the default screen for this custom view.
108 """
109 tpl = 'viewEvents' if self.type == "status" else 'viewHistoryEvents'
110 return '%s/%s' % (self.absolute_url_path(), tpl)
111
112
114 """Return the default screen for this custom view.
115 """
116 self.REQUEST.response.redirect(self.getEventViewURL())
117
118
120 """
121 Get the event pill for this event view.
122 """
123 from Products.ZenEvents.browser.EventPillsAndSummaries import getEventPill
124 return getEventPill(self.getEventManager(), self.getWhere(), number,
125 url=self.getEventViewURL())
126
127
129 """Return the current event manager for this object.
130 """
131 if self.type == "status":
132 return self.ZenEventManager
133 else:
134 return self.ZenEventHistory
135
136
138 if self.resultFields:
139 return self.resultFields
140 return self.getEventManager().defaultResultFields
141
142
147
148
153
154
156 """Return the current event summary for this custom view.
157 """
158 zem = self.getEventManager()
159 return zem.getEventSummary(self.getWhere(),severity,state)
160
161
163 """Return the current event list for this custom view.
164 """
165 zem = self.getEventManager()
166 return zem.getEventList(self.getResultFields(),
167 self.getWhere(),
168 self.getOrderBy(),
169 **kwargs)
170 getEventHistoryList = getEventList
171
172
175 """
176 Return the event detail for an event within the context of a device
177 or other device organizer
178 """
179 evt = self.getEventManager().getEventDetailFromStatusOrHistory(
180 evid, dedupid, better)
181 return evt.__of__(self)
182
183
186
187
188 security.declareProtected('Manage Events','manage_addLogMessage')
190 """
191 Add a log message to an event
192 """
193 self.getEventManager().manage_addLogMessage(evid, message)
194 if REQUEST: return self.callZenScreen(REQUEST)
195
196
197 security.declareProtected('Manage Events','manage_deleteEvents')
199 """Delete events form this managed entity.
200 """
201 # If we pass REQUEST in to the getEventManager().manage_deleteEvents()
202 # call we don't get a proper refresh of the event console. It only
203 # works if self.callZenScreen() is called from here rather than down
204 # in the event manager. I'm not sure why. Using FakeResult to fetch
205 # the message seems like best workaround for now.
206 request = FakeRequest()
207 self.getEventManager().manage_deleteEvents(evids, request)
208 if REQUEST:
209 request.setMessage(REQUEST)
210 return self.callZenScreen(REQUEST)
211
212
213 security.declareProtected('Manage Events','manage_deleteHeartbeat')
215 """Delete events form this managed entity.
216 """
217 dev = self.device()
218 if dev:
219 return self.getEventManager().manage_deleteHeartbeat(dev.id, REQUEST)
220 if REQUEST:
221 return self.callZenScreen(REQUEST)
222
223
224 security.declareProtected('Manage Events','manage_ackEvents')
226 """Set event state form this managed entity.
227 """
228 return self.getEventManager().manage_ackEvents(evids, REQUEST)
229
230
231 security.declareProtected('Manage Events','manage_setEventStates')
233 """Set event state form this managed entity.
234 """
235 return self.getEventManager().manage_setEventStates(
236 eventState, evids, REQUEST)
237
238
239 security.declareProtected('Manage Events','manage_createEventMap')
241 """Create an event map from an event or list of events.
242 """
243 screen = self.getEventManager().manage_createEventMap(
244 eventClass, evids, REQUEST)
245 if REQUEST:
246 if screen: return screen
247 return self.callZenScreen(REQUEST)
248
249
250 security.declareProtected('Change Settings', 'manage_editEventView')
252 """Update user settings.
253 """
254 import WhereClause
255 if REQUEST and not REQUEST.form.has_key('where'):
256 clause = WhereClause.fromFormVariables(self.genMeta(), REQUEST.form)
257 if clause:
258 REQUEST.form['where'] = clause
259 return self.zmanage_editProperties(REQUEST)
260
261
262 security.declareProtected('Manage Events','manage_deleteBatchEvents')
263 - def manage_deleteBatchEvents(self, selectstatus='none', goodevids=[],
264 badevids=[], filter='',
265 offset=0, count=50, fields=[],
266 getTotalCount=True,
267 startdate=None, enddate=None,
268 severity=2, state=1, orderby='',
269 REQUEST=None, **kwargs):
270 """Delete events form this managed entity.
271 """
272 unused(count)
273 evids = self.getEventManager().getEventBatchME(self.dmd.Events,
274 where=self.getWhere(),
275 selectstatus=selectstatus,
276 goodevids=goodevids,
277 badevids=badevids,
278 filter=filter,
279 offset=offset, fields=fields,
280 getTotalCount=getTotalCount,
281 startdate=startdate,
282 enddate=enddate, severity=severity,
283 state=state, orderby=orderby,
284 **kwargs)
285 request = FakeRequest()
286 self.manage_deleteEvents(evids, request)
287 return request.get('message', '')
288
290 """Delete events form this managed entity.
291 """
292 request = FakeRequest()
293 self.getEventManager().manage_undeleteEvents(evids, request)
294 if REQUEST:
295 request.setMessage(REQUEST)
296 return self.callZenScreen(REQUEST)
297
298
299 #security.declareProtected('Manage Events','manage_undeleteBatchEvents')
300 - def manage_undeleteBatchEvents(self, selectstatus='none', goodevids=[],
301 badevids=[], filter='',
302 offset=0, count=50, fields=[],
303 getTotalCount=True,
304 startdate=None, enddate=None,
305 severity=2, state=1, orderby='',
306 REQUEST=None, **kwargs):
307 """Delete events form this managed entity.
308 Only called from event console, so uses FakeRequest to avoid
309 page rendering.
310 """
311 unused(count)
312 evids = self.ZenEventHistory.getEventBatchME(self.dmd.Events,
313 where=self.getWhere(),
314 selectstatus=selectstatus,
315 goodevids=goodevids,
316 badevids=badevids,
317 filter=filter,
318 offset=offset, fields=fields,
319 getTotalCount=getTotalCount,
320 startdate=startdate,
321 enddate=enddate, severity=severity,
322 state=state, orderby=orderby,
323 **kwargs)
324 request = FakeRequest()
325 self.manage_undeleteEvents(evids, request)
326 return request.get('message', '')
327
328
329 security.declareProtected('Manage Events','manage_ackBatchEvents')
330 - def manage_ackBatchEvents(self, selectstatus='none', goodevids=[],
331 badevids=[], filter='',
332 offset=0, count=50, fields=[],
333 getTotalCount=True,
334 startdate=None, enddate=None,
335 severity=2, state=1, orderby='',
336 REQUEST=None, **kwargs):
337 """Delete events form this managed entity.
338 Only called from event console, so uses FakeRequest to avoid
339 page rendering.
340 """
341 unused(count)
342 evids = self.getEventManager().getEventBatchME(self.dmd.Events,
343 where=self.getWhere(),
344 selectstatus=selectstatus,
345 goodevids=goodevids,
346 badevids=badevids,
347 filter=filter,
348 offset=offset, fields=fields,
349 getTotalCount=getTotalCount,
350 startdate=startdate,
351 enddate=enddate, severity=severity,
352 state=state, orderby=orderby,
353 **kwargs)
354 request = FakeRequest()
355 self.manage_ackEvents(evids, request)
356 return request.get('message', '')
357
358
359 InitializeClass(CustomEventView)
360
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Wed Jul 14 12:01:45 2010 | http://epydoc.sourceforge.net |