diff --git a/nodepool/elements/nodepool-base/finalise.d/99-fix-grub-timeout b/nodepool/elements/nodepool-base/finalise.d/99-fix-grub-timeout new file mode 100755 index 0000000000..a2b2697890 --- /dev/null +++ b/nodepool/elements/nodepool-base/finalise.d/99-fix-grub-timeout @@ -0,0 +1,39 @@ +#!/bin/bash +# Copyright (C) 2014 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# +# See the License for the specific language governing permissions and +# limitations under the License. + +# This is done in 50 because the vm element has, at 51, an bunch of code +# for properly handling grub. All we need to do here is get our values +# in to the files. + +# dib-lint: disable=setu setpipefail +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -e + +# Set grub timeout to zero to save boot time. +if [ -f /etc/default/grub ] ; then + sed -i -e 's/^GRUB_TIMEOUT=[0-9]\+/GRUB_TIMEOUT=0/' /etc/default/grub + if which update-grub &> /dev/null ; then + update-grub + else + # If update-grub isn't available, use grub2-mkconfig directly + /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg + fi +elif [ -f /boot/grub/grub.conf ] ; then + sed -i -e 's/^timeout=[0-9]\+/timeout=0/' /boot/grub/grub.conf +fi diff --git a/nodepool/scripts/fix_grub_timeout.sh b/nodepool/scripts/fix_grub_timeout.sh new file mode 100755 index 0000000000..77fb04b218 --- /dev/null +++ b/nodepool/scripts/fix_grub_timeout.sh @@ -0,0 +1,31 @@ +#!/bin/bash -xe +# Copyright (C) 2014 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# +# See the License for the specific language governing permissions and +# limitations under the License. + +# Set the grub timeout to 0. +if [ -f /etc/default/grub ] ; then + sudo sed -i -e 's/^GRUB_TIMEOUT=[0-9]\+/GRUB_TIMEOUT=0/' \ + /etc/default/grub + if which update-grub &> /dev/null ; then + sudo update-grub + else + # If update-grub isn't available, use grub2-mkconfig directly + sudo /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg + fi +elif [ -f /boot/grub/grub.conf ] ; then + sudo sed -i -e 's/^timeout=[0-9]\+/timeout=0/' \ + /boot/grub/grub.conf +fi diff --git a/nodepool/scripts/prepare_node_bare.sh b/nodepool/scripts/prepare_node_bare.sh index 681e4cb4ad..8991c8656a 100755 --- a/nodepool/scripts/prepare_node_bare.sh +++ b/nodepool/scripts/prepare_node_bare.sh @@ -23,3 +23,5 @@ export THIN='false' export ALL_MYSQL_PRIVS='true' ./prepare_node.sh "$HOSTNAME" + +./fix_grub_timeout.sh diff --git a/nodepool/scripts/prepare_node_devstack.sh b/nodepool/scripts/prepare_node_devstack.sh index 3a17952606..fe07c0ca04 100755 --- a/nodepool/scripts/prepare_node_devstack.sh +++ b/nodepool/scripts/prepare_node_devstack.sh @@ -40,3 +40,5 @@ sudo chown -R jenkins:jenkins $TEMPEST_DIR/preseed-streams # Delete the venv after the script is called sudo rm -rf /opt/git/subunit2sql-env + +./fix_grub_timeout.sh diff --git a/nodepool/scripts/prepare_node_devstack_virt_preview.sh b/nodepool/scripts/prepare_node_devstack_virt_preview.sh index 0315bb307a..72c3d54a10 100755 --- a/nodepool/scripts/prepare_node_devstack_virt_preview.sh +++ b/nodepool/scripts/prepare_node_devstack_virt_preview.sh @@ -24,3 +24,5 @@ export THIN='true' ./prepare_node.sh "$HOSTNAME" sudo -u jenkins -i /opt/nodepool-scripts/prepare_devstack_virt_preview.sh \ "$HOSTNAME" + +./fix_grub_timeout.sh