Code enhancement on creating an session and verifying
the session information
Change-Id: I3af9f71f34f7d837a8777d0a5e5b667a9eecd203
Signed-off-by: Sushil Singh <susilsi7@in.ibm.com>
diff --git a/lib/bmc_redfish_utils.robot b/lib/bmc_redfish_utils.robot
index 0eeecb2..13055d4 100644
--- a/lib/bmc_redfish_utils.robot
+++ b/lib/bmc_redfish_utils.robot
@@ -60,6 +60,53 @@
Redfish.Post ${target} valid_status_codes=[${HTTP_OK}]
+Redfish Delete Session
+ [Documentation] Redfish delete session.
+ [Arguments] ${session_info}
+
+ # Description of argument(s):
+ # session_info Session information are stored in dictionary.
+
+ # ${session_info} = {
+ # 'SessionIDs': 'XXXXXXXXX',
+ # 'ClientID': 'XXXXXX',
+ # 'SessionToken': 'XXXXXXXXX',
+ # 'SessionResp': session response from redfish login
+ # }
+
+ # SessionIDs : Session IDs
+ # ClientID : Client ID
+ # SessionToken : Session token
+ # SessionResp : Response of creating an redfish login session
+
+ Redfish.Delete /redfish/v1/SessionService/Sessions/${session_info["SessionIDs"]}
+
+
+Redfish Delete List Of Session
+ [Documentation] Redfish delete session from list of session records, individual session information
+ ... are stored in dictionary.
+ [Arguments] ${session_info_list}
+
+ # Description of argument(s):
+ # session_info_list List contains individual session record are stored in dictionary.
+
+ # ${session_info_list} = [{
+ # 'SessionIDs': 'XXXXXXXXX',
+ # 'ClientID': 'XXXXXX',
+ # 'SessionToken': 'XXXXXXXXX',
+ # 'SessionResp': session response from redfish login
+ # }]
+
+ # SessionIDs : Session IDs
+ # ClientID : Client ID
+ # SessionToken : Session token
+ # SessionResp : Response of creating an redfish login session
+
+ FOR ${session_record} IN @{session_info_list}
+ Redfish.Delete /redfish/v1/SessionService/Sessions/${session_record["SessionIDs"]}
+ END
+
+
Delete All Redfish Sessions
[Documentation] Delete all active redfish sessions.
@@ -75,6 +122,7 @@
Redfish.Delete ${session}
END
+
Get Valid FRUs
[Documentation] Return a dictionary containing all of the valid FRU records for the given fru_type.
[Arguments] ${fru_type}
diff --git a/lib/external_intf/management_console_utils.robot b/lib/external_intf/management_console_utils.robot
index 0539dad..6f3f4cc 100644
--- a/lib/external_intf/management_console_utils.robot
+++ b/lib/external_intf/management_console_utils.robot
@@ -1,6 +1,7 @@
*** Settings ***
Documentation Management console utilities keywords.
+Resource ../../lib/bmc_redfish_utils.robot
Library ../../lib/gen_robot_valid.py
Library Collections
Library ../../lib/bmc_ssh_utils.py
@@ -40,6 +41,79 @@
Should Contain ${resp} ${service_message}
+Create Session With ClientID
+ [Documentation] Create redifish session with client id.
+ [Arguments] ${client_id}
+
+ # Description of argument(s):
+ # client_id This client id can contain string value
+ # (e.g. 12345, "EXTERNAL-CLIENT").
+
+ ${session_info}= Create Dictionary
+ ${session_resp}= Redfish Login kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}}
+
+ Set To Dictionary ${session_info} SessionIDs ${session_resp['Id']}
+ Set To Dictionary ${session_info} ClientID ${session_resp["Oem"]["OpenBMC"]["ClientID"]}
+ Set To Dictionary ${session_info} SessionToken ${XAUTH_TOKEN}
+ Set To Dictionary ${session_info} SessionResp ${session_resp}
+
+ [Return] ${session_info}
+
+
+Create Session With List Of ClientID
+ [Documentation] Create redifish session with client id.
+ [Arguments] ${client_id}
+
+ # Description of argument(s):
+ # client_id This client id can contain string value
+ # (e.g. 12345, "EXTERNAL-CLIENT").
+
+ @{session_dict_list}= Create List
+ &{session_dict}= Create Dictionary
+
+ FOR ${client} IN @{client_id}
+ ${session_dict}= Create Session With ClientID ${client}
+ Append To List ${session_dict_list} ${session_dict}
+ END
+
+ [Return] ${session_dict_list}
+
+
+Verify A Session Created With ClientID
+ [Arguments] ${client_id} ${session_ids}
+
+ # Description of argument(s):
+ # client_id External client name.
+ # session_id This value is a session id.
+
+ # {
+ # "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ",
+ # "@odata.type": "#Session.v1_0_2.Session",
+ # "Description": "Manager User Session",
+ # "Id": "H8q2ZKucSJ",
+ # "Name": "User Session",
+ # "Oem": {
+ # "OpenBMC": {
+ # "@odata.type": "#OemSession.v1_0_0.Session",
+ # "ClientID": "",
+ # "ClientOriginIP": "::ffff:x.x.x.x"
+ # }
+ # },
+ # "UserName": "root"
+ # }
+
+ FOR ${client} ${session} IN ZIP ${client_id} ${session_ids}
+ ${session_resp}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session["SessionIDs"]}
+ Rprint Vars session_resp
+ @{words} = Split String ${session_resp["ClientOriginIPAddress"]} :
+ ${ip_address}= Get Running System IP
+ Set Test Variable ${temp_ipaddr} ${words}[-1]
+ Valid Value client ['${session_resp["Oem"]["OpenBMC"]["ClientID"]}']
+ Valid Value session["SessionIDs"] ['${session_resp["Id"]}']
+ Valid Value temp_ipaddr ${ip_address}
+ END
+
+
Get Lock Resource Information
[Documentation] Get lock resource information.
diff --git a/openpower/ext_interfaces/test_client_identifier.robot b/openpower/ext_interfaces/test_client_identifier.robot
index 53525c9..8a9b231 100644
--- a/openpower/ext_interfaces/test_client_identifier.robot
+++ b/openpower/ext_interfaces/test_client_identifier.robot
@@ -158,11 +158,12 @@
# (e.g. True or False).
${client_ids}= Split String ${client_id} ,
- ${session_info}= Create A Session With ClientID ${client_ids}
+ ${session_info}= Create Session With List Of ClientID ${client_ids}
Verify A Session Created With ClientID ${client_ids} ${session_info}
Run Keyword If '${reboot_flag}' == 'True'
... Run Keywords Redfish OBMC Reboot (off) AND
... Verify A Session Created With ClientID ${client_ids} ${session_info}
+ Redfish Delete List Of Session ${session_info}
Set Client Origin IP
@@ -217,8 +218,8 @@
[Arguments] ${client_ids} ${session_ids}
# Description of argument(s):
- # client_id External client name.
- # session_id This value is a session id.
+ # client_ids External client name.
+ # session_ids This value is a session id.
# {
# "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ",
@@ -236,18 +237,15 @@
# "UserName": "root"
# }
- FOR ${client} IN @{client_ids}
- ${session_id}= Get Session Information By ClientID ${client} ${session_ids}
- ${resp}= Redfish Get Request /redfish/v1/SessionService/Sessions/${session_id}
+ FOR ${client} ${session} IN ZIP ${client_ids} ${session_ids}
+ ${resp}= Redfish Get Request /redfish/v1/SessionService/Sessions/${session["Id"]}
${sessions}= To Json ${resp.content}
- #Set Test Variable ${sessions} ${content["data"]}
Rprint Vars sessions
- Log ${sessions}
@{words} = Split String ${sessions["ClientOriginIPAddress"]} :
${ip_address}= Get Running System IP
Set Test Variable ${temp_ipaddr} ${words}[-1]
Valid Value client ['${sessions["Oem"]["OpenBMC"]["ClientID"]}']
- Valid Value sessions["Id"] ['${session_id}']
+ Valid Value session["Id"] ['${sessions["Id"]}']
Valid Value temp_ipaddr ${ip_address}
END