Add a service to delay the reset
This change pushes the reset state out of bmcweb and into a special
daemon. Bmcweb will call this service, and this service with the delay
time.
Testd:
date && systemctl start delay@5.service && date
journalctl -f | grep -i 'systemd\|delay\|curl'
systemd[1]: Starting Delay power off...
(5 second delay)
systemd[1]: Started Delay power off.
curl[7198]: % Total % Received % Xferd Average Speed Time Time Time Current
curl[7198]: [395B blob data]
curl[7198]: {
curl[7198]: "@Message.ExtendedInfo": [
curl[7198]: {
curl[7198]: "@odata.type": "#Message.v1_1_1.Message",
curl[7198]: "Message": "The request completed successfully.",
curl[7198]: "MessageArgs": [],
curl[7198]: "MessageId": "Base.1.13.0.Success",
curl[7198]: "MessageSeverity": "OK",
curl[7198]: "Resolution": "None"
curl[7198]: }
curl[7198]: ]
curl[7198]: }
Signed-off-by: John Edward Broadbent <jebr@google.com>
Change-Id: I2615f47f915ea87f75b4e05b902f5308f15aa867
(cherry picked from commit 2d8afda19fb13210f47e4028288be0dfe72d9ac3)
diff --git a/recipes-phosphor/interfaces/bmcweb/delay-reset@.service b/recipes-phosphor/interfaces/bmcweb/delay-reset@.service
new file mode 100644
index 0000000..b7c3d9a
--- /dev/null
+++ b/recipes-phosphor/interfaces/bmcweb/delay-reset@.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Delay power off
+DefaultDependencies=no
+
+[Service]
+Type=oneshot
+ExecStartPre=sleep %I
+ExecStart=curl http://localhost:80/redfish/v1/Systems/system/Actions/ComputerSystem.Reset/ -d "{\"ResetType\": \"ForceOn\"}"
+
+[Install]
+WantedBy=multi-user.target
diff --git a/recipes-phosphor/interfaces/bmcweb_%.bbappend b/recipes-phosphor/interfaces/bmcweb_%.bbappend
index 85a4833..b3e6306 100644
--- a/recipes-phosphor/interfaces/bmcweb_%.bbappend
+++ b/recipes-phosphor/interfaces/bmcweb_%.bbappend
@@ -19,6 +19,7 @@
file://0005-Chassis-links-on-bmcweb.patch \
file://0007-Add-Fan-mode-change-function.patch \
file://service-override.conf \
+ file://delay-reset@.service \
file://0001-Add-chassis-reset-delay.patch \
"
@@ -69,9 +70,12 @@
${systemd_system_unitdir}/bmcweb.service.d/service-override.conf \
"
+SYSTEMD_SERVICE:${PN} += " delay-reset@.service"
+
do_install:append:gbmc() {
install -d ${D}${systemd_system_unitdir}/bmcweb.service.d
install -m 0644 ${WORKDIR}/service-override.conf ${D}${systemd_system_unitdir}/bmcweb.service.d/
+ install -m 0644 ${WORKDIR}/delay-reset@.service ${D}${systemd_system_unitdir}/
}
do_install:append:gbmc:dev() {