Guest User

Untitled

a guest
Oct 18th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. from collections import defaultdict
  2. import re
  3.  
  4.  
  5. class NagiosStatus(object):
  6.  
  7. RE_BLOCKSTART = re.compile('(\w+)\s*{')
  8. RE_BLOCKEND = re.compile('^\s*}\s*$')
  9. RE_DEF = re.compile('(\S+)\s*=(.+)$')
  10.  
  11. def __init__(self, f):
  12. self.f = f
  13. self.hosts = defaultdict(list)
  14. self.services = defaultdict(list)
  15. try:
  16. self._parse_blocks()
  17. except StopIteration:
  18. pass
  19.  
  20. def _parse_blocks(self):
  21. while True:
  22. l = self.f.next()
  23. m = self.RE_BLOCKSTART.search(l)
  24. if m:
  25. defs = self._parse_defs()
  26. if m.group(1) == 'servicestatus':
  27. self.services[defs['host_name']].append(defs)
  28. elif m.group(1) == 'hoststatus':
  29. self.hosts[defs['host_name']].append(defs)
  30.  
  31. def _parse_defs(self):
  32. defs = {}
  33. while True:
  34. l = self.f.next()
  35. m = self.RE_BLOCKEND.search(l)
  36. if m:
  37. return defs
  38.  
  39. m = self.RE_DEF.search(l)
  40. if m:
  41. defs[m.group(1)] = m.group(2)
Add Comment
Please, Sign In to add comment