diff --git a/qa/qa-sample.json b/qa/qa-sample.json index a737e16a15c94a421121eea5101283d42ad6552e..9668b65e9e917738b4fcd215b2ec301596041e5f 100644 --- a/qa/qa-sample.json +++ b/qa/qa-sample.json @@ -99,7 +99,8 @@ "burnin-in-parallel": false, "burnin-check-instances": false, "burnin-rename": "xen-test-rename", - "burnin-reboot": true + "burnin-reboot": true, + "reboot-types": ["soft", "hard", "full"] }, "# vim: set syntax=javascript :": null diff --git a/qa/qa_cluster.py b/qa/qa_cluster.py index 1a89d5b73cfaf264d86813c3e773a223df1056a6..164fcf1107eb99bd56f2d1906d7f485539bc08bf 100644 --- a/qa/qa_cluster.py +++ b/qa/qa_cluster.py @@ -252,6 +252,7 @@ def TestClusterBurnin(): check_inst = options.get('burnin-check-instances', False) do_rename = options.get('burnin-rename', '') do_reboot = options.get('burnin-reboot', True) + reboot_types = options.get("reboot-types", constants.REBOOT_TYPES) # Get as many instances as we need instances = [] @@ -283,6 +284,8 @@ def TestClusterBurnin(): cmd.append('--rename=%s' % do_rename) if not do_reboot: cmd.append('--no-reboot') + else: + cmd.append('--reboot-types=%s' % ",".join(reboot_types)) cmd += [inst['name'] for inst in instances] AssertEqual(StartSSH(master['primary'], utils.ShellQuoteArgs(cmd)).wait(), 0) diff --git a/qa/qa_instance.py b/qa/qa_instance.py index 6478b9043b8d47d740a6f0bcb3ef0de62714ffc2..28b246cb27bf24478996dfa5e691832cca4e973f 100644 --- a/qa/qa_instance.py +++ b/qa/qa_instance.py @@ -111,9 +111,11 @@ def TestInstanceReboot(instance): """gnt-instance reboot""" master = qa_config.GetMasterNode() - for reboottype in ["soft", "hard", "full"]: - cmd = ['gnt-instance', 'reboot', '--type=%s' % reboottype, - instance['name']] + options = qa_config.get('options', {}) + reboot_types = options.get("reboot-types", constants.REBOOT_TYPES) + + for rtype in reboot_types: + cmd = ['gnt-instance', 'reboot', '--type=%s' % rtype, instance['name']] AssertEqual(StartSSH(master['primary'], utils.ShellQuoteArgs(cmd)).wait(), 0) diff --git a/tools/burnin b/tools/burnin index 9206db50594602bdc53e017d90b425ee88cc05f5..e644f66ffcf4ca818dccbbe241ba857d2c8a57b6 100755 --- a/tools/burnin +++ b/tools/burnin @@ -158,6 +158,8 @@ OPTIONS = [ cli.cli_option("--no-reboot", dest="do_reboot", help="Skip instance reboot", action="store_false", default=True), + cli.cli_option("--reboot-types", dest="reboot_types", + help="Specify the reboot types", default=None), cli.cli_option("--no-activate-disks", dest="do_activate_disks", help="Skip disk activation/deactivation", action="store_false", default=True), @@ -483,6 +485,14 @@ class Burner(object): if options.hypervisor: self.hypervisor, self.hvp = options.hypervisor + if options.reboot_types is None: + options.reboot_types = constants.REBOOT_TYPES + else: + options.reboot_types = options.reboot_types.split(",") + rt_diff = set(options.reboot_types).difference(constants.REBOOT_TYPES) + if rt_diff: + Err("Invalid reboot types specified: %s" % utils.CommaJoin(rt_diff)) + socket.setdefaulttimeout(options.net_timeout) def GetState(self): @@ -819,7 +829,7 @@ class Burner(object): for instance in self.instances: Log("instance %s", instance, indent=1) ops = [] - for reboot_type in constants.REBOOT_TYPES: + for reboot_type in self.opts.reboot_types: op = opcodes.OpRebootInstance(instance_name=instance, reboot_type=reboot_type, ignore_secondaries=False)