~cloud-init-dev/cloud-init/trunk

« back to all changes in this revision

Viewing changes to upstart/cloud-init-nonet.conf

  • Committer: Scott Moser
  • Date: 2016-08-10 15:06:15 UTC
  • Revision ID: smoser@ubuntu.com-20160810150615-ma2fv107w3suy1ma
README: Mention move of revision control to git.

cloud-init development has moved its revision control to git.
It is available at 
  https://code.launchpad.net/cloud-init

Clone with 
  git clone https://git.launchpad.net/cloud-init
or
  git clone git+ssh://git.launchpad.net/cloud-init

For more information see
  https://git.launchpad.net/cloud-init/tree/HACKING.rst

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# cloud-init-no-net
2
 
# the purpose of this job is
3
 
#  * to block running of cloud-init until all network interfaces
4
 
#    configured in /etc/network/interfaces are up
5
 
#  * timeout if they all do not come up in a reasonable amount of time
6
 
start on mounted MOUNTPOINT=/ and stopped cloud-init-local
7
 
stop on static-network-up
8
 
task
9
 
 
10
 
console output
11
 
 
12
 
script
13
 
   set +e  # you cannot trap TERM reliably with 'set -e'
14
 
   SLEEP_CHILD=""
15
 
 
16
 
   static_network_up() {
17
 
      local emitted="/run/network/static-network-up-emitted"
18
 
      # /run/network/static-network-up-emitted is written by
19
 
      # upstart (via /etc/network/if-up.d/upstart). its presense would
20
 
      # indicate that static-network-up has already fired.
21
 
      [ -e "$emitted" -o -e "/var/$emitted" ]
22
 
   }
23
 
   msg() {
24
 
      local uptime="" idle=""
25
 
      if [ -r /proc/uptime ]; then
26
 
         read uptime idle < /proc/uptime
27
 
      fi
28
 
      echo "$UPSTART_JOB${uptime:+[${uptime}]}:" "$1"
29
 
   }
30
 
 
31
 
   handle_sigterm() {
32
 
      # if we received sigterm and static networking is up then it probably
33
 
      # came from upstart as a result of 'stop on static-network-up'
34
 
      if [ -n "$SLEEP_CHILD" ]; then
35
 
          if ! kill $SLEEP_CHILD 2>/dev/null; then
36
 
              [ ! -d "/proc/$SLEEP_CHILD" ] ||
37
 
                  msg "hm.. failed to kill sleep pid $SLEEP_CHILD"
38
 
          fi
39
 
      fi
40
 
      if static_network_up; then
41
 
         msg "static networking is now up"
42
 
         exit 0
43
 
      fi
44
 
      msg "recieved SIGTERM, networking not up"
45
 
      exit 2
46
 
   }
47
 
 
48
 
   dowait() {
49
 
      [ $# -eq 2 ] || msg "waiting $1 seconds for network device"
50
 
      sleep "$1" &
51
 
      SLEEP_CHILD=$!
52
 
      wait $SLEEP_CHILD
53
 
      SLEEP_CHILD=""
54
 
   }
55
 
 
56
 
   trap handle_sigterm TERM
57
 
 
58
 
   # static_network_up already occurred
59
 
   static_network_up && exit 0
60
 
 
61
 
   dowait 5 silent
62
 
   dowait 10
63
 
   dowait 115
64
 
   msg "gave up waiting for a network device."
65
 
   : > /var/lib/cloud/data/no-net
66
 
end script