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 1320f38712SPatrick Williamsmodules = [ 1420f38712SPatrick Williams "gen_arg", 1520f38712SPatrick Williams "gen_print", 1620f38712SPatrick Williams "gen_valid", 1720f38712SPatrick Williams "gen_misc", 1820f38712SPatrick Williams "gen_cmd", 1920f38712SPatrick Williams "gen_plug_in_utils", 2020f38712SPatrick Williams "gen_call_robot", 2120f38712SPatrick 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( 3220f38712SPatrick Williams usage="%(prog)s [OPTIONS]", 3320f38712SPatrick Williams description=( 3420f38712SPatrick Williams "%(prog)s will set the auto_boot policy according to the user's" 3520f38712SPatrick Williams " wishes." 3620f38712SPatrick Williams ), 370a3bdb4cSMichael Walsh formatter_class=argparse.RawTextHelpFormatter, 3820f38712SPatrick Williams prefix_chars="-+", 3920f38712SPatrick Williams) 400a3bdb4cSMichael Walsh 410a3bdb4cSMichael Walsh 420a3bdb4cSMichael Walsh# Populate stock_list with options we want. 4320f38712SPatrick Williamsstock_list = [ 4420f38712SPatrick Williams ("test_mode", get_plug_default("test_mode", 0)), 450a3bdb4cSMichael Walsh ("quiet", get_plug_default("quiet", 0)), 4620f38712SPatrick Williams ("debug", get_plug_default("debug", 0)), 4720f38712SPatrick 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 7120f38712SPatrick 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 8220f38712SPatrick Williams REDFISH_SUPPORT_TRANS_STATE = int( 8320f38712SPatrick Williams os.environ.get("REDFISH_SUPPORT_TRANS_STATE", 0) 8420f38712SPatrick Williams ) or int(os.environ.get("AUTOBOOT_REDFISH_SUPPORT_TRANS_STATE", 0)) 851cf49cd4SMichael Shepos 86a22b70caSIgor Kanyuka CHASSIS_ID = os.environ.get("CHASSIS_ID", "chassis") 87a22b70caSIgor Kanyuka MANAGER_ID = os.environ.get("MANAGER_ID", "bmc") 88a22b70caSIgor Kanyuka SYSTEM_ID = os.environ.get("SYSTEM_ID", "system") 89a22b70caSIgor Kanyuka 90318a4feeSMichael Walsh enable_auto_reboot = 1 - AUTO_REBOOT_DISABLE 91318a4feeSMichael Walsh print_var(enable_auto_reboot) 92ea568c2eSMichael Shepos keyword_string = "Set Auto Reboot Setting ${%i}" % enable_auto_reboot 930a3bdb4cSMichael Walsh 9420f38712SPatrick Williams cmd_buf = create_robot_cmd_string( 9520f38712SPatrick Williams "extended/run_keyword.robot", 9620f38712SPatrick Williams OPENBMC_HOST, 9720f38712SPatrick Williams SSH_PORT, 9820f38712SPatrick Williams HTTPS_PORT, 9920f38712SPatrick Williams OPENBMC_USERNAME, 10020f38712SPatrick Williams OPENBMC_PASSWORD, 10120f38712SPatrick Williams IPMI_USERNAME, 10220f38712SPatrick Williams IPMI_PASSWORD, 103a22b70caSIgor Kanyuka CHASSIS_ID, 104a22b70caSIgor Kanyuka MANAGER_ID, 105a22b70caSIgor Kanyuka SYSTEM_ID, 10620f38712SPatrick Williams REDFISH_SUPPORT_TRANS_STATE, 10720f38712SPatrick Williams keyword_string, 10820f38712SPatrick Williams lib_file_path, 10920f38712SPatrick Williams quiet, 11020f38712SPatrick Williams test_mode, 11120f38712SPatrick Williams debug, 11220f38712SPatrick Williams outputdir, 11320f38712SPatrick Williams output, 11420f38712SPatrick Williams log, 11520f38712SPatrick Williams report, 11620f38712SPatrick Williams ) 11734c7956cSMichael Shepos 1181cf49cd4SMichael Shepos retry_count = 3 1191cf49cd4SMichael Shepos while not robot_cmd_fnc(cmd_buf): 1201cf49cd4SMichael Shepos retry_count -= 1 1211cf49cd4SMichael Shepos if retry_count == 0: 1220a3bdb4cSMichael Walsh print_error_report("Robot command execution failed.") 1230a3bdb4cSMichael Walsh exit(1) 1241cf49cd4SMichael Shepos time.sleep(30) 1251cf49cd4SMichael Shepos return 1260a3bdb4cSMichael Walsh 1270a3bdb4cSMichael Walsh 1280a3bdb4cSMichael Walshmain() 129