xref: /openbmc/bmcweb/redfish-core/src/redfish.cpp (revision 6926d43047446a1f08d4b157d48a30221ae8f87e)
1 // SPDX-License-Identifier: Apache-2.0
2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
3 #include "redfish.hpp"
4 
5 #include "bmcweb_config.h"
6 
7 #include "account_service.hpp"
8 #include "aggregation_service.hpp"
9 #include "app.hpp"
10 #include "assembly.hpp"
11 #include "bios.hpp"
12 #include "cable.hpp"
13 #include "certificate_service.hpp"
14 #include "chassis.hpp"
15 #include "environment_metrics.hpp"
16 #include "ethernet.hpp"
17 #include "event_service.hpp"
18 #include "eventservice_sse.hpp"
19 #include "fabric_adapters.hpp"
20 #include "fabric_ports.hpp"
21 #include "fan.hpp"
22 #include "hypervisor_system.hpp"
23 #include "log_services.hpp"
24 #include "manager_diagnostic_data.hpp"
25 #include "manager_logservices_dbus_eventlog.hpp"
26 #include "manager_logservices_journal.hpp"
27 #include "manager_logservices_journal_eventlog.hpp"
28 #include "managers.hpp"
29 #include "memory.hpp"
30 #include "message_registries.hpp"
31 #include "metadata.hpp"
32 #include "metric_report.hpp"
33 #include "metric_report_definition.hpp"
34 #include "network_protocol.hpp"
35 #include "odata.hpp"
36 #include "openbmc/openbmc_managers.hpp"
37 #include "pcie.hpp"
38 #include "power.hpp"
39 #include "power_subsystem.hpp"
40 #include "power_supply.hpp"
41 #include "processor.hpp"
42 #include "processor_operating_config.hpp"
43 #include "redfish_sessions.hpp"
44 #include "redfish_v1.hpp"
45 #include "roles.hpp"
46 #include "sensors.hpp"
47 #include "service_root.hpp"
48 #include "storage.hpp"
49 #include "storage_chassis.hpp"
50 #include "storage_controller.hpp"
51 #include "systems.hpp"
52 #include "systems_logservices_dbus_eventlog.hpp"
53 #include "systems_logservices_hostlogger.hpp"
54 #include "systems_logservices_journal_eventlog.hpp"
55 #include "systems_logservices_postcodes.hpp"
56 #include "task.hpp"
57 #include "telemetry_service.hpp"
58 #include "thermal.hpp"
59 #include "thermal_metrics.hpp"
60 #include "thermal_subsystem.hpp"
61 #include "trigger.hpp"
62 #include "update_service.hpp"
63 #include "virtual_media.hpp"
64 
65 namespace redfish
66 {
67 
RedfishService(App & app)68 RedfishService::RedfishService(App& app)
69 {
70     requestRoutesMetadata(app);
71     requestRoutesOdata(app);
72 
73     requestAccountServiceRoutes(app);
74     requestRoutesAssembly(app);
75 
76     if constexpr (BMCWEB_REDFISH_AGGREGATION)
77     {
78         requestRoutesAggregationService(app);
79         requestRoutesAggregationSourceCollection(app);
80         requestRoutesAggregationSource(app);
81     }
82     requestRoutesRoles(app);
83     requestRoutesRoleCollection(app);
84     requestRoutesServiceRoot(app);
85     requestRoutesNetworkProtocol(app);
86     requestRoutesSession(app);
87     requestEthernetInterfacesRoutes(app);
88     if constexpr (BMCWEB_REDFISH_ALLOW_DEPRECATED_POWER_THERMAL)
89     {
90         requestRoutesThermal(app);
91         requestRoutesPower(app);
92     }
93     if constexpr (BMCWEB_REDFISH_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM)
94     {
95         requestRoutesEnvironmentMetrics(app);
96         requestRoutesPowerSubsystem(app);
97         requestRoutesPowerSupply(app);
98         requestRoutesPowerSupplyCollection(app);
99         requestRoutesThermalMetrics(app);
100         requestRoutesThermalSubsystem(app);
101         requestRoutesFan(app);
102     }
103     requestRoutesManager(app);
104     requestRoutesManagerResetAction(app);
105     requestRoutesManagerDiagnosticData(app);
106     requestRoutesChassisCollection(app);
107     requestRoutesChassis(app);
108     requestRoutesChassisResetAction(app);
109     requestRoutesChassisResetActionInfo(app);
110     requestRoutesUpdateService(app);
111     requestRoutesStorage(app);
112     requestRoutesStorageController(app);
113     requestRoutesChassisDrive(app);
114     requestRoutesCable(app);
115     requestRoutesCableCollection(app);
116 
117     requestRoutesSystemsLogServiceCollection(app);
118     requestRoutesManagersLogServiceCollection(app);
119 
120     requestRoutesSystemsLogServicesPostCode(app);
121 
122     if constexpr (BMCWEB_REDFISH_EVENTLOG_LOCATION == "systems")
123     {
124         requestRoutesSystemsEventLogService(app);
125         if constexpr (BMCWEB_REDFISH_DBUS_LOG)
126         {
127             requestRoutesSystemsDBusEventLog(app);
128         }
129         else
130         {
131             requestRoutesSystemsJournalEventLog(app);
132         }
133     }
134 
135     if constexpr (BMCWEB_REDFISH_EVENTLOG_LOCATION == "managers")
136     {
137         requestRoutesManagersEventLogService(app);
138         if constexpr (BMCWEB_REDFISH_DBUS_LOG)
139         {
140             requestRoutesManagersDBusEventLog(app);
141         }
142         else
143         {
144             requestRoutesManagersJournalEventLog(app);
145         }
146     }
147 
148     if constexpr (BMCWEB_REDFISH_DUMP_LOG)
149     {
150         requestRoutesSystemDumpService(app);
151         requestRoutesSystemDumpEntryCollection(app);
152         requestRoutesSystemDumpEntry(app);
153         requestRoutesSystemDumpCreate(app);
154         requestRoutesSystemDumpClear(app);
155 
156         requestRoutesBMCDumpService(app);
157         requestRoutesBMCDumpEntryCollection(app);
158         requestRoutesBMCDumpEntry(app);
159         requestRoutesBMCDumpEntryDownload(app);
160         requestRoutesBMCDumpCreate(app);
161         requestRoutesBMCDumpClear(app);
162 
163         requestRoutesFaultLogDumpService(app);
164         requestRoutesFaultLogDumpEntryCollection(app);
165         requestRoutesFaultLogDumpEntry(app);
166         requestRoutesFaultLogDumpClear(app);
167     }
168 
169     if constexpr (BMCWEB_REDFISH_BMC_JOURNAL)
170     {
171         requestRoutesBMCJournalLogService(app);
172     }
173 
174     if constexpr (BMCWEB_REDFISH_CPU_LOG)
175     {
176         requestRoutesCrashdumpService(app);
177         requestRoutesCrashdumpEntryCollection(app);
178         requestRoutesCrashdumpEntry(app);
179         requestRoutesCrashdumpFile(app);
180         requestRoutesCrashdumpClear(app);
181         requestRoutesCrashdumpCollect(app);
182     }
183 
184     requestRoutesProcessor(app);
185     requestRoutesOperatingConfig(app);
186     requestRoutesMemory(app);
187 
188     requestRoutesSystems(app);
189 
190     requestRoutesBiosService(app);
191     requestRoutesBiosReset(app);
192 
193     if constexpr (BMCWEB_VM_NBDPROXY)
194     {
195         requestNBDVirtualMediaRoutes(app);
196     }
197 
198     if constexpr (BMCWEB_REDFISH_HOST_LOGGER)
199     {
200         requestRoutesSystemsLogServiceHostlogger(app);
201     }
202 
203     requestRoutesMessageRegistryFileCollection(app);
204     requestRoutesMessageRegistryFile(app);
205     requestRoutesMessageRegistry(app);
206 
207     requestRoutesCertificateService(app);
208     requestRoutesHTTPSCertificate(app);
209     requestRoutesLDAPCertificate(app);
210     requestRoutesTrustStoreCertificate(app);
211 
212     requestRoutesSystemPCIeFunctionCollection(app);
213     requestRoutesSystemPCIeFunction(app);
214     requestRoutesSystemPCIeDeviceCollection(app);
215     requestRoutesSystemPCIeDevice(app);
216 
217     requestRoutesSensorCollection(app);
218     requestRoutesSensor(app);
219 
220     requestRoutesTaskMonitor(app);
221     requestRoutesTaskService(app);
222     requestRoutesTaskCollection(app);
223     requestRoutesTask(app);
224     requestRoutesEventService(app);
225     requestRoutesEventServiceSse(app);
226     requestRoutesEventDestinationCollection(app);
227     requestRoutesEventDestination(app);
228     requestRoutesFabricAdapters(app);
229     requestRoutesFabricAdapterCollection(app);
230     requestRoutesFabricPort(app);
231     requestRoutesSubmitTestEvent(app);
232 
233     if constexpr (BMCWEB_HYPERVISOR_COMPUTER_SYSTEM)
234     {
235         requestRoutesHypervisorSystems(app);
236     }
237 
238     requestRoutesTelemetryService(app);
239     requestRoutesMetricReportDefinitionCollection(app);
240     requestRoutesMetricReportDefinition(app);
241     requestRoutesMetricReportCollection(app);
242     requestRoutesMetricReport(app);
243     requestRoutesTriggerCollection(app);
244     requestRoutesTrigger(app);
245 
246     // Note, this must be the last route registered
247     requestRoutesRedfish(app);
248 
249     requestRoutesOpenBmcManager(*this);
250 
251     validate();
252 }
253 
254 } // namespace redfish
255