* Removed building PlanetLab-Bootstrap.tar.bz2 from the package. It
[bootmanager.git] / source / steps / InstallBootstrapRPM.py
index 56ebc09..68b6087 100644 (file)
@@ -1,45 +1,11 @@
+#!/usr/bin/python2
+
 # Copyright (c) 2003 Intel Corporation
 # All rights reserved.
-
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-
-#     * Redistributions of source code must retain the above copyright
-#       notice, this list of conditions and the following disclaimer.
-
-#     * Redistributions in binary form must reproduce the above
-#       copyright notice, this list of conditions and the following
-#       disclaimer in the documentation and/or other materials provided
-#       with the distribution.
-
-#     * Neither the name of the Intel Corporation nor the names of its
-#       contributors may be used to endorse or promote products derived
-#       from this software without specific prior written permission.
-
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
-# YOUR JURISDICTION. It is licensee's responsibility to comply with any
-# export regulations applicable in licensee's jurisdiction. Under
-# CURRENT (May 2000) U.S. export regulations this software is eligible
-# for export from the U.S. and can be downloaded by or otherwise
-# exported or reexported worldwide EXCEPT to U.S. embargoed destinations
-# which include Cuba, Iraq, Libya, North Korea, Iran, Syria, Sudan,
-# Afghanistan and any other country to which the U.S. has embargoed
-# goods and services.
-
-
+#
+# Copyright (c) 2004-2007 The Trustees of Princeton University
+# All rights reserved.
+# expected /proc/partitions format
 
 import os, sys, string
 import popen2
@@ -48,6 +14,7 @@ import shutil
 from Exceptions import *
 import utils
 import BootServerRequest
+import BootAPI
 
 
 def Run( vars, log ):
@@ -122,35 +89,37 @@ def Run( vars, log ):
                                                      SYSIMG_PATH), log )
 
     vars['ROOT_MOUNTED']= 1
-    
 
-    # download and extract support tarball for
-    # this step, which has everything
-    # we need to successfully run
-    for step_support_file in [ "PlanetLab-Bootstrap.tar.bz2",
-                               "alpina-BootstrapRPM.tar.bz2" ]: 
+    # check which nodegroups we are part of (>=4.0)
+    tarballs = ["PlanetLab-Bootstrap.tar.bz2"]
+    try:
+        nodes = BootAPI.call_api_function(vars, "GetNodes", ([NODE_ID], ['nodegroup_ids']))
+        node = nodes[0]
+        nodegroups = BootAPI.call_api_function(vars, "GetNodeGroups", (node['nodegroup_ids'], ['name']))
+        for nodegroup in nodegroups:
+            tarballs.append("PlanetLab-Bootstrap-%s.tar.bz2" % nodegroup['name'].lower())
+    except:
+        pass
+
+    # download and extract support tarball for this step, which has
+    # everything we need to successfully run
+    for step_support_file in tarballs:
         source_file= "%s/%s" % (SUPPORT_FILE_DIR,step_support_file)
         dest_file= "%s/%s" % (SYSIMG_PATH, step_support_file)
 
-        # 30 is the connect timeout, 7200 is the max transfer time
-        # in seconds (2 hours)
+        # 30 is the connect timeout, 14400 is the max transfer time in
+        # seconds (4 hours)
         log.write( "downloading %s\n" % step_support_file )
         result= bs_request.DownloadFile( source_file, None, None,
                                          1, 1, dest_file,
-                                         30, 7200)
+                                         30, 14400)
         if result:
-            # New bootstrap tarball contains everything necessary to
-            # boot, no need to bootstrap further.
-            vars['SKIP_INSTALL_BASE']= (step_support_file == "PlanetLab-Bootstrap.tar.bz2")
-            break
-
-    if not result:
-        raise BootManagerException, "Unable to download %s from server." % \
-              source_file
-
-    log.write( "extracting %s in %s\n" % (dest_file,SYSIMG_PATH) )
-    result= utils.sysexec( "tar -C %s -xpjf %s" % (SYSIMG_PATH,dest_file), log )
-    utils.removefile( dest_file )
+            log.write( "extracting %s in %s\n" % (dest_file,SYSIMG_PATH) )
+            result= utils.sysexec( "tar -C %s -xpjf %s" % (SYSIMG_PATH,dest_file), log )
+            utils.removefile( dest_file )
+        else:
+            raise BootManagerException, "Unable to download %s from server." % \
+                  source_file
 
     # copy resolv.conf from the base system into our temp dir
     # so DNS lookups work correctly while we are chrooted