tape-admin: 0.0.10 version bump

* update verbosity handling
* mount_tape(): update ltfs_wipe and ltfs_format on override

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
2018-10-06 14:39:02 +02:00
parent 04a712b663
commit e4a2a503fc

View File

@@ -22,7 +22,7 @@
# Helper routines for tape handling
progname="${0##*/}"
version="0.0.9"
version="0.0.10"
# global variables
color=0
@@ -215,7 +215,7 @@ get_lastwrite () {
volume_lastwrite=$(eval $cmd)
if [ ${#volume_lastwrite} -gt 1 ]; then
volume_lastwrite=$(echo $volume_lastwrite | sed -e 's/"//g')
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}volume_lastwrite for volume ${GREEN}'%s'${MAGENTA} in media-pool ${GREEN}'%s'${MAGENTA} is: ${NO_COLOR}%s${NO_COLOR}\n" \
"$volume_name" "$mediapool_name" "$volume_lastwrite"
fi
@@ -250,7 +250,7 @@ get_mediapolicy () {
volume_mediapolicy=$(eval $cmd)
volume_mediapolicy=$(echo $volume_mediapolicy | sed -e 's/"//g')
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}MediaPolicy for volume_name ${GREEN}'%s'${MAGENTA} in media-pool ${GREEN}'%s'${MAGENTA}: ${NO_COLOR}%s${NO_COLOR}\n" \
"$volume_name" "$mediapool_name" "$volume_mediapolicy"
fi
@@ -282,7 +282,7 @@ get_mediapool_name () {
mediapool_name=$(eval $cmd)
mediapool_name=$(echo $mediapool_name | sed -e 's/"//g')
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Media-pool name for VolumeName %s: ${GREEN}'%s'${NO_COLOR}\n" \
"$volume_name" "$mediapool_name"
fi
@@ -310,7 +310,7 @@ get_mediapool_names () {
mediapool_names=$(eval $cmd)
mediapool_names=$(echo $mediapool_names | sed -e 's/"//g')
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Media-pool names: ${GREEN}'%s'${NO_COLOR}\n" \
"$mediapool_names"
fi
@@ -342,7 +342,7 @@ get_mediapool_retensiondays () {
mediapool_defaultretensiondays=$(eval $cmd)
mediapool_defaultretensiondays=$(echo $mediapool_defaultretensiondays | sed -e 's/"//g')
if [ ${#mediapool_defaultretensiondays} -ge 1 ]; then
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}default retension days for media-pool ${GREEN}'%s'${MAGENTA} is: ${NO_COLOR}%s${NO_COLOR}\n" \
"$mediapool_name" "$mediapool_defaultretensiondays"
fi
@@ -387,7 +387,7 @@ get_poolmember () {
for i in $poolmember ; do
if test "$i" = "${volume_name}"; then
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}volume_name ${GREEN}'%s'${MAGENTA} is member of media-pool ${GREEN}'%s'${NO_COLOR}\n" \
"$i" "$mediapool_name"
fi
@@ -446,7 +446,7 @@ get_poolmember_next () {
i=$(($i + 1))
done
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}poolmember_next for media-pool ${GREEN}'%s'${MAGENTA} is: ${NO_COLOR}%s${NO_COLOR}\n" \
"$mediapool_name" "$volume_name_next"
fi
@@ -478,7 +478,7 @@ get_slot () {
volume_slot=$(eval $cmd)
volume_slot=$(echo $volume_slot | sed -e 's/"//g')
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Slot for volume_name ${GREEN}'%s'${MAGENTA} from media-pool ${GREEN}'%s'${MAGENTA}: ${NO_COLOR}%s${NO_COLOR}\n" \
"$volume_name" "$mediapool_name" "$volume_slot"
fi
@@ -510,7 +510,7 @@ get_retensiondate () {
volume_retensiondate=$(eval $cmd)
if [ ${#volume_retensiondate} -gt 1 ]; then
volume_retensiondate=$(echo $volume_retensiondate | sed -e 's/"//g')
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}RetensionDate in UTC for volume_name ${GREEN}'%s'${MAGENTA} in media-pool ${GREEN}'%s'${MAGENTA}: ${NO_COLOR}%s${NO_COLOR}\n" \
"$volume_name" "$mediapool_name" "$volume_retensiondate"
fi
@@ -536,7 +536,7 @@ ltfs_get_attribute () {
rm -f ${ERRFILE}
if [ $? -eq 0 ]; then
ltfs_attribute_value=$(echo ${ltfs_attribute_value##*:} | sed -e 's/\r\n//g')
if [ $verbose -ge 2 ]; then
if [ $verbose -ge 1 ]; then
printf "${MAGENTA}LTFS attribute ${GREEN}'%s'${MAGENTA} is: ${GREEN}'%s'${NO_COLOR}\n" \
"$ltfs_attribute_name" "$ltfs_attribute_value"
fi
@@ -615,7 +615,7 @@ ltfs_mount () {
rm -f ${ERRFILE}
if [ ${#need_format} -ge 1 ]; then
tape_id=$(echo $volume_name_active | sed -e 's/\([[:alpha:]]*-\)//g')
# TODO: tape_id needs to be exactly 6 character long
# tape_id needs to be exactly 6 character long
volume_serial=$(printf "%0.s0" $(seq 1 $((6 - ${#tape_id}))))
volume_serial="${volume_serial}${tape_id}"
ltfs_format ${volume_name_active} ${volume_serial}
@@ -799,7 +799,7 @@ media_change () {
fi
get_poolmember_next "${mediapool_name}"
if test $? -eq 0; then
if [ $verbose -ge 1 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}MediaPool: ${GREEN}%s${NO_COLOR} (next tape: ${GREEN}%s${NO_COLOR})\n" \
"${mediapool_name}" "${volume_name_next}"
fi
@@ -872,7 +872,7 @@ mount_tape () {
get_mediapolicy ${mediapool_name} ${volume_name_active}
if [ ${#volume_mediapolicy} -gt 0 ]; then
if [ ${volume_mediapolicy} = "append" ] ; then
if [ $verbose -ge 1 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Valid tape mediapolicy: ${GREEN}%s${NO_COLOR}\n" \
"${volume_mediapolicy}"
fi
@@ -883,13 +883,25 @@ mount_tape () {
compare_date $date_now $volume_retensiondate
if [ $? -eq 2 ]; then
# retensiondate has exposed: use it
if [ $verbose -ge 3 ]; then
printf "${MAGENTA}Valid tape, retensiondate has exposed: ${GREEN}%s${NO_COLOR}\n" \
"${volume_retensiondate}"
fi
return 0
fi
if [ $? -eq 1 ]; then
# respect active retensiondate: unload given tape
if [ $verbose -ge 3 ]; then
printf "${MAGENTA}Invalid tape ${GREEN}%s${MAGANTA}, respect retensiondate: ${GREEN}%s${NO_COLOR}\n" \
"${volume_name}" "${volume_retensiondate}"
fi
ltfs_umount
mtx_unload
# use next volume_name from pool
if [ $verbose -ge 3 ]; then
printf "${MAGENTA}Get next tape from MediaPool ${GREEN}%s${MAGANTA}\n" \
"${mediapool_name}"
fi
get_poolmember_next ${mediapool_name} ${volume_name}
get_slot ${mediapool_name} ${volume_name_next}
mtx_load ${volume_slot}
@@ -901,22 +913,39 @@ mount_tape () {
return 0
fi
if [ ${volume_mediapolicy} = "overwrite" ] ; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Valid tape mediapolicy: ${GREEN}%s${NO_COLOR}\n" \
"${volume_mediapolicy}"
fi
volume_retensiondate="20180101000000"
get_retensiondate ${mediapool_name} ${volume_name}
date_now=$($date_cmd)
compare_date $date_now $volume_retensiondate
if [ $? -eq 2 ]; then
# retensiondate has exposed: wipe given tape
if [ $verbose -ge 3 ]; then
printf "${MAGENTA}Valid tape, wipe and reformat: ${GREEN}%s${NO_COLOR}\n" \
"${volume_name}"
fi
ltfs_wipe
ltfs_format ${volume_name} ${volume_serial}
if [ $? -eq 0 ]; then
return 0
fi
fi
if [ $? -eq 1 ]; then
# respect active retensiondate: unload given tape
if [ $verbose -ge 3 ]; then
printf "${MAGENTA}Invalid tape ${GREEN}%s${MAGANTA}, respect retensiondate: ${GREEN}%s${NO_COLOR}\n" \
"${volume_name}" "${volume_retensiondate}"
fi
ltfs_umount
mtx_unload
# use next volume_name from pool
if [ $verbose -ge 3 ]; then
printf "${MAGENTA}Get next tape from MediaPool ${GREEN}%s${MAGANTA}\n" \
"${mediapool_name}"
fi
get_poolmember_next ${mediapool_name} ${volume_name}
get_slot ${mediapool_name} ${volume_name_next}
mtx_load ${volume_slot}
@@ -988,7 +1017,7 @@ mount_tape () {
get_mediapolicy ${mediapool_name} ${volume_name}
if [ ${#volume_mediapolicy} -gt 0 ]; then
if [ ${volume_mediapolicy} = "append" ] ; then
if [ $verbose -ge 1 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Valid tape mediapolicy: ${GREEN}%s${NO_COLOR}\n" \
"${volume_mediapolicy}"
fi
@@ -1021,6 +1050,7 @@ mount_tape () {
ltfs_mount
if [ $? -eq 0 ]; then
ltfs_wipe
ltfs_format ${volume_name} ${volume_serial}
if [ $? -eq 0 ]; then
return 0
fi
@@ -1074,21 +1104,30 @@ mtx_getlabel () {
case ${slot_source} in
0)
if [ $verbose -ge 2 ]; then
if [ $verbose -ge 3 ]; then
printf "Calling: ${GREEN}%s${MAGENTA} -f ${GREEN}%s${MAGENTA} %s${NO_COLOR}\n" \
"${MTX}" "${changer_device}" "${slot_source}"
fi
volume_name_active=$(perl -ne '
/Data Transfer Element (\d+):Full \(Storage Element (\d+) Loaded\)(:VolumeTag =\s*(.+))?/ && print "$4\n";' ${TMPFILE})
volume_name_active=$(echo $volume_name_active | sed -e 's/ *$//g')
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Tape in slot ${GREEN}%s${MAGENTA} has Label: ${GREEN}%s${NO_COLOR}\n" \
"${slot_source}" "${volume_name_active}"
fi
;;
[0-9][0-8] | [0-9])
if [ $verbose -ge 2 ]; then
printf "Calling: ${GREEN}%s${MAGENTA} -f ${GREEN}%s${MAGENTA} %s${NO_COLOR}\n" \
"${MTX}" "${changer_device}" "${slot_source}"
fi
perl -ne '
/Storage Element ($ENV{"slot_source"}):Full( :VolumeTag=(.+))?/ && print "$3\n";' ${TMPFILE}
volume_name=$(perl -ne '
/Storage Element ($ENV{"slot_source"}):Full( :VolumeTag=(.+))?/ && print "$3\n";' ${TMPFILE})
volume_name=$(echo $volume_name | sed -e 's/ *$//g')
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Tape in slot ${GREEN}%s${MAGENTA} has Label: ${GREEN}%s${NO_COLOR}\n" \
"${slot_source}" "${volume_name}"
fi
;;
*)
if [ $verbose -ge 2 ]; then
@@ -1691,7 +1730,7 @@ update_lastwrite () {
return 1
fi
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}LastWrite in UTC for for volume ${GREEN}'%s'${MAGENTA} is: ${NO_COLOR}%s${NO_COLOR}\n" \
"$volume_name" "$volume_lastwrite"
fi
@@ -1729,6 +1768,10 @@ update_mediapool_retensiondays () {
if [ $? -eq 0 ]; then
cp "$XDG_RUNTIME_DIR/$json_file" "$mediapools_json"
else
if [ $verbose -ge 1 ]; then
printf "${RED}Error:${MAGENTA} Can't update DefaultRetensinDays ${GREEN}'%s'${MAGENTA} in media-pool file ${GREEN}'%s'${NO_COLOR}\n" \
"$mediapool_defaultretensiondays" "$mediapools_json"
fi
return 1
fi
else
@@ -1766,7 +1809,7 @@ add_retensiondays_to_retensiondate () {
retension_days=${mediapool_defaultretensiondays}
fi
fi
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}New RetensionDays: ${NO_COLOR}'%s'.\n" \
"${retension_days}"
fi
@@ -1815,13 +1858,17 @@ add_retensiondays_to_retensiondate () {
if [ $? -eq 0 ]; then
cp "$XDG_RUNTIME_DIR/$json_file" "$mediapools_json"
else
if [ $verbose -ge 1 ]; then
printf "${RED}Error:${MAGENTA} Can't update RetensionDate ${GREEN}'%s'${MAGENTA} for Tape ${GREEN}'%s'${NO_COLOR}\n" \
"$volume_retensiondate" "$volume_name"
fi
return 1
fi
else
return 1
fi
if [ $verbose -ge 3 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}New RetensionDate in UTC for volume ${GREEN}'%s'${MAGENTA} is: ${NO_COLOR}%s${NO_COLOR}\n" \
"$volume_name" "$volume_retensiondate"
fi
@@ -1875,6 +1922,10 @@ update_retensiondate () {
if [ $? -eq 0 ]; then
cp "$XDG_RUNTIME_DIR/$json_file" "$mediapools_json"
else
if [ $verbose -ge 1 ]; then
printf "${RED}Error:${MAGENTA} Can't update RetensionDate ${GREEN}'%s'${MAGENTA} for Tape ${GREEN}'%s'${NO_COLOR}\n" \
"$volume_retensiondate" "$volume_name"
fi
return 1
fi
else
@@ -2197,10 +2248,6 @@ case $cmd in
;;
mtx-getlabel)
mtx_getlabel $slot_source
if [ $verbose -ge 1 ]; then
printf "${MAGENTA}Tape Label: ${GREEN}%s${NO_COLOR}\n" \
"${volume_name_active}"
fi
return $?
;;
mtx-inventory)