1*** Settings ***
2Documentation  BMC and PNOR update utilities keywords.
3
4Resource    ../lib/rest_client.robot
5
6*** Keywords ***
7
8Get Software Objects
9    [Documentation]  Get the host software objects and return as a list.
10    [Arguments]  ${version_type}=${VERSION_PURPOSE_HOST}
11
12    # Description of argument(s):
13    # version_type  Either BMC or host version purpose.
14    #               By default host version purpose string.
15    #  (e.g. "xyz.openbmc_project.Software.Version.VersionPurpose.BMC"
16    #        "xyz.openbmc_project.Software.Version.VersionPurpose.Host").
17
18    # Example:
19    # "data": [
20    #      "/xyz/openbmc_project/software/f3b29aa8",
21    #      "/xyz/openbmc_project/software/e49bc78e",
22    # ],
23    # Iterate the list and return the host object name path list.
24
25    ${host_list}=  Create List
26    ${sw_list}=  Read Properties  ${SOFTWARE_VERSION_URI}
27
28    :FOR  ${index}  IN  @{sw_list}
29    \  ${attr_purpose}=  Read Attribute  ${index}  Purpose  quiet=${1}
30    \  Continue For Loop If  '${attr_purpose}' != '${version_type}'
31    \  Append To List  ${host_list}  ${index}
32
33    [return]  ${host_list}
34
35
36Get Host Software Property
37    [Documentation]  Return a dictionary of host software properties.
38    [Arguments]  ${host_object}
39
40    # Description of argument(s):
41    # host_object  Host software object path.
42    #             (e.g. "/xyz/openbmc_project/software/f3b29aa8").
43
44    ${sw_attributes}=  Read Properties  ${host_object}
45    [return]  ${sw_attributes}
46
47
48Set Host Software Property
49    [Documentation]  Set the host software properties of a given object.
50    [Arguments]  ${host_object}  ${sw_attribute}  ${data}
51
52    # Description of argument(s):
53    # host_object   Host software object name.
54    # sw_attribute  Host software attribute name.
55    #               (e.g. "Activation", "Priority", "RequestedActivation" etc).
56    # data          Value to be written.
57
58    ${args}=  Create Dictionary  data=${data}
59    Write Attribute  ${host_object}  ${sw_attribute}  data=${args}
60
61