1
2
3
4
5
6
7
8
9
10
11
12
13
14 __doc__="""CiscoLoader.py
15
16 CiscoLoader.py populates the sysObjectIdClassifier with Cisco product data
17 by parsing their Products mib.
18
19 $Id: CiscoLoader.py,v 1.2 2004/02/18 16:19:18 edahl Exp $"""
20
21 __version__ = "$Revision: 1.2 $"[11:-2]
22
23 import re
24
25 import Globals
26
27 from Products.ZenUtils.BasicLoader import BasicLoader
28 from Products.ZenModel.Manufacturer import manage_addManufacturer
29 from Products.ZenModel.HardwareClass import HardwareClass
30
32 '''Load a machine'''
33
35 '''Handle command line options, get app instance,
36 load caches and setup log file'''
37 BasicLoader.__init__(self)
38 manuf = self.dmd.Manufacturers
39 if not hasattr(manuf, 'Cisco'):
40 manage_addManufacturer(manuf, 'Cisco')
41 self.cisco = manuf._getOb('Cisco')
42
43
44 lineparser1 = re.compile(
45 r'^(?P<model>\w+)\s+OBJ.*Products (?P<id>\d+) \}.*-- (?P<descr>.*)')
46 lineparser2 = re.compile(
47 r'^(?P<model>\w+)\s+OBJ.*Products (?P<id>\d+) \}.*')
48
49 modelclean = re.compile(r'cisco|catalyst')
50
51 - def loaderBody(self,line):
52 """loader body override to customize what will load"""
53 m = self.lineparser1.match(line)
54 if not m: m = self.lineparser2.match(line)
55 if not m: return
56 fullid = '.1.3.6.1.4.1.9.1.' + m.group('id')
57 model = self.modelclean.sub('', m.group('model'))
58 description = ""
59 try:
60 description = m.group('descr')
61 except:pass
62 self.log.debug("Loading fullid=%s,prodpath=%s,descr=%s"
63 % (fullid, model, description))
64 prod = HardwareClass(model,productKey=fullid,description=description)
65 self.cisco.products._setObject(model, prod)
66
67
68
72
73
75 (self.options, args) = self.parser.parse_args()
76 if len(args) < 1:
77 self.parser.error("incorrect number of arguments")
78 self.filename = args[0]
79
80
81 if __name__ == "__main__":
82 loader = CiscoLoader()
83 loader.loadDatabase()
84 print "Database Load is finished!"
85