Skip to content

Commit c189674

Browse files
committed
create own module of KSWriter
1 parent d18ea64 commit c189674

File tree

4 files changed

+112
-106
lines changed

4 files changed

+112
-106
lines changed

kswriter/KSWriter.py

+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
#!/usr/bin/python
2+
3+
import copy
4+
import time
5+
import yaml
6+
import os
7+
import sys
8+
9+
class KSWriter():
10+
def __init__(self, im, rep, out):
11+
self.image_filename = im
12+
self.repo_filename = rep
13+
self.outdir = out
14+
self.image_stream = file(self.image_filename, 'r')
15+
self.repo_stream = file(self.repo_filename, 'r')
16+
self.extra = {}
17+
self.repo_meta = yaml.load(self.repo_stream)
18+
self.image_meta = yaml.load(self.image_stream)
19+
20+
pass
21+
def merge(*input):
22+
return list(reduce(set.union, input, set()))
23+
24+
def dump(self):
25+
print yaml.dump(yaml.load(self.stream))
26+
27+
def parse(self, img):
28+
conf = copy.copy(self.image_meta['Default'])
29+
plat = copy.copy(self.image_meta[img['Platform']])
30+
conf.update(plat)
31+
conf.update(img)
32+
lval = ['Repos', 'Groups', 'PostScripts', 'NoChrootScripts', 'RemovePackages', 'ExtraPackages']
33+
lvald = {}
34+
for l in lval:
35+
full = []
36+
if self.image_meta['Default'].has_key(l) and self.image_meta['Default'][l]:
37+
full = full + self.image_meta['Default'][l]
38+
if plat.has_key(l) and plat[l]:
39+
full = full + plat[l]
40+
if img.has_key(l) and img[l]:
41+
full = full + img[l]
42+
lvald[l] = sorted(set(full), key=full.index)
43+
#print full
44+
conf.update(lvald)
45+
#print conf
46+
postscript = ""
47+
for scr in conf['PostScripts']:
48+
if os.path.exists('./custom/scripts/%s.post' %scr):
49+
f = open('./custom/scripts/%s.post' %scr, 'r')
50+
postscript += f.read()
51+
postscript += "\n"
52+
f.close()
53+
else:
54+
print './custom/scripts/%s.post not found, skipping.' %scr
55+
56+
nochrootscript = ""
57+
for scr in conf['NoChrootScripts']:
58+
if os.path.exists('./custom/scripts/%s.nochroot' %scr):
59+
f = open('./custom/scripts/%s.nochroot' %scr, 'r')
60+
nochrootscript += f.read()
61+
nochrootscript += "\n"
62+
f.close()
63+
else:
64+
print './custom/scripts/%s.nochroot not found, skipping.' %scr
65+
66+
ptab = ""
67+
for g in [ plat, img ]:
68+
if g.has_key("Part"):
69+
f = open("./custom/part/%s" %g['Part'] )
70+
ptab = f.read()
71+
f.close()
72+
73+
conf['Part'] = ptab
74+
conf['Post'] = postscript
75+
conf['NoChroot'] = nochrootscript
76+
return conf
77+
78+
def process_files(self, meta, repos):
79+
new_repos = []
80+
if meta.has_key("Architecture") and meta['Architecture']:
81+
for repo in repos:
82+
r = {}
83+
r['Name'] = repo['Name']
84+
if repo.has_key('Options'):
85+
r['Options'] = repo['Options']
86+
r['Url'] = repo['Url'].replace("@ARCH@", meta['Architecture'])
87+
r['Url'] = r['Url'].replace("@RELEASE@", meta['Baseline'])
88+
new_repos.append(r)
89+
else:
90+
new_repos = repos
91+
92+
nameSpace = {'metadata': meta, 'repos': new_repos}
93+
t = kickstart(searchList=[nameSpace])
94+
a = str(t)
95+
if meta.has_key('FileName') and meta['FileName']:
96+
f = None
97+
if meta.has_key("Baseline"):
98+
mkdir_p(meta['Baseline'])
99+
f = open("%s/%s/%s.ks" %( self.outdir, meta['Baseline'], meta['FileName'] ), 'w')
100+
else:
101+
f = open("%s/%s.ks" %( self.outdir, meta['FileName'] ), 'w')
102+
f.write(a)
103+
f.close()
104+

kswriter/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from KSWriter import KSWriter

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515
author_email='[email protected]',
1616
url='http://meego.com/',
1717
scripts=['tools/kickstarter'],
18-
packages=['kickstart']
18+
packages=['kickstart', 'kswriter']
1919
)
2020

tools/kickstarter

+6-105
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import yaml, sys
44
import re, os
55
from kickstart import kickstart
6+
from kswriter import KSWriter
67

78
import copy
89
import time
@@ -38,103 +39,6 @@ def mkdir_p(path):
3839
pass
3940
else: raise
4041

