1*** Settings *** 2 3Documentation Test client identifier feature on BMC. 4 5Resource ../../lib/rest_client.robot 6Resource ../../lib/openbmc_ffdc.robot 7Resource ../../lib/resource.robot 8Resource ../../lib/bmc_redfish_utils.robot 9Library ../../lib/bmc_network_utils.py 10Library ../../lib/gen_robot_valid.py 11 12Suite Setup Redfish.Login 13Suite Teardown Run Keyword And Ignore Error Delete All Redfish Sessions 14Test Setup Printn 15Test Teardown FFDC On Test Case Fail 16 17 18*** Test Cases *** 19 20Create A Session With ClientID And Verify 21 [Documentation] Create a session with client id and verify client id is same. 22 [Tags] Create_A_Session_With_ClientID_And_Verify 23 [Template] Create And Verify Session ClientID 24 25 # client_id reboot_flag 26 12345 False 27 123456 False 28 EXTERNAL-CLIENT-01 False 29 EXTERNAL-CLIENT-02 False 30 31 32Check ClientID Persistency On BMC Reboot 33 [Documentation] Create a session with client id and verify client id is same after the reboot. 34 [Tags] Check_ClientID_Persistency_On_BMC_Reboot 35 [Template] Create And Verify Session ClientID 36 37 # client_id reboot_flag 38 12345 True 39 EXTERNAL-CLIENT-01 True 40 41 42Create A Multiple Session With ClientID And Verify 43 [Documentation] Create a multiple session with client id and verify client id is same. 44 [Tags] Create_A_Multiple_Session_With_ClientID_And_Verify 45 [Template] Create And Verify Session ClientID 46 47 # client_id reboot_flag 48 12345,123456 False 49 EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02 False 50 51 52Check Multiple ClientID Persistency On BMC Reboot 53 [Documentation] Create a multiple session with client id and verify client id is same after the reboot. 54 [Tags] Check_Multiple_ClientID_Persistency_On_BMC_Reboot 55 [Template] Create And Verify Session ClientID 56 57 # client_id reboot_flag 58 12345,123456 True 59 EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02 True 60 61 62Fail To Set Client Origin IP 63 [Documentation] Fail to set the client origin IP. 64 [Tags] Fail_To_Set_Client_Origin_IP 65 [Template] Create Session And Fail To Set Client Origin IP 66 67 # client_id 68 12345 69 EXTERNAL-CLIENT-01 70 71 72Create Session For Non Admin User 73 [Documentation] Create Session for non-admin user. 74 [Tags] Create_Session_For_Non_Admin_User 75 [Template] Non Admin User To Create Session 76 77 # client_id username password role_id 78 12345 operator_user TestPwd123 Operator 79 80 81*** Keywords *** 82 83Create A Session With ClientID 84 [Documentation] Create redifish session with client id. 85 [Arguments] ${client_id} 86 87 # Description of argument(s): 88 # client_id This client id can contain string value 89 # (e.g. 12345, "EXTERNAL-CLIENT"). 90 91 @{session_list}= Create List 92 &{tmp_dict}= Create Dictionary 93 94 FOR ${client} IN @{client_id} 95 ${resp}= Redfish Login kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client}"}} 96 Append To List ${session_list} ${resp} 97 END 98 99 [Return] ${session_list} 100 101 102Get Session Information By ClientID 103 [Documentation] Get session information by client id. 104 [Arguments] ${client_id} ${session_ids} 105 106 FOR ${session} IN @{session_ids} 107 Return From Keyword If '${client_id}' == '${session["Oem"]["OpenBMC"]["ClientID"]}' ${session["Id"]} 108 END 109 110 [Return] ${EMPTY} 111 112 113Verify A Session Created With ClientID 114 [Documentation] Verify session created with client id. 115 [Arguments] ${client_ids} ${session_ids} 116 117 # Description of argument(s): 118 # client_id External client name. 119 # session_id This value is a session id. 120 121 # { 122 # "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ", 123 # "@odata.type": "#Session.v1_0_2.Session", 124 # "Description": "Manager User Session", 125 # "Id": "H8q2ZKucSJ", 126 # "Name": "User Session", 127 # "Oem": { 128 # "OpenBMC": { 129 # "@odata.type": "#OemSession.v1_0_0.Session", 130 # "ClientID": "", 131 # "ClientOriginIP": "::ffff:x.x.x.x" 132 # } 133 # }, 134 # "UserName": "root" 135 # } 136 137 FOR ${client} IN @{client_ids} 138 ${session_id}= Get Session Information By ClientID ${client} ${session_ids} 139 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_id} 140 Rprint Vars sessions 141 @{words} = Split String ${sessions["Oem"]["OpenBMC"]["ClientOriginIP"]} : 142 ${ip_address}= Get Running System IP 143 Set Test Variable ${temp_ipaddr} ${words}[-1] 144 Valid Value client ['${sessions["Oem"]["OpenBMC"]["ClientID"]}'] 145 Valid Value sessions["Id"] ['${session_id}'] 146 Valid Value temp_ipaddr ${ip_address} 147 END 148 149 150Create And Verify Session ClientID 151 [Documentation] Create redifish session with client id and verify it remain same. 152 [Arguments] ${client_id} ${reboot_flag}=False 153 154 # Description of argument(s): 155 # client_id This client id contain string value 156 # (e.g. 12345, "EXTERNAL-CLIENT"). 157 # reboot_flag Flag is used to run reboot the BMC code. 158 # (e.g. True or False). 159 160 ${client_ids}= Split String ${client_id} , 161 ${session_info}= Create A Session With ClientID ${client_ids} 162 Verify A Session Created With ClientID ${client_ids} ${session_info} 163 Run Keyword If '${reboot_flag}' == 'True' 164 ... Run Keywords Redfish OBMC Reboot (off) AND 165 ... Verify A Session Created With ClientID ${client_ids} ${session_info} 166 167 168Set Client Origin IP 169 [Documentation] Set client origin IP. 170 [Arguments] ${client_id} ${client_ip} ${status} 171 172 # Description of argument(s): 173 # client_id This client id contain string value 174 # (e.g. 12345, "EXTERNAL-CLIENT"). 175 # client_ip Valid IP address 176 # status HTTP status code 177 178 ${session}= Run Keyword And Return Status 179 ... Redfish Login 180 ... kwargs= "Oem":{"OpenBMC": {"ClientID":"${client_id}", "ClientOriginIP":"${client_ip}"}} 181 Valid Value session [${status}] 182 183 184Create Session And Fail To Set Client Origin IP 185 [Documentation] Create redifish session with client id and fail to set client origin IP. 186 [Arguments] ${client_id} 187 188 # Description of argument(s): 189 # client_id This client id contain string value 190 # (e.g. 12345, "EXTERNAL-CLIENT"). 191 192 Set Test Variable ${client_ip} 10.6.7.8 193 ${resp}= Set Client Origin IP ${client_id} ${client_ip} status=False 194 195 196Create A Non Admin Session With ClientID 197 [Documentation] Create redifish session with client id. 198 [Arguments] ${client_id} ${username} ${password} 199 200 # Description of argument(s): 201 # client_id This client id can contain string value 202 # (e.g. 12345, "EXTERNAL-CLIENT"). 203 204 @{session_list}= Create List 205 &{tmp_dict}= Create Dictionary 206 207 FOR ${client} IN @{client_id} 208 ${resp}= Redfish Login rest_username=${username} rest_password=${password} kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client}"}} 209 Append To List ${session_list} ${resp} 210 END 211 212 [Return] ${session_list} 213 214 215Verify A Non Admin Session Created With ClientID 216 [Documentation] Verify session created with client id. 217 [Arguments] ${client_ids} ${session_ids} 218 219 # Description of argument(s): 220 # client_id External client name. 221 # session_id This value is a session id. 222 223 # { 224 # "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ", 225 # "@odata.type": "#Session.v1_0_2.Session", 226 # "Description": "Manager User Session", 227 # "Id": "H8q2ZKucSJ", 228 # "Name": "User Session", 229 # "Oem": { 230 # "OpenBMC": { 231 # "@odata.type": "#OemSession.v1_0_0.Session", 232 # "ClientID": "", 233 # "ClientOriginIP": "::ffff:x.x.x.x" 234 # } 235 # }, 236 # "UserName": "root" 237 # } 238 239 FOR ${client} IN @{client_ids} 240 ${session_id}= Get Session Information By ClientID ${client} ${session_ids} 241 ${resp}= Redfish Get Request /redfish/v1/SessionService/Sessions/${session_id} 242 ${sessions}= To Json ${resp.content} 243 #Set Test Variable ${sessions} ${content["data"]} 244 Rprint Vars sessions 245 Log ${sessions} 246 @{words} = Split String ${sessions["Oem"]["OpenBMC"]["ClientOriginIP"]} : 247 ${ip_address}= Get Running System IP 248 Set Test Variable ${temp_ipaddr} ${words}[-1] 249 Valid Value client ['${sessions["Oem"]["OpenBMC"]["ClientID"]}'] 250 Valid Value sessions["Id"] ['${session_id}'] 251 Valid Value temp_ipaddr ${ip_address} 252 END 253 254 255Non Admin User To Create Session 256 [Documentation] Non Admin user create a session and verify the session is created. 257 [Arguments] ${client_id} ${username} ${password} ${role} ${enabled}=${True} 258 259 # Description of argument(s): 260 # client_id This client id contain string value 261 # (e.g. 12345, "EXTERNAL-CLIENT"). 262 # username Username. 263 # password Password. 264 # role Role of user. 265 # enabled Value can be True or False. 266 267 Redfish.Login 268 Redfish Create User ${username} ${password} ${role} ${enabled} 269 Delete All Sessions 270 Redfish.Logout 271 Initialize OpenBMC rest_username=${username} rest_password=${password} 272 ${client_ids}= Split String ${client_id} , 273 ${session_info}= Create A Non Admin Session With ClientID ${client_ids} ${username} ${password} 274 Verify A Non Admin Session Created With ClientID ${client_ids} ${session_info} 275