Merge "IBP: add GRUB_RECORDFAIL_TIMEOUT for ubuntu"

This commit is contained in:
Jenkins 2015-06-18 11:54:24 +00:00 committed by Gerrit Code Review
commit b937cf3ccf
2 changed files with 32 additions and 9 deletions

View File

@ -351,7 +351,7 @@ title Default (kernel-version)
def test_grub1_cfg_kernel_initrd_are_set(self):
config = """
default=0
timeout=5
timeout=10
title Default (kernel-version-set)
kernel /kernel-version-set kernel-params
initrd /initrd-version-set
@ -361,7 +361,8 @@ title Default (kernel-version-set)
with mock.patch(OPEN_FUNCTION_NAME, new=mock_open, create=True):
gu.grub1_cfg(kernel='kernel-version-set',
initrd='initrd-version-set',
chroot='/target', kernel_params='kernel-params')
chroot='/target', kernel_params='kernel-params',
grub_timeout=10)
mock_open.assert_called_once_with('/target/boot/grub/grub.conf', 'wb')
mock_open_file = mock_open()
mock_open_file.write.assert_called_once_with(config)
@ -392,7 +393,9 @@ GRUB_CMDLINE_LINUX="kernel-params-orig"
bar"""
new_content = """foo
GRUB_CMDLINE_LINUX="kernel-params-new"
bar"""
bar
GRUB_RECORDFAIL_TIMEOUT=10
"""
# mock_open = mock.mock_open(read_data=orig_content)
with mock.patch(OPEN_FUNCTION_NAME,
@ -401,7 +404,8 @@ bar"""
mock_open.return_value = mock.MagicMock(spec=file)
handle = mock_open.return_value.__enter__.return_value
handle.__iter__.return_value = StringIO.StringIO(orig_content)
gu.grub2_cfg(kernel_params='kernel-params-new', chroot='/target')
gu.grub2_cfg(kernel_params='kernel-params-new', chroot='/target',
grub_timeout=10)
self.assertEqual(
mock_open.call_args_list,

View File

@ -16,12 +16,25 @@ import os
import re
import shutil
from oslo.config import cfg
from fuel_agent import errors
from fuel_agent.openstack.common import log as logging
from fuel_agent.utils import utils
LOG = logging.getLogger(__name__)
gu_opts = [
cfg.IntOpt(
'grub_timeout',
default=5,
help='Timeout in secs for GRUB'
),
]
CONF = cfg.CONF
CONF.register_opts(gu_opts)
def guess_grub2_conf(chroot=''):
for filename in ('/boot/grub/grub.cfg', '/boot/grub2/grub.cfg'):
@ -188,7 +201,7 @@ def grub1_stage1(chroot=''):
def grub1_cfg(kernel=None, initrd=None,
kernel_params='', chroot=''):
kernel_params='', chroot='', grub_timeout=CONF.grub_timeout):
if not kernel:
kernel = guess_kernel(chroot=chroot)
@ -197,12 +210,13 @@ def grub1_cfg(kernel=None, initrd=None,
config = """
default=0
timeout=5
timeout={grub_timeout}
title Default ({kernel})
kernel /{kernel} {kernel_params}
initrd /{initrd}
""".format(kernel=kernel, initrd=initrd,
kernel_params=kernel_params)
kernel_params=kernel_params,
grub_timeout=grub_timeout)
with open(chroot + '/boot/grub/grub.conf', 'wb') as f:
f.write(config)
@ -216,7 +230,7 @@ def grub2_install(install_devices, chroot=''):
utils.execute(*cmd, run_as_root=True, check_exit_code=[0])
def grub2_cfg(kernel_params='', chroot=''):
def grub2_cfg(kernel_params='', chroot='', grub_timeout=CONF.grub_timeout):
grub_defaults = chroot + guess_grub2_default(chroot=chroot)
rekerparams = re.compile(r'^.*GRUB_CMDLINE_LINUX=.*')
retimeout = re.compile(r'^.*GRUB_HIDDEN_TIMEOUT=.*')
@ -226,8 +240,13 @@ def grub2_cfg(kernel_params='', chroot=''):
line = rekerparams.sub(
'GRUB_CMDLINE_LINUX="{kernel_params}"'.
format(kernel_params=kernel_params), line)
line = retimeout.sub('GRUB_HIDDEN_TIMEOUT=5', line)
line = retimeout.sub('GRUB_HIDDEN_TIMEOUT={grub_timeout}'.
format(grub_timeout=grub_timeout), line)
new_content += line
# NOTE(agordeev): explicitly add record fail timeout, in order to
# prevent user confirmation appearing if unexpected reboot occured.
new_content += '\nGRUB_RECORDFAIL_TIMEOUT={grub_timeout}\n'.\
format(grub_timeout=grub_timeout)
with open(grub_defaults, 'wb') as f:
f.write(new_content)
cmd = [guess_grub2_mkconfig(chroot), '-o', guess_grub2_conf(chroot)]