functions: Replace IBMCompatibleSystem with Compatible

The Compatible interface will be replacing the IBMCompatibleSystem
interface. Reference:
https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/68125
https://gerrit.openbmc.org/c/openbmc/entity-manager/+/68128

Tested: Verified the symlinks for the PNOR files were created
successfully on a Rainier 4U system with the new Compatible interface
changes.

Change-Id: Idf2511d6616723bd21c945fe228499ae9eaf2fea
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/functions.cpp b/functions.cpp
index 24a099e..33b5611 100644
--- a/functions.cpp
+++ b/functions.cpp
@@ -84,26 +84,26 @@
 }
 
 /**
- * @brief Get file extensions for IBMCompatibleSystem
+ * @brief Get file extensions for Compatible
  *
- * IBM host firmware can be deployed as blobs (files) in a filesystem.  Host
+ * IBM host firmware can be deployed as blobs (files) in a filesystem. Host
  * firmware blobs for different values of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem are packaged with
- * different filename extensions.  getExtensionsForIbmCompatibleSystem
- * maintains the mapping from a given value of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem to an array of
- * filename extensions.
+ * xyz.openbmc_project.Inventory.Decorator.Compatible are packaged with
+ * different filename extensions. getExtensionsForIbmCompatibleSystem maintains
+ * the mapping from a given value of
+ * xyz.openbmc_project.Inventory.Decorator.Compatible to an array of filename
+ * extensions.
  *
  * If a mapping is found getExtensionsForIbmCompatibleSystem returns true and
- * the extensions parameter is reset with the map entry.  If no mapping is
- * found getExtensionsForIbmCompatibleSystem returns false and extensions is
+ * the extensions parameter is reset with the map entry. If no mapping is found
+ * getExtensionsForIbmCompatibleSystem returns false and extensions is
  * unmodified.
  *
  * @param[in] extensionMap a map of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem to host firmware blob
- * file extensions.
+ * xyz.openbmc_project.Inventory.Decorator.Compatible to host firmware blob file
+ * extensions.
  * @param[in] ibmCompatibleSystem The names property of an instance of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem
+ * xyz.openbmc_project.Inventory.Decorator.Compatible
  * @param[out] extentions the host firmware blob file extensions
  * @return true if an entry was found, otherwise false
  */
@@ -165,9 +165,9 @@
  * @brief Find host firmware blob files that need well-known names
  *
  * The IBM host firmware runtime looks for data and/or additional code while
- * bootstraping in files with well-known names.  findLinks uses the provided
+ * bootstraping in files with well-known names. findLinks uses the provided
  * extensions argument to find host firmware blob files that require a
- * well-known name.  When a blob is found, issue the provided callback
+ * well-known name. When a blob is found, issue the provided callback
  * (typically a function that will write a symlink).
  *
  * @param[in] hostFirmwareDirectory The directory in which findLinks should
@@ -432,19 +432,18 @@
 
 /**
  * @brief Make callbacks on
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem instances.
+ * xyz.openbmc_project.Inventory.Decorator.Compatible instances.
  *
- * Look for an instance of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem in the provided
- * argument and if found, issue the provided callback.
+ * Look for an instance of xyz.openbmc_project.Inventory.Decorator.Compatible in
+ * the provided argument and if found, issue the provided callback.
  *
  * @param[in] interfacesAndProperties the interfaces in which to look for an
- * instance of xyz.openbmc_project.Configuration.IBMCompatibleSystem
+ * instance of xyz.openbmc_project.Inventory.Decorator.Compatible
  * @param[in] callback the user callback to make if
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem is found in
+ * xyz.openbmc_project.Inventory.Decorator.Compatible is found in
  * interfacesAndProperties
  * @return true if interfacesAndProperties contained an instance of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem, false otherwise
+ * xyz.openbmc_project.Inventory.Decorator.Compatible, false otherwise
  */
 bool maybeCall(const std::map<std::string,
                               std::map<std::string,
@@ -455,20 +454,19 @@
     using namespace std::string_literals;
 
     static const auto interfaceName =
-        "xyz.openbmc_project.Configuration.IBMCompatibleSystem"s;
+        "xyz.openbmc_project.Inventory.Decorator.Compatible"s;
     auto interfaceIterator = interfacesAndProperties.find(interfaceName);
     if (interfaceIterator == interfacesAndProperties.cend())
     {
-        // IBMCompatibleSystem interface not found, so instruct the caller to
-        // keep waiting or try again later.
+        // Compatible interface not found, so instruct the caller to keep
+        // waiting or try again later.
         return false;
     }
     auto propertyIterator = interfaceIterator->second.find("Names"s);
     if (propertyIterator == interfaceIterator->second.cend())
     {
-        // The interface exists but the property doesn't.  This is a bug in the
-        // IBMCompatibleSystem implementation.  The caller should not try
-        // again.
+        // The interface exists but the property doesn't. This is a bug in the
+        // Compatible implementation. The caller should not try again.
         std::cerr << "Names property not implemented on " << interfaceName
                   << "\n";
         return true;
@@ -488,25 +486,23 @@
         }
     }
 
