Manager: add ManagerDiagnosticData handler

This change adds a link in the Manager for all BMCs to an empty
ManagerDiagnosticData resource and a minimum ManagerDiagnosticData
handler.

This service is backed by phosphor-health-monitor (PHM), which is
enabled by default through the "obmc-apps" package group. If PHM is
disabled, the resource will be empty.

$ curl http://${bmc}:10080/redfish/v1/Managers/bmc/ManagerDiagnosticData
{
  "@odata.id": "/redfish/v1/Managers/bmc/ManagerDiagnosticData",
  "@odata.type": "#ManagerDiagnosticData.v1_0_0.ManagerDiagnosticData",
  "Id": "ManagerDiagnosticData",
  "Name": "Manager Diagnostic Data"
}

Also ran the Redfish Service Validator to make sure no new errors are
introduced with the introduction of ManagerDiagnosticData.

Signed-off-by: Sui Chen <suichen@google.com>
Change-Id: Iba242bc3b6ebec851dbd26e149d5c92c19a7992e
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index 039fced..52a3c85 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -15,17 +15,17 @@
 */
 #pragma once
 
+#include "app.hpp"
+#include "dbus_utility.hpp"
 #include "health.hpp"
+#include "query.hpp"
 #include "redfish_util.hpp"
+#include "registries/privilege_registry.hpp"
+#include "utils/sw_utils.hpp"
+#include "utils/systemd_utils.hpp"
 
-#include <app.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/date_time.hpp>
-#include <dbus_utility.hpp>
-#include <query.hpp>
-#include <registries/privilege_registry.hpp>
-#include <utils/sw_utils.hpp>
-#include <utils/systemd_utils.hpp>
 
 #include <cstdint>
 #include <memory>
@@ -1954,7 +1954,7 @@
             return;
         }
         asyncResp->res.jsonValue["@odata.id"] = "/redfish/v1/Managers/bmc";
-        asyncResp->res.jsonValue["@odata.type"] = "#Manager.v1_11_0.Manager";
+        asyncResp->res.jsonValue["@odata.type"] = "#Manager.v1_14_0.Manager";
         asyncResp->res.jsonValue["Id"] = "bmc";
         asyncResp->res.jsonValue["Name"] = "OpenBmc Manager";
         asyncResp->res.jsonValue["Description"] =
@@ -2054,6 +2054,12 @@
 
         managerGetLastResetTime(asyncResp);
 
+        // ManagerDiagnosticData is added for all BMCs.
+        nlohmann::json& managerDiagnosticData =
+            asyncResp->res.jsonValue["ManagerDiagnosticData"];
+        managerDiagnosticData["@odata.id"] =
+            "/redfish/v1/Managers/bmc/ManagerDiagnosticData";
+
         auto pids = std::make_shared<GetPIDValues>(asyncResp);
         pids->run();