From 4301a804c721ee701ee102db5340c983b3c54b12 Mon Sep 17 00:00:00 2001 From: Brandon Philips Date: Fri, 5 Jul 2013 16:05:11 -0700 Subject: [PATCH] feat(update_engine): add reboot manager experiment Eventually this will talk to the API and coordinate with the rest of the host group but for now lets right a bash script and reboot in 60 seconds. --- .../update-engine-reboot-manager.service | 10 ++++++++ .../files/update_engine_reboot_manager | 23 +++++++++++++++++++ ...ebuild => update_engine-0.0.1-r371.ebuild} | 0 .../update_engine/update_engine-0.0.1.ebuild | 4 ++++ .../update_engine/update_engine-9999.ebuild | 4 ++++ 5 files changed, 41 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/files/update-engine-reboot-manager.service create mode 100755 sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/files/update_engine_reboot_manager rename sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/{update_engine-0.0.1-r370.ebuild => update_engine-0.0.1-r371.ebuild} (100%) diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/files/update-engine-reboot-manager.service b/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/files/update-engine-reboot-manager.service new file mode 100644 index 0000000000..68dc5a3257 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/files/update-engine-reboot-manager.service @@ -0,0 +1,10 @@ +[Unit] +Description=Update Engine +ConditionVirtualization=!container + +[Service] +ExecStart=/usr/sbin/update_engine_reboot_manager +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/files/update_engine_reboot_manager b/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/files/update_engine_reboot_manager new file mode 100755 index 0000000000..ebb793e7ee --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/files/update_engine_reboot_manager @@ -0,0 +1,23 @@ +#!/bin/bash + +# Copyright (c) 2013 The CoreOS Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# TODO: Make this a service in Go that coordinates between a host group + +interface=org.chromium.UpdateEngineInterface +member=StatusUpdate + +reboot_tasks() { + sync + echo "$0 rebooting machine after update" > /dev/kmsg + shutdown -r -t 60 +} + +filter="type=signal,interface='$interface',member='$member'" + +dbus-monitor --system ${filter} | +while read -r line; do + echo $line | grep -q "UPDATE_STATUS_UPDATED_NEED_REBOOT" && reboot_tasks +done diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-0.0.1-r370.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-0.0.1-r371.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-0.0.1-r370.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-0.0.1-r371.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-0.0.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-0.0.1.ebuild index b6cb2d1737..d4864b6844 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-0.0.1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-0.0.1.ebuild @@ -76,6 +76,10 @@ src_test() { } src_install() { + dosbin "${FILESDIR}"/update_engine_reboot_manager + systemd_dounit "${FILESDIR}"/update-engine-reboot-manager.service + systemd_enable_service multi-user.target update-engine-reboot-manager.service + dosbin update_engine dobin update_engine_client diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-9999.ebuild index cffb2085d9..9083ba2e4c 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-9999.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/update_engine/update_engine-9999.ebuild @@ -75,6 +75,10 @@ src_test() { } src_install() { + dosbin "${FILESDIR}"/update_engine_reboot_manager + systemd_dounit "${FILESDIR}"/update-engine-reboot-manager.service + systemd_enable_service multi-user.target update-engine-reboot-manager.service + dosbin update_engine dobin update_engine_client