blob: 3ad0742e181ab1dc0ad1933cfb2be9a6945417aa [file] [log] [blame]
George Keishinge7e91712021-09-03 11:28:44 -05001#!/usr/bin/env python3
Michael Walsh0a3bdb42019-01-31 16:21:44 +00002
3r"""
4Set the auto_boot policy according to the caller's wishes.
5"""
6
7import os
8import sys
Michael Sheposae56bee2021-10-13 17:27:57 -05009import time
Michael Walsh0a3bdb42019-01-31 16:21:44 +000010
Michael Walsh91ef4682019-12-13 12:19:56 -060011save_dir_path = sys.path.pop(0)
Michael Walsh0a3bdb42019-01-31 16:21:44 +000012
Michael Walsh91ef4682019-12-13 12:19:56 -060013modules = ['gen_arg', 'gen_print', 'gen_valid', 'gen_misc', 'gen_cmd', 'gen_plug_in_utils', 'gen_call_robot']
14for module in modules:
15 exec("from " + module + " import *")
Michael Walsh0a3bdb42019-01-31 16:21:44 +000016
Michael Walsh91ef4682019-12-13 12:19:56 -060017sys.path.insert(0, save_dir_path)
18
Michael Walsh0a3bdb42019-01-31 16:21:44 +000019
20# Set exit_on_error for gen_valid functions.
21set_exit_on_error(True)
22
23parser = argparse.ArgumentParser(
24 usage='%(prog)s [OPTIONS]',
25 description="%(prog)s will set the auto_boot policy according to the"
26 + " user's wishes.",
27 formatter_class=argparse.RawTextHelpFormatter,
28 prefix_chars='-+')
29
30
31# Populate stock_list with options we want.
32stock_list = [("test_mode", get_plug_default("test_mode", 0)),
33 ("quiet", get_plug_default("quiet", 0)),
34 ("debug", get_plug_default("debug", 0))]
35
36AUTO_REBOOT_DISABLE = "1"
37
Michael Walsh0a3bdb42019-01-31 16:21:44 +000038def validate_parms():
39
40 r"""
Michael Walsh318a4fe2019-10-17 10:38:56 -050041 Validate program parameters, etc. Return True or False (i.e. pass/fail) accordingly.
Michael Walsh0a3bdb42019-01-31 16:21:44 +000042 """
43
44 get_plug_vars()
45
Michael Walsh2ea965c2019-08-01 16:14:25 -050046 valid_value(AUTOBOOT_OPENBMC_HOST)
Michael Walsh0a3bdb42019-01-31 16:21:44 +000047 global AUTO_REBOOT_DISABLE
48 if pgm_name == "cp_cleanup":
49 AUTO_REBOOT_DISABLE = 0
50 else:
51 valid_value(AUTO_REBOOT_DISABLE, valid_values=["0", "1"])
52 AUTO_REBOOT_DISABLE = int(AUTO_REBOOT_DISABLE)
53
Michael Walsh0a3bdb42019-01-31 16:21:44 +000054
55def main():
56
Michael Walsh91ef4682019-12-13 12:19:56 -060057 gen_setup()
Michael Walsh0a3bdb42019-01-31 16:21:44 +000058
Michael Walsh91ef4682019-12-13 12:19:56 -060059 set_term_options(term_requests='children')
Michael Walsh0a3bdb42019-01-31 16:21:44 +000060
Michael Walsh80caea02019-06-21 11:31:41 -050061 print_plug_in_header()
62
63 if pgm_name == "cp_setup" or pgm_name == "cp_cleanup":
64 exit_not_master()
Michael Walsh0a3bdb42019-01-31 16:21:44 +000065
66 init_robot_out_parms(get_plug_in_package_name() + "." + pgm_name + ".")
67
68 lib_file_path = init_robot_file_path("lib/utils.robot")
69
Michael Sheposae56bee2021-10-13 17:27:57 -050070 REDFISH_SUPPORT_TRANS_STATE = int(os.environ.get('REDFISH_SUPPORT_TRANS_STATE', 0))
71 if not REDFISH_SUPPORT_TRANS_STATE:
72 try:
73 from robot.libraries.BuiltIn import BuiltIn
74 REDFISH_SUPPORT_TRANS_STATE = int(BuiltIn().get_variable_value("${REDFISH_SUPPORT_TRANS_STATE}", default=0))
75 except:
76 pass
77
Michael Walsh318a4fe2019-10-17 10:38:56 -050078 enable_auto_reboot = 1 - AUTO_REBOOT_DISABLE
79 print_var(enable_auto_reboot)
Michael Sheposea568c22021-01-08 12:38:23 -060080 keyword_string = "Set Auto Reboot Setting ${%i}" % enable_auto_reboot
Michael Walsh0a3bdb42019-01-31 16:21:44 +000081
Michael Walsh046fe222019-11-08 14:33:53 -060082 cmd_buf = create_robot_cmd_string("extended/run_keyword.robot", OPENBMC_HOST, SSH_PORT, HTTPS_PORT,
Michael Sheposea568c22021-01-08 12:38:23 -060083 REST_USERNAME, REST_PASSWORD, OPENBMC_USERNAME, OPENBMC_PASSWORD,
Michael Shepos34c79562021-03-18 18:49:44 -050084 REDFISH_SUPPORT_TRANS_STATE, keyword_string, lib_file_path, quiet,
Michael Walsh046fe222019-11-08 14:33:53 -060085 test_mode, debug, outputdir, output, log, report)
Michael Shepos34c79562021-03-18 18:49:44 -050086
Michael Sheposae56bee2021-10-13 17:27:57 -050087 retry_count = 3
88 while not robot_cmd_fnc(cmd_buf):
89 retry_count -= 1
90 if retry_count == 0:
91 print_error_report("Robot command execution failed.")
92 exit(1)
93 time.sleep(30)
94 return
Michael Walsh0a3bdb42019-01-31 16:21:44 +000095
96
97main()