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/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.