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