xref: /aosp_15_r20/external/autotest/server/control_segments/reset (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Liimport sys
2*9c5db199SXin Li
3*9c5db199SXin Lifrom autotest_lib.server import utils
4*9c5db199SXin Lifrom autotest_lib.server.cros import provision
5*9c5db199SXin Li
6*9c5db199SXin Litry:
7*9c5db199SXin Li    from autotest_lib.utils.frozen_chromite.lib import metrics
8*9c5db199SXin Liexcept ImportError:
9*9c5db199SXin Li    metrics = utils.metrics_mock
10*9c5db199SXin Li
11*9c5db199SXin Li
12*9c5db199SXin LiDURATION_METRIC = 'chromeos/autotest/autoserv/reset_duration'
13*9c5db199SXin Li
14*9c5db199SXin Li
15*9c5db199SXin Li# A string of the form 'label1,label2:value,label3'.
16*9c5db199SXin Lijob_labels = locals().get('job_labels') or ','.join(args)
17*9c5db199SXin Lilabels_list = [l.strip() for l in job_labels.split(',') if l]
18*9c5db199SXin Li
19*9c5db199SXin Li
20*9c5db199SXin Lidef reset(machine):
21*9c5db199SXin Li    print('Starting to reset host %s' % machine)
22*9c5db199SXin Li    try:
23*9c5db199SXin Li        job.record('START', None, 'reset')
24*9c5db199SXin Li        target = hosts.create_target_machine(machine)
25*9c5db199SXin Li        hostname = utils.get_hostname_from_machine(machine)
26*9c5db199SXin Li        with metrics.SecondsTimer(DURATION_METRIC,
27*9c5db199SXin Li                                  fields={'dut_host_name': hostname}):
28*9c5db199SXin Li            # Assume cleanup always runs first.
29*9c5db199SXin Li            target.cleanup()
30*9c5db199SXin Li            provision.Cleanup.run_task_actions(job, target, labels_list)
31*9c5db199SXin Li
32*9c5db199SXin Li            target.verify()
33*9c5db199SXin Li            provision.Verify.run_task_actions(job, target, labels_list)
34*9c5db199SXin Li    except Exception:
35*9c5db199SXin Li        logging.exception('Reset failed due to Exception.')
36*9c5db199SXin Li        job.record('END FAIL', None, 'reset')
37*9c5db199SXin Li        # See the provision control segment for the explanation of why we're
38*9c5db199SXin Li        # doing this.
39*9c5db199SXin Li        raise Exception('')
40*9c5db199SXin Li    else:
41*9c5db199SXin Li        hostname = utils.get_hostname_from_machine(machine)
42*9c5db199SXin Li        job.record('END GOOD', None, 'reset',
43*9c5db199SXin Li                   '%s reset successfully' % hostname)
44*9c5db199SXin Li
45*9c5db199SXin Li
46*9c5db199SXin Lijob.parallel_simple(reset, machines)
47*9c5db199SXin Li
48*9c5db199SXin Li# vim: set syntax=python :
49