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 9Resource ../../lib/external_intf/management_console_utils.robot 10Resource ../../lib/utils.robot 11Library ../../lib/bmc_network_utils.py 12Library ../../lib/gen_robot_valid.py 13 14 15Suite Setup Redfish.Login 16Suite Teardown Run Keyword And Ignore Error Delete All Redfish Sessions 17Test Setup Printn 18Test Teardown FFDC On Test Case Fail 19 20 21*** Test Cases *** 22 23Create A Session With ClientID And Verify 24 [Documentation] Create a session with client id and verify client id is same. 25 [Tags] Create_A_Session_With_ClientID_And_Verify 26 [Template] Create And Verify Session ClientID 27 28 # client_id reboot_flag 29 12345 False 30 123456 False 31 EXTERNAL-CLIENT-01 False 32 EXTERNAL-CLIENT-02 False 33 34 35Check ClientID Persistency On BMC Reboot 36 [Documentation] Create a session with client id and verify client id is same after the reboot. 37 [Tags] Check_ClientID_Persistency_On_BMC_Reboot 38 [Template] Create And Verify Session ClientID 39 40 # client_id reboot_flag 41 12345 True 42 EXTERNAL-CLIENT-01 True 43 44 45Create A Multiple Session With ClientID And Verify 46 [Documentation] Create a multiple session with client id and verify client id is same. 47 [Tags] Create_A_Multiple_Session_With_ClientID_And_Verify 48 [Template] Create And Verify Session ClientID 49 50 # client_id reboot_flag 51 12345,123456 False 52 EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02 False 53 54 55Check Multiple ClientID Persistency On BMC Reboot 56 [Documentation] Create a multiple session with client id and verify client id is same after the reboot. 57 [Tags] Check_Multiple_ClientID_Persistency_On_BMC_Reboot 58 [Template] Create And Verify Session ClientID 59 60 # client_id reboot_flag 61 12345,123456 True 62 EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02 True 63 64 65Fail To Set Client Origin IP 66 [Documentation] Fail to set the client origin IP. 67 [Tags] Fail_To_Set_Client_Origin_IP 68 [Template] Create Session And Fail To Set Client Origin IP 69 70 # client_id 71 12345 72 EXTERNAL-CLIENT-01 73 74 75Create Session For Non Admin User 76 [Documentation] Create Session for non-admin user. 77 [Tags] Create_Session_For_Non_Admin_User 78 [Template] Non Admin User To Create Session 79 80 # client_id username password role_id 81 12345 operator_user TestPwd123 Operator 82 83 84*** Keywords *** 85 86Create And Verify Session ClientID 87 [Documentation] Create redifish session with client id and verify it remain same. 88 [Arguments] ${client_id} ${reboot_flag}=False 89 90 # Description of argument(s): 91 # client_id This client id contain string value 92 # (e.g. 12345, "EXTERNAL-CLIENT"). 93 # reboot_flag Flag is used to run reboot the BMC code. 94 # (e.g. True or False). 95 96 ${client_ids}= Split String ${client_id} , 97 ${session_info}= Create Session With List Of ClientID ${client_ids} 98 Verify A Session Created With ClientID ${client_ids} ${session_info} 99 100 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 101 102 Run Keyword If '${reboot_flag}' == 'True' 103 ... Run Keywords Redfish BMC Reset Operation AND 104 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND 105 ... Is BMC Standby AND 106 ... Verify A Session Created With ClientID ${client_ids} ${session_info} 107 108 Redfish Delete List Of Session ${session_info} 109 110 111Set Client Origin IP 112 [Documentation] Set client origin IP. 113 [Arguments] ${client_id} ${client_ip} ${status} 114 115 # Description of argument(s): 116 # client_id This client id contain string value 117 # (e.g. 12345, "EXTERNAL-CLIENT"). 118 # client_ip Valid IP address 119 # status HTTP status code 120 121 ${session}= Run Keyword And Return Status 122 ... Redfish Login 123 ... kwargs= "Oem":{"OpenBMC": {"ClientID":"${client_id}", "ClientOriginIP":"${client_ip}"}} 124 Valid Value session [${status}] 125 126 127Create Session And Fail To Set Client Origin IP 128 [Documentation] Create redifish session with client id and fail to set client origin IP. 129 [Arguments] ${client_id} 130 131 # Description of argument(s): 132 # client_id This client id contain string value 133 # (e.g. 12345, "EXTERNAL-CLIENT"). 134 135 Set Test Variable ${client_ip} 10.6.7.8 136 ${resp}= Set Client Origin IP ${client_id} ${client_ip} status=False 137 138 139Create A Non Admin Session With ClientID 140 [Documentation] Create redifish session with client id. 141 [Arguments] ${client_id} ${username} ${password} 142 143 # Description of argument(s): 144 # client_id This client id can contain string value 145 # (e.g. 12345, "EXTERNAL-CLIENT"). 146 147 @{session_list}= Create List 148 &{tmp_dict}= Create Dictionary 149 150 FOR ${client} IN @{client_id} 151 ${resp}= Redfish Login rest_username=${username} rest_password=${password} 152 ... kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client}"}} 153 Append To List ${session_list} ${resp} 154 END 155 156 [Return] ${session_list} 157 158 159Verify A Non Admin Session Created With ClientID 160 [Documentation] Verify session created with client id. 161 [Arguments] ${client_ids} ${session_ids} 162 163 # Description of argument(s): 164 # client_ids External client name. 165 # session_ids This value is a session id. 166 167 # { 168 # "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ", 169 # "@odata.type": "#Session.v1_0_2.Session", 170 # "Description": "Manager User Session", 171 # "Id": "H8q2ZKucSJ", 172 # "Name": "User Session", 173 # "Oem": { 174 # "OpenBMC": { 175 # "@odata.type": "#OemSession.v1_0_0.Session", 176 # "ClientID": "", 177 # "ClientOriginIP": "::ffff:x.x.x.x" 178 # } 179 # }, 180 # "UserName": "root" 181 # } 182 183 FOR ${client} ${session} IN ZIP ${client_ids} ${session_ids} 184 ${resp}= Redfish Get Request /redfish/v1/SessionService/Sessions/${session["Id"]} 185 Rprint Vars resp.json() 186 @{words} = Split String ${resp.json()["ClientOriginIPAddress"]} : 187 ${ip_address}= Get Running System IP 188 Set Test Variable ${temp_ipaddr} ${words}[-1] 189 Valid Value client ['${resp.json()["Oem"]["OpenBMC"]["ClientID"]}'] 190 Valid Value session["Id"] ['${resp.json()["Id"]}'] 191 Valid Value temp_ipaddr ${ip_address} 192 END 193 194 195Non Admin User To Create Session 196 [Documentation] Non Admin user create a session and verify the session is created. 197 [Arguments] ${client_id} ${username} ${password} ${role} ${enabled}=${True} 198 199 # Description of argument(s): 200 # client_id This client id contain string value 201 # (e.g. 12345, "EXTERNAL-CLIENT"). 202 # username Username. 203 # password Password. 204 # role Role of user. 205 # enabled Value can be True or False. 206 207 Redfish.Login 208 Redfish Create User ${username} ${password} ${role} ${enabled} 209 Delete All Sessions 210 Redfish.Logout 211 Initialize OpenBMC rest_username=${username} rest_password=${password} 212 ${client_ids}= Split String ${client_id} , 213 ${session_info}= Create A Non Admin Session With ClientID ${client_ids} ${username} ${password} 214 Verify A Non Admin Session Created With ClientID ${client_ids} ${session_info} 215