source: people/peter.buschman/backup_monitoring/parsing/parsers/bpgetconfig/_bpgetconfig.py@ 976

Last change on this file since 976 was 976, checked in by peter, on Dec 6, 2011 at 10:19:33 AM

Raw checkin of current NetBackup / TSM parsing code.

File size: 1.9 KB
Line 
1import re
2
3from ....builtins import *
4
5from ...exceptions import *
6from ...expressions import *
7from ...streams import *
8
9##
10## bpgetconfig has one record per-stream
11##
12def stream(stream, format='bpgetconfig -X'):
13
14 if format in ['bpgetconfig -X', 'bpgetconfig -L']:
15 return SingleRecordStream(stream)
16 else:
17 raise ParseError, 'Unknown format %s' % (format)
18
19
20##
21## Parse a bpgetconfig record
22##
23## bpgetconfig -X
24## bpgetconfig -L
25##
26def parse(record, format='bpgetconfig -X', version=None, tz=None):
27
28 config = ExtendedDict()
29
30 config['servers'] = []
31 config['excludes'] = []
32
33 if format in ['bpgetconfig -X', 'bpgetconfig -L']:
34
35 try:
36
37 for line in record:
38 pair = line.split(' = ') # pairs are delimited with =
39 key = pair[0]
40 if len(pair) == 2: # check if value exists
41 value = pair[1]
42 if re_integer.match(value): # convert to integer if possible
43 value = int(value)
44 else:
45 value = None # use None for no value
46 config[key] = value # store under the original key name
47 key = key.lower() # lowercase the key name
48 key = key.replace(' ', '_') # replace spaces with underscores
49 key = key.replace('/', '_') # replace slashes with underscores
50 config[key] = value # store under the new key name
51
52 if key == 'server':
53 config.servers.append(value)
54
55 if key == 'exclude':
56 config.excludes.append(value)
57
58 return config
59
60 except Exception, e:
61
62 raise ParseError, e
63
64 else:
65
66 raise ParseError, 'Unknown format %s' % (format)
Note: See TracBrowser for help on using the repository browser.