Removing old CVS Header lines, which are no longer used since moving to SVN.
[catalyst.git] / modules / netboot2_target.py
1
2 """
3 Builder class for a netboot build, version 2
4 """
5
6 import os,string,types
7 from catalyst_support import *
8 from generic_stage_target import *
9
10 class netboot2_target(generic_stage_target):
11         def __init__(self,spec,addlargs):
12                 self.required_values=[
13                         "boot/kernel",
14                         "netboot2/builddate",
15                         "netboot2/packages",                    
16                         "netboot2/use"                  
17                 ]
18                 self.valid_values=self.required_values[:]
19                 self.valid_values.extend(self.required_values)
20                 self.valid_values.extend(["netboot2/extra_files"])
21                         
22                 try:
23                         if addlargs.has_key("netboot2/packages"):
24                                 if type(addlargs["netboot2/packages"]) == types.StringType:
25                                         loopy=[addlargs["netboot2/packages"]]
26                                 else:
27                                         loopy=addlargs["netboot2/packages"]
28
29                                 for x in loopy:
30                                         self.valid_values.append("netboot2/packages/"+x+"/files")
31                 except:
32                         raise CatalystError,"configuration error in netboot2/packages."
33                 
34                 
35
36                 generic_stage_target.__init__(self,spec,addlargs)
37                 self.set_build_kernel_vars()
38
39                 # Merge packages into the buildroot, and pick out certain files to place in
40                 # /tmp/image
41                 self.settings["merge_path"]=normpath("/tmp/image")
42
43         def set_dest_path(self):
44                 if self.settings.has_key("merge_path"):
45                         self.settings["destpath"]=normpath(self.settings["chroot_path"]+self.settings["merge_path"])
46                 else:
47                         self.settings["destpath"]=normpath(self.settings["chroot_path"])
48
49         def set_target_path(self):
50                 self.settings["target_path"]=normpath(self.settings["storedir"]+"/builds/"+\
51                         self.settings["target_subpath"]+"/")
52                 if self.settings.has_key("AUTORESUME") \
53                         and os.path.exists(self.settings["autoresume_path"]+"setup_target_path"):
54                                 print "Resume point detected, skipping target path setup operation..."
55                 else:
56                         # first clean up any existing target stuff
57                         if os.path.isfile(self.settings["target_path"]):
58                                 cmd("rm -f "+self.settings["target_path"], \
59                                         "Could not remove existing file: "+self.settings["target_path"],env=self.env)
60                                 touch(self.settings["autoresume_path"]+"setup_target_path")
61
62                 if not os.path.exists(self.settings["storedir"]+"/builds/"):
63                         os.makedirs(self.settings["storedir"]+"/builds/")
64
65         def copy_files_to_image(self):
66                 # copies specific files from the buildroot to merge_path
67                 myfiles=[]
68
69                 # check for autoresume point
70                 if self.settings.has_key("AUTORESUME") \
71                         and os.path.exists(self.settings["autoresume_path"]+"copy_files_to_image"):
72                                 print "Resume point detected, skipping target path setup operation..."
73                 else:
74                         if self.settings.has_key("netboot2/packages"):
75                                 if type(self.settings["netboot2/packages"]) == types.StringType:
76                                         loopy=[self.settings["netboot2/packages"]]
77                                 else:
78                                         loopy=self.settings["netboot2/packages"]
79                 
80                         for x in loopy:
81                                 if self.settings.has_key("netboot2/packages/"+x+"/files"):
82                                     if type(self.settings["netboot2/packages/"+x+"/files"]) == types.ListType:
83                                             myfiles.extend(self.settings["netboot2/packages/"+x+"/files"])
84                                     else:
85                                             myfiles.append(self.settings["netboot2/packages/"+x+"/files"])
86
87                         if self.settings.has_key("netboot2/extra_files"):
88                                 if type(self.settings["netboot2/extra_files"]) == types.ListType:
89                                         myfiles.extend(self.settings["netboot2/extra_files"])
90                                 else:
91                                         myfiles.append(self.settings["netboot2/extra_files"])
92
93                         try:
94                                 cmd("/bin/bash "+self.settings["controller_file"]+\
95                                         " image " + list_bashify(myfiles),env=self.env)
96                         except CatalystError:
97                                 self.unbind()
98                                 raise CatalystError,"Failed to copy files to image!"
99
100                         touch(self.settings["autoresume_path"]+"copy_files_to_image")
101
102
103         def move_kernels(self):
104                 # we're done, move the kernels to builds/*
105                 # no auto resume here as we always want the
106                 # freshest images moved
107                 try:
108                         cmd("/bin/bash "+self.settings["controller_file"]+\
109                                 " final",env=self.env)
110                         print ">>> Netboot Build Finished!"
111                 except CatalystError:
112                         self.unbind()
113                         raise CatalystError,"Failed to move kernel images!"
114
115
116         def set_action_sequence(self):
117             self.settings["action_sequence"]=["unpack","unpack_snapshot","config_profile_link",
118                                         "setup_confdir","bind","chroot_setup",\
119                                         "setup_environment","build_packages","root_overlay",\
120                                         "copy_files_to_image","build_kernel","move_kernels",\
121                                         "unbind","clean","clear_autoresume"]
122
123 def register(foo):
124         foo.update({"netboot2":netboot2_target})
125         return foo