X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=cirros-testvm%2Fsrc-cirros%2Fsrc%2Flib%2Fcirros%2Fds%2Fnocloud;fp=cirros-testvm%2Fsrc-cirros%2Fsrc%2Flib%2Fcirros%2Fds%2Fnocloud;h=a18349aab5c49031e0f901d734f5c83d84b8d829;hb=b0a0f15dfaa205161a7fcb20cf1b8cd4948c2ef3;hp=0000000000000000000000000000000000000000;hpb=c6ac3cd55ee2da956195eee393b0882105dfad4e;p=packages%2Ftrusty%2Fcirros-testvm.git diff --git a/cirros-testvm/src-cirros/src/lib/cirros/ds/nocloud b/cirros-testvm/src-cirros/src/lib/cirros/ds/nocloud new file mode 100755 index 0000000..a18349a --- /dev/null +++ b/cirros-testvm/src-cirros/src/lib/cirros/ds/nocloud @@ -0,0 +1,152 @@ +#!/bin/sh + +VERBOSITY=1 +CONFIG="/etc/cirros-init/ds-nocloud" +SEED_PRE_D="/var/lib/cloud/seed/nocloud-pre" +SEED_POST_D="/var/lib/cloud/seed/nocloud" +NAME="${0##*/}" +LABEL="cidata" + +. ${CIRROS_SHLIB:=/lib/cirros/shlib} || + { echo "failed to read ${CIRROS_SHLIB}" 1>&2; exit 1; } + +Usage() { + cat < "${data_d}/instance-id" + fi + if [ -d "${data_d}/public-keys" ]; then + # turn public-keys list into + mv "${data_d}/public-keys" "${out_d}/public-keys-d"; + set +f + for f in "${out_d}/public-keys-d/"*; do + [ -f "${f}" -a "${f##*/}" != "0" ] && cat "$f" + done > "${data_d}/public-keys" + set -f + fi + + echo 0 > "$out_d/result" +} + +apply() { + local mode="$1" data_d="$2" + # support copying 'files' if it happened to be on that disk + if [ -d "$data_d/files" ]; then + local omask="" f="" path="" tpath="" + omask=$(umask) + umask 0226 + for f in $(find "$data_d/files/" -type f); do + path="${f#${data_d}/files/}" + tpath="${TARGET_ROOT}/${path}" + mkdir -p "${tpath%/*}" && cp "${f}" "${tpath}" || + { error "failed to create ${tpath}"; return 1; } + done + umask "$omask" + fi +} + +short_opts="hv" +long_opts="help,verbose" +getopt_out=$(getopt --name "${0##*/}" \ + --options "${short_opts}" --long "${long_opts}" -- "$@") && + eval set -- "${getopt_out}" || + bad_Usage + +while [ $# -ne 0 ]; do + cur=${1}; next=${2}; + case "$cur" in + -h|--help) Usage ; exit 0;; + -v|--verbose) VERBOSITY=$((${VERBOSITY}+1));; + --) shift; break;; + esac + shift; +done + +[ $# -eq 2 ] || bad_Usage "must provide mode and output dir" +mode="$1" +out_d="$2" + +[ "$mode" = "local" -o "$mode" = "apply-local" ] || + { debug 2 "only supported in mode 'local'"; exit 0; } + +[ ! -e "$CONFIG" ] || . "$CONFIG" || + fail "failed to read $CONFIG" + +if [ "$mode" = "local" ]; then + search_local "$out_d" +elif [ "$mode" = "apply-local" ]; then + apply "$mode" "$out_d" +else + fail "error, unexpected input" +fi + +exit +# vi: ts=4 noexpandtab