1*** Settings ***
2Documentation     Module for capturing BMC serial output
3
4Library           Telnet  newline=LF
5Library           OperatingSystem
6Library           Collections
7Library           String
8
9
10*** Keywords ***
11
12Open Telnet Connection To BMC Serial Console
13    [Documentation]   Open telnet connection session to BMC serial console
14    ...               The login prompt expected, for example, for Witherspoon
15    ...               is "Witherspoon login:".
16    [Arguments]   ${i_host}=${OPENBMC_SERIAL_HOST}
17    ...           ${i_port}=${OPENBMC_SERIAL_PORT}
18    ...           ${i_model}=${OPENBMC_MODEL}
19
20    # Description of argument(s):
21    # i_host    The host name or IP of the serial console.
22    # i_port    The port of the serial console.
23    # i_model   The path to the system data, i.e. "./data/Witherspoon.py".
24
25    ${prompt_string}=  Convert To Lowercase  ${i_model} login:
26    Telnet.Open Connection
27    ...  ${i_host}  port=${i_port}  prompt=#
28    Telnet.Set Timeout  30 seconds
29    Telnet.Set Newline  \n
30    Telnet.Set Newline  CRLF
31    Telnet.Write  \n
32    Telnet.Write  exit
33    Telnet.Write  \n
34    Telnet.Read Until Regexp  (Password:|logout)
35    Telnet.Write  \n
36    Telnet.Read Until  ${prompt_string}
37    Telnet.Write  ${OPENBMC_USERNAME}
38    Telnet.Write  \n
39    Telnet.Read Until  Password:
40    Telnet.Write  ${OPENBMC_PASSWORD}
41    Telnet.Write  \n
42    Telnet.Read Until Prompt
43    Telnet.Set Timeout  30 minute 30 seconds
44
45
46Read And Log BMC Serial Console Output
47    [Documentation]    Reads everything that is currently available
48    ...                in the output.
49
50    ${bmc_serial_log}=   Telnet.Read
51    Log   ${bmc_serial_log}
52
53
54Execute Command On Serial Console
55    [Documentation]  Execute a command on the BMC serial console.
56    [Arguments]  ${command_string}
57
58    # Description of argument(s):
59    # command   The command to execute on the BMC.
60
61    Open Telnet Connection To BMC Serial Console
62    Telnet.Write  \n
63    Telnet.Write  \n
64    Telnet.Execute Command  ${command_string}
65    Read And Log BMC Serial Console Output
66    Close Serial Console Connection
67
68
69Close Serial Console Connection
70    [Documentation]  Log out of the BMC and close telnet.
71
72    Telnet.Write  \n
73    Telnet.Write  exit
74    Telnet.Close Connection
75