initial import code into git
[platform/upstream/mic.git] / micng / configmgr.py
1 #!/usr/bin/python -t
2
3 import os
4 import micng.utils as utils
5
6 DEFAULT_OUTDIR='.'
7 DEFAULT_TMPDIR='/tmp'
8 DEFAULT_CACHE='/var/tmp'
9 DEFAULT_GSITECONF='/etc/micng/micng.conf'
10 DEFAULT_USITECONF='~/.micng.conf'
11
12 class ConfigMgr(object):
13     def __init__(self, siteconf=None, ksfile=None):
14         self.outdir = DEFAULT_OUTDIR
15         self.tmpdir = DEFAULT_TMPDIR
16         self.cache = DEFAULT_CACHE
17         self.siteconf = siteconf
18         self.name = 'meego'
19         self.ksfile = ksfile
20         self.kickstart = None
21         self.ksrepos = None
22         self.repometadata = None
23         self.init_siteconf(self.siteconf)
24         self.init_kickstart(self.ksfile)
25
26     def init_siteconf(self, siteconf = None):
27         from ConfigParser import SafeConfigParser
28         siteconf_parser = SafeConfigParser()
29         siteconf_files = [DEFAULT_GSITECONF, DEFAULT_USITECONF]
30
31         if siteconf:
32             self.siteconf = siteconf
33             siteconf_files = [self.siteconf]
34         siteconf_parser.read(siteconf_files)
35
36         for option in siteconf_parser.options('main'):
37             value = siteconf_parser.get('main', option)
38             setattr(self, option, value)
39
40     def init_kickstart(self, ksfile=None):
41         if not ksfile:
42             return
43         self.ksfile = ksfile
44         try:
45             self.kickstart = utils.kickstart.read_kickstart(self.ksfile)
46             self.ksrepos = utils.misc.get_repostrs_from_ks(self.kickstart)
47             print "retrieving repo metadata..."
48             self.repometadata = utils.misc.get_metadata_from_repos(self.ksrepos, self.cache)
49         except OSError, e:
50             raise Exception("failed to create image: %s" % e)
51         except Exception, e:
52             raise Exception("unable to load kickstart file '%s': %s" % (self.ksfile, e))
53
54
55     def setProperty(self, name, value):
56         if not hasattr(self, name):
57             return None
58         #print ">>", name, value
59         if name == 'ksfile':
60             self.init_kickstart(value)
61             return True
62         if name == 'siteconf':
63             self.init_siteconf(value)
64             return True
65         return setattr(self, name, value)
66
67     def getProperty(self, name):
68         if not hasattr(self, name):
69             return None
70         return getattr(self, name)
71
72 configmgr = ConfigMgr()
73
74 def getConfigMgr():
75     return configmgr
76
77 def setProperty(cinfo, name):
78     if not isinstance(cinfo, ConfigMgr):
79         return None
80     if not hasattr(cinfo, name):
81         return None
82
83 def getProperty(cinfo, name):
84     if not isinstance(cinfo, ConfigMgr):
85         return None
86     if not hasattr(cinfo, name):
87         return None