6 import mic.utils as utils
9 DEFAULT_TMPDIR='/var/tmp'
10 DEFAULT_CACHEDIR='/var/cache'
11 DEFAULT_GSITECONF='/etc/mic/mic.conf'
13 class ConfigMgr(object):
14 def __init__(self, siteconf=None, ksconf=None):
20 self.siteconf = siteconf
23 self.create["tmpdir"] = DEFAULT_TMPDIR
24 self.create["cachedir"] = DEFAULT_CACHEDIR
25 self.create["outdir"] = DEFAULT_OUTDIR
27 self.init_siteconf(self.siteconf)
28 self.init_kickstart(self.ksconf)
30 def init_siteconf(self, siteconf = None):
31 from ConfigParser import SafeConfigParser
32 siteconf_parser = SafeConfigParser()
33 siteconf_files = [DEFAULT_GSITECONF]
35 if not os.path.exists(DEFAULT_GSITECONF):
36 logging.debug("Not exists file: %s" % DEFAULT_GSITECONF)
40 self.siteconf = siteconf
41 siteconf_files = [self.siteconf]
42 siteconf_parser.read(siteconf_files)
44 for option in siteconf_parser.options('common'):
45 value = siteconf_parser.get('common', option)
46 self.common[option] = value
48 for option in siteconf_parser.options('create'):
49 value = siteconf_parser.get('create', option)
50 self.create[option] = value
52 for option in siteconf_parser.options('convert'):
53 value = siteconf_parser.get('convert', option)
54 self.convert[option] = value
56 for option in siteconf_parser.options('chroot'):
57 value = siteconf_parser.get('chroot', option)
58 self.chroot[option] = value
61 def init_kickstart(self, ksconf=None):
63 self.create['ks'] = None
64 self.create['repomd'] = None
68 self.kickstart = utils.kickstart.read_kickstart(self.ksconf)
69 self.ksrepos = utils.misc.get_repostrs_from_ks(self.kickstart)
70 print "retrieving repo metadata..."
71 self.repometadata = utils.misc.get_metadata_from_repos(self.ksrepos, self.create['cachedir'])
72 self.create['ks'] = self.kickstart
73 self.create['repomd'] = self.repometadata
74 self.create['name'] = os.path.splitext(os.path.basename(ksconf))[0]
76 raise Exception("failed to create image: %s" % e)
78 raise Exception("unable to load kickstart file '%s': %s" % (self.ksconf, e))
81 def setProperty(self, name, value):
82 if not hasattr(self, name):
86 self.init_kickstart(value)
89 if name == 'siteconf':
90 self.init_siteconf(value)
93 return setattr(self, name, value)
95 def getProperty(self, name):
96 if not hasattr(self, name):
98 return getattr(self, name)
100 def setCategoryProperty(self, category, name, value):
101 if not hasattr(self, category):
102 raise Exception("Error to parse %s", category)
103 categ = getattr(self, category)
106 def getCategoryProperty(self, category, name):
107 if not hasattr(self, category):
108 raise Exception("Error to parse %s", category)
109 categ = getattr(self, category)
112 def getCreateOption(self, name):
113 if not self.create.has_key(name):
114 raise Exception("Attribute Error: not such attribe %s" % name)
115 return self.create[name]
117 def getConvertOption(self, name):
118 if not self.convert.has_key(name):
119 raise Exception("Attribute Error: not such attribe %s" % name)
120 return self.convert[name]
122 def getChrootOption(self, name):
123 if not self.chroot.has_key(name):
124 raise Exception("Attribute Error: not such attribe %s" % name)
125 return self.chroot[name]
127 def dumpAllConfig(self):
128 sys.stdout.write("create options:\n")
129 for key in self.create.keys():
130 sys.stdout.write("%-8s= %s\n" % (key, self.create[key]))
131 sys.stdout.write("convert options:\n")
132 for key in self.convert.keys():
133 sys.stdout.write("%-8s= %s\n" % (key, self.ccnvert[key]))
134 sys.stdout.write("chroot options:\n")
135 for key in self.chroot.keys():
136 sys.stdout.write("%-8s= %s\n" % (key, self.chroot[key]))
141 configmgr = ConfigMgr()