Add support for Enumeration in BIOSConfig
Bios knobs have options (possible set of values for the knob) as Enumaration,
Hence BMC must treat it as type enumuration and not as string.
Bios knobs have options (possible set of values for the knob) as
Enumaration,Hence BMC must treat it as type enumuration and not as
string.
This change is also to support the following change in bios-settings-mgr
https://gerrit.openbmc-project.xyz/c/openbmc/bios-settings-mgr/+/49126
Tested:
By giving following commands and making sure functionalities
are not affected.
1) GET to
/Registries/BiosAttributeRegistry/BiosAttributeRegistry/
2) GET to
Systems/system/Bios/Settings
3) PATCH to
Systems/system/Bios/Settings
Redfish validator result:
1) For /redfish/v1/Registries/
Counter({'metadataNamespaces': 2295, 'pass': 2053, 'skipOptional': 1267,
'warnDeprecated': 232, 'passGet': 11, 'warningPresent': 6,
'serviceNamespaces': 5})
Validation has succeeded.
2) For /redfish/v1/Systems/system/Bios/
Counter({'pass': 7405, 'metadataNamespaces': 2295, 'skipOptional': 14,
'serviceNamespaces': 4, 'passGet': 2, 'passAction': 2, 'reflink': 1,
'warningPresent': 1})
Validation has succeeded.
Signed-off-by: Arun Lal K M <arun.lal@intel.com>
Change-Id: Ib86b0dbd3536a33fa85c8bb9897901b8220c4539
diff --git a/include/biosxml.hpp b/include/biosxml.hpp
index 214122d..6b170bd 100644
--- a/include/biosxml.hpp
+++ b/include/biosxml.hpp
@@ -685,7 +685,7 @@
bios::BiosBaseTableTypeEntry baseTableEntry = std::make_tuple(
"xyz.openbmc_project.BIOSConfig.Manager.AttributeType."
- "String",
+ "Enumeration",
false, knob.nameStr, knob.descriptionStr, "./",
knob.currentValStr, knob.defaultStr, options);
diff --git a/src/biosconfigcommands.cpp b/src/biosconfigcommands.cpp
index a1ada8e..9d40f5d 100644
--- a/src/biosconfigcommands.cpp
+++ b/src/biosconfigcommands.cpp
@@ -114,7 +114,8 @@
{
unknown = 0,
string,
- integer
+ integer,
+ enumeration
};
using PendingAttributesType =
@@ -133,6 +134,11 @@
{
return AttributesType::integer;
}
+ else if (typeDbus == "xyz.openbmc_project.BIOSConfig."
+ "Manager.AttributeType.Enumeration")
+ {
+ return AttributesType::enumeration;
+ }
return AttributesType::unknown;
}
@@ -144,7 +150,8 @@
payloadData += key;
payloadData += '=';
- if (attrType == AttributesType::string)
+ if (attrType == AttributesType::string ||
+ attrType == AttributesType::enumeration)
{
if (!std::holds_alternative<std::string>(attributes))
{