1*** Settings ***
2Documentation    Management console utilities keywords.
3
4Resource         ../../lib/bmc_redfish_utils.robot
5Library          ../../lib/gen_robot_valid.py
6Library          Collections
7Library          ../../lib/bmc_ssh_utils.py
8Library          SSHLibrary
9
10*** Variables ***
11&{daemon_command}  start=systemctl start avahi-daemon
12                  ...  stop=systemctl stop avahi-daemon
13                  ...  status=systemctl status avahi-daemon -l
14&{daemon_message}  start=Active: active (running)
15                  ...  stop=Active: inactive (dead)
16
17*** Keywords ***
18
19Set AvahiDaemon Service
20    [Documentation]  To enable or disable avahi service.
21    [Arguments]  ${command}
22
23    # Description of argument(s):
24    # command  Get command from dictionary.
25
26    ${service_command}=  Get From Dictionary  ${daemon_command}  ${command}
27    ${resp}  ${stderr}  ${rc}=  BMC Execute Command  ${service_command}  print_out=1
28    Should Be Equal As Integers  ${rc}  0
29
30
31Verify AvahiDaemon Service Status
32    [Documentation]  To check for avahi service.
33    [Arguments]  ${message}
34
35    # Description of argument(s):
36    # message  Get status message from dictionary.
37
38    ${service_command}=  Get From Dictionary  ${daemon_command}  status
39    ${service_message}=  Get From Dictionary  ${daemon_message}  ${message}
40    ${resp}  ${stderr}  ${rc}=  BMC Execute Command  ${service_command}  print_out=1
41    Should Contain  ${resp}  ${service_message}
42
43
44Create Session With ClientID
45    [Documentation]  Create redifish session with client id.
46    [Arguments]  ${client_id}
47
48    # Description of argument(s):
49    # client_id    This client id can contain string value
50    #              (e.g. 12345, "EXTERNAL-CLIENT").
51
52    ${session_info}=  Create Dictionary
53    ${session_resp}=  Redfish Login  kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}}
54
55    Set To Dictionary  ${session_info}  SessionIDs  ${session_resp['Id']}
56    Set To Dictionary  ${session_info}  ClientID  ${session_resp["Oem"]["OpenBMC"]["ClientID"]}
57    Set To Dictionary  ${session_info}  SessionToken  ${XAUTH_TOKEN}
58    Set To Dictionary  ${session_info}  SessionResp  ${session_resp}
59
60    [Return]  ${session_info}
61
62
63Create Session With List Of ClientID
64    [Documentation]  Create redifish session with client id.
65    [Arguments]  ${client_id}
66
67    # Description of argument(s):
68    # client_id    This client id can contain string value
69    #              (e.g. 12345, "EXTERNAL-CLIENT").
70
71    @{session_dict_list}=  Create List
72    &{session_dict}=  Create Dictionary
73
74    FOR  ${client}  IN  @{client_id}
75      ${session_dict}=  Create Session With ClientID  ${client}
76      Append To List  ${session_dict_list}  ${session_dict}
77    END
78
79    [Return]  ${session_dict_list}
80
81
82Verify A Session Created With ClientID
83    [Arguments]  ${client_id}  ${session_ids}
84
85    # Description of argument(s):
86    # client_id    External client name.
87    # session_id   This value is a session id.
88
89    # {
90    #   "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ",
91    #   "@odata.type": "#Session.v1_0_2.Session",
92    #   "Description": "Manager User Session",
93    #   "Id": "H8q2ZKucSJ",
94    #   "Name": "User Session",
95    #   "Oem": {
96    #   "OpenBMC": {
97    #  "@odata.type": "#OemSession.v1_0_0.Session",
98    #  "ClientID": "",
99    #  "ClientOriginIP": "::ffff:x.x.x.x"
100    #       }
101    #     },
102    #   "UserName": "root"
103    # }
104
105    FOR  ${client}  ${session}  IN ZIP  ${client_id}  ${session_ids}
106      ${session_resp}=  Redfish.Get Properties  /redfish/v1/SessionService/Sessions/${session["SessionIDs"]}
107      Rprint Vars  session_resp
108      @{words} =  Split String  ${session_resp["ClientOriginIPAddress"]}  :
109      ${ip_address}=  Get Running System IP
110      Set Test Variable  ${temp_ipaddr}  ${words}[-1]
111      Valid Value  client  ['${session_resp["Oem"]["OpenBMC"]["ClientID"]}']
112      Valid Value  session["SessionIDs"]  ['${session_resp["Id"]}']
113      Valid Value  temp_ipaddr  ${ip_address}
114    END
115
116
117Get Lock Resource Information
118    [Documentation]  Get lock resource information.
119
120    ${code_base_dir_path}=  Get Code Base Dir Path
121    ${resource_lock_json}=  Evaluate
122    ...  json.load(open('${code_base_dir_path}data/resource_lock_table.json'))  modules=json
123    Rprint Vars  resource_lock_json
124
125    [Return]  ${resource_lock_json}
126