-    // IBMCompatibleSystem found and callback issued.
+    // Compatible found and callback issued.
     return true;
 }
 
 /**
  * @brief Make callbacks on
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem instances.
+ * xyz.openbmc_project.Inventory.Decorator.Compatible instances.
  *
- * Look for an instance of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem in the provided
- * argument and if found, issue the provided callback.
+ * Look for an instance ofxyz.openbmc_project.Inventory.Decorator.Compatible in
+ * the provided argument and if found, issue the provided callback.
  *
  * @param[in] message the DBus message in which to look for an instance of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem
+ * xyz.openbmc_project.Inventory.Decorator.Compatible
  * @param[in] callback the user callback to make if
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem is found in
- * message
+ * xyz.openbmc_project.Inventory.Decorator.Compatible is found in message
  * @return true if message contained an instance of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem, false otherwise
+ * xyz.openbmc_project.Inventory.Decorator.Compatible, false otherwise
  */
 bool maybeCallMessage(sdbusplus::message_t& message,
                       const MaybeCallCallbackType& callback)
@@ -523,17 +519,16 @@
  * @brief Determine system support for host firmware well-known names.
  *
  * Using the provided extensionMap and
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem, determine if
- * well-known names for host firmare blob files are necessary and if so, create
- * them.
+ * xyz.openbmc_project.Inventory.Decorator.Compatible, determine if well-known
+ * names for host firmare blob files are necessary and if so, create them.
  *
  * @param[in] extensionMap a map of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem to host firmware blob
- * file extensions.
- * @param[in] hostFirmwareDirectory The directory in which findLinks should
- * look for host firmware blob files that need well-known names.
+ * xyz.openbmc_project.Inventory.Decorator.Compatible to host firmware blob file
+ * extensions.
+ * @param[in] hostFirmwareDirectory The directory in which findLinks should look
+ * for host firmware blob files that need well-known names.
  * @param[in] ibmCompatibleSystem The names property of an instance of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem
