Statistics
| Branch: | Tag: | Revision:

root / snf-image-helper / snf-image-helper.in @ 21be5a41

History | View | Annotate | Download (2.9 kB)

1 54080484 Nikos Skalkotos
#!/bin/bash
2 54080484 Nikos Skalkotos
3 3709b5f4 Nikos Skalkotos
# Copyright (C) 2011 GRNET S.A. 
4 54080484 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 54080484 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 54080484 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 54080484 Nikos Skalkotos
20 bf7c33b2 Nikos Skalkotos
. @commondir@/common.sh
21 54080484 Nikos Skalkotos
22 c349d1b3 Nikos Skalkotos
set -e
23 c349d1b3 Nikos Skalkotos
24 ff7783b8 Vangelis Koukis
if [ "x$1" != "x--force" ]; then
25 af4a3462 Vangelis Koukis
    echo "WARNING: Exiting, this command would cause the system to halt." >&2
26 af4a3462 Vangelis Koukis
    echo "Use --force if you know what you're doing." >&2
27 ff7783b8 Vangelis Koukis
    exit 1
28 ff7783b8 Vangelis Koukis
fi
29 ff7783b8 Vangelis Koukis
30 54080484 Nikos Skalkotos
# terminate helper vm when the script exits
31 bad5ca1f Nikos Skalkotos
add_cleanup telinit 0
32 54080484 Nikos Skalkotos
33 bad5ca1f Nikos Skalkotos
if [ ! -b "$FLOPPY_DEV" ]; then
34 c349d1b3 Nikos Skalkotos
    log_error "Floppy device is not present!"
35 c349d1b3 Nikos Skalkotos
fi
36 c349d1b3 Nikos Skalkotos
37 bad5ca1f Nikos Skalkotos
floppy=$(mktemp -d --tmpdir floppy.XXXXXX)
38 bad5ca1f Nikos Skalkotos
add_cleanup rmdir "$floppy"
39 54080484 Nikos Skalkotos
40 c349d1b3 Nikos Skalkotos
mount $FLOPPY_DEV $floppy
41 bad5ca1f Nikos Skalkotos
add_cleanup umount "$floppy"
42 c349d1b3 Nikos Skalkotos
43 bad5ca1f Nikos Skalkotos
if [ -f "$floppy/rules" ]; then
44 bad5ca1f Nikos Skalkotos
    source "$floppy/rules"
45 54080484 Nikos Skalkotos
else
46 c349d1b3 Nikos Skalkotos
    log_error "Floppy does not contain \`rules\' file"
47 c308b9f9 Nikos Skalkotos
fi
48 54080484 Nikos Skalkotos
49 8689d50f Nikos Skalkotos
if [ -f "$floppy/unattend.xml" ]; then
50 8689d50f Nikos Skalkotos
    export SNF_IMAGE_UNATTEND="$floppy/unattend.xml"
51 8689d50f Nikos Skalkotos
fi
52 8689d50f Nikos Skalkotos
53 473f4fa5 Nikos Skalkotos
if [ -n "$SNF_IMAGE_PROPERTIES" ]; then
54 473f4fa5 Nikos Skalkotos
    properties=$(mktemp --tmpdir properties.XXXXXX)
55 473f4fa5 Nikos Skalkotos
    add_cleanup rm "$properties"
56 38552c68 Nikos Skalkotos
    echo "$SNF_IMAGE_PROPERTIES" |
57 38552c68 Nikos Skalkotos
        "@scriptsdir@/decode-properties.py" "$properties"
58 473f4fa5 Nikos Skalkotos
    source "$properties"
59 473f4fa5 Nikos Skalkotos
fi
60 473f4fa5 Nikos Skalkotos
61 c349d1b3 Nikos Skalkotos
# Image mount point...
62 bad5ca1f Nikos Skalkotos
target=$(mktemp -d --tmpdir target.XXXXXX)
63 bad5ca1f Nikos Skalkotos
add_cleanup rmdir "$target"
64 54080484 Nikos Skalkotos
65 bad5ca1f Nikos Skalkotos
export SNF_IMAGE_TARGET="$target"
66 54080484 Nikos Skalkotos
67 27b1de98 Nikos Skalkotos
if [ ! -d "@tasksdir@" ]; then
68 1bb3e009 Nikos Skalkotos
    log_error "snf-image/tasks directory is missing"
69 1bb3e009 Nikos Skalkotos
fi
70 c349d1b3 Nikos Skalkotos
71 1bb3e009 Nikos Skalkotos
RUN_PARTS=$(which run-parts)
72 1bb3e009 Nikos Skalkotos
if [ -z "$RUN_PARTS" ]; then
73 cc9de6c0 Vangelis Koukis
    log_error "run-parts program is missing from the system"
74 54080484 Nikos Skalkotos
fi
75 54080484 Nikos Skalkotos
76 0468a748 Nikos Skalkotos
# If something goes wrong with the tasks, try to umount the target filesystem
77 0468a748 Nikos Skalkotos
# in case it is left mounted...
78 bad5ca1f Nikos Skalkotos
trap '{ umount "$target"; }' ERR
79 0468a748 Nikos Skalkotos
80 e50c4112 Nikos Skalkotos
if [ -z "$SNF_IMAGE_PROPERTY_EXCLUDE_ALL_TASKS" ]; then
81 c334f836 Nikos Skalkotos
82 8576747b Nikos Skalkotos
    export SNF_IMAGE_RESIZE_PART="$(get_partition_to_resize "$SNF_IMAGE_DEV")"
83 8576747b Nikos Skalkotos
84 c334f836 Nikos Skalkotos
    if [[ ! "$SNF_IMAGE_PROPERTY_OSFAMILY" =~ ^(linux|windows)$ ]]; then
85 b2635f72 Nikos Skalkotos
        log_error "Supported values for OSFAMILY property are: linux|windows"
86 c334f836 Nikos Skalkotos
    fi
87 c334f836 Nikos Skalkotos
88 e7cbe965 Nikos Skalkotos
    # Redirect standard error to standard output,
89 e7cbe965 Nikos Skalkotos
    # prepend a timestamp before each line of output.
90 e7cbe965 Nikos Skalkotos
    echo "Execute all snf-image tasks...."
91 e7cbe965 Nikos Skalkotos
    $RUN_PARTS -v --exit-on-error "@tasksdir@" 2>&1|
92 e7cbe965 Nikos Skalkotos
        while IFS= read -r line; do
93 e7cbe965 Nikos Skalkotos
            echo $(date +%Y:%m:%d-%H:%M:%S.%N) "$line"
94 e7cbe965 Nikos Skalkotos
        done
95 e7cbe965 Nikos Skalkotos
fi
96 1bb3e009 Nikos Skalkotos
97 cb6b4f68 Nikos Skalkotos
# Disable the trap. If code reaches here, the filesystem is unmounted.
98 cb6b4f68 Nikos Skalkotos
trap - ERR
99 cb6b4f68 Nikos Skalkotos
100 bad5ca1f Nikos Skalkotos
echo "SUCCESS" > "$RESULT"
101 7f6bd8e0 Nikos Skalkotos
102 54080484 Nikos Skalkotos
cleanup
103 54080484 Nikos Skalkotos
trap - EXIT
104 54080484 Nikos Skalkotos
105 54080484 Nikos Skalkotos
# never called...
106 54080484 Nikos Skalkotos
exit 0
107 54080484 Nikos Skalkotos
108 54080484 Nikos Skalkotos
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :