Move Consoles to ComputerSystem

2020.3 moved SerialConsole and GraphicalConsole to ComputerSystem.

More information can be found on:
http://www.dmtf.org/sites/default/files/Redfish_Release_2020.3_Overview.pdf

These Consoles are readonly properties and were recently added.
Figured no clients are looking for them, but the OCP profile does
require SerialConsole so left them in Manager.

The OCP profile has not released a new version in 18 months.
Filed the following issue with the profile:
https://github.com/opencomputeproject/OCP-Profiles/issues/23

After we remove from manager the following validator warning
will go away:
"SerialConsole: The given property is deprecated by revision:
This property has been deprecated in favor of the SerialConsole
property in the ComputerSystem resource."

Tested: Passes Validator.
  "GraphicalConsole": {
    "ConnectTypesSupported": [
      "KVMIP"
    ],
    "MaxConcurrentSessions": 4,
    "ServiceEnabled": true
  },

  "SerialConsole": {
    "IPMI": {
      "ServiceEnabled": true
    },
    "MaxConcurrentSessions": 15,
    "SSH": {
      "HotKeySequenceDisplay": "Press ~. to exit console",
      "Port": 2200,
      "ServiceEnabled": true
    }
  },

Change-Id: I1cc41c0da67e0d4123678f645828dfe1856d7a8f
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
Signed-off-by: Abhishek Patel <Abhishek.Patel@ibm.com>
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index e85abb1..b286f19 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -1989,6 +1989,9 @@
 
             asyncResp->res.jsonValue["DateTime"] = crow::utility::dateTimeNow();
 
+            // TODO (Gunnar): Remove these one day since moved to ComputerSystem
+            // Still used by OCP profiles
+            // https://github.com/opencomputeproject/OCP-Profiles/issues/23
             // Fill in SerialConsole info
             asyncResp->res.jsonValue["SerialConsole"]["ServiceEnabled"] = true;
             asyncResp->res.jsonValue["SerialConsole"]["MaxConcurrentSessions"] =
diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index 38e4034..60737ce 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -2109,6 +2109,29 @@
                 {"Health", "OK"},
                 {"State", "Enabled"},
             };
+
+            // Fill in SerialConsole info
+            asyncResp->res.jsonValue["SerialConsole"]["MaxConcurrentSessions"] =
+                15;
+            asyncResp->res.jsonValue["SerialConsole"]["IPMI"] = {
+                {"ServiceEnabled", true},
+            };
+            // TODO (Gunnar): Should look for obmc-console-ssh@2200.service
+            asyncResp->res.jsonValue["SerialConsole"]["SSH"] = {
+                {"ServiceEnabled", true},
+                {"Port", 2200},
+                // https://github.com/openbmc/docs/blob/master/console.md
+                {"HotKeySequenceDisplay", "Press ~. to exit console"},
+            };
+
+#ifdef BMCWEB_ENABLE_KVM
+            // Fill in GraphicalConsole info
+            asyncResp->res.jsonValue["GraphicalConsole"] = {
+                {"ServiceEnabled", true},
+                {"MaxConcurrentSessions", 4},
+                {"ConnectTypesSupported", {"KVMIP"}},
+            };
+#endif // BMCWEB_ENABLE_KVM
             constexpr const std::array<const char*, 4> inventoryForSystems = {
                 "xyz.openbmc_project.Inventory.Item.Dimm",
                 "xyz.openbmc_project.Inventory.Item.Cpu",