1
2
3
4
5
6
7
8
9
10 import logging
11 log = logging.getLogger("zen.EventClasses")
12
13 from Products.ZenUtils.Ext import DirectResponse
14 from Products import Zuul
15 from Products.Zuul.decorators import require, serviceConnectionError
16 from Products.Zuul.routers import TreeRouter
17 from Products.ZenMessaging.audit import audit
18 from collections import Mapping
22 """
23 Event Classes and their instance maps
24 """
25
27 return Zuul.getFacade('eventclasses', self.context)
28
29 @serviceConnectionError
31 """
32 Add new event class mapping for the current context
33 """
34 facade = self._getFacade()
35 newInstance = facade.addNewInstance(params)
36 audit('UI.EventClasses.AddInstance', params['newName'], data_=params)
37 return DirectResponse.succeed(data=Zuul.marshal(newInstance))
38
39 @require('Manage DMD')
41 """
42 remove instance(s) from an event class
43 """
44 facade = self._getFacade()
45 facade.removeInstance(instances)
46 audit('UI.EventClasses.RemoveInstances', instance=instances)
47 return DirectResponse.succeed()
48
49 @serviceConnectionError
50 @require('Manage DMD')
52 """
53 Edit an event class instance
54 """
55 oldData = self.getInstanceData(params['uid']).data
56 self.testCompileTransform(params.get('transform'))
57 self.testRegex(params['regex'], params['example'])
58 self.testRule(params['rule'])
59 facade = self._getFacade()
60 facade.editInstance(params)
61
62 audit('UI.EventClasses.EditInstance', params['uid'],
63 data_=params, oldData_=oldData)
64
65 return DirectResponse.succeed()
66
67 @serviceConnectionError
69 """
70 Returns event class mappings for the current context
71 """
72 facade = self._getFacade()
73 data = facade.getInstances(uid)
74
75 return DirectResponse( data=Zuul.marshal(data) )
76
77 @serviceConnectionError
79 """
80 return all extra data for instance id
81 """
82 facade = self._getFacade()
83 data = facade.getInstanceData(uid)
84 return DirectResponse(data=Zuul.marshal(data) )
85
87 """
88 returns the sequence order of keys for a given instance
89 """
90 facade = self._getFacade()
91 data = facade.getSequence(uid)
92 return DirectResponse(data=Zuul.marshal(data) )
93
94 @require('Manage DMD')
96 """
97 resequences a list of sequenced instances
98 """
99 facade = self._getFacade()
100 facade.resequence(uids)
101 audit('UI.EventClasses.Resequence', sequence=uids)
102 return DirectResponse.succeed()
103
117
125
133
134 @require('Manage DMD')
136 """
137 edit the description of a given event class
138 """
139 facade = self._getFacade()
140 facade.editEventClassDescription(uid, description)
141 audit('UI.EventClasses.EditEventClass', EventClass=uid, Description=description)
142 return DirectResponse.succeed()
143
144 @require('Manage DMD')
146 """
147 remove an event class
148 """
149 facade = self._getFacade()
150 facade.deleteNode(uid)
151 audit('UI.EventClasses.DeleteEventClass', deletedEventClass=uid)
152 return DirectResponse.succeed()
153
161
163 """
164 Test our regex using the example event string.
165 """
166 facade = self._getFacade()
167 reg = facade.testRegex(regex, example)
168 if reg is True:
169 return DirectResponse.succeed()
170 return DirectResponse.fail(reg)
171
173 """
174 Test our rule by compiling it.
175 """
176 facade = self._getFacade()
177 facade.testRule(rule)
178 return DirectResponse.succeed()
179
180 @require('Manage DMD')
182 """
183 move a mapped instance to a different organizer
184 @params['targetUid']
185 @params['UidsToMove']
186 """
187 facade = self._getFacade()
188 for uid in params['UidsToMove']:
189 facade.moveInstance(params['targetUid'], uid)
190 audit('UI.EventClasses.MoveInstance', movedInstances=params['UidsToMove'], target=params['targetUid'])
191 return DirectResponse.succeed()
192
193 @require('Manage DMD')
195 """
196 move an event class organizer under a different organizer
197 """
198 facade = self._getFacade()
199 facade.moveClassOrganizer(params['targetUid'], params['UidsToMove'][0])
200 audit('UI.EventClasses.MoveOrganizer', movedOrganizer=params['UidsToMove'], target=params['targetUid'])
201 return DirectResponse.succeed()
202
204 """
205 return all the event counts for this context
206 """
207 facade = self._getFacade()
208 data = facade.getEventsCounts(uid)
209 return DirectResponse(data=Zuul.marshal(data) )
210