Add GET method for TriggerCollection
Added GET method for retrieving list of Triggers from Telemetry service
Tested:
- Added single Trigger and requested result from bmcweb via
/redfish/v1/TelemetryService/Triggers
- Added multiple Triggers numeric and discrete, and requested results
from bmcweb via /redfish/v1/TelemetryService/Triggers
- Verified uri /redfish/v1/TelemetryService/Triggers by using
Redfish-Service-Validator with no Triggers/empty Collection (passed)
Signed-off-by: Lukasz Kazmierczak <lukasz.kazmierczak@intel.com>
Change-Id: Ide00eb44901ea1b97b80fc5c5ddfd97e393d4a04
diff --git a/Redfish.md b/Redfish.md
index 4fc3776..f96cbbf 100644
--- a/Redfish.md
+++ b/Redfish.md
@@ -689,6 +689,7 @@
- MetricReports
- MinCollectionInterval
- Status
+- Triggers
#### /redfish/v1/TelemetryService/MetricReportDefinitions/
##### MetricReportDefinitionCollection
@@ -700,6 +701,11 @@
- Members
- Members@odata.count
+#### /redfish/v1/TelemetryService/Triggers/
+##### TriggersCollection
+- Members
+- Members@odata.count
+
#### /redfish/v1/UpdateService/
##### UpdateService
- Actions
diff --git a/redfish-core/include/redfish.hpp b/redfish-core/include/redfish.hpp
index 2479332..e56996d 100644
--- a/redfish-core/include/redfish.hpp
+++ b/redfish-core/include/redfish.hpp
@@ -41,6 +41,7 @@
#include "../lib/task.hpp"
#include "../lib/telemetry_service.hpp"
#include "../lib/thermal.hpp"
+#include "../lib/trigger.hpp"
#include "../lib/update_service.hpp"
#include "../lib/virtual_media.hpp"
@@ -206,6 +207,7 @@
requestRoutesMetricReportDefinition(app);
requestRoutesMetricReportCollection(app);
requestRoutesMetricReport(app);
+ requestRoutesTriggerCollection(app);
}
};
diff --git a/redfish-core/include/utils/telemetry_utils.hpp b/redfish-core/include/utils/telemetry_utils.hpp
index 76ffe96..c16cc89 100644
--- a/redfish-core/include/utils/telemetry_utils.hpp
+++ b/redfish-core/include/utils/telemetry_utils.hpp
@@ -7,7 +7,6 @@
namespace telemetry
{
-
constexpr const char* service = "xyz.openbmc_project.Telemetry";
constexpr const char* reportInterface = "xyz.openbmc_project.Telemetry.Report";
constexpr const char* metricReportDefinitionUri =
diff --git a/redfish-core/lib/telemetry_service.hpp b/redfish-core/lib/telemetry_service.hpp
index 8ecc591..b79a5cd 100644
--- a/redfish-core/lib/telemetry_service.hpp
+++ b/redfish-core/lib/telemetry_service.hpp
@@ -23,6 +23,8 @@
"/redfish/v1/TelemetryService/MetricReportDefinitions";
asyncResp->res.jsonValue["MetricReports"]["@odata.id"] =
"/redfish/v1/TelemetryService/MetricReports";
+ asyncResp->res.jsonValue["Triggers"]["@odata.id"] =
+ "/redfish/v1/TelemetryService/Triggers";
crow::connections::systemBus->async_method_call(
[asyncResp](const boost::system::error_code ec,
diff --git a/redfish-core/lib/trigger.hpp b/redfish-core/lib/trigger.hpp
new file mode 100644
index 0000000..bbe0887
--- /dev/null
+++ b/redfish-core/lib/trigger.hpp
@@ -0,0 +1,39 @@
+#pragma once
+
+#include "utils/collection.hpp"
+#include "utils/telemetry_utils.hpp"
+
+#include <app.hpp>
+#include <registries/privilege_registry.hpp>
+
+namespace redfish
+{
+namespace telemetry
+{
+constexpr const char* triggerInterface =
+ "xyz.openbmc_project.Telemetry.Trigger";
+constexpr const char* triggerUri = "/redfish/v1/TelemetryService/Triggers";
+
+} // namespace telemetry
+
+inline void requestRoutesTriggerCollection(App& app)
+{
+ BMCWEB_ROUTE(app, "/redfish/v1/TelemetryService/Triggers/")
+ .privileges(redfish::privileges::getTriggersCollection)
+ .methods(boost::beast::http::verb::get)(
+ [](const crow::Request&,
+ const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
+ asyncResp->res.jsonValue["@odata.type"] =
+ "#TriggersCollection.TriggersCollection";
+ asyncResp->res.jsonValue["@odata.id"] =
+ "/redfish/v1/TelemetryService/Triggers";
+ asyncResp->res.jsonValue["Name"] = "Triggers Collection";
+ const std::vector<const char*> interfaces{
+ telemetry::triggerInterface};
+ collection_util::getCollectionMembers(
+ asyncResp, telemetry::triggerUri, interfaces,
+ "/xyz/openbmc_project/Telemetry/Triggers/TelemetryService");
+ });
+}
+
+} // namespace redfish
diff --git a/scripts/update_schemas.py b/scripts/update_schemas.py
index 903afb7..63b441e 100755
--- a/scripts/update_schemas.py
+++ b/scripts/update_schemas.py
@@ -93,6 +93,7 @@
'TaskService',
'TelemetryService',
'Thermal',
+ 'TriggersCollection',
'UpdateService',
'VLanNetworkInterfaceCollection',
'VLanNetworkInterface',
diff --git a/static/redfish/v1/$metadata/index.xml b/static/redfish/v1/$metadata/index.xml
index f936591..4750602 100644
--- a/static/redfish/v1/$metadata/index.xml
+++ b/static/redfish/v1/$metadata/index.xml
@@ -2344,6 +2344,9 @@
<edmx:Include Namespace="Thermal.v1_7_0"/>
<edmx:Include Namespace="Thermal.v1_7_1"/>
</edmx:Reference>
+ <edmx:Reference Uri="/redfish/v1/schema/TriggersCollection_v1.xml">
+ <edmx:Include Namespace="TriggersCollection"/>
+ </edmx:Reference>
<edmx:Reference Uri="/redfish/v1/schema/UpdateService_v1.xml">
<edmx:Include Namespace="UpdateService"/>
<edmx:Include Namespace="UpdateService.v1_0_0"/>
diff --git a/static/redfish/v1/schema/TriggersCollection_v1.xml b/static/redfish/v1/schema/TriggersCollection_v1.xml
new file mode 100644
index 0000000..399bebd
--- /dev/null
+++ b/static/redfish/v1/schema/TriggersCollection_v1.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!---->
+<!--################################################################################ -->
+<!--# Redfish Schema: TriggerSetCollection -->
+<!--# -->
+<!--# For a detailed change log, see the README file contained in the DSP8010 bundle, -->
+<!--# available at http://www.dmtf.org/standards/redfish -->
+<!--# Copyright 2014-2021 DMTF. -->
+<!--# For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright -->
+<!--################################################################################ -->
+<!---->
+<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
+
+ <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Core.V1.xml">
+ <edmx:Include Namespace="Org.OData.Core.V1" Alias="OData"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Capabilities.V1.xml">
+ <edmx:Include Namespace="Org.OData.Capabilities.V1" Alias="Capabilities"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Resource_v1.xml">
+ <edmx:Include Namespace="Resource.v1_0_0"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/RedfishExtensions_v1.xml">
+ <edmx:Include Namespace="RedfishExtensions.v1_0_0" Alias="Redfish"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Triggers_v1.xml">
+ <edmx:Include Namespace="Triggers"/>
+ </edmx:Reference>
+
+ <edmx:DataServices>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="TriggersCollection">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+
+ <EntityType Name="TriggersCollection" BaseType="Resource.v1_0_0.ResourceCollection">
+ <Annotation Term="OData.Description" String="The collection of Triggers resource instances."/>
+ <Annotation Term="OData.LongDescription" String="This resource shall represent a resource collection of Triggers instances for a Redfish implementation."/>
+ <Annotation Term="Capabilities.InsertRestrictions">
+ <Record>
+ <PropertyValue Property="Insertable" Bool="true"/>
+ <Annotation Term="OData.Description" String="Create triggers through a POST to the trigger collection."/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Capabilities.UpdateRestrictions">
+ <Record>
+ <PropertyValue Property="Updatable" Bool="false"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Capabilities.DeleteRestrictions">
+ <Record>
+ <PropertyValue Property="Deletable" Bool="false"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Redfish.Uris">
+ <Collection>
+ <String>/redfish/v1/TelemetryService/Triggers</String>
+ </Collection>
+ </Annotation>
+ <NavigationProperty Name="Members" Type="Collection(Triggers.Triggers)">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
+ <Annotation Term="OData.Description" String="The members of this collection."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain an array of links to the members of this collection."/>
+ <Annotation Term="OData.AutoExpandReferences"/>
+ <Annotation Term="Redfish.Required"/>
+ </NavigationProperty>
+ </EntityType>
+
+ </Schema>
+ </edmx:DataServices>
+</edmx:Edmx>