Package ZenEvents :: Module CustomEventView
[hide private]
[frames] | no frames]

Source Code for Module ZenEvents.CustomEventView

  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   
29 -def manage_addCustomEventView(context, id, REQUEST=None):
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
40 -class CustomEventView(ZenModelRM, EventFilter):
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')
83 - def zentinelTabs(self, templateName):
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
95 - def breadCrumbs(self, terminator='dmd'):
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
105 - def getEventView(self):
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
114 - def getEventManager(self):
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
123 - def getResultFields(self):
124 if self.resultFields: 125 return self.resultFields 126 return self.getEventManager().defaultResultFields
127 128
129 - def getWhere(self):
130 if self.where: 131 return self.where 132 return self.getEventManager().defaultWhere
133 134
135 - def getOrderBy(self):
136 if self.orderby: 137 return self.orderby 138 return self.getEventManager().defaultOrderby
139 140
141 - def getEventSummary(self, severity=1, state=1):
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
148 - def getEventList(self, **kwargs):
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
159 - def getEventDetailFromStatusOrHistory(self, evid=None, 160 dedupid=None, better=False):
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
170 - def convertEventField(self, field, value, default=""):
171 return self.getEventManager().convertEventField(field, value, default)
172 173 174 security.declareProtected('Manage Events','manage_addLogMessage')
175 - def manage_addLogMessage(self, evid=None, message='', REQUEST=None):
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')
184 - def manage_deleteEvents(self, evids=(), REQUEST=None):
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')
200 - def manage_deleteHeartbeat(self, REQUEST=None):
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')
211 - def manage_ackEvents(self, evids=(), REQUEST=None):
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')
218 - def manage_setEventStates(self, eventState=None, evids=(), REQUEST=None):
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')
226 - def manage_createEventMap(self, eventClass=None, evids=(), REQUEST=None):
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')
237 - def manage_editEventView(self, REQUEST=None):
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
275 - def manage_undeleteEvents(self, evids=(), REQUEST=None):
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