Lines Matching +full:host +full:- +full:id

8 #include <systemd/sd-bus.h>
15 #include <phosphor-logging/elog-errors.hpp>
16 #include <phosphor-logging/lg2.hpp>
21 #include <xyz/openbmc_project/State/Host/error.hpp>
32 CEREAL_CLASS_VERSION(phosphor::state::manager::Host, CLASS_VERSION)
63 void Host::determineInitialState() in determineInitialState()
65 if (stateActive(getTarget(server::Host::HostState::Running)) || in determineInitialState()
66 isHostRunning(id)) in determineInitialState()
68 info("Initial Host State will be Running"); in determineInitialState()
69 server::Host::currentHostState(HostState::Running, true); in determineInitialState()
70 server::Host::requestedHostTransition(Transition::On, true); in determineInitialState()
74 info("Initial Host State will be Off"); in determineInitialState()
75 server::Host::currentHostState(HostState::Off, true); in determineInitialState()
76 server::Host::requestedHostTransition(Transition::Off, true); in determineInitialState()
82 server::Host::requestedHostTransition(Transition::Off, true); in determineInitialState()
87 void Host::setupSupportedTransitions() in setupSupportedTransitions()
98 server::Host::allowedHostTransitions(supportedTransitions); in setupSupportedTransitions()
101 void Host::createSystemdTargetMaps() in createSystemdTargetMaps()
104 {HostState::Off, std::format("obmc-host-stop@{}.target", id)}, in createSystemdTargetMaps()
105 {HostState::Running, std::format("obmc-host-startmin@{}.target", id)}, in createSystemdTargetMaps()
106 {HostState::Quiesced, std::format("obmc-host-quiesce@{}.target", id)}, in createSystemdTargetMaps()
108 std::format("obmc-host-diagnostic-mode@{}.target", id)}}; in createSystemdTargetMaps()
111 {Transition::Off, std::format("obmc-host-shutdown@{}.target", id)}, in createSystemdTargetMaps()
112 {Transition::On, std::format("obmc-host-start@{}.target", id)}, in createSystemdTargetMaps()
113 {Transition::Reboot, std::format("obmc-host-reboot@{}.target", id)}, in createSystemdTargetMaps()
118 std::format("obmc-host-warm-reboot@{}.target", id)}, in createSystemdTargetMaps()
120 std::format("obmc-host-force-warm-reboot@{}.target", id)}}; in createSystemdTargetMaps()
123 std::format("obmc-host-reboot@{}.target", id)}, in createSystemdTargetMaps()
125 std::format("obmc-host-reboot@{}.target", id)}}; in createSystemdTargetMaps()
127 hostCrashTarget = std::format("obmc-host-crash@{}.target", id);
130 const std::string& Host::getTarget(HostState state) in getTarget()
135 const std::string& Host::getTarget(Transition tranReq) in getTarget()
140 void Host::executeTransition(Transition tranReq) in executeTransition()
144 auto method = this->bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_OBJ_PATH, in executeTransition()
150 this->bus.call_noreply(method); in executeTransition()
155 bool Host::stateActive(const std::string& target) in stateActive()
160 auto method = this->bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_OBJ_PATH, in stateActive()
167 auto result = this->bus.call(method); in stateActive()
176 method = this->bus.new_method_call( in stateActive()
185 auto result = this->bus.call(method); in stateActive()
199 bool Host::isAutoReboot() in isAutoReboot()
203 /* The logic here is to first check the one-time AutoReboot setting. in isAutoReboot()
205 * user setting in the non one-time object, otherwise honor the one-time in isAutoReboot()
227 info("Auto reboot (one-time) disabled"); in isAutoReboot()
232 // one-time is true so read the user setting in isAutoReboot()
253 info("Auto reboot enabled but HOST BOOTCOUNT already set to 0"); in isAutoReboot()
259 utils::createError(this->bus, errorMsg, in isAutoReboot()
264 utils::createBmcDump(this->bus); in isAutoReboot()
282 void Host::sysStateChangeJobRemoved(sdbusplus::message_t& msg) in sysStateChangeJobRemoved()
292 if ((newStateUnit == getTarget(server::Host::HostState::Off)) && in sysStateChangeJobRemoved()
294 (!stateActive(getTarget(server::Host::HostState::Running)))) in sysStateChangeJobRemoved()
296 info("Received signal that host is off"); in sysStateChangeJobRemoved()
297 this->currentHostState(server::Host::HostState::Off); in sysStateChangeJobRemoved()
298 this->bootProgress(bootprogress::Progress::ProgressStages::Unspecified); in sysStateChangeJobRemoved()
299 this->operatingSystemState(osstatus::Status::OSStatus::Inactive); in sysStateChangeJobRemoved()
301 else if ((newStateUnit == getTarget(server::Host::HostState::Running)) && in sysStateChangeJobRemoved()
303 (stateActive(getTarget(server::Host::HostState::Running)))) in sysStateChangeJobRemoved()
305 info("Received signal that host is running"); in sysStateChangeJobRemoved()
306 this->currentHostState(server::Host::HostState::Running); in sysStateChangeJobRemoved()
309 // BMC is rebooted while the host is still up. in sysStateChangeJobRemoved()
310 // This file is used to indicate to host related systemd services in sysStateChangeJobRemoved()
311 // that the host is already running and they should skip running. in sysStateChangeJobRemoved()
312 // Once the host state is back to running we can clear this file. in sysStateChangeJobRemoved()
319 else if ((newStateUnit == getTarget(server::Host::HostState::Quiesced)) && in sysStateChangeJobRemoved()
321 (stateActive(getTarget(server::Host::HostState::Quiesced)))) in sysStateChangeJobRemoved()
323 if (Host::isAutoReboot()) in sysStateChangeJobRemoved()
326 Host::requestedHostTransition(server::Host::Transition::Reboot); in sysStateChangeJobRemoved()
331 this->currentHostState(server::Host::HostState::Quiesced); in sysStateChangeJobRemoved()
336 void Host::sysStateChangeJobNew(sdbusplus::message_t& msg) in sysStateChangeJobNew()
345 if (newStateUnit == getTarget(server::Host::HostState::DiagnosticMode)) in sysStateChangeJobNew()
347 info("Received signal that host is in diagnostice mode"); in sysStateChangeJobNew()
348 this->currentHostState(server::Host::HostState::DiagnosticMode); in sysStateChangeJobNew()
351 (server::Host::currentHostState() == in sysStateChangeJobNew()
352 server::Host::HostState::Running)) in sysStateChangeJobNew()
354 // Only decrease the boot count if host was running when the host crash in sysStateChangeJobNew()
358 info("Received signal that host has crashed, decrement reboot count"); in sysStateChangeJobNew()
360 // A host crash can cause a reboot of the host so decrement the reboot in sysStateChangeJobNew()
366 uint32_t Host::decrementRebootCount() in decrementRebootCount()
371 return (reboot::RebootAttempts::attemptsLeft(rebootCount - 1)); in decrementRebootCount()
376 fs::path Host::serialize() in serialize()
378 fs::path path{std::format(HOST_STATE_PERSIST_PATH, id)}; in serialize()
385 bool Host::deserialize() in deserialize()
387 fs::path path{std::format(HOST_STATE_PERSIST_PATH, id)}; in deserialize()
407 Host::Transition Host::requestedHostTransition(Transition value) in requestedHostTransition()
409 info("Host state transition request of {REQ}", "REQ", value); in requestedHostTransition()
412 if ((value != Transition::Off) && (!utils::isBmcReady(this->bus))) in requestedHostTransition()
414 info("BMC State is not Ready so no host on operations allowed"); in requestedHostTransition()
415 throw sdbusplus::xyz::openbmc_project::State::Host::Error:: in requestedHostTransition()
425 if (value != server::Host::Transition::Off) in requestedHostTransition()
431 if (phosphor::state::manager::utils::isFirmwareUpdating(this->bus)) in requestedHostTransition()
443 auto retVal = server::Host::requestedHostTransition(value); in requestedHostTransition()
449 Host::ProgressStages Host::bootProgress(ProgressStages value) in bootProgress()
456 Host::OSStatus Host::operatingSystemState(OSStatus value) in operatingSystemState()
463 Host::HostState Host::currentHostState(HostState value) in currentHostState()
465 info("Change to Host State: {STATE}", "STATE", value); in currentHostState()
466 return server::Host::currentHostState(value); in currentHostState()