Changes from v1: Add error context mechanism. Add docstring for parameters introduction. Use 'os_type'.
Signed-off-by: Qingtang Zhou <qz...@redhat.com> Signed-off-by: Amos Kong <ak...@redhat.com> Signed-off-by: Feng Yang <fy...@redhat.com> --- client/virt/virt_test_utils.py | 43 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) diff --git a/client/virt/virt_test_utils.py b/client/virt/virt_test_utils.py index efcabbb..681c502 100644 --- a/client/virt/virt_test_utils.py +++ b/client/virt/virt_test_utils.py @@ -148,6 +148,49 @@ def reboot(vm, session, method="shell", sleep_before_reset=10, nic_index=0, return session +@error.context_aware +def update_boot_option(vm, args_removed=None, args_added=None, + need_reboot=True): + """ + Update guest default kernel option. + + @param vm: The VM object. + @param args_removed: Kernel options want to remove. + @param args_added: Kernel options want to add. + @param need_reboot: Whether need reboot VM or not. + @raise error.TestError: Raised if fail to update guest kernel cmdlie. + + """ + if vm.params.get("os_type") == 'windows': + # this function is only for linux, if we need to change + # windows guest's boot option, we can use a function like: + # update_win_bootloader(args_removed, args_added, reboot) + # (this function is not implement.) + # here we just: + return + + login_timeout = int(vm.params.get("login_timeout")) + session = vm.wait_for_login(timeout=login_timeout) + + msg = "Update guest kernel cmdline. " + cmd = "grubby --update-kernel=`grubby --default-kernel` " + if args_removed is not None: + msg += " remove args: %s." % args_removed + cmd += '--remove-args="%s." ' % args_removed + if args_added is not None: + msg += " add args: %s" % args_added + cmd += '--args="%s"' % args_added + error.context(msg, logging.info) + s, o = session.cmd_status_output(cmd) + if s != 0: + logging.error(o) + raise error.TestError("Fail to modify guest kernel cmdline") + + if need_reboot: + error.context("Rebooting guest ...", logging.info) + vm.reboot(session=session, timeout=login_timeout) + + def migrate(vm, env=None, mig_timeout=3600, mig_protocol="tcp", mig_cancel=False, offline=False, stable_check=False, clean=False, save_path=None, dest_host='localhost', mig_port=None): -- 1.7.7.6 _______________________________________________ Autotest mailing list Autotest@test.kernel.org http://test.kernel.org/cgi-bin/mailman/listinfo/autotest