from Exceptions import *
import notify_messages
import BootServerRequest
+import utils
# all output is written to this file
BM_NODE_LOG= "/tmp/bm.log"
self.LogEntry( str, 0, 1 )
# bm log uploading is available back again, as of nodeconfig-5.0-2
- def Upload( self ):
+ def Upload( self, extra_file=None ):
"""
upload the contents of the log to the server
"""
FormData = [('log',(pycurl.FORM_FILE, self.OutputFilePath)),
("hostname",hostname),
("type","bm.log")])
+ if extra_file is not None:
+ # NOTE: for code-reuse, evoke the bash function 'upload_logs';
+ # by adding --login, bash reads .bash_profile before execution.
+ utils.sysexec( """bash --login -c "upload_logs %s" """ % extra_file, self)
##############################
# the data back to PlanetLab central
LOG= log( BM_NODE_LOG )
+ # NOTE: assume CWD is BM's source directory, but never fail
+ utils.sysexec("./setup_bash_history_scripts.sh || /bin/true", LOG)
+
LOG.LogEntry( "BootManager started at: %s" % \
time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) )
done
# NOTE: allow command run directly over ssh to be logged also.
-echo 'source /etc/profile ; source /root/.bash_profile' > /root/.bashrc
+echo "source /etc/profile ; source $BASH_PROFILE" > /root/.bashrc
# NOTE 1: crond is not installed on the boot image, so this maintains a
# persistent process to upload logs on legacy nodes.
# same time.
initial_delay=$(( $RANDOM * 3 ))
-
cat <<EOF > $PERIODIC_SCRIPT
#!/bin/bash
if [ -f $BASH_PROFILE ] ; then
log.write( "Unloading modules and chain booting to new kernel.\n" )
# further use of log after Upload will only output to screen
- log.Upload()
+ log.Upload("/root/.bash_eternal_history")
# regardless of whether kexec works or not, we need to stop trying to
# run anything