xref: /openbmc/bmcweb/features/redfish/src/redfish.cpp (revision 37937d515e98beff1807438eb3c95329dfb035ab)
140e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0
240e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors
33cd7072bSEd Tanous #include "redfish.hpp"
43cd7072bSEd Tanous 
55b90429aSEd Tanous #include "bmcweb_config.h"
65b90429aSEd Tanous 
73cd7072bSEd Tanous #include "account_service.hpp"
83cd7072bSEd Tanous #include "aggregation_service.hpp"
93cd7072bSEd Tanous #include "app.hpp"
103cd7072bSEd Tanous #include "bios.hpp"
113cd7072bSEd Tanous #include "cable.hpp"
123cd7072bSEd Tanous #include "certificate_service.hpp"
133cd7072bSEd Tanous #include "chassis.hpp"
143cd7072bSEd Tanous #include "environment_metrics.hpp"
153cd7072bSEd Tanous #include "ethernet.hpp"
163cd7072bSEd Tanous #include "event_service.hpp"
173cd7072bSEd Tanous #include "eventservice_sse.hpp"
183cd7072bSEd Tanous #include "fabric_adapters.hpp"
19*37937d51SGeorge Liu #include "fabric_ports.hpp"
203cd7072bSEd Tanous #include "fan.hpp"
213cd7072bSEd Tanous #include "hypervisor_system.hpp"
223cd7072bSEd Tanous #include "log_services.hpp"
233cd7072bSEd Tanous #include "manager_diagnostic_data.hpp"
24b0983db2SEd Tanous #include "manager_logservices_journal.hpp"
253cd7072bSEd Tanous #include "managers.hpp"
263cd7072bSEd Tanous #include "memory.hpp"
273cd7072bSEd Tanous #include "message_registries.hpp"
28090ab8e1SEd Tanous #include "metadata.hpp"
293cd7072bSEd Tanous #include "metric_report.hpp"
303cd7072bSEd Tanous #include "metric_report_definition.hpp"
313cd7072bSEd Tanous #include "network_protocol.hpp"
32d5c0172eSEd Tanous #include "odata.hpp"
33c1a75ebcSrohitpai #include "openbmc/openbmc_managers.hpp"
343cd7072bSEd Tanous #include "pcie.hpp"
353cd7072bSEd Tanous #include "power.hpp"
363cd7072bSEd Tanous #include "power_subsystem.hpp"
373cd7072bSEd Tanous #include "power_supply.hpp"
383cd7072bSEd Tanous #include "processor.hpp"
393cd7072bSEd Tanous #include "redfish_sessions.hpp"
403cd7072bSEd Tanous #include "redfish_v1.hpp"
413cd7072bSEd Tanous #include "roles.hpp"
423cd7072bSEd Tanous #include "sensors.hpp"
433cd7072bSEd Tanous #include "service_root.hpp"
443cd7072bSEd Tanous #include "storage.hpp"
453cd7072bSEd Tanous #include "systems.hpp"
46e21126ecSEd Tanous #include "systems_logservices_hostlogger.hpp"
478d2f868cSEd Tanous #include "systems_logservices_postcodes.hpp"
483cd7072bSEd Tanous #include "task.hpp"
493cd7072bSEd Tanous #include "telemetry_service.hpp"
503cd7072bSEd Tanous #include "thermal.hpp"
513cd7072bSEd Tanous #include "thermal_metrics.hpp"
523cd7072bSEd Tanous #include "thermal_subsystem.hpp"
533cd7072bSEd Tanous #include "trigger.hpp"
543cd7072bSEd Tanous #include "update_service.hpp"
553cd7072bSEd Tanous #include "virtual_media.hpp"
563cd7072bSEd Tanous 
573cd7072bSEd Tanous namespace redfish
583cd7072bSEd Tanous {
593cd7072bSEd Tanous 
603cd7072bSEd Tanous RedfishService::RedfishService(App& app)
613cd7072bSEd Tanous {
62090ab8e1SEd Tanous     requestRoutesMetadata(app);
63d5c0172eSEd Tanous     requestRoutesOdata(app);
64090ab8e1SEd Tanous 
653cd7072bSEd Tanous     requestAccountServiceRoutes(app);
6625b54dbaSEd Tanous     if constexpr (BMCWEB_REDFISH_AGGREGATION)
6725b54dbaSEd Tanous     {
683cd7072bSEd Tanous         requestRoutesAggregationService(app);
693cd7072bSEd Tanous         requestRoutesAggregationSourceCollection(app);
703cd7072bSEd Tanous         requestRoutesAggregationSource(app);
7125b54dbaSEd Tanous     }
723cd7072bSEd Tanous     requestRoutesRoles(app);
733cd7072bSEd Tanous     requestRoutesRoleCollection(app);
743cd7072bSEd Tanous     requestRoutesServiceRoot(app);
753cd7072bSEd Tanous     requestRoutesNetworkProtocol(app);
763cd7072bSEd Tanous     requestRoutesSession(app);
773cd7072bSEd Tanous     requestEthernetInterfacesRoutes(app);
7825b54dbaSEd Tanous     if constexpr (BMCWEB_REDFISH_ALLOW_DEPRECATED_POWER_THERMAL)
7925b54dbaSEd Tanous     {
803cd7072bSEd Tanous         requestRoutesThermal(app);
813cd7072bSEd Tanous         requestRoutesPower(app);
8225b54dbaSEd Tanous     }
8325b54dbaSEd Tanous     if constexpr (BMCWEB_REDFISH_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM)
8425b54dbaSEd Tanous     {
853cd7072bSEd Tanous         requestRoutesEnvironmentMetrics(app);
863cd7072bSEd Tanous         requestRoutesPowerSubsystem(app);
873cd7072bSEd Tanous         requestRoutesPowerSupply(app);
883cd7072bSEd Tanous         requestRoutesPowerSupplyCollection(app);
893cd7072bSEd Tanous         requestRoutesThermalMetrics(app);
903cd7072bSEd Tanous         requestRoutesThermalSubsystem(app);
913cd7072bSEd Tanous         requestRoutesFan(app);
923cd7072bSEd Tanous         requestRoutesFanCollection(app);
9325b54dbaSEd Tanous     }
943cd7072bSEd Tanous     requestRoutesManager(app);
953cd7072bSEd Tanous     requestRoutesManagerResetAction(app);
963cd7072bSEd Tanous     requestRoutesManagerDiagnosticData(app);
973cd7072bSEd Tanous     requestRoutesChassisCollection(app);
983cd7072bSEd Tanous     requestRoutesChassis(app);
993cd7072bSEd Tanous     requestRoutesChassisResetAction(app);
1003cd7072bSEd Tanous     requestRoutesChassisResetActionInfo(app);
1013cd7072bSEd Tanous     requestRoutesChassisDrive(app);
1023cd7072bSEd Tanous     requestRoutesChassisDriveName(app);
1033cd7072bSEd Tanous     requestRoutesUpdateService(app);
1043cd7072bSEd Tanous     requestRoutesStorageCollection(app);
1053cd7072bSEd Tanous     requestRoutesStorage(app);
1063cd7072bSEd Tanous     requestRoutesStorageControllerCollection(app);
1073cd7072bSEd Tanous     requestRoutesStorageController(app);
1083cd7072bSEd Tanous     requestRoutesDrive(app);
1093cd7072bSEd Tanous     requestRoutesCable(app);
1103cd7072bSEd Tanous     requestRoutesCableCollection(app);
1113cd7072bSEd Tanous 
1123cd7072bSEd Tanous     requestRoutesSystemLogServiceCollection(app);
1133cd7072bSEd Tanous     requestRoutesEventLogService(app);
1143cd7072bSEd Tanous 
1158d2f868cSEd Tanous     requestRoutesSystemsLogServicesPostCode(app);
1163cd7072bSEd Tanous 
11725b54dbaSEd Tanous     if constexpr (BMCWEB_REDFISH_DUMP_LOG)
11825b54dbaSEd Tanous     {
1193cd7072bSEd Tanous         requestRoutesSystemDumpService(app);
1203cd7072bSEd Tanous         requestRoutesSystemDumpEntryCollection(app);
1213cd7072bSEd Tanous         requestRoutesSystemDumpEntry(app);
1223cd7072bSEd Tanous         requestRoutesSystemDumpCreate(app);
1233cd7072bSEd Tanous         requestRoutesSystemDumpClear(app);
1243cd7072bSEd Tanous 
1253cd7072bSEd Tanous         requestRoutesBMCDumpService(app);
1263cd7072bSEd Tanous         requestRoutesBMCDumpEntryCollection(app);
1273cd7072bSEd Tanous         requestRoutesBMCDumpEntry(app);
1283cd7072bSEd Tanous         requestRoutesBMCDumpEntryDownload(app);
1293cd7072bSEd Tanous         requestRoutesBMCDumpCreate(app);
1303cd7072bSEd Tanous         requestRoutesBMCDumpClear(app);
1313cd7072bSEd Tanous 
1323cd7072bSEd Tanous         requestRoutesFaultLogDumpService(app);
1333cd7072bSEd Tanous         requestRoutesFaultLogDumpEntryCollection(app);
1343cd7072bSEd Tanous         requestRoutesFaultLogDumpEntry(app);
1353cd7072bSEd Tanous         requestRoutesFaultLogDumpClear(app);
13625b54dbaSEd Tanous     }
1373cd7072bSEd Tanous 
1383cd7072bSEd Tanous     requestRoutesBMCLogServiceCollection(app);
13984177a2fSEd Tanous 
14025b54dbaSEd Tanous     if constexpr (BMCWEB_REDFISH_BMC_JOURNAL)
14125b54dbaSEd Tanous     {
1423cd7072bSEd Tanous         requestRoutesBMCJournalLogService(app);
14325b54dbaSEd Tanous     }
1443cd7072bSEd Tanous 
14525b54dbaSEd Tanous     if constexpr (BMCWEB_REDFISH_CPU_LOG)
14625b54dbaSEd Tanous     {
1473cd7072bSEd Tanous         requestRoutesCrashdumpService(app);
1483cd7072bSEd Tanous         requestRoutesCrashdumpEntryCollection(app);
1493cd7072bSEd Tanous         requestRoutesCrashdumpEntry(app);
1503cd7072bSEd Tanous         requestRoutesCrashdumpFile(app);
1513cd7072bSEd Tanous         requestRoutesCrashdumpClear(app);
1523cd7072bSEd Tanous         requestRoutesCrashdumpCollect(app);
15325b54dbaSEd Tanous     }
1543cd7072bSEd Tanous 
1553cd7072bSEd Tanous     requestRoutesProcessorCollection(app);
1563cd7072bSEd Tanous     requestRoutesProcessor(app);
1573cd7072bSEd Tanous     requestRoutesOperatingConfigCollection(app);
1583cd7072bSEd Tanous     requestRoutesOperatingConfig(app);
1593cd7072bSEd Tanous     requestRoutesMemoryCollection(app);
1603cd7072bSEd Tanous     requestRoutesMemory(app);
1613cd7072bSEd Tanous 
1623cd7072bSEd Tanous     requestRoutesSystems(app);
1633cd7072bSEd Tanous 
1643cd7072bSEd Tanous     requestRoutesBiosService(app);
1653cd7072bSEd Tanous     requestRoutesBiosReset(app);
1663cd7072bSEd Tanous 
16725b54dbaSEd Tanous     if constexpr (BMCWEB_VM_NBDPROXY)
16825b54dbaSEd Tanous     {
1693cd7072bSEd Tanous         requestNBDVirtualMediaRoutes(app);
17025b54dbaSEd Tanous     }
1713cd7072bSEd Tanous 
17225b54dbaSEd Tanous     if constexpr (BMCWEB_REDFISH_DBUS_LOG)
17325b54dbaSEd Tanous     {
1743cd7072bSEd Tanous         requestRoutesDBusLogServiceActionsClear(app);
1753cd7072bSEd Tanous         requestRoutesDBusEventLogEntryCollection(app);
1763cd7072bSEd Tanous         requestRoutesDBusEventLogEntry(app);
1773cd7072bSEd Tanous         requestRoutesDBusEventLogEntryDownload(app);
17825b54dbaSEd Tanous     }
179a782e265SAlexander Hansen     else
180a782e265SAlexander Hansen     {
181a782e265SAlexander Hansen         requestRoutesJournalEventLogEntryCollection(app);
182a782e265SAlexander Hansen         requestRoutesJournalEventLogEntry(app);
183a782e265SAlexander Hansen         requestRoutesJournalEventLogClear(app);
184a782e265SAlexander Hansen     }
1853cd7072bSEd Tanous 
18625b54dbaSEd Tanous     if constexpr (BMCWEB_REDFISH_HOST_LOGGER)
18725b54dbaSEd Tanous     {
188e21126ecSEd Tanous         requestRoutesSystemsLogServiceHostlogger(app);
18925b54dbaSEd Tanous     }
1903cd7072bSEd Tanous 
1913cd7072bSEd Tanous     requestRoutesMessageRegistryFileCollection(app);
1923cd7072bSEd Tanous     requestRoutesMessageRegistryFile(app);
1933cd7072bSEd Tanous     requestRoutesMessageRegistry(app);
1943cd7072bSEd Tanous 
1953cd7072bSEd Tanous     requestRoutesCertificateService(app);
1963cd7072bSEd Tanous     requestRoutesHTTPSCertificate(app);
1973cd7072bSEd Tanous     requestRoutesLDAPCertificate(app);
1983cd7072bSEd Tanous     requestRoutesTrustStoreCertificate(app);
1993cd7072bSEd Tanous 
2003cd7072bSEd Tanous     requestRoutesSystemPCIeFunctionCollection(app);
2013cd7072bSEd Tanous     requestRoutesSystemPCIeFunction(app);
2023cd7072bSEd Tanous     requestRoutesSystemPCIeDeviceCollection(app);
2033cd7072bSEd Tanous     requestRoutesSystemPCIeDevice(app);
2043cd7072bSEd Tanous 
2053cd7072bSEd Tanous     requestRoutesSensorCollection(app);
2063cd7072bSEd Tanous     requestRoutesSensor(app);
2073cd7072bSEd Tanous 
2083cd7072bSEd Tanous     requestRoutesTaskMonitor(app);
2093cd7072bSEd Tanous     requestRoutesTaskService(app);
2103cd7072bSEd Tanous     requestRoutesTaskCollection(app);
2113cd7072bSEd Tanous     requestRoutesTask(app);
2123cd7072bSEd Tanous     requestRoutesEventService(app);
2133cd7072bSEd Tanous     requestRoutesEventServiceSse(app);
2143cd7072bSEd Tanous     requestRoutesEventDestinationCollection(app);
2153cd7072bSEd Tanous     requestRoutesEventDestination(app);
2163cd7072bSEd Tanous     requestRoutesFabricAdapters(app);
2173cd7072bSEd Tanous     requestRoutesFabricAdapterCollection(app);
218*37937d51SGeorge Liu     requestRoutesFabricPort(app);
2193cd7072bSEd Tanous     requestRoutesSubmitTestEvent(app);
2203cd7072bSEd Tanous 
22168896206SGunnar Mills     if constexpr (BMCWEB_HYPERVISOR_COMPUTER_SYSTEM)
22268896206SGunnar Mills     {
2233cd7072bSEd Tanous         requestRoutesHypervisorSystems(app);
22468896206SGunnar Mills     }
2253cd7072bSEd Tanous 
2263cd7072bSEd Tanous     requestRoutesTelemetryService(app);
2273cd7072bSEd Tanous     requestRoutesMetricReportDefinitionCollection(app);
2283cd7072bSEd Tanous     requestRoutesMetricReportDefinition(app);
2293cd7072bSEd Tanous     requestRoutesMetricReportCollection(app);
2303cd7072bSEd Tanous     requestRoutesMetricReport(app);
2313cd7072bSEd Tanous     requestRoutesTriggerCollection(app);
2323cd7072bSEd Tanous     requestRoutesTrigger(app);
2333cd7072bSEd Tanous 
2343cd7072bSEd Tanous     // Note, this must be the last route registered
2353cd7072bSEd Tanous     requestRoutesRedfish(app);
236c1a75ebcSrohitpai 
237c1a75ebcSrohitpai     requestRoutesOpenBmcManager(*this);
238c1a75ebcSrohitpai 
239c1a75ebcSrohitpai     validate();
2403cd7072bSEd Tanous }
2413cd7072bSEd Tanous 
2423cd7072bSEd Tanous } // namespace redfish
243