blob: 4f7a824da1ee8242b57086a41732172ad925da34 [file] [log] [blame]
lmr6f669ce2009-05-31 19:02:42 +00001#!/usr/bin/env python
2import shutil, os, sys
3
4"""
5Program that replaces the CD keys present on a KVM autotest configuration file.
6
7@copyright: Red Hat 2008-2009
8@author: uril@redhat.com (Uri Lublin)
9"""
10
11
12def file_to_lines(filename):
13 f = open(filename, 'r')
14 lines = f.readlines()
15 f.close
16 return lines
17
18def lines_to_file(filename, lines):
19 f = open(filename, 'w')
20 f.writelines(lines)
21 f.close()
22
23def replace_var_with_val(lines, variables):
24 new = []
25 for line in lines:
26 for (var,val) in variables:
27 if var in line:
28 print 'replacing %s with %s in "%s"' % (var, val, line[:-1])
29 line = line.replace(var, val)
30 print ' ... new line is "%s"' % (line[:-1])
31 new.append(line)
32 return new
33
34def filter_comments(line):
35 return not line.strip().startswith('#')
36
37def filter_empty(line):
38 return len(line.strip()) != 0
39
40def line_to_pair(line):
41 x,y = line.split('=', 1)
42 return (x.strip(), y.strip())
43
44def read_vars(varfile):
45 varlines = file_to_lines(varfile)
46 varlines = filter(filter_comments, varlines)
47 varlines = filter(filter_empty, varlines)
48 vars = map(line_to_pair, varlines)
49 return vars
50
51def main(cfgfile, varfile):
52 # first save a copy of the original file (if does not exist)
53 backupfile = '%s.backup' % cfgfile
54 if not os.path.exists(backupfile):
55 shutil.copy(cfgfile, backupfile)
56
57 vars = read_vars(varfile)
58 datalines = file_to_lines(cfgfile)
59 newlines = replace_var_with_val(datalines, vars)
60 lines_to_file(cfgfile, newlines)
61
62
63if __name__ == '__main__':
64 def die(msg, val):
65 print msg
66 sys.exit(val)
67 if len(sys.argv) != 3:
68 die('usage: %s <kvm_tests-config-file> <varfile>', 1)
69 cfgfile = sys.argv[1]
70 varfile = sys.argv[2]
71 if not os.path.exists(cfgfile):
72 die('bad cfgfile "%s"' % cfgfile, 2)
73 if not os.path.exists(varfile):
74 die('bad varfile "%s"' % varfile, 2)
75 main(cfgfile, varfile)