1
2
3
4
5
6
7
8
9
10
11
12
13
14 from pysamba.twisted.reactor import eventContext
15 from pysamba.wbem.Query import Query
16 from Products.ZenUtils.Driver import drive
17
18 import logging
19 log = logging.getLogger('zen.Watcher')
20
22
24 log.debug('Starting watcher on %s', device.id)
25 self.wmi = Query()
26 self.device = device
27 self.queryString = query
28 self.enum = None
29
31 name = self.device.id
32 def inner(driver):
33 try:
34 log.debug('connecting to %s', name)
35 d = self.device
36 yield self.wmi.connect(eventContext,
37 d.manageIp,
38 '%s%%%s' % (d.zWinUser, d.zWinPassword))
39 driver.next()
40 log.debug('connected to %s sending query', name)
41 yield self.wmi.notificationQuery(self.queryString)
42 self.enum = driver.next()
43 log.debug('got query response from %s', name)
44 except Exception, ex:
45 log.exception(ex)
46 raise
47 return drive(inner)
48
50 assert self.enum
51 name = self.device.id
52 log.debug("Fetching events for %s", name)
53 def fetched(result):
54 log.debug("Events fetched for %s", name)
55 return result
56 try:
57 result = self.enum.fetchSome(timeoutMs=timeout, chunkSize=chunkSize)
58 result.addCallback(fetched)
59 return result
60 except Exception, ex:
61 raise ex
62
65