psu-ng: Log errors for missing power supplies

If a power supply is not present, create an error.

Signed-off-by: Brandon Wyman <bjwyman@gmail.com>
Change-Id: I8848f00572019588facbd44405e8d37d5106fb68
diff --git a/phosphor-power-supply/psu_manager.cpp b/phosphor-power-supply/psu_manager.cpp
index c84201e..32847b8 100644
--- a/phosphor-power-supply/psu_manager.cpp
+++ b/phosphor-power-supply/psu_manager.cpp
@@ -176,11 +176,20 @@
 
     for (auto& psu : psus)
     {
+        std::map<std::string, std::string> additionalData;
+        additionalData["_PID"] = std::to_string(getpid());
         // TODO: Fault priorities #918
-        if (!psu->isFaultLogged() && psu->isFaulted())
+        if (!psu->isFaultLogged() && !psu->isPresent())
         {
-            std::map<std::string, std::string> additionalData;
-            additionalData["_PID"] = std::to_string(getpid());
+            // Create error for power supply missing.
+            additionalData["CALLOUT_INVENTORY_PATH"] = psu->getInventoryPath();
+            additionalData["CALLOUT_PRIORITY"] = "H";
+            createError("xyz.openbmc_project.Power.PowerSupply.Error.Missing",
+                        additionalData);
+            psu->setFaultLogged();
+        }
+        else if (!psu->isFaultLogged() && psu->isFaulted())
+        {
             additionalData["STATUS_WORD"] =
                 std::to_string(psu->getStatusWord());