blob: 3e1f473adbf24b31007aa70770007a4fe2212abc [file] [log] [blame]
Ben Tynerbcf65a82020-12-01 08:46:36 -06001#include <libpdbg.h>
2
3#include <attn/attn_common.hpp>
4#include <sdbusplus/bus.hpp>
5
6#include <map>
7
8namespace attn
9{
10
11/** @brief Transition the host state */
12void transitionHost(const HostState i_hostState)
13{
14 thread_stop_all(); // in libpdbg
15
16 // We will be transitioning host by starting appropriate dbus target
17 std::string target = "obmc-host-quiesce@0.target"; // quiesce is default
18
19 // diagnostic mode state requested
20 if (HostState::Diagnostic == i_hostState)
21 {
22 target = "obmc-host-diagnostic-mode@0.target";
23 }
24
25 auto bus = sdbusplus::bus::new_system();
26 auto method = bus.new_method_call(
27 "org.freedesktop.systemd1", "/org/freedesktop/systemd1",
28 "org.freedesktop.systemd1.Manager", "StartUnit");
29
30 method.append(target); // target unit to start
31 method.append("replace"); // mode = replace conflicting queued jobs
32
33 bus.call_noreply(method); // start the service
34}
35
36} // namespace attn