1*** Settings *** 2 3Resource ../xcat/resource.robot 4Resource ../../lib/resource.robot 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 SSHLibrary.Open Connection ${xcat_host} port=${xcat_port} 21 Login ${XCAT_USERNAME} ${XCAT_PASSWORD} 22 23 24Execute Command On XCAT 25 [Documentation] Execute command using XCAT. 26 [Arguments] ${command} ${command_option}=${EMPTY} 27 ... ${node}=${OPENBMC_HOST} 28 29 # Description of argument(s): 30 # command Command to be run(e.g. "rinv"). 31 # command_option Command's option to be run(e.g. "dimm"). 32 # node Name of the node(e.g. "node1"). 33 34 ${xcat_cmd}= Catenate SEPARATOR= 35 ... ${XCAT_DIR_PATH}/${command} ${node} ${command_option} 36 ${stdout} ${stderr}= Execute Command ${xcat_cmd} return_stderr=True 37 Should Be Empty ${stderr} 38 39 RETURN ${stdout} 40 41 42Get List Of BMC Nodes 43 [Documentation] Get list of BMC nodes. 44 [Arguments] ${node_cfg_file_path}=${NODE_CFG_FILE_PATH} 45 46 # Get the list of BMC nodes to be added. 47 # This keyword expects file having list of BMC nodes 48 # as an input. 49 # File should have IP addresses of BMC nodes. 50 51 OperatingSystem.File Should Exist ${node_cfg_file_path} msg=cfg file missing. 52 File Should Not Be Empty ${node_cfg_file_path} msg=Empty config file. 53 54 ${bmc_list}= OperatingSystem.Get File ${node_cfg_file_path} 55 RETURN ${bmc_list} 56 57Add Nodes To XCAT 58 [Documentation] Add nodes to XCAT configuration. 59 [Arguments] ${node} ${username}=${OPENBMC_USERNAME} 60 ... ${password}=${OPENBMC_PASSWORD} 61 62 # Description of the argument(s): 63 # node Name of the node to be added. 64 65 ${cmd_buf}= Catenate ${XCAT_DIR_PATH}/mkdef ${node} bmc=${node} 66 ... bmcusername=${username} bmcpassword=${password} mgt=openbmc groups=all 67 Execute Command ${cmd_buf} 68 69Validate Added Node 70 [Documentation] Validate added node. 71 [Arguments] ${node} 72 73 # Description of the argument(s): 74 # node Name of the node. 75 76 ${stdout} ${stderr}= Execute Command ${XCAT_DIR_PATH}/nodels 77 ... return_stderr=True 78 Should Be Empty ${stderr} 79 Should Contain ${std_out} ${node} msg=Node is not added. 80 81Power On Via XCAT 82 [Documentation] Power on via XCAT. 83 [Arguments] ${node} 84 85 # Description of the argument(s): 86 # node Name of the node. 87 88 ${stdout} ${stderr}= Execute Command ${XCAT_DIR_PATH}/rpower ${node} on 89 ... return_stderr=True 90 Should Be Empty ${stderr} 91 92Power Off Via XCAT 93 [Documentation] Power off via XCAT. 94 [Arguments] ${node} 95 96 # Description of the argument(s): 97 # node Name of the node. 98 99 ${stdout} ${stderr}= Execute Command ${XCAT_DIR_PATH}/rpower ${node} off 100 ... return_stderr=True 101 Should Be Empty ${stderr} 102 103Get Power Status 104 [Documentation] Get power status via XCAT. 105 [Arguments] ${node} 106 107 # Description of the argument(s): 108 # node Name of the node. 109 110 ${stdout} ${stderr}= Execute Command 111 ... ${XCAT_DIR_PATH}/rpower ${node} state return_stderr=True 112 Should Be Empty ${stderr} 113 114 RETURN ${stdout} 115 116Add Nodes To Group 117 [Documentation] Add BMC nodes to group. 118 [Arguments] ${node} ${group}=${GROUP} 119 120 # Description of argument(s): 121 # node Name of the node (e.g. "node1"). 122 # group Name of the group (e.g. "openbmc"). 123 124 ${stdout} ${stderr}= Execute Command 125 ... ${XCAT_DIR_PATH}/chdef ${node} groups=${group} return_stderr=True 126 Should Be Empty ${stderr} 127 128Get List Of Nodes In Group 129 [Documentation] Get list of nodes in BMC. 130 [Arguments] ${group}=${GROUP} 131 132 # Description of argument(s): 133 # group Name of the group (e.g. "openbmc"). 134 135 # Sample output of this keyword: 136 # XXX.XXX.XXX.XXX 137 # YYY.YYY.YYY.YYY 138 # ZZZ.ZZZ.ZZZ.ZZZ 139 140 ${stdout} ${stderr}= Execute Command 141 ... ${XCAT_DIR_PATH}/nodels ${group} return_stderr=True 142 Should Be Empty ${stderr} 143 144 RETURN ${stdout} 145 146Validate Node Added In Group 147 [Documentation] Validate whether node is added in group. 148 [Arguments] ${node} ${group} 149 150 # Description of argument(s): 151 # node Name of the node (e.g. "node1"). 152 # group Name of the group (e.g. "openbmc"). 153 154 ${nodes_in_group}= Get List Of Nodes In Group ${group} 155 Should Contain ${nodes_in_group} ${node} 156 ... msg=BMC node is not added in a group. 157 158Get Hardware Vitals Via XCAT 159 [Documentation] Get hardware vitals via XCAT. 160 [Arguments] ${node} ${option} 161 162 # Description of argument(s): 163 # node Name of the node (e.g. "node1"). 164 # option Hardware vitals option (e.g. "temp", "voltage", "fanspeed", etc.). 165 166 ${cmd_buf}= Catenate ${XCAT_DIR_PATH}/rvitals ${node} ${option} 167 ${stdout} ${stderr}= Execute Command ${cmd_buf} return_stderr=True 168 Should Be Empty ${stderr} 169 170 RETURN ${stdout} 171