for each boot, after the vserver net configuration files ae updated,
authorAaron Klingaman <alk@cs.princeton.edu>
Fri, 5 Aug 2005 22:18:13 +0000 (22:18 +0000)
committerAaron Klingaman <alk@cs.princeton.edu>
Fri, 5 Aug 2005 22:18:13 +0000 (22:18 +0000)
write out the new session value in /etc/planetlab/session.

source/configuration
source/steps/GetAndUpdateNodeDetails.py
source/steps/UpdateNodeConfiguration.py

index 028831b..ac0ea8e 100644 (file)
@@ -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
index eb8dedb..ca0ba4c 100644 (file)
@@ -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'] )
index f7830e5..b404ce2 100644 (file)
@@ -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