1e7e9171eSGeorge Keishing#!/usr/bin/env python3 20a3bdb4cSMichael Walsh 30a3bdb4cSMichael Walshr""" 40a3bdb4cSMichael WalshSet the auto_boot policy according to the caller's wishes. 50a3bdb4cSMichael Walsh""" 60a3bdb4cSMichael Walsh 70a3bdb4cSMichael Walshimport os 80a3bdb4cSMichael Walshimport sys 91cf49cd4SMichael Sheposimport time 100a3bdb4cSMichael Walsh 1191ef4686SMichael Walshsave_dir_path = sys.path.pop(0) 120a3bdb4cSMichael Walsh 13*20f38712SPatrick Williamsmodules = [ 14*20f38712SPatrick Williams "gen_arg", 15*20f38712SPatrick Williams "gen_print", 16*20f38712SPatrick Williams "gen_valid", 17*20f38712SPatrick Williams "gen_misc", 18*20f38712SPatrick Williams "gen_cmd", 19*20f38712SPatrick Williams "gen_plug_in_utils", 20*20f38712SPatrick Williams "gen_call_robot", 21*20f38712SPatrick Williams] 2291ef4686SMichael Walshfor module in modules: 2391ef4686SMichael Walsh exec("from " + module + " import *") 240a3bdb4cSMichael Walsh 2591ef4686SMichael Walshsys.path.insert(0, save_dir_path) 2691ef4686SMichael Walsh 270a3bdb4cSMichael Walsh 280a3bdb4cSMichael Walsh# Set exit_on_error for gen_valid functions. 290a3bdb4cSMichael Walshset_exit_on_error(True) 300a3bdb4cSMichael Walsh 310a3bdb4cSMichael Walshparser = argparse.ArgumentParser( 32*20f38712SPatrick Williams usage="%(prog)s [OPTIONS]", 33*20f38712SPatrick Williams description=( 34*20f38712SPatrick Williams "%(prog)s will set the auto_boot policy according to the user's" 35*20f38712SPatrick Williams " wishes." 36*20f38712SPatrick Williams ), 370a3bdb4cSMichael Walsh formatter_class=argparse.RawTextHelpFormatter, 38*20f38712SPatrick Williams prefix_chars="-+", 39*20f38712SPatrick Williams) 400a3bdb4cSMichael Walsh 410a3bdb4cSMichael Walsh 420a3bdb4cSMichael Walsh# Populate stock_list with options we want. 43*20f38712SPatrick Williamsstock_list = [ 44*20f38712SPatrick Williams ("test_mode", get_plug_default("test_mode", 0)), 450a3bdb4cSMichael Walsh ("quiet", get_plug_default("quiet", 0)), 46*20f38712SPatrick Williams ("debug", get_plug_default("debug", 0)), 47*20f38712SPatrick Williams] 480a3bdb4cSMichael Walsh 490a3bdb4cSMichael WalshAUTO_REBOOT_DISABLE = "1" 500a3bdb4cSMichael Walsh 51a57fef4aSPatrick Williams 520a3bdb4cSMichael Walshdef validate_parms(): 530a3bdb4cSMichael Walsh r""" 54318a4feeSMichael Walsh Validate program parameters, etc. Return True or False (i.e. pass/fail) accordingly. 550a3bdb4cSMichael Walsh """ 560a3bdb4cSMichael Walsh 570a3bdb4cSMichael Walsh get_plug_vars() 580a3bdb4cSMichael Walsh 592ea965ceSMichael Walsh valid_value(AUTOBOOT_OPENBMC_HOST) 600a3bdb4cSMichael Walsh global AUTO_REBOOT_DISABLE 610a3bdb4cSMichael Walsh if pgm_name == "cp_cleanup": 620a3bdb4cSMichael Walsh AUTO_REBOOT_DISABLE = 0 630a3bdb4cSMichael Walsh else: 640a3bdb4cSMichael Walsh valid_value(AUTO_REBOOT_DISABLE, valid_values=["0", "1"]) 650a3bdb4cSMichael Walsh AUTO_REBOOT_DISABLE = int(AUTO_REBOOT_DISABLE) 660a3bdb4cSMichael Walsh 670a3bdb4cSMichael Walsh 680a3bdb4cSMichael Walshdef main(): 6991ef4686SMichael Walsh gen_setup() 700a3bdb4cSMichael Walsh 71*20f38712SPatrick Williams set_term_options(term_requests="children") 720a3bdb4cSMichael Walsh 7380caea09SMichael Walsh print_plug_in_header() 7480caea09SMichael Walsh 7580caea09SMichael Walsh if pgm_name == "cp_setup" or pgm_name == "cp_cleanup": 7680caea09SMichael Walsh exit_not_master() 770a3bdb4cSMichael Walsh 780a3bdb4cSMichael Walsh init_robot_out_parms(get_plug_in_package_name() + "." + pgm_name + ".") 790a3bdb4cSMichael Walsh 800a3bdb4cSMichael Walsh lib_file_path = init_robot_file_path("lib/utils.robot") 810a3bdb4cSMichael Walsh 82*20f38712SPatrick Williams REDFISH_SUPPORT_TRANS_STATE = int( 83*20f38712SPatrick Williams os.environ.get("REDFISH_SUPPORT_TRANS_STATE", 0) 84*20f38712SPatrick Williams ) or int(os.environ.get("AUTOBOOT_REDFISH_SUPPORT_TRANS_STATE", 0)) 851cf49cd4SMichael Shepos 86318a4feeSMichael Walsh enable_auto_reboot = 1 - AUTO_REBOOT_DISABLE 87318a4feeSMichael Walsh print_var(enable_auto_reboot) 88ea568c2eSMichael Shepos keyword_string = "Set Auto Reboot Setting ${%i}" % enable_auto_reboot 890a3bdb4cSMichael Walsh 90*20f38712SPatrick Williams cmd_buf = create_robot_cmd_string( 91*20f38712SPatrick Williams "extended/run_keyword.robot", 92*20f38712SPatrick Williams OPENBMC_HOST, 93*20f38712SPatrick Williams SSH_PORT, 94*20f38712SPatrick Williams HTTPS_PORT, 95*20f38712SPatrick Williams OPENBMC_USERNAME, 96*20f38712SPatrick Williams OPENBMC_PASSWORD, 97*20f38712SPatrick Williams IPMI_USERNAME, 98*20f38712SPatrick Williams IPMI_PASSWORD, 99*20f38712SPatrick Williams REDFISH_SUPPORT_TRANS_STATE, 100*20f38712SPatrick Williams keyword_string, 101*20f38712SPatrick Williams lib_file_path, 102*20f38712SPatrick Williams quiet, 103*20f38712SPatrick Williams test_mode, 104*20f38712SPatrick Williams debug, 105*20f38712SPatrick Williams outputdir, 106*20f38712SPatrick Williams output, 107*20f38712SPatrick Williams log, 108*20f38712SPatrick Williams report, 109*20f38712SPatrick Williams ) 11034c7956cSMichael Shepos 1111cf49cd4SMichael Shepos retry_count = 3 1121cf49cd4SMichael Shepos while not robot_cmd_fnc(cmd_buf): 1131cf49cd4SMichael Shepos retry_count -= 1 1141cf49cd4SMichael Shepos if retry_count == 0: 1150a3bdb4cSMichael Walsh print_error_report("Robot command execution failed.") 1160a3bdb4cSMichael Walsh exit(1) 1171cf49cd4SMichael Shepos time.sleep(30) 1181cf49cd4SMichael Shepos return 1190a3bdb4cSMichael Walsh 1200a3bdb4cSMichael Walsh 1210a3bdb4cSMichael Walshmain() 122