Modify Trigger dbus api
'AddTrigger' method is now using array of strings for actions instead
of boolean flags. The action names are following:
- 'UpdateReport' (same as old flag)
- 'LogToLogService' (old 'LogToJournal' flag)
- 'RedfishEvent' (old 'LogToRedfish' flag)
Additionally, isDiscrete flag was removed from 'AddTrigger' call, as
this value can be extracted depending on threshold.
As a result new 'AddTrigger" signature is: "sasa{os}asv"
Example call parameters:
- TestTrigger 1 UpdateReport 0 0 "a(stsd)" 1 LowerWarning 1000
Either 42.7'
- TestTrigger 2 UpdateReport RedfishEvent 0 0 "a(ssts)" 1 userId_1
Warning 10 15.2'
'Trigger' properties were also modified. Instead of action bool
properties (same as mentioned above), new property was introduced
'TriggerActions' - which has same values as those used in 'AddTrigger'
method. This also affects persistence: store/load functionality was
modified accordingly.
As a side change - isDiscrete is no longer stored, as this can be easily
recreated in the runtime.
Tested:
- Trigger was successfully created using dbus.
- busctl introspect was called on test trigger and properties are
modified and working as intended.
- persistency mechanic is working propetly.
Signed-off-by: Szymon Dompke <szymon.dompke@intel.com>
Change-Id: Icd64d4032fd6d446d9b6ad248e28e9031af1fed7
diff --git a/src/interfaces/trigger_factory.hpp b/src/interfaces/trigger_factory.hpp
index a9eb55b..7a39aeb 100644
--- a/src/interfaces/trigger_factory.hpp
+++ b/src/interfaces/trigger_factory.hpp
@@ -20,8 +20,7 @@
virtual ~TriggerFactory() = default;
virtual std::unique_ptr<interfaces::Trigger> make(
- const std::string& name, bool isDiscrete, bool logToJournal,
- bool logToRedfish, bool updateReport,
+ const std::string& name, const std::vector<std::string>& triggerActions,
const std::vector<std::string>& reportNames,
interfaces::TriggerManager& triggerManager,
interfaces::JsonStorage& triggerStorage,
diff --git a/src/trigger.cpp b/src/trigger.cpp
index d6ee3be..92e1472 100644
--- a/src/trigger.cpp
+++ b/src/trigger.cpp
@@ -10,19 +10,16 @@
Trigger::Trigger(
boost::asio::io_context& ioc,
const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
- const std::string& nameIn, const bool isDiscreteIn,
- const bool logToJournalIn, const bool logToRedfishIn,
- const bool updateReportIn, const std::vector<std::string>& reportNamesIn,
+ const std::string& nameIn, const std::vector<std::string>& triggerActionsIn,
+ const std::vector<std::string>& reportNamesIn,
const std::vector<LabeledSensorInfo>& LabeledSensorsInfoIn,
const LabeledTriggerThresholdParams& labeledThresholdParamsIn,
std::vector<std::shared_ptr<interfaces::Threshold>>&& thresholdsIn,
interfaces::TriggerManager& triggerManager,
interfaces::JsonStorage& triggerStorageIn) :
name(nameIn),
- isDiscrete(isDiscreteIn), logToJournal(logToJournalIn),
- logToRedfish(logToRedfishIn), updateReport(updateReportIn),
- path(triggerDir + name), reportNames(reportNamesIn),
- labeledSensorsInfo(LabeledSensorsInfoIn),
+ triggerActions(std::move(triggerActionsIn)), path(triggerDir + name),
+ reportNames(reportNamesIn), labeledSensorsInfo(LabeledSensorsInfoIn),
labeledThresholdParams(labeledThresholdParamsIn),
thresholds(std::move(thresholdsIn)),
fileName(std::to_string(std::hash<std::string>{}(name))),
@@ -42,9 +39,7 @@
});
triggerIface = objServer->add_unique_interface(
- path, triggerIfaceName,
- [this, isDiscreteIn, logToJournalIn, logToRedfishIn,
- updateReportIn](auto& dbusIface) {
+ path, triggerIfaceName, [this](auto& dbusIface) {
persistent = storeConfiguration();
dbusIface.register_property_rw(
"Persistent", persistent,
@@ -84,22 +79,19 @@
});
dbusIface.register_property_r(
-
"ReportNames", reportNames,
sdbusplus::vtable::property_::emits_change,
[](const auto& x) { return x; });
- dbusIface.register_property_r("Discrete", isDiscrete,
+
+ dbusIface.register_property_r(
+ "Discrete", false, sdbusplus::vtable::property_::const_,
+ [this](const auto& x) {
+ return isTriggerThresholdDiscrete(labeledThresholdParams);
+ });
+
+ dbusIface.register_property_r("TriggerActions", triggerActions,
sdbusplus::vtable::property_::const_,
- [](const auto& x) { return x; });
- dbusIface.register_property_r("LogToJournal", logToJournal,
- sdbusplus::vtable::property_::const_,
- [](const auto& x) { return x; });
- dbusIface.register_property_r("LogToRedfish", logToRedfish,
- sdbusplus::vtable::property_::const_,
- [](const auto& x) { return x; });
- dbusIface.register_property_r("UpdateReport", updateReport,
- sdbusplus::vtable::property_::const_,
- [](const auto& x) { return x; });
+ [this](const auto& x) { return x; });
});
for (const auto& threshold : thresholds)
@@ -117,10 +109,7 @@
data["Version"] = triggerVersion;
data["Name"] = name;
data["ThresholdParamsDiscriminator"] = labeledThresholdParams.index();
- data["IsDiscrete"] = labeledThresholdParams.index() == 1;
- data["LogToJournal"] = logToJournal;
- data["LogToRedfish"] = logToRedfish;
- data["UpdateReport"] = updateReport;
+ data["TriggerActions"] = triggerActions;
data["ThresholdParams"] =
utils::labeledThresholdParamsToJson(labeledThresholdParams);
data["ReportNames"] = reportNames;
diff --git a/src/trigger.hpp b/src/trigger.hpp
index 09b5dc8..904f520 100644
--- a/src/trigger.hpp
+++ b/src/trigger.hpp
@@ -16,9 +16,8 @@
public:
Trigger(boost::asio::io_context& ioc,
const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
- const std::string& name, const bool isDiscrete,
- const bool logToJournal, const bool logToRedfish,
- const bool updateReport,
+ const std::string& name,
+ const std::vector<std::string>& triggerActions,
const std::vector<std::string>& reportNames,
const std::vector<LabeledSensorInfo>& LabeledSensorsInfoIn,
const LabeledTriggerThresholdParams& labeledThresholdParamsIn,
@@ -45,10 +44,7 @@
private:
const std::string name;
- bool isDiscrete;
- bool logToJournal;
- bool logToRedfish;
- bool updateReport;
+ std::vector<std::string> triggerActions;
const std::string path;
bool persistent = false;
std::vector<std::string> reportNames;
diff --git a/src/trigger_actions.cpp b/src/trigger_actions.cpp
index 8f2cf82..e89bd84 100644
--- a/src/trigger_actions.cpp
+++ b/src/trigger_actions.cpp
@@ -95,6 +95,39 @@
getDirection(value, threshold)));
}
+void fillActions(
+ std::vector<std::unique_ptr<interfaces::TriggerAction>>& actionsIf,
+ const std::vector<TriggerAction>& ActionsEnum, ::numeric::Type type,
+ double thresholdValue, interfaces::ReportManager& reportManager,
+ const std::vector<std::string>& reportNames)
+{
+ actionsIf.reserve(ActionsEnum.size());
+ for (auto actionType : ActionsEnum)
+ {
+ switch (actionType)
+ {
+ case TriggerAction::LogToLogService:
+ {
+ actionsIf.emplace_back(
+ std::make_unique<LogToJournal>(type, thresholdValue));
+ break;
+ }
+ case TriggerAction::RedfishEvent:
+ {
+ actionsIf.emplace_back(
+ std::make_unique<LogToRedfish>(type, thresholdValue));
+ break;
+ }
+ case TriggerAction::UpdateReport:
+ {
+ actionsIf.emplace_back(
+ std::make_unique<UpdateReport>(reportManager, reportNames));
+ break;
+ }
+ }
+ }
+}
+
} // namespace numeric
namespace discrete
@@ -148,6 +181,39 @@
sensorName.c_str(), value, timestamp));
}
+void fillActions(
+ std::vector<std::unique_ptr<interfaces::TriggerAction>>& actionsIf,
+ const std::vector<TriggerAction>& ActionsEnum,
+ ::discrete::Severity severity, interfaces::ReportManager& reportManager,
+ const std::vector<std::string>& reportNames)
+{
+ actionsIf.reserve(ActionsEnum.size());
+ for (auto actionType : ActionsEnum)
+ {
+ switch (actionType)
+ {
+ case TriggerAction::LogToLogService:
+ {
+ actionsIf.emplace_back(
+ std::make_unique<LogToJournal>(severity));
+ break;
+ }
+ case TriggerAction::RedfishEvent:
+ {
+ actionsIf.emplace_back(
+ std::make_unique<LogToRedfish>(severity));
+ break;
+ }
+ case TriggerAction::UpdateReport:
+ {
+ actionsIf.emplace_back(
+ std::make_unique<UpdateReport>(reportManager, reportNames));
+ break;
+ }
+ }
+ }
+}
+
namespace onChange
{
void LogToJournal::commit(const std::string& sensorName, uint64_t timestamp,
@@ -170,6 +236,37 @@
phosphor::logging::entry("REDFISH_MESSAGE_ARGS=%s,%f,%llu",
sensorName.c_str(), value, timestamp));
}
+
+void fillActions(
+ std::vector<std::unique_ptr<interfaces::TriggerAction>>& actionsIf,
+ const std::vector<TriggerAction>& ActionsEnum,
+ interfaces::ReportManager& reportManager,
+ const std::vector<std::string>& reportNames)
+{
+ actionsIf.reserve(ActionsEnum.size());
+ for (auto actionType : ActionsEnum)
+ {
+ switch (actionType)
+ {
+ case TriggerAction::LogToLogService:
+ {
+ actionsIf.emplace_back(std::make_unique<LogToJournal>());
+ break;
+ }
+ case TriggerAction::RedfishEvent:
+ {
+ actionsIf.emplace_back(std::make_unique<LogToRedfish>());
+ break;
+ }
+ case TriggerAction::UpdateReport:
+ {
+ actionsIf.emplace_back(
+ std::make_unique<UpdateReport>(reportManager, reportNames));
+ break;
+ }
+ }
+ }
+}
} // namespace onChange
} // namespace discrete
diff --git a/src/trigger_actions.hpp b/src/trigger_actions.hpp
index 2b126e0..c180c3d 100644
--- a/src/trigger_actions.hpp
+++ b/src/trigger_actions.hpp
@@ -40,6 +40,12 @@
const char* getMessageId() const;
};
+
+void fillActions(
+ std::vector<std::unique_ptr<interfaces::TriggerAction>>& actionsIf,
+ const std::vector<TriggerAction>& ActionsEnum, ::numeric::Type type,
+ double thresholdValue, interfaces::ReportManager& reportManager,
+ const std::vector<std::string>& reportNames);
} // namespace numeric
namespace discrete
@@ -74,6 +80,12 @@
const char* getMessageId() const;
};
+void fillActions(
+ std::vector<std::unique_ptr<interfaces::TriggerAction>>& actionsIf,
+ const std::vector<TriggerAction>& ActionsEnum,
+ ::discrete::Severity severity, interfaces::ReportManager& reportManager,
+ const std::vector<std::string>& reportNames);
+
namespace onChange
{
class LogToJournal : public interfaces::TriggerAction
@@ -95,6 +107,12 @@
void commit(const std::string& id, uint64_t timestamp,
double value) override;
};
+
+void fillActions(
+ std::vector<std::unique_ptr<interfaces::TriggerAction>>& actionsIf,
+ const std::vector<TriggerAction>& ActionsEnum,
+ interfaces::ReportManager& reportManager,
+ const std::vector<std::string>& reportNames);
} // namespace onChange
} // namespace discrete
diff --git a/src/trigger_factory.cpp b/src/trigger_factory.cpp
index bdfc163..98cfefe 100644
--- a/src/trigger_factory.cpp
+++ b/src/trigger_factory.cpp
@@ -21,8 +21,7 @@
{}
std::unique_ptr<interfaces::Trigger> TriggerFactory::make(
- const std::string& name, bool isDiscrete, bool logToJournal,
- bool logToRedfish, bool updateReport,
+ const std::string& name, const std::vector<std::string>& triggerActionsIn,
const std::vector<std::string>& reportNames,
interfaces::TriggerManager& triggerManager,
interfaces::JsonStorage& triggerStorage,
@@ -30,9 +29,15 @@
const std::vector<LabeledSensorInfo>& labeledSensorsInfo) const
{
const auto& [sensors, sensorNames] = getSensors(labeledSensorsInfo);
+ std::vector<TriggerAction> triggerActions;
+ std::transform(triggerActionsIn.begin(), triggerActionsIn.end(),
+ std::back_inserter(triggerActions),
+ [](auto& triggerActionStr) {
+ return stringToTriggerAction(triggerActionStr);
+ });
std::vector<std::shared_ptr<interfaces::Threshold>> thresholds;
- if (isDiscrete)
+ if (isTriggerThresholdDiscrete(labeledThresholdParams))
{
const auto& labeledDiscreteThresholdParams =
std::get<std::vector<discrete::LabeledThresholdParam>>(
@@ -50,21 +55,8 @@
std::string thresholdValue =
labeledThresholdParam.at_label<ts::ThresholdValue>();
- if (logToJournal)
- {
- actions.emplace_back(
- std::make_unique<action::discrete::LogToJournal>(severity));
- }
- if (logToRedfish)
- {
- actions.emplace_back(
- std::make_unique<action::discrete::LogToRedfish>(severity));
- }
- if (updateReport)
- {
- actions.emplace_back(std::make_unique<action::UpdateReport>(
- reportManager, reportNames));
- }
+ action::discrete::fillActions(actions, triggerActions, severity,
+ reportManager, reportNames);
thresholds.emplace_back(std::make_shared<DiscreteThreshold>(
bus->get_io_context(), sensors, sensorNames, std::move(actions),
@@ -74,23 +66,8 @@
if (labeledDiscreteThresholdParams.empty())
{
std::vector<std::unique_ptr<interfaces::TriggerAction>> actions;
- if (logToJournal)
- {
- actions.emplace_back(
- std::make_unique<
- action::discrete::onChange::LogToJournal>());
- }
- if (logToRedfish)
- {
- actions.emplace_back(
- std::make_unique<
- action::discrete::onChange::LogToRedfish>());
- }
- if (updateReport)
- {
- actions.emplace_back(std::make_unique<action::UpdateReport>(
- reportManager, reportNames));
- }
+ action::discrete::onChange::fillActions(actions, triggerActions,
+ reportManager, reportNames);
thresholds.emplace_back(std::make_shared<OnChangeThreshold>(
sensors, sensorNames, std::move(actions)));
@@ -112,25 +89,9 @@
auto thresholdValue =
double{labeledThresholdParam.at_label<ts::ThresholdValue>()};
- if (logToJournal)
- {
- actions.emplace_back(
- std::make_unique<action::numeric::LogToJournal>(
- type, thresholdValue));
- }
-
- if (logToRedfish)
- {
- actions.emplace_back(
- std::make_unique<action::numeric::LogToRedfish>(
- type, thresholdValue));
- }
-
- if (updateReport)
- {
- actions.emplace_back(std::make_unique<action::UpdateReport>(
- reportManager, reportNames));
- }
+ action::numeric::fillActions(actions, triggerActions, type,
+ thresholdValue, reportManager,
+ reportNames);
thresholds.emplace_back(std::make_shared<NumericThreshold>(
bus->get_io_context(), sensors, sensorNames, std::move(actions),
@@ -139,10 +100,9 @@
}
return std::make_unique<Trigger>(
- bus->get_io_context(), objServer, name, isDiscrete, logToJournal,
- logToRedfish, updateReport, reportNames, labeledSensorsInfo,
- labeledThresholdParams, std::move(thresholds), triggerManager,
- triggerStorage);
+ bus->get_io_context(), objServer, name, triggerActionsIn, reportNames,
+ labeledSensorsInfo, labeledThresholdParams, std::move(thresholds),
+ triggerManager, triggerStorage);
}
std::pair<Sensors, std::vector<std::string>> TriggerFactory::getSensors(
diff --git a/src/trigger_factory.hpp b/src/trigger_factory.hpp
index 4ec273a..e7f8fb0 100644
--- a/src/trigger_factory.hpp
+++ b/src/trigger_factory.hpp
@@ -16,8 +16,8 @@
interfaces::ReportManager& reportManager);
std::unique_ptr<interfaces::Trigger>
- make(const std::string& name, bool isDiscrete, bool logToJournal,
- bool logToRedfish, bool updateReport,
+ make(const std::string& name,
+ const std::vector<std::string>& triggerActions,
const std::vector<std::string>& reportNames,
interfaces::TriggerManager& triggerManager,
interfaces::JsonStorage& triggerStorage,
diff --git a/src/trigger_manager.cpp b/src/trigger_manager.cpp
index 81a0398..da4797f 100644
--- a/src/trigger_manager.cpp
+++ b/src/trigger_manager.cpp
@@ -21,8 +21,8 @@
iface.register_method(
"AddTrigger",
[this](boost::asio::yield_context& yield,
- const std::string& name, bool isDiscrete,
- bool logToJournal, bool logToRedfish, bool updateReport,
+ const std::string& name,
+ const std::vector<std::string>& triggerActions,
const SensorsInfo& sensors,
const std::vector<std::string>& reportNames,
const TriggerThresholdParamsExt& thresholds) {
@@ -34,9 +34,8 @@
std::vector<LabeledSensorInfo> labeledSensorsInfo =
triggerFactory->getLabeledSensorsInfo(yield, sensors);
- return addTrigger(name, isDiscrete, logToJournal,
- logToRedfish, updateReport,
- labeledSensorsInfo, reportNames,
+ return addTrigger(name, triggerActions, labeledSensorsInfo,
+ reportNames,
labeledTriggerThresholdParams)
.getPath();
});
@@ -51,9 +50,7 @@
triggers.end());
}
-void TriggerManager::verifyAddTrigger(
- const std::string& triggerName, bool isDiscrete,
- const LabeledTriggerThresholdParams& thresholdParams)
+void TriggerManager::verifyAddTrigger(const std::string& triggerName)
{
if (triggers.size() >= maxTriggers)
{
@@ -73,18 +70,17 @@
}
interfaces::Trigger& TriggerManager::addTrigger(
- const std::string& triggerName, bool isDiscrete, bool logToJournal,
- bool logToRedfish, bool updateReport,
+ const std::string& triggerName,
+ const std::vector<std::string>& triggerActions,
const std::vector<LabeledSensorInfo>& labeledSensorsInfo,
const std::vector<std::string>& reportNames,
const LabeledTriggerThresholdParams& labeledThresholdParams)
{
- verifyAddTrigger(triggerName, isDiscrete, labeledThresholdParams);
+ verifyAddTrigger(triggerName);
triggers.emplace_back(triggerFactory->make(
- triggerName, isDiscrete, logToJournal, logToRedfish, updateReport,
- reportNames, *this, *triggerStorage, labeledThresholdParams,
- labeledSensorsInfo));
+ triggerName, triggerActions, reportNames, *this, *triggerStorage,
+ labeledThresholdParams, labeledSensorsInfo));
return *triggers.back();
}
@@ -111,10 +107,8 @@
const std::string& name = data->at("Name").get_ref<std::string&>();
int thresholdParamsDiscriminator =
data->at("ThresholdParamsDiscriminator").get<int>();
- bool isDiscrete = data->at("IsDiscrete").get<bool>();
- bool logToJournal = data->at("LogToJournal").get<bool>();
- bool logToRedfish = data->at("LogToRedfish").get<bool>();
- bool updateReport = data->at("UpdateReport").get<bool>();
+ const std::vector<std::string> triggerActions =
+ data->at("TriggerActions").get<std::vector<std::string>>();
LabeledTriggerThresholdParams labeledThresholdParams;
if (0 == thresholdParamsDiscriminator)
@@ -136,8 +130,7 @@
auto labeledSensorsInfo =
data->at("Sensors").get<std::vector<LabeledSensorInfo>>();
- addTrigger(name, isDiscrete, logToJournal, logToRedfish,
- updateReport, labeledSensorsInfo, reportNames,
+ addTrigger(name, triggerActions, labeledSensorsInfo, reportNames,
labeledThresholdParams);
}
catch (const std::exception& e)
diff --git a/src/trigger_manager.hpp b/src/trigger_manager.hpp
index ec26bdc..c3acd36 100644
--- a/src/trigger_manager.hpp
+++ b/src/trigger_manager.hpp
@@ -30,12 +30,11 @@
std::unique_ptr<sdbusplus::asio::dbus_interface> managerIface;
std::vector<std::unique_ptr<interfaces::Trigger>> triggers;
- void verifyAddTrigger(const std::string& triggerName, bool isDiscrete,
- const LabeledTriggerThresholdParams& thresholdParams);
+ void verifyAddTrigger(const std::string& triggerName);
interfaces::Trigger&
- addTrigger(const std::string& triggerName, bool isDiscrete,
- bool logToJournal, bool logToRedfish, bool updateReport,
+ addTrigger(const std::string& triggerName,
+ const std::vector<std::string>& triggerActions,
const std::vector<LabeledSensorInfo>& labeledSensors,
const std::vector<std::string>& reportNames,
const LabeledTriggerThresholdParams& labeledThresholdParams);
diff --git a/src/types/trigger_types.hpp b/src/types/trigger_types.hpp
index 4b6e150..a2a2e82 100644
--- a/src/types/trigger_types.hpp
+++ b/src/types/trigger_types.hpp
@@ -10,6 +10,27 @@
#include <variant>
#include <vector>
+enum class TriggerAction
+{
+ LogToLogService = 0,
+ RedfishEvent,
+ UpdateReport,
+};
+
+namespace details
+{
+constexpr std::array<std::pair<std::string_view, TriggerAction>, 3>
+ convDataTriggerAction = {
+ std::make_pair("LogToLogService", TriggerAction::LogToLogService),
+ std::make_pair("RedfishEvent", TriggerAction::RedfishEvent),
+ std::make_pair("UpdateReport", TriggerAction::UpdateReport)};
+}
+
+inline TriggerAction stringToTriggerAction(const std::string& str)
+{
+ return utils::stringToEnum(details::convDataTriggerAction, str);
+}
+
namespace discrete
{
@@ -130,3 +151,10 @@
using LabeledTriggerThresholdParams =
std::variant<std::vector<numeric::LabeledThresholdParam>,
std::vector<discrete::LabeledThresholdParam>>;
+
+inline bool
+ isTriggerThresholdDiscrete(const LabeledTriggerThresholdParams& params)
+{
+ return std::holds_alternative<std::vector<discrete::LabeledThresholdParam>>(
+ params);
+}
diff --git a/tests/src/mocks/trigger_factory_mock.hpp b/tests/src/mocks/trigger_factory_mock.hpp
index 3682a46..3df567e 100644
--- a/tests/src/mocks/trigger_factory_mock.hpp
+++ b/tests/src/mocks/trigger_factory_mock.hpp
@@ -15,15 +15,15 @@
{
using namespace testing;
- ON_CALL(*this, make(A<const std::string&>(), _, _, _, _, _, _, _, _, _))
+ ON_CALL(*this, make(A<const std::string&>(), _, _, _, _, _, _))
.WillByDefault(WithArgs<0>(Invoke([](const std::string& name) {
return std::make_unique<NiceMock<TriggerMock>>(name);
})));
}
MOCK_METHOD(std::unique_ptr<interfaces::Trigger>, make,
- (const std::string& name, bool isDiscrete, bool logToJournal,
- bool logToRedfish, bool updateReport,
+ (const std::string& name,
+ const std::vector<std::string>& triggerActions,
const std::vector<std::string>& reportNames,
interfaces::TriggerManager& triggerManager,
interfaces::JsonStorage& triggerStorage,
@@ -53,11 +53,9 @@
.WillByDefault(Return(params.sensors()));
return EXPECT_CALL(
- *this,
- make(params.name(), params.isDiscrete(), params.logToJournal(),
- params.logToRedfish(), params.updateReport(),
- params.reportNames(), tm, triggerStorage,
- params.thresholdParams(), params.sensors()));
+ *this, make(params.name(), params.triggerActions(),
+ params.reportNames(), tm, triggerStorage,
+ params.thresholdParams(), params.sensors()));
}
else
{
@@ -69,8 +67,8 @@
ON_CALL(*this, getLabeledSensorsInfo(_, _))
.WillByDefault(Return(dummy));
- return EXPECT_CALL(
- *this, make(_, _, _, _, _, _, tm, triggerStorage, _, dummy));
+ return EXPECT_CALL(*this,
+ make(_, _, _, tm, triggerStorage, _, dummy));
}
}
};
diff --git a/tests/src/params/trigger_params.hpp b/tests/src/params/trigger_params.hpp
index 753cbb1..f2cac0e 100644
--- a/tests/src/params/trigger_params.hpp
+++ b/tests/src/params/trigger_params.hpp
@@ -22,36 +22,15 @@
return nameProperty;
}
- TriggerParams& isDiscrete(bool val)
+ TriggerParams& triggerActions(const std::vector<std::string>& val)
{
- discreteProperty = val;
+ triggerActionsProperty = val;
return *this;
}
- bool isDiscrete() const
+ const std::vector<std::string>& triggerActions() const
{
- return discreteProperty;
- }
-
- bool logToJournal() const
- {
- return logToJournalProperty;
- }
-
- bool logToRedfish() const
- {
- return logToRedfishProperty;
- }
-
- TriggerParams& updateReport(bool updateReport)
- {
- updateReportProperty = updateReport;
- return *this;
- }
-
- bool updateReport() const
- {
- return updateReportProperty;
+ return triggerActionsProperty;
}
const std::vector<LabeledSensorInfo>& sensors() const
@@ -77,10 +56,8 @@
private:
std::string nameProperty = "Trigger1";
- bool discreteProperty = false;
- bool logToJournalProperty = false;
- bool logToRedfishProperty = false;
- bool updateReportProperty = true;
+ std::vector<std::string> triggerActionsProperty = {"UpdateReport"};
+
std::vector<LabeledSensorInfo> labeledSensorsProperty = {
{"service1", "/xyz/openbmc_project/sensors/temperature/BMC_Temp",
"metadata1"}};
diff --git a/tests/src/test_trigger.cpp b/tests/src/test_trigger.cpp
index 7529017..3a9004f 100644
--- a/tests/src/test_trigger.cpp
+++ b/tests/src/test_trigger.cpp
@@ -23,7 +23,6 @@
TriggerParams triggerDiscreteParams =
TriggerParams()
.name("Trigger2")
- .isDiscrete(true)
.thresholdParams(std::vector<discrete::LabeledThresholdParam>{
discrete::LabeledThresholdParam{
"userId", discrete::Severity::warning,
@@ -56,8 +55,7 @@
{
return std::make_unique<Trigger>(
DbusEnvironment::getIoc(), DbusEnvironment::getObjServer(),
- params.name(), params.isDiscrete(), params.logToJournal(),
- params.logToRedfish(), params.updateReport(), params.reportNames(),
+ params.name(), params.triggerActions(), params.reportNames(),
params.sensors(), params.thresholdParams(),
std::vector<std::shared_ptr<interfaces::Threshold>>{},
*triggerManagerMockPtr, storageMock);
@@ -122,14 +120,9 @@
TEST_F(TestTrigger, checkIfPropertiesAreSet)
{
EXPECT_THAT(getProperty<bool>(sut->getPath(), "Persistent"), Eq(true));
- EXPECT_THAT(getProperty<bool>(sut->getPath(), "Discrete"),
- Eq(triggerParams.isDiscrete()));
- EXPECT_THAT(getProperty<bool>(sut->getPath(), "LogToJournal"),
- Eq(triggerParams.logToJournal()));
- EXPECT_THAT(getProperty<bool>(sut->getPath(), "LogToRedfish"),
- Eq(triggerParams.logToRedfish()));
- EXPECT_THAT(getProperty<bool>(sut->getPath(), "UpdateReport"),
- Eq(triggerParams.updateReport()));
+ EXPECT_THAT(
+ getProperty<std::vector<std::string>>(sut->getPath(), "TriggerActions"),
+ Eq(triggerParams.triggerActions()));
EXPECT_THAT((getProperty<SensorsInfo>(sut->getPath(), "Sensors")),
Eq(utils::fromLabeledSensorsInfo(triggerParams.sensors())));
EXPECT_THAT(
@@ -274,28 +267,10 @@
ASSERT_THAT(storedConfiguration.at("Name"), Eq(triggerParams.name()));
}
-TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerIsDiscrete)
+TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerTriggerActions)
{
- ASSERT_THAT(storedConfiguration.at("IsDiscrete"),
- Eq(triggerParams.isDiscrete()));
-}
-
-TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerLogToJournal)
-{
- ASSERT_THAT(storedConfiguration.at("LogToJournal"),
- Eq(triggerParams.logToRedfish()));
-}
-
-TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerLogToRedfish)
-{
- ASSERT_THAT(storedConfiguration.at("LogToRedfish"),
- Eq(triggerParams.logToRedfish()));
-}
-
-TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerUpdateReport)
-{
- ASSERT_THAT(storedConfiguration.at("UpdateReport"),
- Eq(triggerParams.updateReport()));
+ ASSERT_THAT(storedConfiguration.at("TriggerActions"),
+ Eq(triggerParams.triggerActions()));
}
TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerReportNames)
diff --git a/tests/src/test_trigger_manager.cpp b/tests/src/test_trigger_manager.cpp
index 704c497..540bcbc 100644
--- a/tests/src/test_trigger_manager.cpp
+++ b/tests/src/test_trigger_manager.cpp
@@ -29,8 +29,7 @@
},
DbusEnvironment::serviceName(), TriggerManager::triggerManagerPath,
TriggerManager::triggerManagerIfaceName, "AddTrigger",
- params.name(), params.isDiscrete(), params.logToJournal(),
- params.logToRedfish(), params.updateReport(), sensorInfos,
+ params.name(), params.triggerActions(), sensorInfos,
params.reportNames(),
std::visit(utils::FromLabeledThresholdParamConversion(),
params.thresholdParams()));
@@ -80,7 +79,7 @@
{"discrete_threshold2", discrete::Severity::warning, 10, "12.0"},
{"discrete_threshold3", discrete::Severity::critical, 10, "13.0"}};
- triggerParamsDiscrete.thresholdParams(thresholds).isDiscrete(true);
+ triggerParamsDiscrete.thresholdParams(thresholds);
auto [ec, path] = addTrigger(triggerParamsDiscrete);
EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
@@ -92,7 +91,7 @@
TriggerParams triggerParamsDiscrete;
auto thresholds = std::vector<discrete::LabeledThresholdParam>();
- triggerParamsDiscrete.thresholdParams(thresholds).isDiscrete(true);
+ triggerParamsDiscrete.thresholdParams(thresholds);
auto [ec, path] = addTrigger(triggerParamsDiscrete);
EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
@@ -203,10 +202,7 @@
{"Name", TriggerParams().name()},
{"ThresholdParamsDiscriminator",
TriggerParams().thresholdParams().index()},
- {"IsDiscrete", TriggerParams().isDiscrete()},
- {"LogToJournal", TriggerParams().logToJournal()},
- {"LogToRedfish", TriggerParams().logToRedfish()},
- {"UpdateReport", TriggerParams().updateReport()},
+ {"TriggerActions", TriggerParams().triggerActions()},
{"ThresholdParams", utils::labeledThresholdParamsToJson(
TriggerParams().thresholdParams())},
{"ReportNames", TriggerParams().reportNames()},