Handle default values for array[enum] properties
Summary:
- Add logic to process array[enum] default values
in settings_manager.mako.hpp.
- Ensures correct C++ enum initializer list is generated
for array[enum] properties.
Motivate:
- Some properties, require array[enum] support to match
YAML configuration.
Example YAML input:
/xyz/openbmc_project/control/host{}/boot:
- Interface: xyz.openbmc_project.Control.Boot.Source
Properties:
BootOrder:
Default: [Source::Sources::Disk,Source::Sources::Network,
Source::Sources::RemovableMedia]
Test Plan:
- Build code : pass
- Tested on YV4 system - Pass
Change-Id: I3380878ebea7febaf5b881c86b46d48d6df1150d
Signed-off-by: Zoey YJ Chung <zoey.yj.chung.wiwynn@gmail.com>
diff --git a/settings_manager.mako.hpp b/settings_manager.mako.hpp
index 5d07b49..3570119 100644
--- a/settings_manager.mako.hpp
+++ b/settings_manager.mako.hpp
@@ -33,6 +33,18 @@
ns = get_setting_sdbusplus_type(interface)
i = ns.rfind('::')
default_value = "{}::{}".format(ns[:i], default_value)
+ return default_value
+
+ # Handle default values for properties of type array[enum].
+ if isinstance(default_value, list):
+ ns = get_setting_sdbusplus_type(interface)
+ i = ns.rfind('::')
+ elems = []
+ for val in default_value:
+ if isinstance(val, str) and not val.startswith('"') and '::' in val:
+ elems.append("{}::{}".format(ns[:i], val))
+ default_value = '{' + ', '.join(elems) + '}'
+ return default_value
return default_value
%>\