Update ramdisk building to support init hooks for flavours

This commit is contained in:
Chris Jones 2012-11-09 21:48:41 +00:00
parent 88a11115f5
commit 6fb8b19b7c
6 changed files with 62 additions and 53 deletions

26
flavours/baremetal/init Normal file
View File

@ -0,0 +1,26 @@
if [ -z "$ISCSI_TARGET_IQN" ]; then
echo "iscsi_target_iqn is not defined"
echo "Starting troubleshooting shell."
bash
fi
target_disk=`find_disk "$DISK"`
echo "start iSCSI target on $target_disk"
start_iscsi_target "$ISCSI_TARGET_IQN" "$target_disk" ALL
if [ $? -ne 0 ]; then
echo "Could not find disk to use."
echo "Starting troubleshooting shell."
bash
fi
echo "request boot server to deploy image"
d="i=$DEPLOYMENT_ID&k=$DEPLOYMENT_KEY&a=$BOOT_IP_ADDRESS&n=$ISCSI_TARGET_IQN"
wget --post-data "$d" "http://$BOOT_SERVER:10000"
echo "waiting for notice of complete"
nc -l -p 10000
echo "stop iSCSI target on $target_disk"
stop_iscsi_target

4
flavours/hwburnin/init Normal file
View File

@ -0,0 +1,4 @@
echo "Starting HW Burnin"
memtester 1G 10 # XXX: Discover RAM size
# XXX: Discover and test disks with spew

View File

@ -0,0 +1,5 @@
echo "Starting HW Discovery"
# XXX: Collect iLO specific data, bundle everything up and POST it somewhere
lshw -json # XXX: Do something with this
sleep 30

View File

@ -107,6 +107,22 @@ function populate_init () {
for F in "$FUNCTIONS_D"/* ; do for F in "$FUNCTIONS_D"/* ; do
cp "$F" "$TMP_MOUNT_PATH" cp "$F" "$TMP_MOUNT_PATH"
done done
# Append /init with any flavour fragments that are present
for _FLVR in ${RAMDISK_FLAVOUR} ; do
_FILE="${FLAVOURS_DIR}/${_FLVR}/init"
if [ -a $_FILE ]; then
cat >>$TMP_MOUNT_PATH/init <<EOF
# init fragment from ${_FLVR}
EOF
cat <$_FILE >>$TMP_MOUNT_PATH/init
fi
done
# Add our final steps to /init
cat <${INIT}-end >>$TMP_MOUNT_PATH/init
} }
function finalise_image () { function finalise_image () {

View File

@ -34,8 +34,6 @@ mount -t proc proc /proc
readonly _BOOTIF_=$(get_kernel_parameter BOOTIF) readonly _BOOTIF_=$(get_kernel_parameter BOOTIF)
readonly _IP_=$(get_kernel_parameter ip) readonly _IP_=$(get_kernel_parameter ip)
readonly _CMDLINE_FLAVOUR=$(get_kernel_parameter FLAVOUR)
readonly FLAVOUR=${_CMDLINE_FLAVOUR:-baremetal}
readonly BOOT_MAC_ADDRESS=$(echo "$_BOOTIF_" | sed -e "s/-/:/g" | sed -e "s/^01://g" | tr 'a-f' 'A-F') readonly BOOT_MAC_ADDRESS=$(echo "$_BOOTIF_" | sed -e "s/-/:/g" | sed -e "s/^01://g" | tr 'a-f' 'A-F')
readonly BOOT_IP_ADDRESS=$(echo "$_IP_" | cut -d':' -f1) readonly BOOT_IP_ADDRESS=$(echo "$_IP_" | cut -d':' -f1)
readonly BOOT_SERVER=$(echo "$_IP_" | cut -d':' -f2) readonly BOOT_SERVER=$(echo "$_IP_" | cut -d':' -f2)
@ -47,13 +45,6 @@ readonly DEPLOYMENT_ID=$(get_kernel_parameter deployment_id)
readonly DEPLOYMENT_KEY=$(get_kernel_parameter deployment_key) readonly DEPLOYMENT_KEY=$(get_kernel_parameter deployment_key)
readonly ISCSI_TARGET_IQN=$(get_kernel_parameter iscsi_target_iqn) readonly ISCSI_TARGET_IQN=$(get_kernel_parameter iscsi_target_iqn)
string_contains $FLAVOUR "baremetal"
if [ "$?" == "0" -a -z "$ISCSI_TARGET_IQN" ]; then
echo "iscsi_target_iqn is not defined"
echo "Starting troubleshooting shell."
bash
fi
mount -t sysfs none /sys mount -t sysfs none /sys
mount -t tmpfs none /dev mount -t tmpfs none /dev
ln -sf /proc/self/fd /dev/fd ln -sf /proc/self/fd /dev/fd
@ -132,47 +123,3 @@ done
echo "network ready" echo "network ready"
string_contains $FLAVOUR "baremetal"
if [ "$?" == "0" ]; then
target_disk=`find_disk "$DISK"`
echo "start iSCSI target on $target_disk"
start_iscsi_target "$ISCSI_TARGET_IQN" "$target_disk" ALL
if [ $? -ne 0 ]; then
echo "Could not find disk to use."
echo "Starting troubleshooting shell."
bash
fi
echo "request boot server to deploy image"
d="i=$DEPLOYMENT_ID&k=$DEPLOYMENT_KEY&a=$BOOT_IP_ADDRESS&n=$ISCSI_TARGET_IQN"
wget --post-data "$d" "http://$BOOT_SERVER:10000"
echo "waiting for notice of complete"
nc -l -p 10000
echo "stop iSCSI target on $target_disk"
stop_iscsi_target
fi
string_contains $FLAVOUR "hwdiscovery"
if [ "$?" == "0" ]; then
echo "Starting HW Discovery"
# XXX: Collect iLO specific data, bundle everything up and POST it somewhere
lshw -json # XXX: Do something with this
sleep 30
fi
string_contains $FLAVOUR "hwburnin"
if [ "$?" == "0" ]; then
echo "Starting HW Burnin"
memtester 1G 10 # XXX: Discover RAM size
# XXX: Discover and test disks with spew
fi
echo "rebooting"
reboot -f
echo "failed to reboot"
echo "Starting troubleshooting shell."
bash

11
scripts/init-end Normal file
View File

@ -0,0 +1,11 @@
# Final init steps
echo "rebooting"
reboot -f
echo "failed to reboot"
echo "Starting troubleshooting shell."
bash