IPMI Whitelisted commands for FRU and OEM repositories

The IPMI whitelisted commands for phosphor-ipmi-fru and openpower-ipmi-oem
is added. Only the IPMI whitelisted listed commands are allowed in
restricted mode.

The IPMI whitelisted commands for phosphor-ipmi-fru and openpower-ipmi-oem
are added as native packages and host-ipmid depends on those.

Change-Id: Ic4184773656567eb0dffa30ef29f8bc3ced3aff4
Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
diff --git a/meta-phosphor/classes/obmc-phosphor-utils.bbclass b/meta-phosphor/classes/obmc-phosphor-utils.bbclass
index 713c892..baaa19d 100644
--- a/meta-phosphor/classes/obmc-phosphor-utils.bbclass
+++ b/meta-phosphor/classes/obmc-phosphor-utils.bbclass
@@ -42,3 +42,11 @@
     lists = [listvar_to_list(d, x) for x in listvars]
     lst = [fmt.format(*x) for x in zip(*lists)]
     return (kw.get('sep') or ' ').join(lst)
+
+
+def append_suffix(val, suffix):
+    words = val.split(' ')
+    newval = []
+    for w in words:
+        newval.append(w + suffix)
+    return ' '.join(newval)
\ No newline at end of file
diff --git a/meta-phosphor/classes/phosphor-ipmi-host-whitelist.bbclass b/meta-phosphor/classes/phosphor-ipmi-host-whitelist.bbclass
new file mode 100644
index 0000000..7db71d5
--- /dev/null
+++ b/meta-phosphor/classes/phosphor-ipmi-host-whitelist.bbclass
@@ -0,0 +1,27 @@
+# Common code for recipes that implement Phosphor IPMI Whitelist
+# packages
+
+WHITELIST ?= "${PN}.conf"
+INSTALLDIR = "${sysconfdir}/phosphor-ipmi-host/"
+
+python phosphor_ipmi_host_whitelist_postinstall() {
+    def install_whitelist(d):
+        # Create the install directory if needed
+        whitelist_file = d.getVar('WHITELIST', True)
+        install_dir = d.getVar('INSTALLDIR', True)
+        if not os.path.exists(install_dir):
+            os.makedirs(install_dir)
+        install_file = os.path.join(install_dir, whitelist_file)
+
+        # Search for conf file in FILESPATH
+        searchpaths = d.getVar('FILESPATH', True)
+        path = bb.utils.which(searchpaths, whitelist_file)
+        if not os.path.isfile(path):
+            bb.fatal('Did not find conf file "%s"' % whitelist_file)
+
+        # Copy the conf file into install directory
+        bb.utils.copyfile(path, install_file)
+
+    install_whitelist(d)
+}
+do_install[postfuncs] += "phosphor_ipmi_host_whitelist_postinstall"
\ No newline at end of file