Skip to content

Commit f9bb219

Browse files
authored
Merge pull request #267 from xcp-ng/dnt-set-xva-bridge
Improvements to set_xva_bridge.sh
2 parents bd8ba6b + 7a543e9 commit f9bb219

File tree

1 file changed

+9
-46
lines changed

1 file changed

+9
-46
lines changed

scripts/set_xva_bridge.sh

Lines changed: 9 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,6 @@ usage()
1212
echo "----------------------------------------------------------------------------------------"
1313
}
1414

15-
# extract and read ova.xml
16-
get_bridge()
17-
{
18-
TMPFOLD=$(mktemp -d /tmp/xvaXXXX)
19-
tar -xf "${XVA_NAME}" -C "${TMPFOLD}" ova.xml
20-
chmod +r "${TMPFOLD}/ova.xml"
21-
XML_VALUE=$(grep -oE "<member><name>bridge</name><value>[^<]*</value></member>" "${TMPFOLD}/ova.xml")
22-
LENGTH=${#XML_VALUE}
23-
PREFIX_LENGTH=$((${LENGTH}-17))
24-
NETWORK_VALUE=$(cut -c 1-${PREFIX_LENGTH} <<< ${XML_VALUE})
25-
echo $(cut -c 35-${#NETWORK_VALUE} <<< ${NETWORK_VALUE})
26-
27-
if [ -d "${TMPFOLD}" ]; then
28-
rm -Rf "${TMPFOLD}"
29-
fi
30-
}
31-
3215
# check parameters and prompt the usage if needed
3316
if [ -z "${1+set}" ]
3417
then
@@ -70,43 +53,29 @@ else
7053
BRIDGE_VALUE=$3
7154
fi
7255

73-
# we want to know the value of the network bridge.
74-
# then we can decide if we need to change it or not.
75-
BRIDGE_READVALUE=$(get_bridge)
76-
77-
if [ -z "${BRIDGE_READVALUE}" ]
78-
then
79-
echo "No bridge value detected in the xml file!"
80-
exit 1
81-
else
82-
if [ "${BRIDGE_READVALUE}" == "${BRIDGE_VALUE}" ]
83-
then
84-
echo "The bridge is already ${BRIDGE_VALUE}. Nothing to do."
85-
exit 0
86-
fi
87-
fi
88-
8956
# we detect the compression method of the xva to uncompress it right
90-
OLD_COMPRESSION=$(file "${XVA_NAME}" | cut -f 2 -d : | cut -f 2 -d " ")
57+
OLD_COMPRESSION=$(file -b "${XVA_NAME}" | cut -f 1 -d " ")
9158
if [ "${OLD_COMPRESSION}" != "Zstandard" ] && [ "${OLD_COMPRESSION}" != "gzip" ] && [ "${OLD_COMPRESSION}" != "tar" ]; then
9259
echo "Error: unknown compression type detected for ${XVA_NAME}: ${OLD_COMPRESSION}"
9360
exit 1
9461
fi
9562

96-
PATHFOLDER=$(dirname ${XVA_NAME})
63+
PATHFOLDER=$(dirname "${XVA_NAME}")
9764
TMPFOLDER=$(mktemp -d "${PATHFOLDER}"/xvaXXXX)
9865

66+
# extract and create the file list at the same time
67+
TMP_LIST=$(mktemp "${PATHFOLDER}"/SortedListXXXX.txt)
9968
if [ -f "${XVA_NAME}" ]; then
100-
tar -xf $1 -C "${TMPFOLDER}"
69+
tar -xvf "${XVA_NAME}" -C "${TMPFOLDER}" > "${TMP_LIST}"
10170
else
10271
echo "Error: ${XVA_NAME} not found."
10372
exit 1
10473
fi
10574

75+
chmod -R u+rX "${TMPFOLDER}"
76+
10677
if [ -e "${TMPFOLDER}/ova.xml" ]; then
107-
chmod +rw "${TMPFOLDER}/ova.xml"
108-
sed -i "s/<member><name>bridge<\/name><value>[^<]*<\/value><\/member>/<member><name>bridge<\/name><value>${BRIDGE_VALUE}<\/value><\/member>/g" ${TMPFOLDER}/ova.xml
109-
chmod -rw "${TMPFOLDER}/ova.xml"
78+
sed -i "s/<member><name>bridge<\/name><value>[^<]*<\/value><\/member>/<member><name>bridge<\/name><value>${BRIDGE_VALUE}<\/value><\/member>/g" "${TMPFOLDER}/ova.xml"
11079
else
11180
echo "Error: File ova.xml not found during the sed."
11281
exit 1
@@ -116,17 +85,11 @@ fi
11685
# save first file
11786
mv "${XVA_NAME}" "${XVA_NAME}.save"
11887

119-
# create xva
120-
cd "${TMPFOLDER}"
121-
12288
# Create the new XVA
123-
TMP_LIST=$(mktemp /tmp/SortedListXXXX.txt)
124-
find . -print | cut -c3- | sort | grep -v "^Ref:[0-9]\+$" > ${TMP_LIST}
125-
sudo tar -cv --${COMPRESS_METHOD} -f ${XVA_NAME} --no-recursion -T ${TMP_LIST}
89+
tar -C "${TMPFOLDER}" --${COMPRESS_METHOD} -cf "${XVA_NAME}" --no-recursion -T "${TMP_LIST}" --numeric-owner --owner=:0 --group=:0 --mode=ugo= --mtime=@0
12690
rm -f "${TMP_LIST}"
12791

12892
# clean TMPFOLDER
129-
cd ..
13093
if [ -d "${TMPFOLDER}" ]; then
13194
rm -Rf "${TMPFOLDER}"
13295
else

0 commit comments

Comments
 (0)