+ * xyz.openbmc_project.Inventory.Decorator.Compatible
  * @param[in] errorCallback A callback made in the event of filesystem errors.
  */
 void maybeMakeLinks(
@@ -554,15 +549,15 @@
  * @brief Determine system support for updating the bios attribute table.
  *
  * Using the provided extensionMap and
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem, determine if the bios
+ * xyz.openbmc_project.Inventory.Decorator.Compatible, determine if the bios
  * attribute table needs to be updated.
  *
  * @param[in] extensionMap a map of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem to host firmware blob
- * file extensions.
+ * xyz.openbmc_project.Inventory.Decorator.Compatible to host firmware blob file
+ * extensions.
  * @param[in] elementsJsonFilePath The file path to the json file
  * @param[in] ibmCompatibleSystem The names property of an instance of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem
+ * xyz.openbmc_project.Inventory.Decorator.Compatible
  */
 void maybeSetBiosAttr(
     const std::map<std::string, std::vector<std::string>>& extensionMap,
@@ -591,27 +586,26 @@
  * added signals from entity manager.
  *
  * Check the current entity manager object tree for a
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem instance (entity
- * manager will be dbus activated if it is not running).  If one is found,
- * determine if symlinks need to be created and create them.  Instruct the
- * program event loop to exit.
+ * xyz.openbmc_project.Inventory.Decorator.Compatible instance (entity manager
+ * will be dbus activated if it is not running). If one is found, determine if
+ * symlinks need to be created and create them. Instruct the program event loop
+ * to exit.
  *
- * If no instance of xyz.openbmc_project.Configuration.IBMCompatibleSystem is
- * found return the callback context to main, where the program will sleep
- * until the callback is invoked one or more times and instructs the program
- * event loop to exit when
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem is added.
+ * If no instance of xyz.openbmc_project.Inventory.Decorator.Compatible is found
+ * return the callback context to main, where the program will sleep until the
+ * callback is invoked one or more times and instructs the program event loop to
+ * exit when xyz.openbmc_project.Inventory.Decorator.Compatible is added.
  *
  * @param[in] bus a DBus client connection
  * @param[in] extensionMap a map of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem to host firmware blob
- * file extensions.
+ * xyz.openbmc_project.Inventory.Decorator.Compatible to host firmware blob file
+ * extensions.
  * @param[in] hostFirmwareDirectory The directory in which processHostFirmware
  * should look for blob files.
  * @param[in] errorCallback A callback made in the event of filesystem errors.
  * @param[in] loop a program event loop
  * @return nullptr if an instance of
- * xyz.openbmc_project.Configuration.IBMCompatibleSystem is found, otherwise a
+ * xyz.openbmc_project.Inventory.Decorator.Compatible is found, otherwise a
  * pointer to an sdbusplus match object.
  */
 std::shared_ptr<void> processHostFirmware(
@@ -631,8 +625,8 @@
     auto pErrorCallback =
         std::make_shared<decltype(errorCallback)>(std::move(errorCallback));
 
-    // register for a callback in case the IBMCompatibleSystem interface has
-    // not yet been published by entity manager.
+    // register for a callback in case the Compatible interface has not yet been
+    // published by entity manager.
     auto interfacesAddedMatch = std::make_shared<sdbusplus::bus::match_t>(
         bus,
         sdbusplus::bus::match::rules::interfacesAdded() +
@@ -648,21 +642,19 @@
                       std::cref(*pErrorCallback));
 
         // if the InterfacesAdded message contains an an instance of
-        // xyz.openbmc_project.Configuration.IBMCompatibleSystem, check to
-        // see if links are necessary on this system and if so, create
-        // them.
+        // xyz.openbmc_project.Inventory.Decorator.Compatible, check to see if
+        // links are necessary on this system and if so, create them.
         if (maybeCallMessage(message, maybeMakeLinksWithArgsBound))
         {
-            // The IBMCompatibleSystem interface was found and the links
-            // were created if applicable.  Instruct the event loop /
-            // subcommand to exit.
+            // The Compatible interface was found and the links were created if
+            // applicable. Instruct the event loop / subcommand to exit.
             loop.exit(0);
         }
     });
 
     // now that we'll get a callback in the event of an InterfacesAdded signal
     // (potentially containing
-    // xyz.openbmc_project.Configuration.IBMCompatibleSystem), activate entity
+    // xyz.openbmc_project.Inventory.Decorator.Compatible), activate entity
     // manager if it isn't running and enumerate its objects
     auto getManagedObjects = bus.new_method_call(
         "xyz.openbmc_project.EntityManager", "/xyz/openbmc_project/inventory",
@@ -695,34 +687,33 @@
     {
         std::tie(std::ignore, interfacesAndProperties) = pair;
         // if interfacesAndProperties contains an an instance of
-        // xyz.openbmc_project.Configuration.IBMCompatibleSystem, check to see
-        // if links are necessary on this system and if so, create them
+        // xyz.openbmc_project.Inventory.Decorator.Compatible, check to see if
+        // links are necessary on this system and if so, create them
         if (maybeCall(interfacesAndProperties, maybeMakeLinksWithArgsBound))
         {
-            // The IBMCompatibleSystem interface is already on the bus and the
-            // links were created if applicable.  Instruct the event loop to
-            // exit.
+            // The Compatible interface is already on the bus and the links were
+            // created if applicable. Instruct the event loop to exit.
             loop.exit(0);
             // The match object isn't needed anymore, so destroy it on return.
             return nullptr;
         }
     }
 
-    // The IBMCompatibleSystem interface has not yet been published.  Move
-    // ownership of the match callback to the caller.
+    // The Compatible interface has not yet been published. Move ownership of
+    // the match callback to the caller.
     return interfacesAddedMatch;
 }
 
 /**
  * @brief Update the Bios Attribute Table
  *
- * If an instance of xyz.openbmc_project.Configuration.IBMCompatibleSystem is
+ * If an instance of xyz.openbmc_project.Inventory.Decorator.Compatible is
  * found, update the Bios Attribute Table with the appropriate host firmware
  * data.
  *
  * @param[in] bus - D-Bus client connection.
- * @param[in] extensionMap - Map of IBMCompatibleSystem names and host firmware
- *                           file extensions.
+ * @param[in] extensionMap - Map of Compatible names and host firmware file
+                             extensions.
  * @param[in] elementsJsonFilePath - The Path to the json file
  * @param[in] loop - Program event loop.
  * @return nullptr
diff --git a/item_updater_main.cpp b/item_updater_main.cpp
index 0aad740..1076068 100644
--- a/item_updater_main.cpp
+++ b/item_updater_main.cpp
@@ -61,11 +61,14 @@
 
     using namespace std::string_literals;
     std::map<std::string, std::vector<std::string>> extensionMap{{
-        {"ibm,bonnell"s, {".BONNELL_XML"s, ".P10"s}},
-        {"ibm,everest"s, {".EVEREST_XML"s, ".P10"s}},
-        {"ibm,rainier-2u"s, {".RAINIER_2U_XML"s, ".P10"s}},
-        {"ibm,rainier-4u"s, {".RAINIER_4U_XML"s, ".P10"s}},
-        {"ibm,rainier-1s4u"s, {".RAINIER_4U_XML"s, ".P10"s}},
+        {"com.ibm.Hardware.Chassis.Model.Bonnell"s, {".BONNELL_XML"s, ".P10"s}},
+        {"com.ibm.Hardware.Chassis.Model.Everest"s, {".EVEREST_XML"s, ".P10"s}},
+        {"com.ibm.Hardware.Chassis.Model.Rainier2U"s,
+         {".RAINIER_2U_XML"s, ".P10"s}},
+        {"com.ibm.Hardware.Chassis.Model.Rainier4U"s,
+         {".RAINIER_4U_XML"s, ".P10"s}},
+        {"com.ibm.Hardware.Chassis.Model.Rainier1S4U"s,
+         {".RAINIER_4U_XML"s, ".P10"s}},
     }};
 
     // subcommandContext allows program subcommand callbacks to add loop event
diff --git a/test/test_functions.cpp b/test/test_functions.cpp
index 3b7d366..c1743dd 100644
--- a/test/test_functions.cpp
+++ b/test/test_functions.cpp
@@ -182,7 +182,7 @@
     std::map<std::string,
              std::map<std::string, std::variant<std::vector<std::string>>>>
         interfaces{{
-            {"xyz.openbmc_project.Configuration.IBMCompatibleSystem"s,
+            {"xyz.openbmc_project.Inventory.Decorator.Compatible"s,
              {{"Names"s, std::vector<std::string>{"foo"s}}}},
         }};
     auto found = functions::process_hostfirmware::maybeCall(
@@ -199,7 +199,7 @@
     std::map<std::string,
              std::map<std::string, std::variant<std::vector<std::string>>>>
         interfaces{{
-            {"xyz.openbmc_project.Configuration.IBMCompatibleSystem"s, {}},
+            {"xyz.openbmc_project.Inventory.Decorator.Compatible"s, {}},
         }};
     auto found = functions::process_hostfirmware::maybeCall(
         interfaces, std::move(callback));
@@ -212,7 +212,7 @@
     std::map<std::string,
              std::map<std::string, std::variant<std::vector<std::string>>>>
         interfaces{{
-            {"xyz.openbmc_project.Configuration.IBMCompatibleSystem"s,
+            {"xyz.openbmc_project.Inventory.Decorator.Compatible"s,
              {{"Names"s, std::vector<std::string>{"foo"s}}}},
         }};
     auto found = functions::process_hostfirmware::maybeCall(