Map Error.Unavailable to something better
This commit is meant to kick off discussion on how we map errors from
dbus to Redfish. Currently WIP. Looking for feedback. Do we want a new
xyz.openbmc_project.Common.Error.ResourceInStandby that we can map to
Redfish's resourceInStandby? Do we think PropertyValueExternalConflict
should be mapped to something different? Are we okay with this commit,
does this work for AppliedConfig?
xyz.openbmc_project.Common.Error.Unavailable was added to Logging
Entry's Resolved Property as an error. It is used for cases when the
users attempts to set the Resolved property but is prevented until some
action is taken, "the system is not currently in a state to allow this",
the PDI review here has some more discussion[1].
The current mapping of xyz.openbmc_project.Common.Error.Unavailable to
resourceInStandby was added to SetProperty here[2] in April and comes
from this AppliedConfig error handling which was added in May 2021 by
Jonathan at Intel[3]. Mapping Error.Unavailable to resourceInStandby is
a big assumption that might apply in the AppliedConfig usecase but
wouldn't overall. PropertyValueExternalConflict is a bit broader and
might work in this AppliedConfig case? The PDI AppliedConfig[4] and
AppliedConfig in smbios[5].
Redfish doesn't have a Temporary Unavailable to mean "the system is not
currently in a state to allow this", PropertyValueExternalConflict is as
close as we get. xyz.openbmc_project.Common.Error.NotAllowed maps to
Redfish's propertyNotWritable and that is "this property can never be
wrote". We map a few things to serviceTemporarilyUnavailable, the only
Redfish error to use the word "Unavailable", but that is for temporarily
unavailable and retry in x seconds. These Redfish errors can be found
at: https://redfish.dmtf.org/registries/Base.1.19.0.json
[1]: https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/74019
[2]: https://github.com/openbmc/bmcweb/commit/87c449664e5375abb040af6fad63ef965c311bec
[3]: https://github.com/openbmc/bmcweb/commit/3cde86f14b7835775d7c37e993fb84a3cd01ef9d
[4]: https://github.com/openbmc/phosphor-dbus-interfaces/blob/73c931fb942daa714bfff17e950b9d5622a25842/yaml/xyz/openbmc_project/Control/Processor/CurrentOperatingConfig.interface.yaml#L13
[5]: https://github.com/openbmc/smbios-mdr/blob/1d73dccc89f0bb9d1dce3543e5af6b3e3087d5f4/src/speed_select.cpp#L160
Tested: None.
Change-Id: I4a48937b1801189acddd02c89aa01ca0cd15362b
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
diff --git a/redfish-core/src/utils/dbus_utils.cpp b/redfish-core/src/utils/dbus_utils.cpp
index f2199b7..1000080 100644
--- a/redfish-core/src/utils/dbus_utils.cpp
+++ b/redfish-core/src/utils/dbus_utils.cpp
@@ -76,7 +76,8 @@
}
if (errorName == "xyz.openbmc_project.Common.Error.Unavailable")
{
- messages::resourceInStandby(asyncResp->res);
+ messages::propertyValueExternalConflict(
+ asyncResp->res, redfishPropertyName, propertyValue);
return;
}
}