Statistics
| Branch: | Tag: | Revision:

root / snf-image-host / snf-image-update-helper.in @ master

History | View | Annotate | Download (3.3 kB)

1 d51a95a8 Nikos Skalkotos
#!/bin/bash
2 d51a95a8 Nikos Skalkotos
3 fc8cbf90 Nikos Skalkotos
# Copyright (C) 2011 GRNET S.A.
4 3709b5f4 Nikos Skalkotos
#
5 3709b5f4 Nikos Skalkotos
# This program is free software; you can redistribute it and/or modify
6 3709b5f4 Nikos Skalkotos
# it under the terms of the GNU General Public License as published by
7 3709b5f4 Nikos Skalkotos
# the Free Software Foundation; either version 2 of the License, or
8 3709b5f4 Nikos Skalkotos
# (at your option) any later version.
9 3709b5f4 Nikos Skalkotos
#
10 3709b5f4 Nikos Skalkotos
# This program is distributed in the hope that it will be useful, but
11 3709b5f4 Nikos Skalkotos
# WITHOUT ANY WARRANTY; without even the implied warranty of
12 3709b5f4 Nikos Skalkotos
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 3709b5f4 Nikos Skalkotos
# General Public License for more details.
14 3709b5f4 Nikos Skalkotos
#
15 3709b5f4 Nikos Skalkotos
# You should have received a copy of the GNU General Public License
16 3709b5f4 Nikos Skalkotos
# along with this program; if not, write to the Free Software
17 3709b5f4 Nikos Skalkotos
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 3709b5f4 Nikos Skalkotos
# 02110-1301, USA.
19 3709b5f4 Nikos Skalkotos
20 d51a95a8 Nikos Skalkotos
set -e
21 bd0a7bd3 Nikos Skalkotos
set -o errtrace
22 d51a95a8 Nikos Skalkotos
23 d51a95a8 Nikos Skalkotos
. @osdir@/common.sh
24 d51a95a8 Nikos Skalkotos
25 9728e789 Nikos Skalkotos
DEFAULT_FILE="@sysconfdir@/default/snf-image-update-helper"
26 9728e789 Nikos Skalkotos
27 9728e789 Nikos Skalkotos
if [ -f "$DEFAULT_FILE" ]; then
28 9728e789 Nikos Skalkotos
    . "$DEFAULT_FILE"
29 9728e789 Nikos Skalkotos
fi
30 9728e789 Nikos Skalkotos
31 9728e789 Nikos Skalkotos
: ${HELPER_URL:="@HELPER_URL@"}
32 9728e789 Nikos Skalkotos
33 6854000a Nikos Skalkotos
usage() {
34 6854000a Nikos Skalkotos
    local rc="$1"
35 6854000a Nikos Skalkotos
36 6854000a Nikos Skalkotos
    cat <<EOF
37 6854000a Nikos Skalkotos
38 6854000a Nikos Skalkotos
Usage: $0 [options]
39 6854000a Nikos Skalkotos
40 6854000a Nikos Skalkotos
This script will download a suitable fixed snf-image-helper image and will
41 6854000a Nikos Skalkotos
install it under $IMAGE_DIR.
42 6854000a Nikos Skalkotos
43 6854000a Nikos Skalkotos
OPTIONS:
44 6854000a Nikos Skalkotos
    -h Print this message
45 6854000a Nikos Skalkotos
46 61b79815 Nikos Skalkotos
    -u URL
47 61b79815 Nikos Skalkotos
       Download URL to use for the helper image instead of $HELPER_URL
48 61b79815 Nikos Skalkotos
49 6854000a Nikos Skalkotos
    -y Assume Yes to all queries and do not prompt
50 6854000a Nikos Skalkotos
51 29f35803 Nikos Skalkotos
    -f Force the installation even if the snf-image and helper versions don't match
52 29f35803 Nikos Skalkotos
53 6854000a Nikos Skalkotos
EOF
54 6854000a Nikos Skalkotos
55 6854000a Nikos Skalkotos
    exit "$rc"
56 6854000a Nikos Skalkotos
}
57 6854000a Nikos Skalkotos
58 29f35803 Nikos Skalkotos
while getopts "hu:yf" opt; do
59 6854000a Nikos Skalkotos
    case $opt in
60 6854000a Nikos Skalkotos
        h) usage 0
61 6854000a Nikos Skalkotos
            ;;
62 61b79815 Nikos Skalkotos
        u) HELPER_URL="$OPTARG"
63 61b79815 Nikos Skalkotos
            ;;
64 6854000a Nikos Skalkotos
        y) NO_PROMPT="yes"
65 6854000a Nikos Skalkotos
            ;;
66 29f35803 Nikos Skalkotos
        f) FORCE="yes"
67 29f35803 Nikos Skalkotos
            ;;
68 6854000a Nikos Skalkotos
        ?) log_error "User \`-h' for help"; exit 1
69 6854000a Nikos Skalkotos
            ;;
70 6854000a Nikos Skalkotos
    esac
