--- /dev/null
+#!/usr/bin/python
+#
+# Copyright (c) 2003 Intel Corporation
+# All rights reserved.
+#
+# Copyright (c) 2004-2006 The Trustees of Princeton University
+# All rights reserved.
+# expected /proc/partitions format
+
+import os, sys, string
+
+import utils
+from Exceptions import *
+
+def Run( vars, log ):
+ """
+ Setup the install environment:
+ - unmount anything in the temp/sysimg path (possible from previous
+ aborted installs
+ - create temp directories
+
+ Expect the following variables from the store:
+ TEMP_PATH the path to download and store temp files to
+ SYSIMG_DIR the directory name of the system image
+ contained in TEMP_PATH
+ PLCONF_DIR The directory to store the configuration file in
+
+ Sets the following variables:
+ SYSIMG_PATH the directory where the system image will be mounted,
+ (= TEMP_PATH/SYSIMG_DIR)
+ """
+
+ log.write( "\n\nStep: Install: Initializing.\n" )
+
+ # make sure we have the variables we need
+ try:
+ TEMP_PATH= vars["TEMP_PATH"]
+ if TEMP_PATH == "":
+ raise ValueError("TEMP_PATH")
+
+ SYSIMG_PATH= vars["SYSIMG_PATH"]
+ if SYSIMG_PATH == "":
+ raise ValueError("SYSIMG_PATH")
+
+ PLCONF_DIR= vars["PLCONF_DIR"]
+ if PLCONF_DIR == "":
+ raise ValueError, "PLCONF_DIR"
+
+ except KeyError, var:
+ raise BootManagerException, "Missing variable in vars: %s\n" % var
+ except ValueError, var:
+ raise BootManagerException, "Variable in vars, shouldn't be: %s\n" % var
+
+ # if this is a fresh install, then nothing should be
+ # here, but we support restarted installs without rebooting
+ # so who knows what the current state is
+
+ log.write( "Unmounting any previous mounts\n" )
+
+ try:
+ # backwards compat, though, we should never hit this case post PL 3.2
+ os.stat("%s/rcfs/taskclass"%SYSIMG_PATH)
+ utils.sysexec_chroot_noerr( SYSIMG_PATH, "umount /rcfs", log )
+ except OSError, e:
+ pass
+
+ # NOTE: added /sys and /dev b/c some nodes fail due to this when disk is
+ # nearly full.
+ utils.sysexec_noerr( "umount %s/proc" % SYSIMG_PATH , log )
+ utils.sysexec_noerr( "umount %s/mnt/cdrom" % SYSIMG_PATH , log )
+ utils.sysexec_noerr( "umount %s/vservers" % SYSIMG_PATH , log )
+ utils.sysexec_noerr( "umount %s/sys" % SYSIMG_PATH , log )
+ utils.sysexec_noerr( "umount %s/dev" % SYSIMG_PATH , log )
+ utils.sysexec_noerr( "umount %s" % SYSIMG_PATH , log )
+ vars['ROOT_MOUNTED']= 0
+
+# log.write( "Removing any old files, directories\n" )
+# utils.removedir( TEMP_PATH )
+
+ log.write( "Cleaning up any existing PlanetLab config files\n" )
+ try:
+ flist = os.listdir( PLCONF_DIR)
+ for file in flist:
+ utils.removedir( file )
+ except OSError:
+ pass
+
+ # create the temp path and sysimg path. since sysimg
+ # path is in temp path, both are created here
+ log.write( "Creating system image path\n" )
+ utils.makedirs( SYSIMG_PATH )
+
+ return 1