diff --git a/bundles/apt/files/upgrade-and-reboot b/bundles/apt/files/upgrade-and-reboot index d4c54de..118cc11 100644 --- a/bundles/apt/files/upgrade-and-reboot +++ b/bundles/apt/files/upgrade-and-reboot @@ -74,4 +74,19 @@ then date | mail -s "SYSREBOOTNOW ${node.name}" ${data['mail']} % endif systemctl reboot +% if restart_triggers +else +% for affected, restarts in sorted(restart_triggers.items()): + up_since=$(systemctl show "${affected}" | sed -n 's/^ActiveEnterTimestamp=//p' || echo 0) + up_since_ts=$(date -d "$up_since" +%s || echo 0) + now=$(date +%s) + + if [ $((now - up_since_ts)) -lt 3600 ] + then +% for restart in sorted(restarts): + systemctl restart "${restart}" || true +% endfor + fi +% endfor +% endif fi diff --git a/bundles/apt/items.py b/bundles/apt/items.py index 6fc42e2..193c76c 100644 --- a/bundles/apt/items.py +++ b/bundles/apt/items.py @@ -33,6 +33,7 @@ files = { 'context': { 'clean_old_kernels': node.metadata.get('apt/clean_old_kernels', True), 'data': node.metadata.get('apt/unattended-upgrades', {}), + 'restart_triggers': node.metadata.get('apt/restart_triggers', {}), } }, '/etc/cloud': {