control: Create parameter trigger
Create a new event trigger that will run actions when a parameter is
either added, removed, or changed.
When the trigger is enabled it is added to the Manager class since that
is where parameters are stored, and then the Manager watches for
parameter changes and runs actions as needed.
The JSON config would look like:
{
"class": "parameter",
"parameter": "pcie_floor_index"
}
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I8ff281d49ac780e8ff38f3e8ed02ab95395f1fd3
diff --git a/control/json/triggers/signal.cpp b/control/json/triggers/signal.cpp
index 491c7a4..19d7f19 100644
--- a/control/json/triggers/signal.cpp
+++ b/control/json/triggers/signal.cpp
@@ -76,8 +76,8 @@
{
// Same SignalObject signal to trigger event actions,
// add actions to be run when signal for SignalObject received
- auto& pkgActions = std::get<SignalActions>(signalPkg);
- auto& actions = std::get<SignalActions>(pkg);
+ auto& pkgActions = std::get<TriggerActions>(signalPkg);
+ auto& actions = std::get<TriggerActions>(pkg);
actions.insert(actions.end(), pkgActions.begin(),
pkgActions.end());
sameSignal = true;
@@ -92,8 +92,8 @@
}
}
-void propertiesChanged(Manager* mgr, const Group& group, SignalActions& actions,
- const json&)
+void propertiesChanged(Manager* mgr, const Group& group,
+ TriggerActions& actions, const json&)
{
// Groups are optional, but a signal triggered event with no groups
// will do nothing since signals require a group
@@ -117,7 +117,7 @@
}
}
-void interfacesAdded(Manager* mgr, const Group& group, SignalActions& actions,
+void interfacesAdded(Manager* mgr, const Group& group, TriggerActions& actions,
const json&)
{
// Groups are optional, but a signal triggered event with no groups
@@ -141,8 +141,8 @@
}
}
-void interfacesRemoved(Manager* mgr, const Group& group, SignalActions& actions,
- const json&)
+void interfacesRemoved(Manager* mgr, const Group& group,
+ TriggerActions& actions, const json&)
{
// Groups are optional, but a signal triggered event with no groups
// will do nothing since signals require a group
@@ -164,7 +164,7 @@
}
}
-void nameOwnerChanged(Manager* mgr, const Group& group, SignalActions& actions,
+void nameOwnerChanged(Manager* mgr, const Group& group, TriggerActions& actions,
const json&)
{
std::vector<std::string> grpServices;
@@ -213,7 +213,7 @@
}
}
-void member(Manager* mgr, const Group& group, SignalActions& actions,
+void member(Manager* mgr, const Group& group, TriggerActions& actions,
const json&)
{
// No SignalObject required to associate to this signal
@@ -265,7 +265,7 @@
jsonObj](const std::string& eventName, Manager* mgr,
const std::vector<Group>& groups,
std::vector<std::unique_ptr<ActionBase>>& actions) {
- SignalActions signalActions;
+ TriggerActions signalActions;
std::for_each(actions.begin(), actions.end(),
[&signalActions](auto& action) {
signalActions.emplace_back(std::ref(action));