Skip to content
Snippets Groups Projects
Commit c9073a09 authored by Michael Davis's avatar Michael Davis
Browse files

[ci] Runs migration tools as daemon

gRPC user needs to be in EOS +sudo group
parent a8015efc
No related branches found
No related tags found
No related merge requests found
......@@ -214,9 +214,15 @@ fi
# 1. Map requests to EOS virtual identities
eos -r 0 0 vid add gateway eoscta grpc
# 2. Add authorisation key (must be the same as the one specified in client.sh)
# 2. Add authorisation key
#
# Note: EOS_GRPC_USER and EOS_AUTH_KEY must be the same as those specified in client.sh
EOS_GRPC_USER=daemon
EOS_GRPC_GROUP=${EOS_GRPC_USER}
EOS_AUTH_KEY=migration-test-token
eos -r 0 0 vid set map -grpc key:${EOS_AUTH_KEY} vuid:2 vgid:2
# daemon is already in EOS sudo group (see above)
#eos vid set membership ${EOS_GRPC_USER} +sudo
eos -r 0 0 vid set map -grpc key:${EOS_AUTH_KEY} vuid:${EOS_GRPC_USER} vgid:${EOS_GRPC_GROUP}
echo "gRPC authorized uid and gid:"
eos -r 0 0 vid ls | grep grpc:
......
#!/bin/sh
# Migration tools parameters
EOS_GRPC_USER=daemon
EOS_TEST_DIR_INJECT=/usr/bin/eos-test-dir-inject
CONFIG_FILE=/etc/cta/castor-migration.conf
TMPFILE=/tmp/eos-test-inject-sh.$$
# Colours
NC='\033[0m' # No colour
RED='\033[0;31m'
......@@ -24,21 +30,19 @@ echoc()
echo -e "${COLOUR}$*${NC}"
}
EOS_TEST_DIR_INJECT=/usr/bin/eos-test-dir-inject
[ -x ${EOS_TEST_DIR_INJECT} ] || error "Can't find executable ${EOS_TEST_DIR_INJECT}"
test_dir_inject()
{
COMMAND="${EOS_TEST_DIR_INJECT} $*"
sudo -u ${EOS_GRPC_USER} bash -c "${COMMAND}"
}
CONFIG_FILE=/etc/cta/castor-migration.conf
[ -x ${EOS_TEST_DIR_INJECT} ] || error "Can't find executable ${EOS_TEST_DIR_INJECT}"
[ -r ${CONFIG_FILE} ] || error "Can't find configuration file ${CONFIG_FILE}"
TMPFILE=/tmp/eos-test-inject-sh.$$
CASTOR_PREFIX=$(awk '/^castor.prefix[ ]/ { print $2 }' ${CONFIG_FILE})
EOS_PREFIX=$(awk '/^eos.prefix[ ]/ { print $2 }' ${CONFIG_FILE})
echo "Running as user ${UID}:${USER}"
# Ping the gRPC interface
${EOS_TEST_DIR_INJECT} ping || error "gRPC ping failed"
test_dir_inject ping || error "gRPC ping failed"
# Create the top-level directory. GNU coreutils "mkdir -p" does not return an error if the directory
# already exists; "eos mkdir -p" does return an error, which we explicitly ignore.
......@@ -46,7 +50,7 @@ eos mkdir -p ${EOS_PREFIX} 2>/dev/null
# Create directory with system-assigned file id -- should succeed
echoc $LT_BLUE "Creating directory with auto-assigned file id"
${EOS_TEST_DIR_INJECT} --path ${CASTOR_PREFIX}/my_test_dir >${TMPFILE}
test_dir_inject --path ${CASTOR_PREFIX}/my_test_dir >${TMPFILE}
[ $? -eq 0 ] || error "Creating directory with auto-assigned file id failed"
json-pretty-print.sh ${TMPFILE}
rm ${TMPFILE}
......@@ -56,7 +60,7 @@ eos rmdir ${EOS_PREFIX}/my_test_dir
# Create directory with self-assigned file id -- should succeed
echoc $LT_BLUE "Creating directory with self-assigned file id"
${EOS_TEST_DIR_INJECT} --fileid 9876543210 --path ${CASTOR_PREFIX}/my_test_dir >${TMPFILE}
test_dir_inject --fileid 9876543210 --path ${CASTOR_PREFIX}/my_test_dir >${TMPFILE}
[ $? -eq 0 ] || error "Creating directory with self-assigned file id failed"
json-pretty-print.sh ${TMPFILE}
rm ${TMPFILE}
......@@ -64,14 +68,14 @@ eos fileinfo ${EOS_PREFIX}/my_test_dir
# Try again -- should fail
echoc $LT_GREEN "Creating directory with the same file id (should fail)"
${EOS_TEST_DIR_INJECT} --fileid 9876543210 --path ${CASTOR_PREFIX}/my_test_dir2 >/dev/null
test_dir_inject --fileid 9876543210 --path ${CASTOR_PREFIX}/my_test_dir2 >/dev/null
[ $? -ne 0 ] || error "Creating directory with self-assigned file id succeeded when it should have failed"
# Remove and try again -- should succeed after restarting EOS
echoc $LT_GREEN "Remove the directory and restart EOS to remove the tombstone"
eos rmdir ${EOS_PREFIX}/my_test_dir
echoc $LT_BLUE "Recreate the directory with self-assigned file id (should succeed this time)"
${EOS_TEST_DIR_INJECT} --fileid 9876543210 --path ${CASTOR_PREFIX}/my_test_dir >/dev/null
test_dir_inject --fileid 9876543210 --path ${CASTOR_PREFIX}/my_test_dir >/dev/null
[ $? -eq 0 ] || error "Creating directory with self-assigned file id failed with error $?"
eos fileinfo ${EOS_PREFIX}/my_test_dir
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment