3f0f26c663be0c6d2ac1457c0315f5345c3e73fa
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / src / usr / share / cloud / functions
1 #!/bin/sh
2 # vi: ts=4 noexpandtab
3
4 BURL="http://169.254.169.254/2009-04-04"
5 MDURL="${BURL}/meta-data"
6 UDURL="${BURL}/user-data"
7 STATE_D=/var/lib/cloud
8 SEM_D=$STATE_D/sem
9 CLOUD_CONFIG=${STATE_D}/config.sh
10 MD_DEBUG_COUNT=30
11 MD_MAX_TRIES=30
12 IS_NOCLOUD=0
13
14 [ -d "${STATE_D}" ] || mkdir -p "${STATE_D}"
15
16 [ -f "${CLOUD_CONFIG}" ] && . "${CLOUD_CONFIG}"
17 # CLOUD_CONFIG may set
18 # MD_TRIES
19 # MD_DEBUG_COUNT
20
21 TMPF=/tmp/${0##*/}.tmp
22 trap "rm -f ${TMPF}" EXIT
23 msg() { echo "${XN}: $1"; }
24 mdget() {
25         if [ "${2}" = "-" ]; then
26                 wget -q -O - "${MDURL}/${1}"
27         else
28                 local out=${2:-${TMPF}}
29                 wget -q -O - "${MDURL}/${1}" > "${out}" &&
30                         { read _RET < "${TMPF}" ; :; }
31         fi
32 }
33 marked() {
34         local name=${2:-${XN}} iid=${1}
35         [ -f "${SEM_D}/${name}.${iid}" ]
36 }
37 mark() {
38         local name=${2:-${XN}} iid=${1}
39         { [ -d "${SEM_D}" ] || mkdir "${SEM_D}"; } ||
40                 msg "failed to make ${SEM_D}"
41         date > "${SEM_D}/${name}.${iid}"
42 }
43
44 mddebug() {
45         local dbf="${STATE_D}/mddebug"
46         if [ -f "${dbf}" ]; then
47                 chmod 755 "${dbf}"
48                 msg "running ${dbf} (${MD_DEBUG_COUNT} tries reached)"
49                 echo "############ debug start ##############"
50                 "${STATE_D}/debug"
51                 echo "############ debug end   ##############"
52                 return
53         fi
54         msg "running debug (${MD_DEBUG_COUNT} tries reached)"
55         echo "############ debug start ##############"
56         echo "### /etc/rc.d/init.d/sshd start"
57         /etc/rc.d/init.d/sshd start
58         local gw=""
59         gw=$(route -n | awk '$1 == "0.0.0.0" && $2 != "0.0.0.0" { print $2 }')
60         echo "### ifconfig -a"
61         ifconfig -a
62         echo "### route -n"
63         route -n
64         echo "### cat /etc/resolv.conf"
65         cat /etc/resolv.conf
66         if [ -n "${gw}" ]; then
67                 echo "### ping -c 5 ${gw}"
68                 ping -c 5 ${gw}
69         else
70                 echo "### gateway not found"
71         fi
72         local t1 t2 t3 nslist="" ns=""
73         while read t1 t2 t3; do
74                 case "$t1" in
75                         nameserver) nslist="${nslist} ${t2}";;
76                 esac
77         done < /etc/resolv.conf
78         echo "### pinging nameservers"
79         for ns in ${nslist}; do
80                 echo "#### ping -c 5 ${ns}"
81                 ping -c 5 ${ns}
82         done
83         echo "### uname -a"
84         uname -a
85         lxc-is-container || { echo "### lsmod"; lsmod; }
86         echo "### dmesg | tail"
87         dmesg | tail
88         echo "### tail -n 25 /var/log/messages"
89         tail -n 25 /var/log/messages
90         echo "############ debug end   ##############"
91 }
92
93 is_nocloud() {
94         [ "${IS_NOCLOUD:-0}" != "0" ] && return 0
95         lxc-is-container ||
96                 { grep -q "ds=nocloud" /proc/cmdline && return 0; }
97         [ -f /root/nocloud ] && return 0
98         return 1
99 }