#!/usr/bin/bash source /usr/libexec/tests/osbuild-composer/api/common/common.sh source /usr/libexec/tests/osbuild-composer/api/common/vsphere.sh source /usr/libexec/tests/osbuild-composer/api/common/s3.sh source /usr/libexec/tests/osbuild-composer/shared_lib.sh function checkEnv() { printenv AWS_REGION > /dev/null if [ "${IMAGE_TYPE}" == "${IMAGE_TYPE_VSPHERE}" ]; then checkEnvVSphere fi } # Global var for ostree ref export OSTREE_REF="test/rhel/8/edge" function cleanup() { MINIO_CONTAINER_NAME="${MINIO_CONTAINER_NAME:-}" if [ -n "${MINIO_CONTAINER_NAME}" ]; then sudo "${CONTAINER_RUNTIME}" kill "${MINIO_CONTAINER_NAME}" fi if [ "${IMAGE_TYPE}" == "${IMAGE_TYPE_VSPHERE}" ]; then cleanupVSphere fi } function installClient() { local CONTAINER_MINIO_SERVER="quay.io/minio/minio:latest" MINIO_CONTAINER_NAME="minio-server" MINIO_ENDPOINT="http://localhost:9000" local MINIO_ROOT_USER="X29DU5Q6C5NKDQ8PLGVT" local MINIO_ROOT_PASSWORD MINIO_ROOT_PASSWORD=$(date +%s | sha256sum | base64 | head -c 32 ; echo) MINIO_BUCKET="ci-test" local MINIO_REGION="${AWS_REGION}" local MINIO_CREDENTIALS_FILE="/etc/osbuild-worker/minio-creds" sudo "${CONTAINER_RUNTIME}" run --rm -d \ --name ${MINIO_CONTAINER_NAME} \ -p 9000:9000 \ -e MINIO_BROWSER=off \ -e MINIO_ROOT_USER="${MINIO_ROOT_USER}" \ -e MINIO_ROOT_PASSWORD="${MINIO_ROOT_PASSWORD}" \ ${CONTAINER_MINIO_SERVER} server /data if ! hash aws; then echo "Using 'awscli' from a container" sudo "${CONTAINER_RUNTIME}" pull "${CONTAINER_IMAGE_CLOUD_TOOLS}" AWS_CMD="sudo ${CONTAINER_RUNTIME} run --rm \ -e AWS_ACCESS_KEY_ID=${MINIO_ROOT_USER} \ -e AWS_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD} \ -v ${WORKDIR}:${WORKDIR}:Z \ --network host \ ${CONTAINER_IMAGE_CLOUD_TOOLS} aws" else echo "Using pre-installed 'aws' from the system" AWS_CMD="AWS_ACCESS_KEY_ID=${MINIO_ROOT_USER} \ AWS_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD} \ aws" fi AWS_CMD+=" --region $MINIO_REGION --output json --color on --endpoint-url $MINIO_ENDPOINT" $AWS_CMD --version if [ "${IMAGE_TYPE}" == "${IMAGE_TYPE_VSPHERE}" ]; then installClientVSphere fi # Configure the local server (retry until the service is up) MINIO_CONFIGURE_RETRY=0 MINIO_CONFIGURE_MAX_RETRY=5 MINIO_RETRY_INTERVAL=15 until [ "${MINIO_CONFIGURE_RETRY}" -ge "${MINIO_CONFIGURE_MAX_RETRY}" ] do ${AWS_CMD} s3 ls && break MINIO_CONFIGURE_RETRY=$((MINIO_CONFIGURE_RETRY + 1)) echo "Retrying [${MINIO_CONFIGURE_RETRY}/${MINIO_CONFIGURE_MAX_RETRY}] in ${MINIO_RETRY_INTERVAL}(s) " sleep ${MINIO_RETRY_INTERVAL} done if [ "${MINIO_CONFIGURE_RETRY}" -ge "${MINIO_CONFIGURE_MAX_RETRY}" ]; then echo "Failed to communicate with the MinIO server after ${MINIO_CONFIGURE_MAX_RETRY} attempts!" exit 1 fi # Create the bucket ${AWS_CMD} s3 mb s3://${MINIO_BUCKET} cat <