71 6854000a Nikos Skalkotos
done
72 6854000a Nikos Skalkotos
73 6854000a Nikos Skalkotos
cat >&1 <<EOF
74 f7f72578 Nikos Skalkotos
75 ce0c8432 Nikos Skalkotos
$(basename $0) will download a snf-image-helper image from:
76 f59d5348 Nikos Skalkotos
\`$HELPER_URL' and will install it under $HELPER_DIR.
77 ce0c8432 Nikos Skalkotos
The following files will be overwritten if present:
78 6854000a Nikos Skalkotos
  \`$HELPER_DIR/initrd'
79 6854000a Nikos Skalkotos
  \`$HELPER_DIR/kernel'
80 6854000a Nikos Skalkotos
  \`$HELPER_DIR/image'
81 6854000a Nikos Skalkotos
  \`$HELPER_DIR/packages'
82 29f35803 Nikos Skalkotos
  \`$HELPER_DIR/version'
83 6854000a Nikos Skalkotos
EOF
84 6854000a Nikos Skalkotos
85 6854000a Nikos Skalkotos
while [[ 1 ]]; do
86 6854000a Nikos Skalkotos
    echo -n "Do you want to continue [y/N]? "
87 6854000a Nikos Skalkotos
    if [ "x$NO_PROMPT" = "xyes" ]; then
88 6854000a Nikos Skalkotos
        echo "y";
89 6854000a Nikos Skalkotos
        break;
90 6854000a Nikos Skalkotos
    fi
91 6854000a Nikos Skalkotos
92 6854000a Nikos Skalkotos
    read answer
93 6854000a Nikos Skalkotos
    [ "$(echo -n "$answer" | tr [A-Z] [a-z])" = "y" ] && break
94 6854000a Nikos Skalkotos
    if [ -z "$answer" -o "$(echo -n "$answer" | tr [A-Z] [a-z])" = "n" ]; then
95 6854000a Nikos Skalkotos
        log_error "Abort."
96 6854000a Nikos Skalkotos
        exit 1
97 6854000a Nikos Skalkotos
    fi
98 6854000a Nikos Skalkotos
done
99 6854000a Nikos Skalkotos
100 34e34e80 Nikos Skalkotos
IMAGE_DIR=$(mktemp -d)
101 34e34e80 Nikos Skalkotos
add_cleanup rmdir "$IMAGE_DIR"
102 a1aef659 Nikos Skalkotos
103 34e34e80 Nikos Skalkotos
cd "$IMAGE_DIR"
104 a1aef659 Nikos Skalkotos
105 34e34e80 Nikos Skalkotos
IMAGE=$(basename "$HELPER_URL")
106 f7f72578 Nikos Skalkotos
echo >&2
107 f7f72578 Nikos Skalkotos
echo "Downloading helper image from $HELPER_URL ..." >&2
108 34e34e80 Nikos Skalkotos
$CURL -O -L -f "$HELPER_URL"
109 34e34e80 Nikos Skalkotos
add_cleanup rm -f "$IMAGE_DIR/$IMAGE"
110 a1aef659 Nikos Skalkotos
111 34e34e80 Nikos Skalkotos
cd "$HELPER_DIR"
112 a1aef659 Nikos Skalkotos
113 f7f72578 Nikos Skalkotos
echo >&2
114 f7f72578 Nikos Skalkotos
echo "Extracting helper image under \`$HELPER_DIR':" >&2
115 34e34e80 Nikos Skalkotos
tar -xvf "$IMAGE_DIR/$IMAGE"
116 cfd38847 Nikos Skalkotos
117 29f35803 Nikos Skalkotos
if [ "x$FORCE" != "xyes" ]; then
118 29f35803 Nikos Skalkotos
    echo >&2
119 29f35803 Nikos Skalkotos
    echo "Checking helper image version ..." >&2
120 29f35803 Nikos Skalkotos
    if [ ! -f "$HELPER_DIR/version" ]; then
121 29f35803 Nikos Skalkotos
        log_error "File: \`$HELPER_DIR/version' is missing!"
122 29f35803 Nikos Skalkotos
        exit 1
123 29f35803 Nikos Skalkotos
    fi
124 29f35803 Nikos Skalkotos
    helper_version="$(cat $HELPER_DIR/version)"
125 29f35803 Nikos Skalkotos
    if [ "x$SNF_IMAGE_VERSION" != "x$helper_version" ]; then
126 29f35803 Nikos Skalkotos
        log_error "snf-image version (=$SNF_IMAGE_VERSION) and " \
127 29f35803 Nikos Skalkotos
            "helper image version (=$helper_version) don't match!"
128 29f35803 Nikos Skalkotos
        log_error "Use \`-f' to bypass the version check."
129 29f35803 Nikos Skalkotos
        exit 1
130 29f35803 Nikos Skalkotos
    fi
131 29f35803 Nikos Skalkotos
fi
132 29f35803 Nikos Skalkotos
133 f7f72578 Nikos Skalkotos
echo >&2
134 f7f72578 Nikos Skalkotos
echo "Helper image was installed successfully!" >&2
135 d51a95a8 Nikos Skalkotos
exit 0
136 d51a95a8 Nikos Skalkotos
137 d51a95a8 Nikos Skalkotos
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :