| |
| #include "chassis.hpp" |
| #include "error_messages.hpp" |
| #include "utils/subprocess_utils.hpp" |
| |
| #include <boost/process.hpp> |
| #include <boost/system/error_code.hpp> |
| #include <nlohmann/json.hpp> |
| |
| namespace redfish |
| { |
| |
| static std::vector<std::string> resetCmdSystem(const int& delayTimeSecs, |
| std::string_view resetType, |
| std::string_view systemName) |
| { |
| nlohmann::json resetOp; |
| resetOp["ResetType"] = resetType; |
| |
| std::string resetURI = "localhost:80/redfish/v1/Systems/" + |
| std::string(systemName) + "/Actions/ComputerSystem.Reset"; |
| |
| std::vector<std::string> resetCmd = {"systemd-run", |
| "--on-active=" + std::to_string(delayTimeSecs), |
| "--timer-property=AccuracySec=100ms", |
| "--", "curl", "-d", resetOp.dump(), |
| "-H", "Content-Type: application/json", |
| "-X", "POST", resetURI}; |
| return resetCmd; |
| } |
| |
| /* Have systemd run a curl command in a set amount of time |
| * resetURI: Chassis or Systems based on where you want to reset |
| * resetTimeSec: The amount of seconds to delay reset |
| * resetOp: same as resetType variable here |
| * asyncResp update the response |
| */ |
| |
| void delayResetSystem(std::string_view systemName, int delayTimeSecs, |
| std::string_view resetType, |
| const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) |
| { |
| childProcessRun(asyncResp, resetCmdSystem(delayTimeSecs, resetType, systemName)); |
| } |
| |
| } // namespace redfish |
| |