xref: /openbmc/telemetry/src/trigger_manager.hpp (revision 2001301a0f2ce71797cf171305a1d0eb0d288fe6)
1 #pragma once
2 
3 #include "interfaces/report_manager.hpp"
4 #include "interfaces/trigger_factory.hpp"
5 #include "interfaces/trigger_manager.hpp"
6 
7 #include <sdbusplus/asio/object_server.hpp>
8 
9 #include <memory>
10 #include <vector>
11 
12 class TriggerManager : public interfaces::TriggerManager
13 {
14   public:
15     TriggerManager(
16         std::unique_ptr<interfaces::TriggerFactory> triggerFactory,
17         std::unique_ptr<interfaces::JsonStorage> triggerStorage,
18         const std::shared_ptr<sdbusplus::asio::object_server>& objServer);
19 
20     TriggerManager(TriggerManager&) = delete;
21     TriggerManager(TriggerManager&&) = delete;
22     TriggerManager& operator=(TriggerManager&) = delete;
23     TriggerManager& operator=(TriggerManager&&) = delete;
24 
25     void removeTrigger(const interfaces::Trigger* trigger) override;
26 
27   private:
28     std::unique_ptr<interfaces::TriggerFactory> triggerFactory;
29     std::unique_ptr<interfaces::JsonStorage> triggerStorage;
30     std::unique_ptr<sdbusplus::asio::dbus_interface> managerIface;
31     std::vector<std::unique_ptr<interfaces::Trigger>> triggers;
32 
33     void verifyAddTrigger(const std::string& triggerName);
34 
35     interfaces::Trigger&
36         addTrigger(const std::string& triggerName,
37                    const std::vector<std::string>& triggerActions,
38                    const std::vector<LabeledSensorInfo>& labeledSensors,
39                    const std::vector<std::string>& reportNames,
40                    const LabeledTriggerThresholdParams& labeledThresholdParams);
41     void loadFromPersistent();
42 
43   public:
44     static constexpr size_t maxTriggers{TELEMETRY_MAX_TRIGGERS};
45     static constexpr const char* triggerManagerIfaceName =
46         "xyz.openbmc_project.Telemetry.TriggerManager";
47     static constexpr const char* triggerManagerPath =
48         "/xyz/openbmc_project/Telemetry/Triggers";
49 };
50