blob: 007c840103af72077448fbee619c44cb4df03b1d [file] [log] [blame]
ganesanbc288aff2022-05-19 19:55:47 +05301*** Settings ***
2Documentation Implemented keywords to execute DBUS related commands on BMC.
3
4Resource resource.robot
5Library OperatingSystem
6Library Collections
7
George Keishing409df052024-01-17 22:36:14 +05308*** Variables ***
ganesanbc288aff2022-05-19 19:55:47 +05309
10${BUSCTL_TREE_COMMAND} busctl tree | less
11${BUSCTL_INTROSPECT_COMMAND} busctl introspect
12@{dbus_uri_list}
13
14*** Keywords ***
15
16Get DBUS URI List From BMC
17 [Documentation] Get the available DBUS URIs from device tree on BMC.
18 [Arguments] ${service_name} ${dbus_url}
19
20 # Return the dbus uris corresponding to the service name provided.
21 # Description of argument(s):
22 # service_name Any service uri of the dbus.
23 # Eg : xyz.openbmc_project.FruDevice
24 # dbus_url Any dbus url of the dbus.
25 # Eg : /xyz/openbmc_project/FruDevice
26
27 # Execute dbus tree command
28 ${bmc_response}= BMC Execute Command ${BUSCTL_TREE_COMMAND}
29 ${bmc_response}= Convert To List ${bmc_response}
30 ${bmc_response_output}= Get From List ${bmc_response} 0
31 ${bmc_response_output_list}= Split String ${bmc_response_output} \n\n
32 # Identify the offset of the service name in the response.
33 ${service_name_index_value}= get_subsequent_value_from_list ${bmc_response_output_list} ${service_name}
34 ${service_name_index_value}= Get From List ${service_name_index_value} 0
35
36 # Get the service name and its corresponding URI's.
37 ${service_name_with_uri_list}= Get From List ${bmc_response_output_list} ${service_name_index_value}
38 ${service_name_with_uri_list}= Split String ${service_name_with_uri_list} \n
39
40 # Find index of all the uris where the dbus URI matched.
41 ${uri_list_index}= get_subsequent_value_from_list ${service_name_with_uri_list} ${dbus_url}
42 FOR ${list_index} IN @{uri_list_index}
43 # For each index, get the URI and append to list
44 ${dbus_uri}= Get From List ${service_name_with_uri_list} ${list_index}
45 Append To List ${dbus_uri_list} ${dbus_uri}
46 END
47
George Keishing409df052024-01-17 22:36:14 +053048 RETURN ${dbus_uri_list[1:]}
ganesanbc288aff2022-05-19 19:55:47 +053049
50
51Fetch DBUS URI List Without Unicode
52 [Documentation] Gets the list of DBUS URI for the service and returns only sub URIs.
53 [Arguments] ${dbus_uri_list}
54
55 # Return the dbus uris list without the unicodes.
56 # Description of argument(s):
57 # dbus_uri_list List of all the uris for the corresponding service name.
58 # Example: Converts " ├─/xyz/openbmc_project/FruDevice/device_0",
59 # ... to '/xyz/openbmc_project/FruDevice/device_0'
60
61 @{dbus_list}= Create List
62 FOR ${item} IN @{dbus_uri_list}
63 ${item}= Set Variable ${item.strip()}
ganesanb07958e12023-04-26 05:38:22 -070064 ${item}= Remove Unicode From Uri ${item}
ganesanbc288aff2022-05-19 19:55:47 +053065 Append To List ${dbus_list} ${item}
66 END
67
George Keishing409df052024-01-17 22:36:14 +053068 RETURN ${dbus_list}
ganesanbc288aff2022-05-19 19:55:47 +053069
70
71Execute DBUS Introspect Command
72 [Documentation] Execute the DBUS introspect command and return response.
73 [Arguments] ${dbus_command}
74
75 # Execute the busctl instrospect command for the service name and dbus uri.
76 # Description of argument(s):
77 # dbus_command Command with service name and dbus uri for the fru device.
78 # Example : xyz.openbmc_project.FruDevice xyz/openbmc_project/FruDevice/device_0
79
80 ${cmd}= Catenate ${BUSCTL_INTROSPECT_COMMAND} ${dbus_command}
81 ${resp}= BMC Execute Command ${cmd}
82
George Keishing409df052024-01-17 22:36:14 +053083 RETURN ${resp[0]}