41-
42-
class KSWriter():
43-
def __init__(self, im, rep, out):
44-
self.image_filename = im
45-
self.repo_filename = rep
46-
self.outdir = out
47-
self.image_stream = file(self.image_filename, 'r')
48-
self.repo_stream = file(self.repo_filename, 'r')
49-
self.extra = {}
50-
pass
51-
def merge(*input):
52-
return list(reduce(set.union, input, set()))
53-
54-
def dump(self):
55-
print yaml.dump(yaml.load(self.stream))
56-
57-
def parse(self, img):
58-
conf = copy.copy(image_meta['Default'])
59-
plat = copy.copy(image_meta[img['Platform']])
60-
conf.update(plat)
61-
conf.update(img)
62-
lval = ['Repos', 'Groups', 'PostScripts', 'NoChrootScripts', 'RemovePackages', 'ExtraPackages']
63-
lvald = {}
64-
for l in lval:
65-
full = []
66-
if image_meta['Default'].has_key(l) and image_meta['Default'][l]:
67-
full = full + image_meta['Default'][l]
68-
if plat.has_key(l) and plat[l]:
69-
full = full + plat[l]
70-
if img.has_key(l) and img[l]:
71-
full = full + img[l]
72-
lvald[l] = sorted(set(full), key=full.index)
73-
#print full
74-
conf.update(lvald)
75-
#print conf
76-
postscript = ""
77-
for scr in conf['PostScripts']:
78-
if os.path.exists('./custom/scripts/%s.post' %scr):
79-
f = open('./custom/scripts/%s.post' %scr, 'r')
80-
postscript += f.read()
81-
postscript += "\n"
82-
f.close()
83-
else:
84-
print './custom/scripts/%s.post not found, skipping.' %scr
85-
86-
nochrootscript = ""
87-
for scr in conf['NoChrootScripts']:
88-
if os.path.exists('./custom/scripts/%s.nochroot' %scr):
89-
f = open('./custom/scripts/%s.nochroot' %scr, 'r')
90-
nochrootscript += f.read()
91-
nochrootscript += "\n"
92-
f.close()
93-
else:
94-
print './custom/scripts/%s.nochroot not found, skipping.' %scr
95-
96-
ptab = ""
97-
for g in [ plat, img ]:
98-
if g.has_key("Part"):
99-
f = open("./custom/part/%s" %g['Part'] )
100-
ptab = f.read()
101-
f.close()
102-
103-
conf['Part'] = ptab
104-
conf['Post'] = postscript
105-
conf['NoChroot'] = nochrootscript
106-
return conf
107-
108-
def process_files(self, meta, repos):
109-
new_repos = []
110-
#print repos
111-
#print meta
112-
if meta.has_key("Architecture") and meta['Architecture']:
113-
for repo in repos:
114-
r = {}
115-
r['Name'] = repo['Name']
116-
if repo.has_key('Options'):
117-
r['Options'] = repo['Options']
118-
r['Url'] = repo['Url'].replace("@ARCH@", meta['Architecture'])
119-
r['Url'] = r['Url'].replace("@RELEASE@", meta['Baseline'])
120-
new_repos.append(r)
121-
else:
122-
new_repos = repos
123-
124-
nameSpace = {'metadata': meta, 'repos': new_repos}
125-
t = kickstart(searchList=[nameSpace])
126-
a = str(t)
127-
if meta.has_key('FileName') and meta['FileName']:
128-
f = None
129-
if meta.has_key("Baseline"):
130-
mkdir_p(meta['Baseline'])
131-
f = open("%s/%s/%s.ks" %( self.outdir, meta['Baseline'], meta['FileName'] ), 'w')
132-
else:
133-
f = open("%s/%s.ks" %( self.outdir, meta['FileName'] ), 'w')
134-
f.write(a)
135-
f.close()
136-
137-
13842
def image_xml(root, img):
13943
s = etree.Element("config")
14044
c = etree.Element('name')
@@ -208,12 +112,9 @@ if __name__ == '__main__':
208112
outdir = options.outdir
209113

210114
ks = KSWriter(options.configsfile, options.repofile, outdir)
211-
repo_meta = yaml.load(ks.repo_stream)
212-
image_meta = yaml.load(ks.image_stream)
213-
214-
r = repo_meta['Repositories']
215-
if image_meta.has_key('Configurations'):
216-
for img in image_meta['Configurations']:
115+
r = ks.repo_meta['Repositories']
116+
if ks.image_meta.has_key('Configurations'):
117+
for img in ks.image_meta['Configurations']:
217118
conf = ks.parse(img)
218119
if options.config:
219120
if img.has_key('FileName') and options.config == img['FileName']:
@@ -226,7 +127,7 @@ if __name__ == '__main__':
226127
ks.process_files(conf, r)
227128
else:
228129
print "%s is inactive, not generating %s at this time" %(img['Name'], img['FileName'] )
229-
for path in image_meta['ExternalConfigs']:
130+
for path in ks.image_meta['ExternalConfigs']:
230131
for f in os.listdir(path):
231132
if f.endswith('.yaml'):
232133
fp = file('%s/%s' %(path, f), 'r')
@@ -251,7 +152,7 @@ if __name__ == '__main__':
251152
print "WARNING: File '%s' ignored." % (f)
252153

253154
if options.indexfile:
254-
str = create_xml(image_meta)
155+
str = create_xml(ks.image_meta)
255156
f = open(options.indexfile, 'w')
256157
f.write(str)
257158
f.close()

0 commit comments

Comments
 (0)