#!/usr/bin/python -u
-
+#
+# $Id$
+# $URL$
+#
# Copyright (c) 2003 Intel Corporation
# All rights reserved.
#
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
"""
hostname= self.VARS['INTERFACE_SETTINGS']['hostname'] + "." + \
self.VARS['INTERFACE_SETTINGS']['domainname']
bs_request = BootServerRequest.BootServerRequest(self.VARS)
- bs_request.MakeRequest(PartialPath = self.VARS['UPLOAD_LOG_SCRIPT'],
- GetVars = None, PostVars = None,
- FormData = ["log=@" + self.OutputFilePath,
- "hostname=" + hostname, "type=bm.log"],
- DoSSL = True, DoCertCheck = True)
+ try:
+ # this was working until f10
+ bs_request.MakeRequest(PartialPath = self.VARS['UPLOAD_LOG_SCRIPT'],
+ GetVars = None, PostVars = None,
+ DoSSL = True, DoCertCheck = True,
+ FormData = ["log=@" + self.OutputFilePath,
+ "hostname=" + hostname,
+ "type=bm.log"])
+ except:
+ # new pycurl
+ import pycurl
+ bs_request.MakeRequest(PartialPath = self.VARS['UPLOAD_LOG_SCRIPT'],
+ GetVars = None, PostVars = None,
+ DoSSL = True, DoCertCheck = True,
+ 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)
+
##############################
class BootManager:
ret = ValidateNodeInstall.Run( self.VARS, self.LOG )
if ret == 1:
WriteModprobeConfig.Run( self.VARS, self.LOG )
- MakeInitrd.Run( self.VARS, self.LOG )
WriteNetworkConfig.Run( self.VARS, self.LOG )
CheckForNewDisks.Run( self.VARS, self.LOG )
SendHardwareConfigToPLC.Run( self.VARS, self.LOG )
# 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()) )