From 9582ceee2b38144296bea5c4c33f0abaff5a5574 Mon Sep 17 00:00:00 2001 From: Aaron Klingaman Date: Fri, 5 Aug 2005 22:18:13 +0000 Subject: [PATCH] for each boot, after the vserver net configuration files ae updated, write out the new session value in /etc/planetlab/session. --- source/configuration | 2 +- source/steps/GetAndUpdateNodeDetails.py | 6 ++++-- source/steps/UpdateNodeConfiguration.py | 27 ++++++++++++++++++++++++- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/source/configuration b/source/configuration index 028831b..ac0ea8e 100644 --- a/source/configuration +++ b/source/configuration @@ -4,7 +4,7 @@ # the current version of the bootmanager -VERSION=3.1.7 +VERSION=3.1.8 # full url to which api server to contact diff --git a/source/steps/GetAndUpdateNodeDetails.py b/source/steps/GetAndUpdateNodeDetails.py index eb8dedb..ca0ba4c 100644 --- a/source/steps/GetAndUpdateNodeDetails.py +++ b/source/steps/GetAndUpdateNodeDetails.py @@ -30,7 +30,8 @@ def Run( vars, log ): NETWORK_SETTINGS A dictionary of the values of the network settings SKIP_HARDWARE_REQUIREMENT_CHECK Whether or not we should skip hardware requirement checks - + NODE_SESSION The session value returned from BootGetNodeDetails + Return 1 if able to contact PLC and get node info. Raise a BootManagerException if anything fails. """ @@ -69,7 +70,8 @@ def Run( vars, log ): vars['BOOT_STATE']= details['boot_state'] vars['NODE_MODEL']= string.strip(details['model']) - + vars['NODE_SESSION']= details['session'] + log.write( "Successfully retrieved node record.\n" ) log.write( "Current boot state: %s\n" % vars['BOOT_STATE'] ) log.write( "Node make/model: %s\n" % vars['NODE_MODEL'] ) diff --git a/source/steps/UpdateNodeConfiguration.py b/source/steps/UpdateNodeConfiguration.py index f7830e5..b404ce2 100644 --- a/source/steps/UpdateNodeConfiguration.py +++ b/source/steps/UpdateNodeConfiguration.py @@ -13,6 +13,9 @@ def Run( vars, log ): scripts based on what PLC has. Also, update any slivers on the machine incase their network files are out of date (primarily /etc/hosts). + Also write out /etc/planetlab/session, a random string that gets + a new value at every request of BootGetNodeDetails (ie, every boot) + This step expects the root to be already mounted on SYSIMG_PATH. Except the following keys to be set: @@ -21,6 +24,9 @@ def Run( vars, log ): ROOT_MOUNTED the node root file system is mounted NETWORK_SETTINGS A dictionary of the values from the network configuration file + NODE_SESSION the unique session val set when we requested + the current boot state + PLCONF_DIR The directory to store PL configuration files in """ log.write( "\n\nStep: Updating node configuration.\n" ) @@ -39,6 +45,13 @@ def Run( vars, log ): if ROOT_MOUNTED == "": raise ValueError, "ROOT_MOUNTED" + PLCONF_DIR= vars["PLCONF_DIR"] + if PLCONF_DIR == "": + raise ValueError, "PLCONF_DIR" + + # its ok if this is blank + NODE_SESSION= vars["NODE_SESSION"] + except KeyError, var: raise BootManagerException, "Missing variable in vars: %s\n" % var except ValueError, var: @@ -97,5 +110,17 @@ def Run( vars, log ): # the update flag is there for base_dir in update_path_list: InstallBuildVServer.update_vserver_network_files(base_dir,vars,log) - + + + # write out the session value /etc/planetlab/session + try: + session_file_path= "%s/%s/session" % (SYSIMG_PATH,PLCONF_DIR) + session_file= file( session_file_path, "w" ) + session_file.write( str(NODE_SESSION) ) + session_file.close() + session_file= None + log.write( "Updated /etc/planetlab/session" ) + except IOError, e: + log.write( "Unable to write out /etc/planetlab/session, continuing anyway" ) + return -- 2.43.0