1*** Settings ***
2
3Resource    ../xcat/resource.txt
4Resource    ../../lib/resource.txt
5
6Library     SSHLibrary
7Library     OperatingSystem
8Library     String
9
10*** Keywords  ***
11
12Open Connection And Login To XCAT
13    [Documentation]  Open connection and login to xCAT server.
14    [Arguments]  ${xcat_host}=${XCAT_HOST}  ${xcat_port}=${XCAT_PORT}
15
16    # Description of argument(s):
17    # xcat_host  IP address of the XCAT server.
18    # xcat_port  Network port on which XCAT server accepts ssh session.
19
20    Open Connection  ${xcat_host}  port=${xcat_port}
21    Login  ${XCAT_USERNAME}  ${XCAT_PASSWORD}
22
23Get List Of BMC Nodes
24    [Documentation]  Get list of BMC nodes.
25    [Arguments]  ${node_cfg_file_path}=${NODE_CFG_FILE_PATH}
26
27    # Get the list of BMC nodes to be added.
28    # This keyword expects file having list of BMC nodes
29    # as an input.
30    # File should have IP addresses of BMC nodes.
31
32    OperatingSystem.File Should Exist  ${node_cfg_file_path}  msg=cfg file missing.
33    File Should Not Be Empty  ${node_cfg_file_path}  msg=Empty config file.
34
35    ${bmc_list} =  OperatingSystem.Get File  ${node_cfg_file_path}
36    [Return]  ${bmc_list}
37
38Add Nodes To XCAT
39    [Documentation]  Add nodes to XCAT configuration.
40    [Arguments]  ${node}  ${username}=${OPENBMC_USERNAME}
41    ...          ${password}=${OPENBMC_PASSWORD}
42
43    # Description of the argument(s):
44    # node  Name of the node to be added.
45
46    ${cmd_buf}=  Catenate  ${XCAT_DIR_PATH}/mkdef ${node} bmc=${node}
47    ...  bmcusername=${username} bmcpassword=${password} mgt=openbmc groups=all
48    Execute Command  ${cmd_buf}
49
50Validate Added Node
51    [Documentation]  Validate added node.
52    [Arguments]  ${node}
53
54    # Description of the argument(s):
55    # node  Name of the node.
56
57    ${stdout}  ${stderr}=  Execute Command  ${XCAT_DIR_PATH}/nodels
58    ...  return_stderr=True
59    Should Be Empty  ${stderr}
60    Should Contain  ${std_out}  ${node}  msg=Node is not added.
61
62Power On Via XCAT
63    [Documentation]  Power on via XCAT.
64    [Arguments]  ${node}
65
66    # Description of the argument(s):
67    # node  Name of the node.
68
69    ${stdout}  ${stderr}=  Execute Command  ${XCAT_DIR_PATH}/rpower ${node} on
70    ...  return_stderr=True
71    Should Be Empty  ${stderr}
72
73Power Off Via XCAT
74    [Documentation]  Power off via XCAT.
75    [Arguments]  ${node}
76
77    # Description of the argument(s):
78    # node  Name of the node.
79
80    ${stdout}  ${stderr}=  Execute Command  ${XCAT_DIR_PATH}/rpower ${node} off
81    ...  return_stderr=True
82    Should Be Empty  ${stderr}
83
84Get Power Status
85    [Documentation]  Get power status via XCAT.
86    [Arguments]  ${node}
87
88    # Description of the argument(s):
89    # node  Name of the node.
90
91    ${stdout}  ${stderr}=  Execute Command
92    ...  ${XCAT_DIR_PATH}/rpower ${node} state  return_stderr=True
93    Should Be Empty  ${stderr}
94
95    [Return]  ${stdout}
96