+++ /dev/null
-#!/usr/bin/env python
-
-
-
-
-##################################################
-## DEPENDENCIES
-import sys
-import os
-import os.path
-import __builtin__
-from os.path import getmtime, exists
-import time
-import types
-from Cheetah.Version import MinCompatibleVersion as RequiredCheetahVersion
-from Cheetah.Version import MinCompatibleVersionTuple as RequiredCheetahVersionTuple
-from Cheetah.Template import Template
-from Cheetah.DummyTransaction import *
-from Cheetah.NameMapper import NotFound, valueForName, valueFromSearchList, valueFromFrameOrSearchList
-from Cheetah.CacheRegion import CacheRegion
-import Cheetah.Filters as Filters
-import Cheetah.ErrorCatchers as ErrorCatchers
-
-##################################################
-## MODULE CONSTANTS
-VFFSL=valueFromFrameOrSearchList
-VFSL=valueFromSearchList
-VFN=valueForName
-currentTime=time.time
-__CHEETAH_version__ = '2.2.2'
-__CHEETAH_versionTuple__ = (2, 2, 2, 'final', 0)
-__CHEETAH_genTime__ = 1273202421.2641661
-__CHEETAH_genTimestamp__ = 'Thu May 6 23:20:21 2010'
-__CHEETAH_src__ = 'kickstart.tmpl'
-__CHEETAH_srcLastModified__ = 'Thu May 6 22:51:32 2010'
-__CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
-
-if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
- raise AssertionError(
- 'This template was compiled with Cheetah version'
- ' %s. Templates compiled before version %s must be recompiled.'%(
- __CHEETAH_version__, RequiredCheetahVersion))
-
-##################################################
-## CLASSES
-
-class kickstart(Template):
-
- ##################################################
- ## CHEETAH GENERATED METHODS
-
-
- def __init__(self, *args, **KWs):
-
- super(kickstart, self).__init__(*args, **KWs)
- if not self._CHEETAH__instanceInitialized:
- cheetahKWArgs = {}
- allowedKWs = 'searchList namespaces filter filtersLib errorCatcher'.split()
- for k,v in KWs.items():
- if k in allowedKWs: cheetahKWArgs[k] = v
- self._initCheetahInstance(**cheetahKWArgs)
-
-
- def respond(self, trans=None):
-
-
-
- ## CHEETAH: main method generated for this template
- if (not trans and not self._CHEETAH__isBuffering and not callable(self.transaction)):
- trans = self.transaction # is None unless self.awake() was called
- if not trans:
- trans = DummyTransaction()
- _dummyTrans = True
- else: _dummyTrans = False
- write = trans.response().write
- SL = self._CHEETAH__searchList
- _filter = self._CHEETAH__currentFilter
-
- ########################################
- ## START - generated method body
-
- write(u'''#
-# Do not Edit! Generated by:
-# kickstarter.py
-#
-
-lang ''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Language",True) # u'${metadata.Language}' on line 6, col 6
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Language}')) # from line 6, col 6.
- write(u'''
-keyboard ''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Keyboard",True) # u'${metadata.Keyboard}' on line 7, col 10
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Keyboard}')) # from line 7, col 10.
- write(u'''
-timezone --utc ''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Timezone",True) # u'${metadata.Timezone}' on line 8, col 16
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Timezone}')) # from line 8, col 16.
- write(u'''
-auth --useshadow --enablemd5
-''')
- if VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Part",True) == "": # generated from line 10, col 1
- write(u'''part / --size ''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.PartSize",True) # u'${metadata.PartSize}' on line 11, col 15
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.PartSize}')) # from line 11, col 15.
- write(u''' --ondisk sda --fstype=ext3
-''')
- else: # generated from line 12, col 1
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Part",True) # u'${metadata.Part}' on line 13, col 1
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Part}')) # from line 13, col 1.
- write(u'''
-''')
- write(u'''rootpw ''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.RootPass",True) # u'${metadata.RootPass}' on line 15, col 8
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.RootPass}')) # from line 15, col 8.
- write(u'''
-xconfig --startxonboot
-bootloader --timeout=''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.BootloaderTimeout",True) # u'${metadata.BootloaderTimeout}' on line 17, col 22
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.BootloaderTimeout}')) # from line 17, col 22.
- write(u''' --append="''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.BootloaderAppend",True) # u'${metadata.BootloaderAppend}' on line 17, col 62
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.BootloaderAppend}')) # from line 17, col 62.
- write(u'''"
-desktop --autologinuser=''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.DefaultUser",True) # u'${metadata.DefaultUser}' on line 18, col 25
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.DefaultUser}')) # from line 18, col 25.
- write(u''' --defaultdesktop=''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Desktop",True) # u'${metadata.Desktop}' on line 18, col 67
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Desktop}')) # from line 18, col 67.
- write(u'''
-user --name ''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.DefaultUser",True) # u'${metadata.DefaultUser}' on line 19, col 13
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.DefaultUser}')) # from line 19, col 13.
- write(u''' --groups audio,video --password ''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.DefaultUserPass",True) # u'${metadata.DefaultUserPass}' on line 19, col 70
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.DefaultUserPass}')) # from line 19, col 70.
- write(u'''
-
-''')
- save = ""
- if VFSL([locals()]+SL+[globals(), __builtin__],"metadata.SaveRepos",True): # generated from line 22, col 1
- save = "--save"
- for r in VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Repos",True): # generated from line 25, col 1
- for rr in VFSL([locals()]+SL+[globals(), __builtin__],"repos",True): # generated from line 26, col 1
- if VFSL([locals()]+SL+[globals(), __builtin__],"rr.Name",True) == VFSL([locals()]+SL+[globals(), __builtin__],"r",True): # generated from line 27, col 1
- write(u'''repo --name=''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"r",True) # u'${r}' on line 28, col 15
- if _v is not None: write(_filter(_v, rawExpr=u'${r}')) # from line 28, col 15.
- write(u''' --baseurl=''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"rr.Url",True) # u'${rr.Url}' on line 28, col 30
- if _v is not None: write(_filter(_v, rawExpr=u'${rr.Url}')) # from line 28, col 30.
- write(u''' ''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"save",True) # u'${save}' on line 28, col 40
- if _v is not None: write(_filter(_v, rawExpr=u'${save}')) # from line 28, col 40.
- write(u'''
-''')
- write(u'''
-
-''')
- if VFSL([locals()]+SL+[globals(), __builtin__],"metadata.PackageArgs",True) != "": # generated from line 34, col 1
- write(u'''%packages ''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.PackageArgs",True) # u'${metadata.PackageArgs}' on line 35, col 11
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.PackageArgs}')) # from line 35, col 11.
- write(u'''
-''')
- else: # generated from line 36, col 1
- write(u'''%packages
-''')
- write(u'''
-''')
- for g in VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Groups",True): # generated from line 40, col 1
- write(u'''@''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"g",True) # u'${g}' on line 41, col 2
- if _v is not None: write(_filter(_v, rawExpr=u'${g}')) # from line 41, col 2.
- write(u'''
-''')
- write(u'''
-
-''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Kernel",True) # u'$metadata.Kernel' on line 45, col 1
- if _v is not None: write(_filter(_v, rawExpr=u'$metadata.Kernel')) # from line 45, col 1.
- write(u'''
-
-''')
- for e in VFSL([locals()]+SL+[globals(), __builtin__],"metadata.ExtraPackages",True): # generated from line 47, col 1
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"e",True) # u'${e}' on line 48, col 1
- if _v is not None: write(_filter(_v, rawExpr=u'${e}')) # from line 48, col 1.
- write(u'''
-''')
- for e in VFSL([locals()]+SL+[globals(), __builtin__],"metadata.RemovePackages",True): # generated from line 50, col 1
- write(u'''-''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"e",True) # u'${e}' on line 51, col 2
- if _v is not None: write(_filter(_v, rawExpr=u'${e}')) # from line 51, col 2.
- write(u'''
-''')
- write(u'''%end
-
-%post
-''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Post",True) # u'${metadata.Post}' on line 56, col 1
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Post}')) # from line 56, col 1.
- write(u'''
-%end
-
-%post --nochroot
-''')
- _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.NoChroot",True) # u'${metadata.NoChroot}' on line 60, col 1
- if _v is not None: write(_filter(_v, rawExpr=u'${metadata.NoChroot}')) # from line 60, col 1.
- write(u'''
-%end
-''')
-
- ########################################
- ## END - generated method body
-
- return _dummyTrans and trans.response().getvalue() or ""
-
- ##################################################
- ## CHEETAH GENERATED ATTRIBUTES
-
-
- _CHEETAH__instanceInitialized = False
-
- _CHEETAH_version = __CHEETAH_version__
-
- _CHEETAH_versionTuple = __CHEETAH_versionTuple__
-
- _CHEETAH_genTime = __CHEETAH_genTime__
-
- _CHEETAH_genTimestamp = __CHEETAH_genTimestamp__
-
- _CHEETAH_src = __CHEETAH_src__
-
- _CHEETAH_srcLastModified = __CHEETAH_srcLastModified__
-
- _mainCheetahMethod_for_kickstart= 'respond'
-
-## END CLASS DEFINITION
-
-if not hasattr(kickstart, '_initCheetahAttributes'):
- templateAPIClass = getattr(kickstart, '_CHEETAH_templateClass', Template)
- templateAPIClass._addCheetahPlumbingCodeToClass(kickstart)
-
-
-# CHEETAH was developed by Tavis Rudd and Mike Orr
-# with code, advice and input from many other volunteers.
-# For more information visit http://www.CheetahTemplate.org/
-
-##################################################
-## if run from command line:
-if __name__ == '__main__':
- from Cheetah.TemplateCmdLineIface import CmdLineIface
- CmdLineIface(templateObj=kickstart()).run()
-
-
+++ /dev/null
-#!/usr/bin/python
-# Anas Nashif <anas.nashif@intel.com>
-import yaml, sys
-
-import re, os
-from kickstart import kickstart
-
-import copy
-import time
-import optparse
-from time import gmtime, strftime
-
-class KSWriter():
- def __init__(self, im, rep, out):
- self.image_filename = im
- self.repo_filename = rep
- self.outdir = out
- self.image_stream = file(self.image_filename, 'r')
- self.repo_stream = file(self.repo_filename, 'r')
- self.extra = {}
- pass
- def merge(*input):
- return list(reduce(set.union, input, set()))
-
- def dump(self):
- print yaml.dump(yaml.load(self.stream))
-
-
- def parse(self, img):
- print "Creating %s (%s.ks)" %(img['Name'], img['FileName'] )
- conf = copy.copy(image_meta['Default'])
- plat = copy.copy(image_meta[img['Platform']])
- conf.update(plat)
- conf.update(img)
- lval = ['Repos', 'Groups', 'PostScripts', 'NoChrootScripts', 'RemovePackages', 'ExtraPackages']
- lvald = {}
- for l in lval:
- full = []
- if image_meta['Default'].has_key(l) and image_meta['Default'][l]:
- full = full + image_meta['Default'][l]
- if plat.has_key(l) and plat[l]:
- full = full + plat[l]
- if img.has_key(l) and img[l]:
- full = full + img[l]
- lvald[l] = set(full)
- #print full
- conf.update(lvald)
- #print conf
- postscript = ""
- for scr in conf['PostScripts']:
- f = open('./custom/scripts/%s.post' %scr, 'r')
- postscript += f.read()
- postscript += "\n\n"
- f.close()
-
- nochrootscript = ""
- for scr in conf['NoChrootScripts']:
- f = open('./custom/scripts/%s.nochroot' %scr, 'r')
- nochrootscript += f.read()
- nochrootscript += "\n\n"
- f.close()
-
- ptab = ""
- if img.has_key("Part"):
- f = open("./custom/part/%s" %img['Part'] )
- ptab = f.read()
- f.close()
-
- conf['Part'] = ptab
- conf['Post'] = postscript
- conf['NoChroot'] = nochrootscript
- return conf
-
- def process_files(self, meta, r):
- nameSpace = {'metadata': meta, 'repos': r}
- t = kickstart(searchList=[nameSpace])
- a = str(t)
- if meta.has_key('FileName') and meta['FileName']:
- f = open("%s/%s.ks" %( self.outdir, meta['FileName'] ), 'w')
- f.write(a)
- f.close()
-
-if __name__ == '__main__':
- parser = optparse.OptionParser()
-
- parser.add_option("-c", "--configs", type="string", dest="configsfile",
- help="configuration meta file")
- parser.add_option("-o", "--outdir", type="string", dest="outdir",
- help="outdir")
- parser.add_option("-r", "--repos", type="string", dest="repofile",
- help="repo meta file")
-
- (options, args) = parser.parse_args()
-
- if options.configsfile is None or options.repofile is None:
- print "you need to provide meta files with --configs and --repos"
- sys.exit(1)
-
- outdir = ""
- if options.outdir is None:
- outdir = "."
- else:
- outdir = options.outdir
-
- ks = KSWriter(options.configsfile, options.repofile, outdir)
- repo_meta = yaml.load(ks.repo_stream)
- image_meta = yaml.load(ks.image_stream)
- r = repo_meta['Repositories']
- for img in image_meta['Configurations']:
- conf = ks.parse(img)
- ks.process_files(conf, r)