From 1c53dc5aa5a285585548cca6af0b4b42a665cb26 Mon Sep 17 00:00:00 2001 From: Lasse Tjernaes Wardenaer <lasse.tjernaes.wardenaer@cern.ch> Date: Fri, 10 Feb 2023 14:53:50 +0100 Subject: [PATCH] Resolve "Update cta-restore-deleted-files test, cta-eos-namespace-inject test and cta-change-storage-class test" --- ReleaseNotes.md | 1 + .../orchestration/tests/changeStorageClass.sh | 34 +++++------ .../orchestration/tests/eosNamespaceInject.sh | 35 ++++++------ .../orchestration/tests/restore_files.sh | 44 +++++++------- .../tests/restore_files_ctafrontend.sh | 57 ------------------- 5 files changed, 55 insertions(+), 116 deletions(-) delete mode 100644 continuousintegration/orchestration/tests/restore_files_ctafrontend.sh diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 55ec5944ac..576be21d4f 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -5,6 +5,7 @@ - cta/CTA#250 - Trim SQL query length in catalogue DB failure reason - cta/CTA#301 - Switch from new to unique pointer in CtaReadTp to fix memory leak - cta/CTA#219 - Update Ceph repo public key in dev env and buildtree +- cta/CTA#295 - Update standalone cli tool tests, remove sudo and use more generated tmp folders ### Bug Fixes ### Continuous Integration diff --git a/continuousintegration/orchestration/tests/changeStorageClass.sh b/continuousintegration/orchestration/tests/changeStorageClass.sh index 25938ca367..c0f77de91c 100755 --- a/continuousintegration/orchestration/tests/changeStorageClass.sh +++ b/continuousintegration/orchestration/tests/changeStorageClass.sh @@ -29,6 +29,7 @@ fi EOSINSTANCE=ctaeos NEW_STORAGE_CLASS_NAME=newStorageClassName +TMP_DIR=$(mktemp -d) FILE_1=`uuidgen` FILE_2=`uuidgen` @@ -36,16 +37,16 @@ echo echo "Creating files: ${FILE_1} ${FILE_2}" FRONTEND_IP=$(kubectl -n ${NAMESPACE} get pods ctafrontend -o json | jq .status.podIP | tr -d '"') +kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c "mkdir -p ${TMP_DIR}" echo echo "ENABLE CTAFRONTEND TO EXECUTE CTA ADMIN COMMANDS" kubectl --namespace=${NAMESPACE} exec kdc -- cat /root/ctaadmin2.keytab | kubectl --namespace=${NAMESPACE} exec -i ctafrontend -- bash -c "cat > /root/ctaadmin2.keytab; mkdir -p /tmp/ctaadmin2" kubectl -n ${NAMESPACE} cp client_helper.sh ctafrontend:/root/client_helper.sh -rm /tmp/init_kerb.sh -touch /tmp/init_kerb.sh -echo '. /root/client_helper.sh; admin_kinit' >> /tmp/init_kerb.sh -kubectl -n ${NAMESPACE} cp /tmp/init_kerb.sh ctafrontend:/tmp/init_kerb.sh -kubectl -n ${NAMESPACE} exec ctafrontend -- bash /tmp/init_kerb.sh +touch ${TMP_DIR}/init_kerb.sh +echo '. /root/client_helper.sh; admin_kinit' >> ${TMP_DIR}/init_kerb.sh +kubectl -n ${NAMESPACE} cp ${TMP_DIR}/init_kerb.sh ctafrontend:${TMP_DIR}/init_kerb.sh +kubectl -n ${NAMESPACE} exec ctafrontend -- bash ${TMP_DIR}/init_kerb.sh echo @@ -60,15 +61,16 @@ kubectl -n ${NAMESPACE} exec ctacli -- cta-admin sc ls echo echo "COPY REQUIRED FILES TO FRONTEND POD" -echo "sudo kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf /etc/cta/cta-cli.conf" -echo "sudo kubectl cp /etc/cta/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf" -sudo kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf /etc/cta/cta-cli.conf -sudo kubectl cp /etc/cta/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf +echo "kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf ${TMP_DIR}/cta-cli.conf" +echo "kubectl cp ${TMP_DIR}/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf" +kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf ${TMP_DIR}/cta-cli.conf +kubectl cp ${TMP_DIR}/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf -kubectl -n ${NAMESPACE} cp common/archive_file.sh client:/usr/bin/ +kubectl -n ${NAMESPACE} exec client -- bash -c "mkdir -p ${TMP_DIR}" +kubectl -n ${NAMESPACE} cp common/archive_file.sh client:${TMP_DIR}/ kubectl -n ${NAMESPACE} cp client_helper.sh client:/root/ -kubectl -n ${NAMESPACE} exec client -- bash /usr/bin/archive_file.sh -f ${FILE_1} || exit 1 -kubectl -n ${NAMESPACE} exec client -- bash /usr/bin/archive_file.sh -f ${FILE_2} || exit 1 +kubectl -n ${NAMESPACE} exec client -- bash ${TMP_DIR}/archive_file.sh -f ${FILE_1} || exit 1 +kubectl -n ${NAMESPACE} exec client -- bash ${TMP_DIR}/archive_file.sh -f ${FILE_2} || exit 1 EOS_METADATA_PATH_1=$(mktemp -d).json echo "SEND EOS METADATA TO JSON FILE: ${EOS_METADATA_PATH}" @@ -85,17 +87,15 @@ EOS_ARCHIVE_ID_2=$(jq -r '.xattr | .["sys.archive.file_id"]' ${EOS_METADATA_PATH echo echo "CHANGE FILES WITH IDS" cd ~ -IDS_FILEPATH=~/archiveFileIds.txt -rm ${IDS_FILEPATH} +IDS_FILEPATH=${TMP_DIR}/archiveFileIds.txt touch ${IDS_FILEPATH} echo '{"archiveId": '${EOS_ARCHIVE_ID_1}'}' >> ${IDS_FILEPATH} echo '{"archiveId": '${EOS_ARCHIVE_ID_2}'}' >> ${IDS_FILEPATH} sleep 1 echo -kubectl cp ~/CTA-build/cmdline/standalone_cli_tools/change_storage_class/cta-change-storage-class ${NAMESPACE}/ctafrontend:/usr/bin/ -echo "kubectl cp ${IDS_FILEPATH} ${NAMESPACE}/ctafrontend:~/" -kubectl cp ${IDS_FILEPATH} ${NAMESPACE}/ctafrontend:/root/ +echo "kubectl cp ${IDS_FILEPATH} ${NAMESPACE}/ctafrontend:${IDS_FILEPATH}" +kubectl cp ${IDS_FILEPATH} ${NAMESPACE}/ctafrontend:${IDS_FILEPATH} echo "kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c XrdSecPROTOCOL=krb5 KRB5CCNAME=/tmp/ctaadmin2/krb5cc_0 cta-change-storage-class --storageclassname ${NEW_STORAGE_CLASS_NAME} --json ${IDS_FILEPATH}" kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c "XrdSecPROTOCOL=krb5 KRB5CCNAME=/tmp/ctaadmin2/krb5cc_0 cta-change-storage-class --storageclassname ${NEW_STORAGE_CLASS_NAME} --json ${IDS_FILEPATH} -t 1" diff --git a/continuousintegration/orchestration/tests/eosNamespaceInject.sh b/continuousintegration/orchestration/tests/eosNamespaceInject.sh index 5bb951f4de..b5800e801a 100755 --- a/continuousintegration/orchestration/tests/eosNamespaceInject.sh +++ b/continuousintegration/orchestration/tests/eosNamespaceInject.sh @@ -54,7 +54,7 @@ if [ ! -z "${error}" ]; then fi EOSINSTANCE=ctaeos - +TMP_DIR=$(mktemp -d) FILE_1=`uuidgen` FILE_2=`uuidgen` echo @@ -82,23 +82,22 @@ EOS_CHECKSUM_2=$(jq -r '.checksumvalue' ${EOS_METADATA_PATH_2}) EOS_SIZE_2=$(jq -r '.size' ${EOS_METADATA_PATH_2}) echo "Create json meta data input file" -rm /tmp/metaData -touch /tmp/metaData +touch ${TMP_DIR}/metaData FILE_PATH_1=`uuidgen` FILE_PATH_2=`uuidgen` -echo '{"eosPath": "/eos/ctaeos/'${FILE_PATH_1}'", "diskInstance": "ctaeos", "archiveId": '${EOS_ARCHIVE_ID_1}', "size": "'${EOS_SIZE_1}'", "checksumType": "ADLER32", "checksumValue": "'${EOS_CHECKSUM_1}'"}' >> /tmp/metaData -echo '{"eosPath": "/eos/ctaeos/'${FILE_PATH_2}'", "diskInstance": "ctaeos", "archiveId": '${EOS_ARCHIVE_ID_2}', "size": "'${EOS_SIZE_2}'", "checksumType": "ADLER32", "checksumValue": "'${EOS_CHECKSUM_2}'"}' >> /tmp/metaData -kubectl cp /tmp/metaData ${NAMESPACE}/ctafrontend:/root/ +echo '{"eosPath": "/eos/ctaeos/'${FILE_PATH_1}'", "diskInstance": "ctaeos", "archiveId": '${EOS_ARCHIVE_ID_1}', "size": "'${EOS_SIZE_1}'", "checksumType": "ADLER32", "checksumValue": "'${EOS_CHECKSUM_1}'"}' >> ${TMP_DIR}/metaData +echo '{"eosPath": "/eos/ctaeos/'${FILE_PATH_2}'", "diskInstance": "ctaeos", "archiveId": '${EOS_ARCHIVE_ID_2}', "size": "'${EOS_SIZE_2}'", "checksumType": "ADLER32", "checksumValue": "'${EOS_CHECKSUM_2}'"}' >> ${TMP_DIR}/metaData +kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c "mkdir -p ${TMP_DIR}" +kubectl cp ${TMP_DIR}/metaData ${NAMESPACE}/ctafrontend:${TMP_DIR}/ echo echo "ENABLE CTAFRONTEND TO EXECUTE CTA ADMIN COMMANDS" kubectl --namespace=${NAMESPACE} exec kdc -- cat /root/ctaadmin2.keytab | kubectl --namespace=${NAMESPACE} exec -i ctafrontend -- bash -c "cat > /root/ctaadmin2.keytab; mkdir -p /tmp/ctaadmin2" -kubectl -n ${NAMESPACE} cp client_helper.sh ctafrontend:/root/client_helper.sh -rm /tmp/init_kerb.sh -touch /tmp/init_kerb.sh -echo '. /root/client_helper.sh; admin_kinit' >> /tmp/init_kerb.sh -kubectl -n ${NAMESPACE} cp /tmp/init_kerb.sh ctafrontend:/tmp/init_kerb.sh -kubectl -n ${NAMESPACE} exec ctafrontend -- bash /tmp/init_kerb.sh +kubectl -n ${NAMESPACE} cp client_helper.sh ctafrontend:${TMP_DIR}/client_helper.sh +touch ${TMP_DIR}/init_kerb.sh +echo '. '${TMP_DIR}'/client_helper.sh; admin_kinit' >> ${TMP_DIR}/init_kerb.sh +kubectl -n ${NAMESPACE} cp ${TMP_DIR}/init_kerb.sh ctafrontend:${TMP_DIR}/init_kerb.sh +kubectl -n ${NAMESPACE} exec ctafrontend -- bash ${TMP_DIR}/init_kerb.sh echo echo "ADD FRONTEND GATEWAY TO EOS" @@ -108,11 +107,11 @@ kubectl -n ${NAMESPACE} exec ctaeos -- eos -r 0 0 vid add gateway ${FRONTEND_IP} echo echo "COPY REQUIRED FILES TO FRONTEND POD" -echo "sudo kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf /etc/cta/cta-cli.conf" -echo "sudo kubectl cp /etc/cta/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf" -sudo kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf /etc/cta/cta-cli.conf -sudo kubectl cp /etc/cta/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf +echo "kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf ${TMP_DIR}/cta-cli.conf" +echo "kubectl cp ${TMP_DIR}/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf" +kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf ${TMP_DIR}/cta-cli.conf +kubectl cp ${TMP_DIR}/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf echo -echo "kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c cta-eos-namespace-inject --json /root/metaData" -kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c "XrdSecPROTOCOL=krb5 KRB5CCNAME=/tmp/ctaadmin2/krb5cc_0 cta-eos-namespace-inject --json /root/metaData" \ No newline at end of file +echo "kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c cta-eos-namespace-inject --json ${TMP_DIR}/metaData" +kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c "XrdSecPROTOCOL=krb5 KRB5CCNAME=/tmp/ctaadmin2/krb5cc_0 cta-eos-namespace-inject --json ${TMP_DIR}/metaData" \ No newline at end of file diff --git a/continuousintegration/orchestration/tests/restore_files.sh b/continuousintegration/orchestration/tests/restore_files.sh index 9effca5a69..68315b8b5e 100755 --- a/continuousintegration/orchestration/tests/restore_files.sh +++ b/continuousintegration/orchestration/tests/restore_files.sh @@ -16,7 +16,7 @@ # submit itself to any jurisdiction. EOSINSTANCE=ctaeos -LOGFILE_PATH=/var/log/restore_files.log +LOGFILE_PATH=$(mktemp -d)/restore_files.log TEST_FILE_NAME=`uuidgen` WAIT_FOR_RETRIEVED_FILE_TIMEOUT=10 @@ -87,30 +87,28 @@ echo "VALIDATE THAT THE FILE IS IN THE RECYCLE BIN" echo "kubectl -n ${NAMESPACE} exec ctacli -- cta-admin rtf ls --fxid ${FXID} || exit 1" kubectl -n ${NAMESPACE} exec ctacli -- cta-admin rtf ls --fxid ${FXID} || exit 1 -echo +echo echo "COPY REQUIRED FILES TO FRONTEND POD" -echo "sudo kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf /etc/cta/cta-cli.conf" -echo "sudo kubectl cp /etc/cta/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf" -sudo kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf /etc/cta/cta-cli.conf -sudo kubectl cp /etc/cta/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf +TMP_DIR=$(mktemp -d) +kubectl --namespace=${NAMESPACE} exec ctafrontend -- bash -c "mkdir -p ${TMP_DIR}" +echo "kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf ${TMP_DIR}/cta-cli.conf" +echo "kubectl cp ${TMP_DIR}/cta/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta-cli.conf" + +kubectl cp ${NAMESPACE}/ctacli:/etc/cta/cta-cli.conf ${TMP_DIR}/cta-cli.conf +kubectl cp ${TMP_DIR}/cta-cli.conf ${NAMESPACE}/ctafrontend:/etc/cta/cta-cli.conf echo echo "ENABLE CTAFRONTEND TO EXECUTE CTA ADMIN COMMANDS" kubectl --namespace=${NAMESPACE} exec kdc -- cat /root/ctaadmin2.keytab | kubectl --namespace=${NAMESPACE} exec -i ctafrontend -- bash -c "cat > /root/ctaadmin2.keytab; mkdir -p /tmp/ctaadmin2" kubectl -n ${NAMESPACE} cp client_helper.sh ctafrontend:/root/client_helper.sh -rm /tmp/init_kerb.sh -touch /tmp/init_kerb.sh -echo '. /root/client_helper.sh; admin_kinit' >> /tmp/init_kerb.sh -kubectl -n ${NAMESPACE} cp /tmp/init_kerb.sh ctafrontend:/tmp/init_kerb.sh -kubectl -n ${NAMESPACE} exec ctafrontend -- bash /tmp/init_kerb.sh +touch ${TMP_DIR}/init_kerb.sh +echo '. /root/client_helper.sh; admin_kinit' >> ${TMP_DIR}/init_kerb.sh +kubectl -n ${NAMESPACE} cp ${TMP_DIR}/init_kerb.sh ctafrontend:${TMP_DIR}/init_kerb.sh +kubectl -n ${NAMESPACE} exec ctafrontend -- bash ${TMP_DIR}/init_kerb.sh echo echo "RESTORE FILES" -kubectl -n ${NAMESPACE} cp client_helper.sh ctafrontend:/root/client_helper.sh -kubectl cp ~/CTA-build/cmdline/standalone_cli_tools/restore_files/cta-restore-deleted-files ${NAMESPACE}/ctafrontend:/usr/bin/cta-restore-deleted-files -kubectl cp restore_files_ctafrontend.sh ${NAMESPACE}/ctafrontend:/root/restore_files_ctafrontend.sh -kubectl -n ${NAMESPACE} exec ctafrontend -- chmod +x /root/restore_files_ctafrontend.sh -kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c "XrdSecPROTOCOL=krb5 KRB5CCNAME=/tmp/ctaadmin2/krb5cc_0 /root/restore_files_ctafrontend.sh -I ${ARCHIVE_FILE_ID} -f ${TEST_FILE_NAME} -i ${EOSINSTANCE}" +kubectl -n ${NAMESPACE} exec ctafrontend -- bash -c "XrdSecPROTOCOL=krb5 KRB5CCNAME=/tmp/ctaadmin2/krb5cc_0 cta-restore-deleted-files --id ${ARCHIVE_FILE_ID} --copynb 1 --debug" SECONDS_PASSED=0 WAIT_FOR_RETRIEVED_FILE_TIMEOUT=10 @@ -130,7 +128,7 @@ METADATA_FILE_AFTER_RESTORE_PATH=$(mktemp -d).json echo "SEND FILE METADATA TO JSON FILE: ${METADATA_FILE_AFTER_RESTORE_PATH}" touch ${METADATA_FILE_AFTER_RESTORE_PATH} kubectl -n ${NAMESPACE} exec ctacli -- cta-admin --json tf ls --id ${ARCHIVE_FILE_ID} --instance ${EOSINSTANCE} | jq '.[0]' |& tee ${METADATA_FILE_AFTER_RESTORE_PATH} -kubectl -n ${NAMESPACE} exec ctacli -- cta-admin --json tf ls --id ${ARCHIVE_FILE_ID} --instance ${EOSINSTANCE} | jq '.[0]' | sudo tee -a ${LOGFILE_PATH} +kubectl -n ${NAMESPACE} exec ctacli -- cta-admin --json tf ls --id ${ARCHIVE_FILE_ID} --instance ${EOSINSTANCE} | jq '.[0]' | tee -a ${LOGFILE_PATH} # Extract values from the meta data from the restored file FILE_SIZE_AFTER_RESTORE=$(jq -r '.af | .["size"]' ${METADATA_FILE_AFTER_RESTORE_PATH}) @@ -142,7 +140,7 @@ EOS_METADATA_AFTER_RESTORE_PATH=$(mktemp -d).json echo "SEND EOS METADATA TO JSON FILE: ${EOS_METADATA_AFTER_RESTORE_PATH}" touch ${EOS_METADATA_AFTER_RESTORE_PATH} kubectl -n ${NAMESPACE} exec client -- eos -j root://${EOSINSTANCE} file info /eos/ctaeos/cta/${TEST_FILE_NAME} | jq . |& tee ${EOS_METADATA_AFTER_RESTORE_PATH} -kubectl -n ${NAMESPACE} exec client -- eos -j root://${EOSINSTANCE} file info /eos/ctaeos/cta/${TEST_FILE_NAME} | jq . | sudo tee -a ${LOGFILE_PATH} +kubectl -n ${NAMESPACE} exec client -- eos -j root://${EOSINSTANCE} file info /eos/ctaeos/cta/${TEST_FILE_NAME} | jq . | tee -a ${LOGFILE_PATH} EOS_NS_FXID_AFTER_RESTORE=$(jq -r '.fxid' ${EOS_METADATA_AFTER_RESTORE_PATH}) EOS_NS_FXID_AFTER_RESTORE_DEC=$(( 16#$EOS_NS_FXID_AFTER_RESTORE )) @@ -170,13 +168,11 @@ if test ${FXID_AFTER_RESTORE} != ${EOS_NS_FXID_AFTER_RESTORE_DEC}; then exit 1 fi -echo +echo echo "ALL TESTS PASSED FOR cta-restore-deleted-files" echo echo "CLEAN UP TEMPORARY FILES AND REMOVE TEMPORARY CTA ADMIN ACCESS" -echo "kubectl -n ${NAMESPACE} exec ctacli -- cta-admin admin rm --username ctafrontend" -echo "kubectl -n ${NAMESPACE} exec ctacli -- cta-admin admin rm --username ctaeos" -sudo rm ${METADATA_FILE_AFTER_RESTORE_PATH} -sudo rm ${METADATA_FILE_PATH} -sudo rm ${EOS_METADATA_AFTER_RESTORE_PATH} +rm ${METADATA_FILE_AFTER_RESTORE_PATH} +rm ${METADATA_FILE_PATH} +rm ${EOS_METADATA_AFTER_RESTORE_PATH} diff --git a/continuousintegration/orchestration/tests/restore_files_ctafrontend.sh b/continuousintegration/orchestration/tests/restore_files_ctafrontend.sh deleted file mode 100644 index 5b581cc818..0000000000 --- a/continuousintegration/orchestration/tests/restore_files_ctafrontend.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -# @project The CERN Tape Archive (CTA) -# @copyright Copyright © 2022 CERN -# @license This program is free software, distributed under the terms of the GNU General Public -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". You can -# redistribute it and/or modify it under the terms of the GPL Version 3, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# In applying this licence, CERN does not waive the privileges and immunities -# granted to it by virtue of its status as an Intergovernmental Organization or -# submit itself to any jurisdiction. - -EOSINSTANCE=ctaeos - -usage() { cat <<EOF 1>&2 -Usage: $0 -f <archive_file_id> -EOF -exit 1 -} - -while getopts "I:f:i:" o; do - case "${o}" in - I) - ARCHIVE_FILE_ID=${OPTARG} - ;; - f) - TEST_FILE_NAME=${OPTARG} - ;; - i) - EOSINSTANCE=${OPTARG} - ;; - *) - usage - ;; - esac -done -shift $((OPTIND-1)) - -if [ -z "${ARCHIVE_FILE_ID}" ]; then - usage -fi - -if [ ! -z "${error}" ]; then - echo -e "ERROR:\n${error}" - exit 1 -fi - -echo -echo "RESTORE DELETED FILE" -echo "./cta-restore-deleted-files --id ${ARCHIVE_FILE_ID} --copynb 1 --debug" -chmod +x /usr/bin/cta-restore-deleted-files -./usr/bin/cta-restore-deleted-files --id ${ARCHIVE_FILE_ID} --copynb 1 --debug -- GitLab