Statistics
| Branch: | Tag: | Revision:

root / snf-image-helper / tasks / 50EnforcePersonality.in @ 6d789991

History | View | Annotate | Download (1.4 kB)

1 22a2e378 Nikos Skalkotos
#! /bin/bash
2 22a2e378 Nikos Skalkotos
3 22a2e378 Nikos Skalkotos
### BEGIN TASK INFO
4 22a2e378 Nikos Skalkotos
# Provides:		EnforcePersonality
5 22a2e378 Nikos Skalkotos
# RunBefore:		UmountImage
6 22a2e378 Nikos Skalkotos
# RunAfter:		DeleteSSHKeys
7 22a2e378 Nikos Skalkotos
# Short-Description:	Inject files to the instance
8 22a2e378 Nikos Skalkotos
### END TASK INFO
9 22a2e378 Nikos Skalkotos
10 22a2e378 Nikos Skalkotos
set -e
11 22a2e378 Nikos Skalkotos
set -o pipefail
12 22a2e378 Nikos Skalkotos
13 22a2e378 Nikos Skalkotos
. "@commondir@/common.sh"
14 22a2e378 Nikos Skalkotos
15 22a2e378 Nikos Skalkotos
if [ ! -d "$SNF_IMAGE_TARGET" ]; then
16 22a2e378 Nikos Skalkotos
    log_error "Target dir: \`$SNF_IMAGE_TARGET' is missing"
17 22a2e378 Nikos Skalkotos
fi
18 22a2e378 Nikos Skalkotos
19 c03b6c45 Nikos Skalkotos
if [ -z "$SNF_IMAGE_PERSONALITY" ]; then
20 c03b6c45 Nikos Skalkotos
    warn "This image has no personality (0 files to inject)"
21 c03b6c45 Nikos Skalkotos
fi
22 c03b6c45 Nikos Skalkotos
23 c03b6c45 Nikos Skalkotos
if [ "$SNF_IMAGE_PROPERTY_OSFAMILY" = "windows" ]; then
24 22a2e378 Nikos Skalkotos
    echo "$SNF_IMAGE_PERSONALITY" |
25 22a2e378 Nikos Skalkotos
        @scriptsdir@/inject-files.py "$SNF_IMAGE_TARGET"
26 c03b6c45 Nikos Skalkotos
    exit 0
27 c03b6c45 Nikos Skalkotos
elif [ "$SNF_IMAGE_PROPERTY_OSFAMILY" = "linux" ]; then
28 c03b6c45 Nikos Skalkotos
    tmpdir=$(chroot "$SNF_IMAGE_TARGET" mktemp -d)
29 c03b6c45 Nikos Skalkotos
    add_cleanup rm -rf "$SNF_IMAGE_TARGET/$tmpdir"
30 c03b6c45 Nikos Skalkotos
    echo "$SNF_IMAGE_PERSONALITY" |
31 c03b6c45 Nikos Skalkotos
        @scriptsdir@/inject-files.py -d "$SNF_IMAGE_TARGET/$tmpdir"
32 6d789991 Nikos Skalkotos
    chroot "$SNF_IMAGE_TARGET" chmod 777 "$tmpdir"
33 c03b6c45 Nikos Skalkotos
    {
34 c03b6c45 Nikos Skalkotos
        while read -d $'\0' src; do
35 c03b6c45 Nikos Skalkotos
            read -d $'\0' owner;
36 c03b6c45 Nikos Skalkotos
            read -d $'\0' group;
37 c03b6c45 Nikos Skalkotos
            read -d $'\0' mode;
38 c03b6c45 Nikos Skalkotos
            read -d $'\0' dest;
39 c03b6c45 Nikos Skalkotos
            chroot "$SNF_IMAGE_TARGET" chown "$owner:$group" "$tmpdir/$src"
40 c03b6c45 Nikos Skalkotos
            chroot "$SNF_IMAGE_TARGET" su -l "$owner" -c \
41 6d789991 Nikos Skalkotos
                "install -D -m $mode $(printf "%q" "$tmpdir")/$src \
42 c03b6c45 Nikos Skalkotos
                $(printf "%q" "$dest")"
43 c03b6c45 Nikos Skalkotos
        done
44 c03b6c45 Nikos Skalkotos
    } < "$SNF_IMAGE_TARGET/$tmpdir/manifest"
45 22a2e378 Nikos Skalkotos
fi
46 22a2e378 Nikos Skalkotos
47 22a2e378 Nikos Skalkotos
exit 0
48 22a2e378 Nikos Skalkotos
49 22a2e378 Nikos Skalkotos
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :