diff options
author | eportnov <eportnov@ibs.ru> | 2022-09-08 14:39:01 +0300 |
---|---|---|
committer | eportnov <eportnov@ibs.ru> | 2022-09-09 10:44:58 +0300 |
commit | 5989c4cfc2b2b2f56043cd45e26c07ba2d441de8 (patch) | |
tree | ba99eccb8e75b481f7e2ab62016b940f4ba5dffb | |
parent | cef91b6e025c88d947d84d2fe2b59adeb1d7cde0 (diff) | |
download | openbmc-5989c4cfc2b2b2f56043cd45e26c07ba2d441de8.tar.xz |
configure telemetry
# Conflicts:
# meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend
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 +} |