blob: cc92783910cacad272638c821fbcc5bf9eae75fe [file] [log] [blame]
#ifndef PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_BMC_STATE_MONITOR_BMC_H_
#define PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_BMC_STATE_MONITOR_BMC_H_
#include <memory>
#include <string>
#include "safepower_agent.proto.h"
#include "safepower_agent_config.proto.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);
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_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_BMC_STATE_MONITOR_BMC_H_