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