'myplc-0_4-branch'.
--- /dev/null
+The BootManager source code was initially developed by Intel
+Corporation and subsequently rewritten by Princeton University. The
+copyright for the BootManager source code is as follows:
+
+Copyright (c) 2003 Intel Corporation
+All rights reserved.
+
+Copyright (c) 2004-2006 The Trustees of Princeton University
+All rights reserved.
+
+The License from both Intel and Princeton for this software is
+follows:
+
+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 copyright holder 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 PRINCETON
+UNIVERSITY 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.
+
+Intel Corporation places the following export restrictions on the
+software:
+
+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.
+
--- /dev/null
+#!/usr/bin/python2 -u
+
+# Copyright (c) 2003 Intel Corporation
+# All rights reserved.
+#
+# Copyright (c) 2004-2006 The Trustees of Princeton University
+# All rights reserved.
+
+import os, string
+
+from Exceptions import *
+import utils
+import systeminfo
+import BootAPI
+import ModelOptions
+
+def Run( vars, log, filename = "/etc/modprobe.conf"):
+ """
+ write out the system file /etc/modprobe.conf with the current
+ set of modules.
+
+ returns a tuple of the number of network driver lines and storage
+ driver lines written as (networkcount,storagecount)
+ """
+
+ # write out the modprobe.conf file for the system. make sure
+ # the order of the ethernet devices are listed in the same order
+ # as the boot cd loaded the modules. this is found in /tmp/loadedmodules
+ # ultimately, the order will only match the boot cd order if
+ # the kernel modules have the same name - which should be true for the later
+ # version boot cds because they use the same kernel version.
+ # older boot cds use a 2.4.19 kernel, and its possible some of the network
+ # module names have changed, in which case the system might not boot
+ # if the network modules are activated in a different order that the
+ # boot cd.
+
+ # make sure we have this class loaded
+
+ try:
+ SYSIMG_PATH= vars["SYSIMG_PATH"]
+ if SYSIMG_PATH == "":
+ raise ValueError, "SYSIMG_PATH"
+
+ except KeyError, var:
+ raise BootManagerException, "Missing variable in vars: %s\n" % var
+ except ValueError, var:
+ raise BootManagerException, "Variable in vars, shouldn't be: %s\n" % var
+
+ sysmods= systeminfo.get_system_modules(vars, log)
+ if sysmods is None:
+ raise BootManagerException, "Unable to get list of system modules."
+
+ eth_count= 0
+ scsi_count= 0
+
+ modulesconf_file= file("%s/%s" % (SYSIMG_PATH,filename), "w" )
+
+ for type in sysmods:
+ if type == systeminfo.MODULE_CLASS_SCSI:
+ for a_mod in sysmods[type]:
+ if scsi_count == 0:
+ modulesconf_file.write( "alias scsi_hostadapter %s\n" %
+ a_mod )
+ else:
+ modulesconf_file.write( "alias scsi_hostadapter%d %s\n" %
+ (scsi_count,a_mod) )
+ scsi_count= scsi_count + 1
+
+ elif type == systeminfo.MODULE_CLASS_NETWORK:
+ for a_mod in sysmods[type]:
+ modulesconf_file.write( "alias eth%d %s\n" %
+ (eth_count,a_mod) )
+ eth_count= eth_count + 1
+
+ modulesconf_file.close()
+ modulesconf_file= None
+
+ # dump the modprobe.conf file to the log (not to screen)
+ log.write( "Contents of new modprobe.conf file:\n" )
+ modulesconf_file= file("%s/%s" % (SYSIMG_PATH,filename), "r" )
+ contents= modulesconf_file.read()
+ log.write( contents + "\n" )
+ modulesconf_file.close()
+ modulesconf_file= None
+ log.write( "End contents of new modprobe.conf file.\n" )
+
+ # before we do the real kexec, check to see if we had any
+ # network drivers written to modprobe.conf. if not, return -1,
+ # which will cause this node to be switched to a debug state.
+ if eth_count == 0:
+ log.write( "\nIt appears we don't have any network drivers. Aborting.\n" )
+
+ vars['BOOT_STATE']= 'dbg'
+ vars['STATE_CHANGE_NOTIFY']= 1
+ vars['STATE_CHANGE_NOTIFY_MESSAGE']= \
+ notify_messages.MSG_NO_DETECTED_NETWORK
+ raise BootManagerException, \
+ notify_messages.MSG_NO_DETECTED_NETWORK
+
+
--- /dev/null
+#!/usr/bin/python2
+
+# Copyright (c) 2003 Intel Corporation
+# All rights reserved.
+#
+# Copyright (c) 2004-2006 The Trustees of Princeton University
+# All rights reserved.
+# expected /proc/partitions format
+
+import os, string
+
+from Exceptions import *
+import utils
+import BootAPI
+import ModelOptions
+
+def Run( vars, log ):
+ """
+ Write out the network configuration for this machine:
+ /etc/hosts
+ /etc/sysconfig/network-scripts/ifcfg-eth0
+ /etc/resolv.conf (if applicable)
+ /etc/sysconfig/network
+
+ It is assumed the caller mounted the root partition and the vserver partition
+ starting on SYSIMG_PATH - it is not checked here.
+
+ The values to be used for the network settings are to be set in vars
+ in the variable 'NETWORK_SETTINGS', which is a dictionary
+ with keys:
+
+ Key Used by this function
+ -----------------------------------------------
+ node_id
+ node_key
+ method x
+ ip x
+ mac x (optional)
+ gateway x
+ network x
+ broadcast x
+ netmask x
+ dns1 x
+ dns2 x (optional)
+ hostname x
+ domainname x
+
+ Expect the following variables from the store:
+ SYSIMG_PATH the path where the system image will be mounted
+ (always starts with TEMP_PATH)
+ NETWORK_SETTINGS A dictionary of the values from the network
+ configuration file
+ Sets the following variables:
+ None
+ """
+
+ log.write( "\n\nStep: Install: Writing Network Configuration files.\n" )
+
+ try:
+ SYSIMG_PATH= vars["SYSIMG_PATH"]
+ if SYSIMG_PATH == "":
+ raise ValueError, "SYSIMG_PATH"
+
+ except KeyError, var:
+ raise BootManagerException, "Missing variable in vars: %s\n" % var
+ except ValueError, var:
+ raise BootManagerException, "Variable in vars, shouldn't be: %s\n" % var
+
+
+ try:
+ network_settings= vars['NETWORK_SETTINGS']
+ except KeyError, e:
+ raise BootManagerException, "No network settings found in vars."
+
+ try:
+ hostname= network_settings['hostname']
+ domainname= network_settings['domainname']
+ method= network_settings['method']
+ ip= network_settings['ip']
+ gateway= network_settings['gateway']
+ network= network_settings['network']
+ netmask= network_settings['netmask']
+ dns1= network_settings['dns1']
+ mac= network_settings['mac']
+ except KeyError, e:
+ raise BootManagerException, "Missing value %s in network settings." % str(e)
+
+ try:
+ dns2= ''
+ dns2= network_settings['dns2']
+ except KeyError, e:
+ pass
+
+
+ log.write( "Writing /etc/hosts\n" )
+ hosts_file= file("%s/etc/hosts" % SYSIMG_PATH, "w" )
+ hosts_file.write( "127.0.0.1 localhost\n" )
+ if method == "static":
+ hosts_file.write( "%s %s.%s\n" % (ip, hostname, domainname) )
+ hosts_file.close()
+ hosts_file= None
+
+
+ log.write( "Writing /etc/sysconfig/network-scripts/ifcfg-eth0\n" )
+ eth0_file= file("%s/etc/sysconfig/network-scripts/ifcfg-eth0" %
+ SYSIMG_PATH, "w" )
+ eth0_file.write( "DEVICE=eth0\n" )
+ if method == "static":
+ eth0_file.write( "BOOTPROTO=static\n" )
+ eth0_file.write( "IPADDR=%s\n" % ip )
+ eth0_file.write( "NETMASK=%s\n" % netmask )
+ eth0_file.write( "GATEWAY=%s\n" % gateway )
+ else:
+ eth0_file.write( "BOOTPROTO=dhcp\n" )
+ eth0_file.write( "DHCP_HOSTNAME=%s\n" % hostname )
+ if mac != "":
+ eth0_file.write( "HWADDR=%s\n" % mac )
+ eth0_file.write( "ONBOOT=yes\n" )
+ eth0_file.write( "USERCTL=no\n" )
+ eth0_file.close()
+ eth0_file= None
+
+ if method == "static":
+ log.write( "Writing /etc/resolv.conf\n" )
+ resolv_file= file("%s/etc/resolv.conf" % SYSIMG_PATH, "w" )
+ if dns1 != "":
+ resolv_file.write( "nameserver %s\n" % dns1 )
+ if dns2 != "":
+ resolv_file.write( "nameserver %s\n" % dns2 )
+ resolv_file.write( "search %s\n" % domainname )
+ resolv_file.close()
+ resolv_file= None
+
+ log.write( "Writing /etc/sysconfig/network\n" )
+ network_file= file("%s/etc/sysconfig/network" % SYSIMG_PATH, "w" )
+ network_file.write( "NETWORKING=yes\n" )
+ network_file.write( "HOSTNAME=%s.%s\n" % (hostname, domainname) )
+ if method == "static":
+ network_file.write( "GATEWAY=%s\n" % gateway )
+ network_file.close()
+ network_file= None