diff options
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry')
7 files changed, 53 insertions, 139 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0005-Add-DELETE-method-for-MetricReport.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0005-Add-DELETE-method-for-MetricReport.patch deleted file mode 100644 index aabe500f5..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0005-Add-DELETE-method-for-MetricReport.patch +++ /dev/null @@ -1,132 +0,0 @@ -From 4cf883dba6e16c56d04dbd092d30c9a13d5a5eb4 Mon Sep 17 00:00:00 2001 -From: Lukasz Kazmierczak <lukasz.kazmierczak@intel.com> -Date: Fri, 6 Aug 2021 15:15:17 +0200 -Subject: [PATCH] Add DELETE method for MetricReport - -Added DELETE method for removing Reports by using MetricReports uri; -metric_report.hpp and metric_report_definition.hpp files are sharing -now common lambda function for DELETE operations - -Tested on QEMU: -- Added Reports and requested from bmcweb to delete them via - /redfish/v1/TelemetryService/MetricReports/<reportname> or via - /redfish/v1/TelemetryService/MetricReportDefinitions/<reportname> -- Added two different reports via POST, deleted first of them via - MetricReports DELETE, checked by MetricReports GET if list of reports - contain only second report, deleted second report via MetricReports - DELETE and checked by MetricReports GET if list of reports is empty -- Same as one above but using MetricReportDefinitions DELETE and GET - -Signed-off-by: Lukasz Kazmierczak <lukasz.kazmierczak@intel.com> -Change-Id: I151bad363dcabd57246eb10b501abd24107b937e ---- - .../include/utils/telemetry_utils.hpp | 35 +++++++++++++++++++ - redfish-core/lib/metric_report.hpp | 4 +++ - redfish-core/lib/metric_report_definition.hpp | 34 +----------------- - 3 files changed, 40 insertions(+), 33 deletions(-) - -diff --git a/redfish-core/include/utils/telemetry_utils.hpp b/redfish-core/include/utils/telemetry_utils.hpp -index 5872350..743585f 100644 ---- a/redfish-core/include/utils/telemetry_utils.hpp -+++ b/redfish-core/include/utils/telemetry_utils.hpp -@@ -70,5 +70,40 @@ inline std::string getDbusReportPath(const std::string& id) - return path; - } - -+inline std::function<void(const crow::Request&, -+ const std::shared_ptr<bmcweb::AsyncResp>&, -+ const std::string&)> -+ getMetricReportDeleteHandler(const std::string& type) -+{ -+ return [type](const crow::Request&, -+ const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, -+ const std::string& id) { -+ const std::string reportPath = getDbusReportPath(id); -+ -+ crow::connections::systemBus->async_method_call( -+ [asyncResp, type, id](const boost::system::error_code ec) { -+ /* -+ * boost::system::errc and std::errc are missing value -+ * for EBADR error that is defined in Linux. -+ */ -+ if (ec.value() == EBADR) -+ { -+ messages::resourceNotFound(asyncResp->res, type, id); -+ return; -+ } -+ -+ if (ec) -+ { -+ BMCWEB_LOG_ERROR << "respHandler DBus error " << ec; -+ messages::internalError(asyncResp->res); -+ return; -+ } -+ -+ asyncResp->res.result(boost::beast::http::status::no_content); -+ }, -+ service, reportPath, "xyz.openbmc_project.Object.Delete", "Delete"); -+ }; -+} -+ - } // namespace telemetry - } // namespace redfish -diff --git a/redfish-core/lib/metric_report.hpp b/redfish-core/lib/metric_report.hpp -index 63c8c19..60ce74e 100644 ---- a/redfish-core/lib/metric_report.hpp -+++ b/redfish-core/lib/metric_report.hpp -@@ -127,5 +127,9 @@ inline void requestRoutesMetricReport(App& app) - telemetry::service, reportPath, telemetry::reportInterface, - "Update"); - }); -+ BMCWEB_ROUTE(app, "/redfish/v1/TelemetryService/MetricReports/<str>/") -+ .privileges(redfish::privileges::deleteMetricReport) -+ .methods(boost::beast::http::verb::delete_)( -+ telemetry::getMetricReportDeleteHandler("MetricReports")); - } - } // namespace redfish -diff --git a/redfish-core/lib/metric_report_definition.hpp b/redfish-core/lib/metric_report_definition.hpp -index a0c4f1d..e0505e5 100644 ---- a/redfish-core/lib/metric_report_definition.hpp -+++ b/redfish-core/lib/metric_report_definition.hpp -@@ -450,38 +450,6 @@ inline void requestRoutesMetricReportDefinition(App& app) - "/redfish/v1/TelemetryService/MetricReportDefinitions/<str>/") - .privileges(redfish::privileges::deleteMetricReportDefinitionCollection) - .methods(boost::beast::http::verb::delete_)( -- [](const crow::Request&, -- const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, -- const std::string& id) -- -- { -- const std::string reportPath = telemetry::getDbusReportPath(id); -- -- crow::connections::systemBus->async_method_call( -- [asyncResp, id](const boost::system::error_code ec) { -- /* -- * boost::system::errc and std::errc are missing value -- * for EBADR error that is defined in Linux. -- */ -- if (ec.value() == EBADR) -- { -- messages::resourceNotFound( -- asyncResp->res, "MetricReportDefinition", id); -- return; -- } -- -- if (ec) -- { -- BMCWEB_LOG_ERROR << "respHandler DBus error " << ec; -- messages::internalError(asyncResp->res); -- return; -- } -- -- asyncResp->res.result( -- boost::beast::http::status::no_content); -- }, -- telemetry::service, reportPath, -- "xyz.openbmc_project.Object.Delete", "Delete"); -- }); -+ telemetry::getMetricReportDeleteHandler("MetricReportDefinition")); - } - } // namespace redfish --- -2.25.1 diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0006-Add-GET-method-for-TriggerCollection.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0005-Add-GET-method-for-TriggerCollection.patch index 0646aba5c..0646aba5c 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0006-Add-GET-method-for-TriggerCollection.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0005-Add-GET-method-for-TriggerCollection.patch diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0007-Revert-Remove-LogService-from-TelemetryService.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0006-Revert-Remove-LogService-from-TelemetryService.patch index 987a43b4c..987a43b4c 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0007-Revert-Remove-LogService-from-TelemetryService.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0006-Revert-Remove-LogService-from-TelemetryService.patch diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0008-event-service-fix-added-Context-field-to-response.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0007-event-service-fix-added-Context-field-to-response.patch index ffab743f6..ffab743f6 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0008-event-service-fix-added-Context-field-to-response.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0007-event-service-fix-added-Context-field-to-response.patch diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0009-Generalize-ReadingType-in-MetricDefinition.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0008-Generalize-ReadingType-in-MetricDefinition.patch index bd6e64346..bd6e64346 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0009-Generalize-ReadingType-in-MetricDefinition.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0008-Generalize-ReadingType-in-MetricDefinition.patch diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0009-Add-support-for-deleting-terminated-subscriptions.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0009-Add-support-for-deleting-terminated-subscriptions.patch new file mode 100644 index 000000000..548e3d9c6 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/0009-Add-support-for-deleting-terminated-subscriptions.patch @@ -0,0 +1,46 @@ +From ef83a4fb14648edc6c8370363ff88fb6f060a43b Mon Sep 17 00:00:00 2001 +From: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com> +Date: Mon, 20 Sep 2021 21:55:57 +0530 +Subject: [PATCH] Add support for deleting terminated subscriptions + +Added functionality to delete/remove event subscription(s) which are +configured to Terminate after retries. + +Currently, when an Event is subscribed with Retry Policy as +"TerminateAfterRetries", the state of the connection is set to +"Terminated" after retrying, but the Subscription is not removed. +This commit adds the functionality to detect terminated connection and +remove the respective subscription. + +This commit adds this check for metric reports. + +Tested: + - Created a Subscription with + DeliveryRetryPolicy: "TerminateAfterRetries" + - Received Events successfully on Event listener + - Once the Event listener was stopped, the Subscription was + removed/deleted after retries. + +Change-Id: I3cb0af5bc24411cddcdb3d1d9de25e8e9144106c +Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com> +--- + redfish-core/include/event_service_manager.hpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp +index c9e2812..c2fefb3 100644 +--- a/redfish-core/include/event_service_manager.hpp ++++ b/redfish-core/include/event_service_manager.hpp +@@ -1535,6 +1535,9 @@ class EventServiceManager + + std::variant<telemetry::TimestampReadings>& readings = + found->second; ++ ++ this->deleteTerminatedSubcriptions(); ++ + for (const auto& it : + EventServiceManager::getInstance().subscriptionsMap) + { +-- +2.17.1 + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/README b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/README index 8dab07e2b..fd88e9e18 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/README +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/telemetry/README @@ -14,17 +14,17 @@ Current revisions: - Add support for MetricDefinition property in MetricReport https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/44512/9 -- Add DELETE method for MetricReport - https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/45688/5 - - Add GET method for TriggerCollection - file://telemetry/0006-Add-GET-method-for-TriggerCollection.patch + file://telemetry/0005-Add-GET-method-for-TriggerCollection.patch - LogService field, actual implementation will be upstreamed with triggers feature - file://telemetry/0007-Revert-Remove-LogService-from-TelemetryService.patch + file://telemetry/0006-Revert-Remove-LogService-from-TelemetryService.patch - Event service fix for Context field - file://telemetry/0008-event-service-fix-added-Context-field-to-response.patch + file://telemetry/0007-event-service-fix-added-Context-field-to-response.patch - Generalize ReadingType in MetricDefinition - file://telemetry/0009-Generalize-ReadingType-in-MetricDefinition.patch + file://telemetry/0008-Generalize-ReadingType-in-MetricDefinition.patch + +- Add support for deleting terminated subscriptions + file://telemetry/0009-Add-support-for-deleting-terminated-subscriptions.patch |