Implement AggregationSourceCollection
This is an intermediate step in setting up aggregation sources. A
future patch will add aggregation sources based on the existence of
satellite configs. For now the collection will always return as 0
members.
Adds the AggregationSourceCollection schema which we previously
ignored.
Tested:
Service Validator passes
Signed-off-by: Carson Labrado <clabrado@google.com>
Change-Id: I65c9231289bf0a9b6392696d55bc3feb0023c694
diff --git a/redfish-core/lib/aggregation_service.hpp b/redfish-core/lib/aggregation_service.hpp
index e03047a..f0eb651 100644
--- a/redfish-core/lib/aggregation_service.hpp
+++ b/redfish-core/lib/aggregation_service.hpp
@@ -46,6 +46,8 @@
json["Name"] = "Aggregation Service";
json["Description"] = "Aggregation Service";
json["ServiceEnabled"] = true;
+ json["AggregationSources"]["@odata.id"] =
+ "/redfish/v1/AggregationService/AggregationSources";
}
inline void requestAggregationServiceRoutes(App& app)
@@ -60,4 +62,34 @@
std::bind_front(handleAggregationServiceGet, std::ref(app)));
}
+inline void handleAggregationSourcesGet(
+ App& app, const crow::Request& req,
+ const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
+{
+ if (!redfish::setUpRedfishRoute(app, req, asyncResp))
+ {
+ return;
+ }
+ asyncResp->res.addHeader(
+ boost::beast::http::field::link,
+ "</redfish/v1/JsonSchemas/AggregationSourceCollection/AggregationSourceCollection.json>; rel=describedby");
+ nlohmann::json& json = asyncResp->res.jsonValue;
+ json["@odata.id"] = "/redfish/v1/AggregationService/AggregationSources";
+ json["@odata.type"] =
+ "#AggregationSourceCollection.AggregationSourceCollection";
+ json["Name"] = "Aggregation Source Collection";
+ json["Members"] = nlohmann::json::array();
+ json["Members@odata.count"] = 0;
+
+ // TODO: Query D-Bus for satellite configs and add them to the Members array
+}
+
+inline void requestAggregationSourcesRoutes(App& app)
+{
+ BMCWEB_ROUTE(app, "/redfish/v1/AggregationService/AggregationSources/")
+ .privileges(redfish::privileges::getAggregationService)
+ .methods(boost::beast::http::verb::get)(
+ std::bind_front(handleAggregationSourcesGet, std::ref(app)));
+}
+
} // namespace redfish