from Exceptions import *
import utils
+import os
def Run( vars, log ):
Except the following variables from the store:
SYSIMG_PATH the path where the system image will be mounted
(always starts with TEMP_PATH)
-
+ NODE_ID The db node_id for this machine
+ PLCONF_DIR The directory to store the configuration file in
+
Sets the following variables:
None
SYSIMG_PATH= vars["SYSIMG_PATH"]
if SYSIMG_PATH == "":
raise ValueError, "SYSIMG_PATH"
-
+
+ NODE_ID= vars["NODE_ID"]
+ if NODE_ID == "":
+ raise ValueError, "NODE_ID"
+
+ 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:
log.write( "Running PlanetLabConf to update any configuration files\n" )
+ # PlanetLabConf requires /etc/planetlab/node_id, which is normally
+ # maintained in ValidateNodeInstal. so, write out the node_id here
+ # so PlanetLabConf can run.
+ try:
+ node_id_file_path= "%s/%s/node_id" % (SYSIMG_PATH,PLCONF_DIR)
+ node_id_file= file( node_id_file_path, "w" )
+ node_id_file.write( str(NODE_ID) )
+ node_id_file.close()
+ node_id_file= None
+ except IOError, e:
+ raise BootManagerException, \
+ "Unable to write out /etc/planetlab/node_id for PlanetLabConf"
+
if not utils.sysexec( "chroot %s PlanetLabConf.py noscripts" %
SYSIMG_PATH, log ):
log.write( "PlanetLabConf failed, install incomplete.\n" )
services= [ "netfs", "rawdevices", "cpuspeed", "smartd" ]
for service in services:
- log.write( "Disabling unneeded service: %s\n" % service )
- utils.sysexec( "chroot %s chkconfig --level 12345 %s off" %
- (SYSIMG_PATH,service), log )
+ if os.path.exists("%s/etc/init.d/%s" % (SYSIMG_PATH,service)):
+ log.write( "Disabling unneeded service: %s\n" % service )
+ utils.sysexec( "chroot %s chkconfig --level 12345 %s off" %
+ (SYSIMG_PATH,service), log )
return 1