George Keishing | e7e9171 | 2021-09-03 11:28:44 -0500 | [diff] [blame] | 1 | #!/usr/bin/env python3 |
George Keishing | cfa950c | 2019-07-18 12:46:46 -0500 | [diff] [blame] | 2 | |
| 3 | r""" |
| 4 | This module contains functions for tftp update. |
| 5 | """ |
| 6 | |
George Keishing | 7a48601 | 2023-03-01 12:29:53 +0530 | [diff] [blame] | 7 | import gen_print as gp # NOQA |
Patrick Williams | 20f3871 | 2022-12-08 06:18:26 -0600 | [diff] [blame] | 8 | import state as st |
George Keishing | e635ddc | 2022-12-08 07:38:02 -0600 | [diff] [blame] | 9 | |
George Keishing | cfa950c | 2019-07-18 12:46:46 -0500 | [diff] [blame] | 10 | |
| 11 | def get_pre_reboot_state(): |
| 12 | r""" |
| 13 | Get and return a custom state which is comprised of the |
| 14 | st.default_req_states plus epoch_seconds. |
| 15 | """ |
| 16 | |
| 17 | global state |
| 18 | |
Patrick Williams | 20f3871 | 2022-12-08 06:18:26 -0600 | [diff] [blame] | 19 | req_states = ["epoch_seconds"] + st.default_req_states |
George Keishing | cfa950c | 2019-07-18 12:46:46 -0500 | [diff] [blame] | 20 | |
| 21 | gp.qprint_timen("Get system state.") |
| 22 | state = st.get_state(req_states=req_states, quiet=0) |
| 23 | gp.qprint_var(state) |
| 24 | return state |
| 25 | |
| 26 | |
George Keishing | 68e9827 | 2022-07-15 03:26:48 -0500 | [diff] [blame] | 27 | def wait_for_reboot(start_boot_seconds, wait_state_check=True): |
George Keishing | cfa950c | 2019-07-18 12:46:46 -0500 | [diff] [blame] | 28 | r""" |
| 29 | Wait for the BMC to complete a previously initiated reboot. |
| 30 | |
| 31 | Description of argument(s): |
| 32 | start_boot_seconds The time that the boot test started. The format is the |
| 33 | epoch time in seconds, i.e. the number of seconds since |
| 34 | 1970-01-01 00:00:00 UTC. This value should be obtained |
| 35 | from the BMC so that it is not dependent on any kind of |
| 36 | synchronization between this machine and the target BMC |
| 37 | This will allow this program to work correctly even in |
| 38 | a simulated environment. This value should be obtained |
| 39 | by the caller prior to initiating a reboot. It can be |
| 40 | obtained as follows: |
| 41 | state = st.get_state(req_states=['epoch_seconds']) |
George Keishing | 68e9827 | 2022-07-15 03:26:48 -0500 | [diff] [blame] | 42 | wait_state_check By default check the state, ignore if set to False. |
George Keishing | cfa950c | 2019-07-18 12:46:46 -0500 | [diff] [blame] | 43 | |
| 44 | """ |
| 45 | |
| 46 | st.wait_for_comm_cycle(int(start_boot_seconds)) |
| 47 | |
| 48 | gp.qprintn() |
George Keishing | 68e9827 | 2022-07-15 03:26:48 -0500 | [diff] [blame] | 49 | if wait_state_check: |
Patrick Williams | 20f3871 | 2022-12-08 06:18:26 -0600 | [diff] [blame] | 50 | st.wait_state( |
| 51 | st.standby_match_state, wait_time="10 mins", interval="10 seconds" |
| 52 | ) |