summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreportnov <eportnov@ibs.ru>2022-09-08 14:39:01 +0300
committereportnov <eportnov@ibs.ru>2022-09-09 10:44:58 +0300
commit5989c4cfc2b2b2f56043cd45e26c07ba2d441de8 (patch)
treeba99eccb8e75b481f7e2ab62016b940f4ba5dffb
parentcef91b6e025c88d947d84d2fe2b59adeb1d7cde0 (diff)
downloadopenbmc-5989c4cfc2b2b2f56043cd45e26c07ba2d441de8.tar.xz
configure telemetry
# Conflicts: # meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend
-rw-r--r--meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb/0011-configure-telemetry.patch88
-rw-r--r--meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend1
-rw-r--r--meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/0004-configure-telemetry.patch121
-rw-r--r--meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry_%.bbappend27
4 files changed, 237 insertions, 0 deletions
diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb/0011-configure-telemetry.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb/0011-configure-telemetry.patch
new file mode 100644
index 0000000000..97bc6d6129
--- /dev/null
+++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb/0011-configure-telemetry.patch
@@ -0,0 +1,88 @@
+From 1920d507c28baa6ca9ec3de3694a2df218a4f265 Mon Sep 17 00:00:00 2001
+From: eportnov <eportnov@ibs.ru>
+Date: Thu, 8 Sep 2022 14:25:36 +0300
+Subject: [PATCH] configure telemetry
+
+---
+ include/dbus_utility.hpp | 1 +
+ redfish-core/lib/metric_report.hpp | 39 +++++++++++++++++++++++++-----
+ 2 files changed, 34 insertions(+), 6 deletions(-)
+
+diff --git a/include/dbus_utility.hpp b/include/dbus_utility.hpp
+index bd0d64bd..05adb1e6 100644
+--- a/include/dbus_utility.hpp
++++ b/include/dbus_utility.hpp
+@@ -62,6 +62,7 @@ using DbusVariantType = std::variant<
+ std::vector<uint16_t>,
+ sdbusplus::message::object_path,
+ std::tuple<uint64_t, std::vector<std::tuple<std::string, std::string, double, uint64_t>>>,
++ std::tuple<uint64_t, std::vector<std::tuple<std::string, double, uint64_t>>>,
+ std::vector<std::tuple<std::string, std::string>>,
+ std::vector<std::tuple<uint32_t, std::vector<uint32_t>>>,
+ std::vector<std::tuple<uint32_t, size_t>>,
+diff --git a/redfish-core/lib/metric_report.hpp b/redfish-core/lib/metric_report.hpp
+index 18830f13..b3f5721e 100644
+--- a/redfish-core/lib/metric_report.hpp
++++ b/redfish-core/lib/metric_report.hpp
+@@ -20,20 +20,47 @@ constexpr const char* metricReportUri =
+ "/redfish/v1/TelemetryService/MetricReports";
+
+ using Readings =
+- std::vector<std::tuple<std::string, std::string, double, uint64_t>>;
++ std::vector<std::tuple<std::string, double, uint64_t>>;
+ using TimestampReadings = std::tuple<uint64_t, Readings>;
+
++inline std::string GetCroppedTimeStamp(uint64_t timestamp)
++{
++ static constexpr char DOT_CHAR = '.';
++
++ auto timestamp_as_string = redfish::time_utils::getDateTimeUintMs(timestamp);
++ auto last_dot_position = timestamp_as_string.rfind(DOT_CHAR);
++ if(last_dot_position != std::string::npos)
++ {
++ timestamp_as_string.erase(last_dot_position);
++ }
++ return timestamp_as_string;
++}
++
++inline std::string GetCroppedValue(double value)
++{
++ static constexpr char DOT_CHAR = '.';
++ static constexpr size_t COUNT_NUMBER_AFTER_DOT = 1;
++
++ auto value_as_string = std::to_string(value);
++ auto last_dot_position = value_as_string.rfind(DOT_CHAR);
++ auto general_size = last_dot_position + COUNT_NUMBER_AFTER_DOT + sizeof(DOT_CHAR);
++ if(last_dot_position != std::string::npos && general_size <= value_as_string.length())
++ {
++ value_as_string.erase(general_size);
++ }
++ return value_as_string;
++}
++
+ inline nlohmann::json toMetricValues(const Readings& readings)
+ {
+ nlohmann::json metricValues = nlohmann::json::array_t();
+
+- for (const auto& [id, metadata, sensorValue, timestamp] : readings)
++ for (const auto& [metadata, sensorValue, timestamp] : readings)
+ {
+ metricValues.push_back({
+- {"MetricId", id},
+ {"MetricProperty", metadata},
+- {"MetricValue", std::to_string(sensorValue)},
+- {"Timestamp", redfish::time_utils::getDateTimeUintMs(timestamp)},
++ {"MetricValue", GetCroppedValue(sensorValue)},
++ {"Timestamp", GetCroppedTimeStamp(timestamp)},
+ });
+ }
+
+@@ -56,7 +83,7 @@ inline bool fillReport(nlohmann::json& json, const std::string& id,
+ .string();
+
+ const auto& [timestamp, readings] = timestampReadings;
+- json["Timestamp"] = redfish::time_utils::getDateTimeUintMs(timestamp);
++ json["Timestamp"] = GetCroppedTimeStamp(timestamp);
+ json["MetricValues"] = toMetricValues(readings);
+ return true;
+ }
diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend
index a6258f3f6e..e766ebdb44 100644
--- a/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend
+++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend
@@ -7,6 +7,7 @@ SRC_URI += "\
file://0007-Removed-non-working-boot-override-modes.patch \
file://0008-Add-pcie-device-names.patch \
file://0010-Add-smtp-client.patch \
+ file://0011-configure-telemetry.patch \
"
#SRC_URI += "\
diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/0004-configure-telemetry.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/0004-configure-telemetry.patch
new file mode 100644
index 0000000000..91b64d6e30
--- /dev/null
+++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/0004-configure-telemetry.patch
@@ -0,0 +1,121 @@
+From 00985aa2686a9277291b1fc744d78899a0e33807 Mon Sep 17 00:00:00 2001
+From: eportnov <eportnov@ibs.ru>
+Date: Thu, 8 Sep 2022 14:26:35 +0300
+Subject: [PATCH] configure telemetry
+
+---
+ meson_options.txt | 4 ++--
+ src/metric.cpp | 2 +-
+ src/metric_value.hpp | 1 -
+ src/report.cpp | 6 +++---
+ src/types/readings.hpp | 4 ++--
+ src/utils/dbus_path_utils.hpp | 2 +-
+ 6 files changed, 9 insertions(+), 10 deletions(-)
+
+diff --git a/meson_options.txt b/meson_options.txt
+index c8a46b8..0a50b7d 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,5 +1,5 @@
+ option('buildtest', type: 'boolean', value: true, description: 'Build tests')
+-option('max-reports', type: 'integer', min: 0, value: 10,
++option('max-reports', type: 'integer', min: 0, value: 20,
+ description: 'Max number of Reports')
+ option('max-reading-parameters', type: 'integer', min: 0, value: 200,
+ description: 'Max number of metric properties in single report')
+@@ -9,7 +9,7 @@ option('max-triggers', type: 'integer', min: 0, value: 10,
+ description: 'Max number of Triggers')
+ option('max-dbus-path-length', type: 'integer', min: 256, value: 4095,
+ description: 'Max length of dbus object path')
+-option('max-append-limit', type: 'integer', min: 0, value: 256,
++option('max-append-limit', type: 'integer', min: 0, value: 2147483647,
+ description: 'Max AppendLimit value')
+ option('max-id-name-length', type: 'integer', min: 32, value: 256,
+ description: 'Max length of any "id" or "name" type field.')
+diff --git a/src/metric.cpp b/src/metric.cpp
+index d6b62d8..48fb7a7 100644
+--- a/src/metric.cpp
++++ b/src/metric.cpp
+@@ -81,7 +81,7 @@ const std::vector<MetricValue>& Metric::getUpdatedReadings()
+ i = idx;
+ }
+
+- readings.emplace_back(id, sensors[i]->metadata(), *value,
++ readings.emplace_back(sensors[i]->metadata(), *value,
+ systemTimestamp);
+ }
+ }
+diff --git a/src/metric_value.hpp b/src/metric_value.hpp
+index d01ac4e..9dfc6ac 100644
+--- a/src/metric_value.hpp
++++ b/src/metric_value.hpp
+@@ -5,7 +5,6 @@
+
+ struct MetricValue
+ {
+- std::string id;
+ std::string metadata;
+ double value;
+ uint64_t timestamp;
+diff --git a/src/report.cpp b/src/report.cpp
+index 9ee60a4..624bdbc 100644
+--- a/src/report.cpp
++++ b/src/report.cpp
+@@ -461,7 +461,7 @@ void Report::scheduleTimerForPeriodicReport(Milliseconds timerInterval)
+
+ void Report::scheduleTimerForOnChangeReport()
+ {
+- constexpr Milliseconds timerInterval{100};
++ constexpr Milliseconds timerInterval{10000};
+
+ timer.expires_after(timerInterval);
+ timer.async_wait([this](boost::system::error_code ec) {
+@@ -489,7 +489,7 @@ void Report::updateReadings()
+ break;
+ }
+
+- for (const auto& [id, metadata, value, timestamp] :
++ for (const auto& [metadata, value, timestamp] :
+ metric->getUpdatedReadings())
+ {
+ if (reportUpdates == ReportUpdates::appendStopsWhenFull &&
+@@ -499,7 +499,7 @@ void Report::updateReadings()
+ reportIface->signal_property("Enabled");
+ break;
+ }
+- readingsBuffer.emplace(id, metadata, value, timestamp);
++ readingsBuffer.emplace(metadata, value, timestamp);
+ }
+ }
+
+diff --git a/src/types/readings.hpp b/src/types/readings.hpp
+index 6749bbf..74566eb 100644
+--- a/src/types/readings.hpp
++++ b/src/types/readings.hpp
+@@ -3,11 +3,11 @@
+ #include "utils/labeled_tuple.hpp"
+ #include "utils/tstring.hpp"
+
+-using ReadingData = std::tuple<std::string, std::string, double, uint64_t>;
++using ReadingData = std::tuple<std::string, double, uint64_t>;
+ using Readings = std::tuple<uint64_t, std::vector<ReadingData>>;
+
+ using LabeledReadingData =
+- utils::LabeledTuple<ReadingData, utils::tstring::MetricId,
++ utils::LabeledTuple<ReadingData,
+ utils::tstring::MetricProperty,
+ utils::tstring::MetricValue, utils::tstring::Timestamp>;
+
+diff --git a/src/utils/dbus_path_utils.hpp b/src/utils/dbus_path_utils.hpp
+index 3798d98..d0e1d24 100644
+--- a/src/utils/dbus_path_utils.hpp
++++ b/src/utils/dbus_path_utils.hpp
+@@ -14,7 +14,7 @@ namespace constants
+ constexpr std::string_view triggerDirStr =
+ "/xyz/openbmc_project/Telemetry/Triggers/";
+ constexpr std::string_view reportDirStr =
+- "/xyz/openbmc_project/Telemetry/Reports/";
++ "/xyz/openbmc_project/Telemetry/Reports/TelemetryService";
+
+ constexpr std::string_view allowedCharactersInPath =
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_/";
diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry_%.bbappend
index 5119a9566b..e0169070a1 100644
--- a/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry_%.bbappend
+++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry_%.bbappend
@@ -29,3 +29,30 @@ FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
# cp ${WORKDIR}/3017361610 ${D}/var/lib/telemetry/Reports
# cp ${WORKDIR}/3017361611 ${D}/var/lib/telemetry/Reports
#}
+SRC_URI += "file://3017361602 \
+ file://3017361603 \
+ file://3017361604 \
+ file://3017361605 \
+ file://3017361606 \
+ file://3017361607 \
+ file://3017361608 \
+ file://3017361609 \
+ file://3017361610 \
+ file://3017361611 \
+ file://0004-configure-telemetry.patch \
+ "
+
+do_install:append() {
+ install -d ${D}/var/lib/telemetry/Reports
+
+ install -m 0744 ${WORKDIR}/3017361602 ${D}/var/lib/telemetry/Reports
+ install -m 0744 ${WORKDIR}/3017361603 ${D}/var/lib/telemetry/Reports
+ install -m 0744 ${WORKDIR}/3017361604 ${D}/var/lib/telemetry/Reports
+ install -m 0744 ${WORKDIR}/3017361605 ${D}/var/lib/telemetry/Reports
+ install -m 0744 ${WORKDIR}/3017361606 ${D}/var/lib/telemetry/Reports
+ install -m 0744 ${WORKDIR}/3017361607 ${D}/var/lib/telemetry/Reports
+ install -m 0744 ${WORKDIR}/3017361608 ${D}/var/lib/telemetry/Reports
+ install -m 0744 ${WORKDIR}/3017361609 ${D}/var/lib/telemetry/Reports
+ install -m 0744 ${WORKDIR}/3017361610 ${D}/var/lib/telemetry/Reports
+ install -m 0744 ${WORKDIR}/3017361611 ${D}/var/lib/telemetry/Reports
+}