initial import code into git
[platform/upstream/mic.git] / plugins / imager / livecd_plugin.py
1 #!/usr/bin/python
2 from micng.pluginbase.imager_plugin import ImagerPlugin
3 import micng.imager as imager
4 import micng.configmgr as cfgmgr
5 import micng.utils as utils
6 import micng.utils.cmdln as cmdln
7 import os, time
8
9 class LivecdPlugin(ImagerPlugin):
10     @classmethod
11     def do_options(self, parser):
12         parser.add_argument("-vid", "--volumeid", type="string", default=None, help="Specify volume id")
13         parser.add_argument("ksfile", help="kickstart file")
14
15     @classmethod
16     def do_create(self, args):
17         if not args.ksfile:
18             print "please specify kickstart file"
19             return
20
21         self.configmgr = cfgmgr.getConfigMgr()
22         self.configmgr.setProperty('ksfile', args.ksfile)
23
24         fs_label = utils.kickstart.build_name(
25                      args.ksfile,
26                      "%s-" % self.configmgr.name,
27                      maxlen = 32,
28                      suffix = "%s-%s" %(os.uname()[4], time.strftime("%Y%m%d%H%M")))
29         
30         creator = imager.livecd.LivecdImageCreator(
31                     self.configmgr.kickstart, self.configmgr.name, fs_label)
32         
33         creator.skip_compression = False
34         creator.skip_minimize = False
35             
36         creator.tmpdir = self.configmgr.tmpdir
37         creator._alt_initrd_name = None
38         creator._recording_pkgs = None
39         creator._include_src = False
40         creator._local_pkgs_path = None
41         creator._genchecksum = False
42         creator.distro_name = self.configmgr.name
43         creator.image_format = "livecd"
44     
45         
46         utils.kickstart.resolve_groups(creator, self.configmgr.repometadata, False)
47     
48         imgname = creator.name
49             
50         try:
51             creator.check_depend_tools()
52             creator.mount(None, self.configmgr.cache)
53             creator.install()
54     
55             creator.configure(self.configmgr.repometadata)
56             creator.unmount()
57             creator.package(self.configmgr.outdir)
58             outimage = creator.outimage
59                 
60             creator.package_output("livecd", self.configmgr.outdir, "none")
61             creator.print_outimage_info()
62             outimage = creator.outimage
63             
64         except Exception, e:
65             raise Exception("failed to create image : %s" % e)
66         finally:
67             creator.cleanup()
68     
69         print "Finished."        
70
71 mic_plugin = ["livecd", LivecdPlugin]