#!/bin/sh set -e NEW_DIR="$1" OLD_DIR="$2" [ "$OLD_DIR" ] || OLD_DIR='/var/lib/vblade-persist/vblades/' [ "$NEW_DIR" ] || NEW_DIR='/etc/vblade.conf.d/' [ -d "$OLD_DIR" ] || exit 0 mkdir -p "$NEW_DIR" for d in $(find "$OLD_DIR" -mindepth 1 -maxdepth 1 -type d | sort) ; do [ -d "$d" ] || continue for f in NETIF SHELF SLOT SOURCE ; do [ -f "$d/env/$f" ] && continue echo "E: Incomplete vblade-persist configuration at '$d', 'env/$f' is missing" continue 2 done OLDNAME="$(basename "$d")" INSTANCE="vblade.persist.$OLDNAME.conf" echo "I: Processing $OLDNAME, will store as $INSTANCE" if [ -e "$NEW_DIR/$INSTANCE" ] ; then echo "E: A vblade configuration '$NEW_DIR/$INSTANCE' already exists, skipping" continue fi TEMP="$(mktemp --tmpdir="$NEW_DIR" "$INSTANCE.XXXXX")" trap "[ -f \"$TEMP\" ] && rm \"$TEMP\"" EXIT ( cat <<__EOS__ # # Created by $(basename "$0") on $(date) # Shelf=$(cat "$d/env/SHELF") Slot=$(cat "$d/env/SLOT") NetIf=$(cat "$d/env/NETIF") Filename=$(cat "$d/env/SOURCE") Options=$( if [ -d "$d/macs" ] ; then macs="$( find "$d/macs" -type f -iname '[0-9a-f]*' -printf '%f,' | sort | sed -e 's/,$//' )" if [ "$macs" ] ; then printf '"-m %s"' "$macs" fi fi ) # IOSchedulingClass= # IOSchedulingPriority= __EOS__ ) >"$TEMP" if ! sh -n "$TEMP" ; then echo "F: Conversion of '$d' failed, checking the following script failed:" cat "$TEMP" | sed -e 's/^/| /' rm "$TEMP" exit 1 fi mv "$TEMP" "$NEW_DIR/$INSTANCE" done exit 0