Move common structures
It's ideal if the various BMCWEB_ROUTE lib calls do not call from one
another. This reduces the amount of code that's compiled each time
separately.
Tested: Code compiles.
Change-Id: I4822ce66c122f261cc6aa34bbd99371b7eff48c8
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 31ee12a..566b3ad 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -12,11 +12,11 @@
#include "filesystem_log_watcher.hpp"
#include "io_context_singleton.hpp"
#include "logging.hpp"
-#include "metric_report.hpp"
#include "ossl_random.hpp"
#include "persistent_data.hpp"
#include "server_sent_event.hpp"
#include "subscription.hpp"
+#include "telemetry_readings.hpp"
#include "utils/time_utils.hpp"
#include <boost/circular_buffer.hpp>
diff --git a/redfish-core/include/subscription.hpp b/redfish-core/include/subscription.hpp
index 7fe2fdc..f4fb5e5 100644
--- a/redfish-core/include/subscription.hpp
+++ b/redfish-core/include/subscription.hpp
@@ -8,8 +8,8 @@
#include "filter_expr_parser_ast.hpp"
#include "http_client.hpp"
#include "http_response.hpp"
-#include "metric_report.hpp"
#include "server_sent_event.hpp"
+#include "telemetry_readings.hpp"
#include <boost/asio/io_context.hpp>
#include <boost/asio/steady_timer.hpp>
diff --git a/redfish-core/include/telemetry_readings.hpp b/redfish-core/include/telemetry_readings.hpp
new file mode 100644
index 0000000..492dff9
--- /dev/null
+++ b/redfish-core/include/telemetry_readings.hpp
@@ -0,0 +1,59 @@
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-FileCopyrightText: Copyright OpenBMC Authors
+
+#pragma once
+
+#include "utils/time_utils.hpp"
+
+#include <boost/url/format.hpp>
+#include <nlohmann/json.hpp>
+
+#include <cstdint>
+#include <string>
+#include <tuple>
+#include <vector>
+
+namespace redfish
+{
+namespace telemetry
+{
+
+using Readings = std::vector<std::tuple<std::string, double, uint64_t>>;
+using TimestampReadings = std::tuple<uint64_t, Readings>;
+
+inline nlohmann::json toMetricValues(const Readings& readings)
+{
+ nlohmann::json metricValues = nlohmann::json::array_t();
+
+ for (const auto& [metadata, sensorValue, timestamp] : readings)
+ {
+ nlohmann::json::object_t metricReport;
+ metricReport["MetricProperty"] = metadata;
+ metricReport["MetricValue"] = std::to_string(sensorValue);
+ metricReport["Timestamp"] =
+ redfish::time_utils::getDateTimeUintMs(timestamp);
+ metricValues.emplace_back(std::move(metricReport));
+ }
+
+ return metricValues;
+}
+
+inline bool fillReport(nlohmann::json& json, const std::string& id,
+ const TimestampReadings& timestampReadings)
+{
+ json["@odata.type"] = "#MetricReport.v1_3_0.MetricReport";
+ json["@odata.id"] = boost::urls::format(
+ "/redfish/v1/TelemetryService/MetricReports/{}", id);
+ json["Id"] = id;
+ json["Name"] = id;
+ json["MetricReportDefinition"]["@odata.id"] = boost::urls::format(
+ "/redfish/v1/TelemetryService/MetricReportDefinitions/{}", id);
+
+ const auto& [timestamp, readings] = timestampReadings;
+ json["Timestamp"] = redfish::time_utils::getDateTimeUintMs(timestamp);
+ json["MetricValues"] = toMetricValues(readings);
+ return true;
+}
+
+} // namespace telemetry
+} // namespace redfish
diff --git a/redfish-core/lib/metric_report.hpp b/redfish-core/lib/metric_report.hpp
index 4814059..6aeadfb 100644
--- a/redfish-core/lib/metric_report.hpp
+++ b/redfish-core/lib/metric_report.hpp
@@ -11,9 +11,9 @@
#include "logging.hpp"
#include "query.hpp"
#include "registries/privilege_registry.hpp"
+#include "telemetry_readings.hpp"
#include "utils/collection.hpp"
#include "utils/telemetry_utils.hpp"
-#include "utils/time_utils.hpp"
#include <asm-generic/errno.h>
@@ -28,54 +28,11 @@
#include <memory>
#include <string>
#include <string_view>
-#include <tuple>
#include <utility>
-#include <vector>
namespace redfish
{
-namespace telemetry
-{
-
-using Readings = std::vector<std::tuple<std::string, double, uint64_t>>;
-using TimestampReadings = std::tuple<uint64_t, Readings>;
-
-inline nlohmann::json toMetricValues(const Readings& readings)
-{
- nlohmann::json metricValues = nlohmann::json::array_t();
-
- for (const auto& [metadata, sensorValue, timestamp] : readings)
- {
- nlohmann::json::object_t metricReport;
- metricReport["MetricProperty"] = metadata;
- metricReport["MetricValue"] = std::to_string(sensorValue);
- metricReport["Timestamp"] =
- redfish::time_utils::getDateTimeUintMs(timestamp);
- metricValues.emplace_back(std::move(metricReport));
- }
-
- return metricValues;
-}
-
-inline bool fillReport(nlohmann::json& json, const std::string& id,
- const TimestampReadings& timestampReadings)
-{
- json["@odata.type"] = "#MetricReport.v1_3_0.MetricReport";
- json["@odata.id"] = boost::urls::format(
- "/redfish/v1/TelemetryService/MetricReports/{}", id);
- json["Id"] = id;
- json["Name"] = id;
- json["MetricReportDefinition"]["@odata.id"] = boost::urls::format(
- "/redfish/v1/TelemetryService/MetricReportDefinitions/{}", id);
-
- const auto& [timestamp, readings] = timestampReadings;
- json["Timestamp"] = redfish::time_utils::getDateTimeUintMs(timestamp);
- json["MetricValues"] = toMetricValues(readings);
- return true;
-}
-} // namespace telemetry
-
inline void requestRoutesMetricReportCollection(App& app)
{
BMCWEB_ROUTE(app, "/redfish/v1/TelemetryService/MetricReports/")
diff --git a/redfish-core/src/dbus_log_watcher.cpp b/redfish-core/src/dbus_log_watcher.cpp
index c6ca381..4418bb4 100644
--- a/redfish-core/src/dbus_log_watcher.cpp
+++ b/redfish-core/src/dbus_log_watcher.cpp
@@ -5,7 +5,7 @@
#include "event_logs_object_type.hpp"
#include "event_service_manager.hpp"
#include "logging.hpp"
-#include "metric_report.hpp"
+#include "telemetry_readings.hpp"
#include "utils/dbus_event_log_entry.hpp"
#include "utils/time_utils.hpp"
diff --git a/redfish-core/src/subscription.cpp b/redfish-core/src/subscription.cpp
index 48e9c2c..69836a8 100644
--- a/redfish-core/src/subscription.cpp
+++ b/redfish-core/src/subscription.cpp
@@ -13,9 +13,9 @@
#include "http_client.hpp"
#include "http_response.hpp"
#include "logging.hpp"
-#include "metric_report.hpp"
#include "server_sent_event.hpp"
#include "ssl_key_handler.hpp"
+#include "telemetry_readings.hpp"
#include "utils/time_utils.hpp"
#include <boost/asio/error.hpp>