blob: 9ae35f6ba3331560538a0f79eda8623d6c6d08d5 [file] [log] [blame]
#ifndef PRODUCTION_SUSHID_SAFEPOWER_AGENT_BMC_STATE_MONITOR_BMC_H_
#define PRODUCTION_SUSHID_SAFEPOWER_AGENT_BMC_STATE_MONITOR_BMC_H_
#include <memory>
#include <string>
#include "safepower_agent.pb.h"
#include "safepower_agent_config.pb.h"
#include "state_updater.h"
#include "absl/status/status.h"
#include "absl/strings/string_view.h"
namespace safepower_agent {
class StateMonitorBMC {
public:
explicit StateMonitorBMC(
std::shared_ptr<StateUpdater<safepower_agent_proto::SystemState>>
reactor);
~StateMonitorBMC() = default;
absl::Status BuildFromConfig(
const safepower_agent_config::GpowerdConfig& config);
private:
absl::Status CreateRedfishUpdatePowerState(std::string state_name,
std::string uri,
std::string json_key,
int collection_interval,
std::string node_entity_tag,
std::string component_name);
absl::Status CreateDbusStateMonitor(std::string state_name,
std::string dbus_path,
std::string dbus_method, std::string dbus_interface,
std::string dbus_value, int collection_interval);
safepower_agent_proto::PowerStateSpecifier
ConvertStatePowerStringToEnum(absl::string_view state_str);
std::shared_ptr<StateUpdater<safepower_agent_proto::SystemState>> reactor_;
};
} // namespace safepower_agent
#endif // PRODUCTION_SUSHID_SAFEPOWER_AGENT_BMC_STATE_MONITOR_BMC_H_