diff options
author | Scott Moser <smoser@ubuntu.com> | 2013-03-19 08:22:30 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2013-03-19 08:22:30 -0400 |
commit | a904de054f7818137c864e0f3ff728b3764cf457 (patch) | |
tree | e28f4807469f2c39554d4353bf11685c03a1b4aa /upstart/cloud-init-nonet.conf | |
parent | 204e79b93c882e17df63b24f7f682c0dbefb482d (diff) | |
parent | ae0f94c8f39a234d73ab8e2caf24d73439c8b5ee (diff) | |
download | vyos-cloud-init-a904de054f7818137c864e0f3ff728b3764cf457.tar.gz vyos-cloud-init-a904de054f7818137c864e0f3ff728b3764cf457.zip |
merge from trunk at revno 799
Diffstat (limited to 'upstart/cloud-init-nonet.conf')
-rw-r--r-- | upstart/cloud-init-nonet.conf | 58 |
1 files changed, 47 insertions, 11 deletions
diff --git a/upstart/cloud-init-nonet.conf b/upstart/cloud-init-nonet.conf index 118ffc1c..36b99fb5 100644 --- a/upstart/cloud-init-nonet.conf +++ b/upstart/cloud-init-nonet.conf @@ -10,19 +10,55 @@ task console output script - # /run/network/static-network-up-emitted is written by - # upstart (via /etc/network/if-up.d/upstart). its presense would - # indicate that static-network-up has already fired. - EMITTED="/run/network/static-network-up-emitted" - [ -e "$EMITTED" -o -e "/var/$EMITTED" ] && exit 0 + set +e # you cannot trap TERM reliably with 'set -e' + SLEEP_CHILD="" + static_network_up() { + local emitted="/run/network/static-network-up-emitted" + # /run/network/static-network-up-emitted is written by + # upstart (via /etc/network/if-up.d/upstart). its presense would + # indicate that static-network-up has already fired. + [ -e "$emitted" -o -e "/var/$emitted" ] + } + msg() { + local uptime="" idle="" + if [ -r /proc/uptime ]; then + read uptime idle < /proc/uptime + fi + echo "$UPSTART_JOB${uptime:+[${uptime}]}:" "$1" + } + + handle_sigterm() { + # if we received sigterm and static networking is up then it probably + # came from upstart as a result of 'stop on static-network-up' + [ -z "$SLEEP_CHILD" ] || kill $SLEEP_CHILD + if static_network_up; then + msg "static networking is now up" + exit 0 + fi + msg "recieved SIGTERM, networking not up" + exit 2 + } + + dowait() { + msg "waiting $1 seconds for network device" + sleep "$1" & + SLEEP_CHILD=$! + wait $SLEEP_CHILD + SLEEP_CHILD="" + } + + trap handle_sigterm TERM + + # static_network_up already occurred + static_network_up && exit 0 + + # obj.pkl comes from cloud-init-local (or previous boot and + # manual_cache_clean) [ -f /var/lib/cloud/instance/obj.pkl ] && exit 0 - short=10; long=120; - sleep ${short} - echo $UPSTART_JOB "waiting ${long} seconds for a network device." - sleep ${long} - echo $UPSTART_JOB "gave up waiting for a network device." + dowait 10 + dowait 120 + msg "gave up waiting for a network device." : > /var/lib/cloud/data/no-net end script -# EOF |