Skip to content

Commit 803406d

Browse files
authored
Merge pull request #9 from rlcee/sll_230223
allow schema switches
2 parents 087b14f + 1f46ff7 commit 803406d

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

bin/samListLocations

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,24 +64,46 @@ fi
6464

6565
TMPL=$(mktemp)
6666

67-
samweb list-file-locations "${@}" | tr ":" " " > $TMPL
67+
# this might be
68+
# enstore:/pnfs/... filename size
69+
# or if the user added --schema=root
70+
# xroot://... enstore:/pnfs/.. filename size
71+
72+
# separate "disk" (enstore or dcache) from /pnfs/path
73+
# and put the URI last if it is there
74+
samweb list-file-locations "${@}" | \
75+
awk '{if(NF==4) print $2" "$3" "$4" "$1; else print $1" "$2" "$3;}' | \
76+
sed -e 's/enstore:/enstore /' -e 's/dcache:/dcache /' > $TMPL
6877

6978
# loop over unique file names
79+
# TMPL is like
80+
# enstore /pnfs/path filename size <URI>
7081
cat $TMPL | awk '{print $3}' | sort | uniq \
7182
| while read FILENAME
7283
do
7384

74-
# list of locations, dcache first
75-
FSS=$(cat $TMPL | awk '{if($3=="'$FILENAME'") print $1" "$2}' | sort )
76-
77-
TAPESPEC=$(echo "$FSS" | awk '{if($1=="enstore") print $2"/'$FILENAME'"}')
78-
DISKSPEC=$(echo "$FSS" | awk '{if($1=="dcache") print $2"/'$FILENAME'"}')
79-
85+
# FSS is a list of locations, dcache first, like
86+
# dcache /pnfs/path xrootd://...
87+
FSS=$(cat $TMPL | awk '{if($3=="'$FILENAME'") print $1" "$2" "$5}' | sort )
88+
89+
# creates tape (/pnfs/mu2e/tape/.../filename) and disk filespecs
90+
TAPESPEC=$(echo "$FSS" | awk '{ if($1=="enstore") print $2"/'$FILENAME'" }')
91+
DISKSPEC=$(echo "$FSS" | awk '{ if($1=="dcache") print $2"/'$FILENAME'" }')
92+
# find URI, if present
93+
TAPEURI=$(echo "$FSS" | awk '{ if($1=="enstore") print $3 }')
94+
# if no URI, then use pnfs path
95+
[ -z "$TAPEURI" ] && TAPEURI="$TAPESPEC"
96+
DISKURI=$(echo "$FSS" | awk '{ if($1=="dcache") print $3 }')
97+
[ -z "$DISKURI" ] && DISKURI="$DISKSPEC"
98+
99+
FILEURI="none"
80100
if [ "$DISKSPEC" ]; then
81101
FILESPEC="$DISKSPEC"
102+
FILEURI="$DISKURI"
82103
LOC="ONLINE"
83104
else
84105
FILESPEC="$TAPESPEC"
106+
FILEURI="$TAPEURI"
85107
LOC=""
86108
if [ $DOLOC ]; then
87109
# have to see if tape-backed is on disk
@@ -90,15 +112,15 @@ do
90112
fi
91113

92114
if [ $DODISK ]; then
93-
[[ "$LOC" =~ "ONLINE" ]] && echo "$FILESPEC"
115+
[[ "$LOC" =~ "ONLINE" ]] && echo "$FILEURI"
94116
elif [ $DOFIRST ]; then
95117
if [[ "$LOC" =~ "ONLINE" ]]; then
96-
echo "$FILESPEC"
118+
echo "$FILEURI"
97119
else
98-
echo "$FILESPEC" >> $TMPF
120+
echo "$FILEURI" >> $TMPF
99121
fi
100122
else
101-
echo "$FILESPEC"
123+
echo "$FILEURI"
102124
fi
103125

104126
done

0 commit comments

Comments
 (0)