diff --git a/buildscripts/disable-root.sh b/buildscripts/disable-root.sh index c35c769f0..c8cec11bc 100755 --- a/buildscripts/disable-root.sh +++ b/buildscripts/disable-root.sh @@ -3,7 +3,7 @@ set -x export MINIO_CI_CD=1 -killall -9 minio +killall -9 silo rm -rf ${HOME}/tmp/dist @@ -19,28 +19,27 @@ done echo $args for ((i = 0; i < $((nr_servers)); i++)); do - (minio server --address ":$((9100 + i))" $args 2>&1 >/tmp/log$i.txt) & + (silo server --address ":$((9100 + i))" $args 2>&1 >/tmp/log$i.txt) & done sleep 10s if [ ! -f ./mc ]; then - wget --quiet -O ./mc https://dl.minio.io/client/mc/release/linux-amd64/./mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi set +e -export MC_HOST_minioadm=http://minioadmin:minioadmin@localhost:9100/ -./mc ready minioadm +export MC_HOST_siloadm=http://minioadmin:minioadmin@localhost:9100/ +./mc ready siloadm -./mc ls minioadm/ +./mc ls siloadm/ -./mc admin config set minioadm/ api root_access=off +./mc admin config set siloadm/ api root_access=off sleep 3s # let things settle a little -./mc ls minioadm/ +./mc ls siloadm/ if [ $? -eq 0 ]; then echo "listing succeeded, 'minioadmin' was not disabled" exit 1 @@ -48,38 +47,38 @@ fi set -e -killall -9 minio +killall -9 silo export MINIO_API_ROOT_ACCESS=on for ((i = 0; i < $((nr_servers)); i++)); do - (minio server --address ":$((9100 + i))" $args 2>&1 >/tmp/log$i.txt) & + (silo server --address ":$((9100 + i))" $args 2>&1 >/tmp/log$i.txt) & done set +e -./mc ready minioadm/ +./mc ready siloadm/ -./mc ls minioadm/ +./mc ls siloadm/ if [ $? -ne 0 ]; then echo "listing failed, 'minioadmin' should be enabled" exit 1 fi -killall -9 minio +killall -9 silo rm -rf /tmp/multisitea/ rm -rf /tmp/multisiteb/ echo "Setup site-replication and then disable root credentials" -minio server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_1.log 2>&1 & -minio server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_2.log 2>&1 & -minio server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_1.log 2>&1 & -minio server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_2.log 2>&1 & export MC_HOST_sitea=http://minioadmin:minioadmin@127.0.0.1:9001 @@ -96,19 +95,19 @@ export MC_HOST_siteb=http://minioadmin:minioadmin@127.0.0.1:9004 ./mc admin user info siteb foobar -killall -9 minio +killall -9 silo echo "turning off root access, however site replication must continue" export MINIO_API_ROOT_ACCESS=off -minio server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_1.log 2>&1 & -minio server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_2.log 2>&1 & -minio server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_1.log 2>&1 & -minio server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_2.log 2>&1 & export MC_HOST_sitea=http://foobar:foo12345@127.0.0.1:9001 diff --git a/buildscripts/heal-inconsistent-versions.sh b/buildscripts/heal-inconsistent-versions.sh index f4c918a65..ffd776e57 100755 --- a/buildscripts/heal-inconsistent-versions.sh +++ b/buildscripts/heal-inconsistent-versions.sh @@ -5,45 +5,34 @@ set -o pipefail set -x WORK_DIR="$PWD/.verify-$RANDOM" -MINIO_CONFIG_DIR="$WORK_DIR/.minio" -MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR" server) +SILO_CONFIG_DIR="$WORK_DIR/.silo" +SILO=("$PWD/silo" --config-dir "$SILO_CONFIG_DIR" server) -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi -function start_minio_4drive() { +function start_silo_4drive() { start_port=$1 - export MINIO_ROOT_USER=minio - export MINIO_ROOT_PASSWORD=minio123 - export MC_HOST_minio="http://minio:minio123@127.0.0.1:${start_port}/" + export MINIO_ROOT_USER=silo + export MINIO_ROOT_PASSWORD=silo123 + export MC_HOST_silo="http://silo:silo123@127.0.0.1:${start_port}/" unset MINIO_KMS_AUTO_ENCRYPTION # do not auto-encrypt objects export MINIO_CI_CD=1 mkdir ${WORK_DIR} - C_PWD=${PWD} if [ ! -x "$PWD/mc" ]; then - MC_BUILD_DIR="mc-$RANDOM" - if ! git clone --quiet https://github.com/minio/mc "$MC_BUILD_DIR"; then - echo "failed to download https://github.com/minio/mc" - purge "${MC_BUILD_DIR}" - exit 1 - fi - - (cd "${MC_BUILD_DIR}" && go build -o "$C_PWD/mc") - - # remove mc source. - purge "${MC_BUILD_DIR}" + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" "$PWD/mc" fi - "${MINIO[@]}" --address ":$start_port" "${WORK_DIR}/disk{1...4}" >"${WORK_DIR}/server1.log" 2>&1 & + "${SILO[@]}" --address ":$start_port" "${WORK_DIR}/disk{1...4}" >"${WORK_DIR}/server1.log" 2>&1 & pid=$! disown $pid sleep 5 @@ -56,30 +45,30 @@ function start_minio_4drive() { exit 1 fi - "${PWD}/mc" mb --with-versioning minio/bucket + "${PWD}/mc" mb --with-versioning silo/bucket for i in $(seq 1 4); do - "${PWD}/mc" cp /etc/hosts minio/bucket/testobj + "${PWD}/mc" cp /etc/hosts silo/bucket/testobj sudo chown -R root. "${WORK_DIR}/disk${i}" - "${PWD}/mc" cp /etc/hosts minio/bucket/testobj + "${PWD}/mc" cp /etc/hosts silo/bucket/testobj sudo chown -R ${USER}. "${WORK_DIR}/disk${i}" done - for vid in $("${PWD}/mc" ls --json --versions minio/bucket/testobj | jq -r .versionId); do - "${PWD}/mc" cat --vid "${vid}" minio/bucket/testobj | md5sum + for vid in $("${PWD}/mc" ls --json --versions silo/bucket/testobj | jq -r .versionId); do + "${PWD}/mc" cat --vid "${vid}" silo/bucket/testobj | md5sum done - pkill minio + pkill silo sleep 3 } function main() { start_port=$(shuf -i 10000-65000 -n 1) - start_minio_4drive ${start_port} + start_silo_4drive ${start_port} } function purge() { diff --git a/buildscripts/install-mcli.sh b/buildscripts/install-mcli.sh new file mode 100755 index 000000000..17922744e --- /dev/null +++ b/buildscripts/install-mcli.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash + +set -euo pipefail + +if [ "$#" -ne 1 ]; then + echo "usage: $0 TARGET" >&2 + exit 2 +fi + +target=$1 +target_dir=$(dirname "${target}") +if [ ! -d "${target_dir}" ]; then + echo "target directory does not exist: ${target_dir}" >&2 + exit 1 +fi + +sha256_file() { + if command -v sha256sum >/dev/null 2>&1; then + sha256sum "$1" | awk '{print $1}' + else + shasum -a 256 "$1" | awk '{print $1}' + fi +} + +if [ -n "${MCLI_BIN:-}" ]; then + if [ ! -f "${MCLI_BIN}" ]; then + echo "MCLI_BIN is not a regular file: ${MCLI_BIN}" >&2 + exit 1 + fi + if ! printf '%s\n' "${MCLI_SHA256:-}" | grep -Eq '^[0-9a-fA-F]{64}$'; then + echo "MCLI_SHA256 must contain the expected SHA-256 for MCLI_BIN" >&2 + exit 1 + fi + actual=$(sha256_file "${MCLI_BIN}") + if [ "${actual}" != "${MCLI_SHA256,,}" ]; then + echo "MCLI_BIN checksum mismatch: expected ${MCLI_SHA256,,}, got ${actual}" >&2 + exit 1 + fi + install -m 0755 "${MCLI_BIN}" "${target}" + exit 0 +fi + +release=${MCLI_RELEASE:-RELEASE.2026-08-04T00-00-00Z} +version_hyphen=${release#RELEASE.} +package_version=$(printf '%s\n' "${version_hyphen}" | sed -E 's/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2})-([0-9]{2})-([0-9]{2})Z$/\1\2\3\4\5\6.0.0/') +if [ "${package_version}" = "${version_hyphen}" ]; then + echo "invalid MCLI_RELEASE: ${release}" >&2 + exit 1 +fi + +case $(uname -s) in + Linux) os=linux ;; + Darwin) os=darwin ;; + *) echo "unsupported mcli host OS: $(uname -s)" >&2; exit 1 ;; +esac +case $(uname -m) in + x86_64 | amd64) arch=amd64 ;; + aarch64 | arm64) arch=arm64 ;; + *) echo "unsupported mcli host architecture: $(uname -m)" >&2; exit 1 ;; +esac + +archive="mcli_${package_version}_${os}_${arch}.tar.gz" +checksums="mcli_${package_version}_checksums.txt" +base_url="https://github.com/pgsty/mc/releases/download/${release}" +tmp_dir=$(mktemp -d "${TMPDIR:-/tmp}/silo-mcli.XXXXXX") +trap 'rm -rf "${tmp_dir}"' EXIT + +curl --fail --location --retry 3 --silent --show-error \ + "${base_url}/${checksums}" --output "${tmp_dir}/${checksums}" +curl --fail --location --retry 3 --silent --show-error \ + "${base_url}/${archive}" --output "${tmp_dir}/${archive}" + +expected=$(awk -v asset="${archive}" ' + { + name=$2 + sub(/^\*/, "", name) + if (name == asset && $1 ~ /^[0-9a-fA-F]{64}$/) print tolower($1) + } +' "${tmp_dir}/${checksums}") +if ! printf '%s\n' "${expected}" | grep -Eq '^[0-9a-f]{64}$'; then + echo "checksum manifest does not contain exactly one valid entry for ${archive}" >&2 + exit 1 +fi +actual=$(sha256_file "${tmp_dir}/${archive}") +if [ "${actual}" != "${expected}" ]; then + echo "downloaded ${archive} checksum mismatch" >&2 + exit 1 +fi + +tar -xzf "${tmp_dir}/${archive}" -C "${tmp_dir}" mcli +install -m 0755 "${tmp_dir}/mcli" "${target}" diff --git a/buildscripts/install-verified-fixture.sh b/buildscripts/install-verified-fixture.sh new file mode 100755 index 000000000..fb90af59b --- /dev/null +++ b/buildscripts/install-verified-fixture.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -euo pipefail + +if [ "$#" -ne 3 ]; then + echo "usage: $0 SOURCE SHA256 TARGET" >&2 + exit 2 +fi + +source_ref=$1 +expected=${2,,} +target=$3 +if ! printf '%s\n' "${expected}" | grep -Eq '^[0-9a-f]{64}$'; then + echo "expected checksum must be a lowercase SHA-256 digest" >&2 + exit 1 +fi +if [ ! -d "$(dirname "${target}")" ]; then + echo "target directory does not exist: $(dirname "${target}")" >&2 + exit 1 +fi + +tmp_file=$(mktemp "${TMPDIR:-/tmp}/silo-fixture.XXXXXX") +trap 'rm -f "${tmp_file}"' EXIT +case ${source_ref} in + https://*) + curl --fail --location --retry 3 --silent --show-error \ + "${source_ref}" --output "${tmp_file}" + ;; + *) + if [ ! -f "${source_ref}" ]; then + echo "fixture is not a regular file: ${source_ref}" >&2 + exit 1 + fi + cp "${source_ref}" "${tmp_file}" + ;; +esac + +if command -v sha256sum >/dev/null 2>&1; then + actual=$(sha256sum "${tmp_file}" | awk '{print $1}') +else + actual=$(shasum -a 256 "${tmp_file}" | awk '{print $1}') +fi +if [ "${actual}" != "${expected}" ]; then + echo "fixture checksum mismatch: expected ${expected}, got ${actual}" >&2 + exit 1 +fi + +install -m 0755 "${tmp_file}" "${target}" diff --git a/buildscripts/minio-iam-ldap-upgrade-import-test.sh b/buildscripts/minio-iam-ldap-upgrade-import-test.sh index e7da2b101..47bf7a7e2 100755 --- a/buildscripts/minio-iam-ldap-upgrade-import-test.sh +++ b/buildscripts/minio-iam-ldap-upgrade-import-test.sh @@ -1,7 +1,7 @@ #!/bin/bash -# This script is used to test the migration of IAM content from old minio -# instance to new minio instance. +# This script tests IAM migration from an old MinIO compatibility fixture into +# the current Silo server. # # To run it locally, start the LDAP server in github.com/minio/minio-iam-testing # repo (e.g. make podman-run), and then run this script. @@ -15,6 +15,7 @@ OLD_VERSION=RELEASE.2024-03-26T22-10-45Z OLD_BINARY_LINK=https://dl.min.io/server/minio/release/linux-amd64/archive/minio.${OLD_VERSION} +OLD_BINARY_SHA256=2050199d89e3057571620a1d453118fed5bd2de9d4f3b266b11365fdf984d676 __init__() { if which curl &>/dev/null; then @@ -27,17 +28,16 @@ __init__() { export GOPATH=/tmp/gopath export PATH="${PATH}":"${GOPATH}"/bin - if which mc &>/dev/null; then - echo "mc is already installed" - else - echo "Installing mc:" - go install github.com/minio/mc@latest + if [ ! -x "${GOPATH}/bin/mc" ]; then + echo "Installing verified compatible client fixture" + mkdir -p "${GOPATH}/bin" + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" "${GOPATH}/bin/mc" fi if [ ! -x ./minio.${OLD_VERSION} ]; then - echo "Downloading minio.${OLD_VERSION} binary" - curl -o minio.${OLD_VERSION} ${OLD_BINARY_LINK} - chmod +x minio.${OLD_VERSION} + echo "Installing verified upstream compatibility fixture minio.${OLD_VERSION}" + "$(git rev-parse --show-toplevel)/buildscripts/install-verified-fixture.sh" \ + "${OLD_BINARY_LINK}" "${OLD_BINARY_SHA256}" "minio.${OLD_VERSION}" fi if [ -z "$_MINIO_LDAP_TEST_SERVER" ]; then @@ -49,7 +49,7 @@ __init__() { } create_iam_content_in_old_minio() { - echo "Creating IAM content in old minio instance." + echo "Creating IAM content in the old MinIO compatibility fixture." MINIO_CI_CD=1 ./minio.${OLD_VERSION} server /tmp/data/{1...4} & sleep 5 @@ -80,9 +80,9 @@ create_iam_content_in_old_minio() { } import_iam_content_in_new_minio() { - echo "Importing IAM content in new minio instance." - # Assume current minio binary exists. - MINIO_CI_CD=1 ./minio server /tmp/data/{1...4} & + echo "Importing IAM content into the current Silo instance." + # Assume the current Silo binary exists. + MINIO_CI_CD=1 ./silo server /tmp/data/{1...4} & sleep 5 set -x diff --git a/buildscripts/minio-upgrade.sh b/buildscripts/minio-upgrade.sh index deaaf4606..62be82952 100755 --- a/buildscripts/minio-upgrade.sh +++ b/buildscripts/minio-upgrade.sh @@ -1,113 +1,124 @@ -#!/bin/bash +#!/usr/bin/env bash -trap 'cleanup $LINENO' ERR +set -euo pipefail + +# Exercise both directions of the on-disk compatibility contract using an +# immutable pre-rebrand image and a container built from the current checkout. +# Every Docker resource is uniquely named and removed explicitly; this test +# never prunes unrelated images, containers, networks, or volumes. + +repo_dir="$(git rev-parse --show-toplevel)" +old_image="${OLD_IMAGE:-docker.io/pgsty/minio@sha256:b6bfe7239bfc83fb90d31612d9704d86039dd714f7904b3f1ad68f211e602372}" +new_image="${NEW_IMAGE:-silo-upgrade-test:dev}" +suffix="$(date +%s)-$$" +network="silo-upgrade-net-${suffix}" +volume="silo-upgrade-data-${suffix}" +old_container="silo-upgrade-old-${suffix}" +new_container="silo-upgrade-new-${suffix}" +rollback_container="silo-upgrade-rollback-${suffix}" +root_user=silo-upgrade-admin +root_password=silo-upgrade-secret-123 -# shellcheck disable=SC2120 cleanup() { - MINIO_VERSION=dev /tmp/gopath/bin/docker-compose \ - -f "buildscripts/upgrade-tests/compose.yml" \ - down || true - - MINIO_VERSION=dev /tmp/gopath/bin/docker-compose \ - -f "buildscripts/upgrade-tests/compose.yml" \ - rm || true - - for volume in $(docker volume ls -q | grep upgrade); do - docker volume rm ${volume} || true - done - - docker volume prune -f - docker system prune -f || true - docker volume prune -f || true - docker volume rm $(docker volume ls -q -f dangling=true) || true -} - -verify_checksum_after_heal() { - local sum1 - sum1=$(curl -s "$2" | sha256sum) - mc admin heal --json -r "$1" >/dev/null # test after healing - local sum1_heal - sum1_heal=$(curl -s "$2" | sha256sum) - - if [ "${sum1_heal}" != "${sum1}" ]; then - echo "mismatch expected ${sum1_heal}, got ${sum1}" - exit 1 - fi -} - -verify_checksum_mc() { - local expected - expected=$(mc cat "$1" | sha256sum) - local got - got=$(mc cat "$2" | sha256sum) - - if [ "${expected}" != "${got}" ]; then - echo "mismatch - expected ${expected}, got ${got}" - exit 1 - fi - echo "matches - ${expected}, got ${got}" -} - -add_alias() { - for i in $(seq 1 4); do - echo "... attempting to add alias $i" - until (mc alias set minio http://127.0.0.1:9000 minioadmin minioadmin); do - echo "...waiting... for 5secs" && sleep 5 + status=$? + trap - EXIT + if [ "${status}" -ne 0 ]; then + for name in "${old_container}" "${new_container}" "${rollback_container}"; do + docker logs "${name}" 2>/dev/null | tail -n 80 >&2 || true done + fi + if [ "${KEEP_UPGRADE_TEST_RESOURCES:-0}" = 1 ]; then + printf 'Retained Docker resources for inspection: %s %s\n' "${network}" "${volume}" >&2 + exit "${status}" + fi + docker rm -f "${old_container}" "${new_container}" "${rollback_container}" >/dev/null 2>&1 || true + docker network rm "${network}" >/dev/null 2>&1 || true + docker volume rm "${volume}" >/dev/null 2>&1 || true + exit "${status}" +} +trap cleanup EXIT +trap 'exit 130' INT TERM + +wait_ready() { + name="$1" + ready="" + for _ in $(seq 1 90); do + if docker logs "${name}" 2>&1 | grep -q 'API:'; then + ready=1 + break + fi + if [ "$(docker inspect -f '{{.State.Running}}' "${name}")" != true ]; then + break + fi + sleep 1 done - - echo "Sleeping for nginx" - sleep 20 + if [ -z "${ready}" ]; then + echo "Server did not become ready: ${name}" >&2 + return 1 + fi } -__init__() { - sudo apt install curl -y - export GOPATH=/tmp/gopath - export PATH=${PATH}:${GOPATH}/bin - - go install github.com/minio/mc@latest - - ## this is needed because github actions don't have - ## docker-compose on all runners - COMPOSE_VERSION=v2.35.1 - mkdir -p /tmp/gopath/bin/ - wget -O /tmp/gopath/bin/docker-compose https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-x86_64 - chmod +x /tmp/gopath/bin/docker-compose - - cleanup - - TAG=minio/minio:dev make docker - - MINIO_VERSION=RELEASE.2019-12-19T22-52-26Z docker-compose \ - -f "buildscripts/upgrade-tests/compose.yml" \ - up -d --build - - add_alias - - mc mb minio/minio-test/ - mc cp ./minio minio/minio-test/to-read/ - mc cp /etc/hosts minio/minio-test/to-read/hosts - mc anonymous set download minio/minio-test - - verify_checksum_mc ./minio minio/minio-test/to-read/minio - - curl -s http://127.0.0.1:9000/minio-test/to-read/hosts | sha256sum - - MINIO_VERSION=dev /tmp/gopath/bin/docker-compose -f "buildscripts/upgrade-tests/compose.yml" stop +start_server() { + name="$1" + image="$2" + shift 2 + docker run -d --name "${name}" --network "${network}" \ + --mount "source=${volume},target=/data" \ + -e MINIO_CI_CD=1 -e MINIO_ROOT_USER="${root_user}" -e MINIO_ROOT_PASSWORD="${root_password}" \ + "${image}" "$@" >/dev/null + wait_ready "${name}" + docker exec "${name}" mcli alias set local http://127.0.0.1:9000 "${root_user}" "${root_password}" >/dev/null } -main() { - MINIO_VERSION=dev /tmp/gopath/bin/docker-compose -f "buildscripts/upgrade-tests/compose.yml" up -d --build - - add_alias - - verify_checksum_after_heal minio/minio-test http://127.0.0.1:9000/minio-test/to-read/hosts - - verify_checksum_mc ./minio minio/minio-test/to-read/minio - - verify_checksum_mc /etc/hosts minio/minio-test/to-read/hosts - - cleanup +stop_server() { + name="$1" + docker stop -t 20 "${name}" >/dev/null + test "$(docker inspect -f '{{.State.ExitCode}}' "${name}")" = 0 + docker logs "${name}" 2>&1 | grep -q 'Exiting on signal' + docker rm "${name}" >/dev/null } -(__init__ "$@" && main "$@") +command -v docker >/dev/null +docker info >/dev/null +if ! docker image inspect "${old_image}" >/dev/null 2>&1; then + docker pull "${old_image}" +fi + +if [ "${SILO_UPGRADE_SKIP_BUILD:-0}" != 1 ]; then + make -C "${repo_dir}" docker TAG="${new_image}" +fi +docker image inspect "${new_image}" >/dev/null + +docker network create "${network}" >/dev/null +docker volume create "${volume}" >/dev/null + +start_server "${old_container}" "${old_image}" minio server /data --address :9000 +docker exec "${old_container}" mcli mb local/compat >/dev/null +docker exec "${old_container}" mcli version enable local/compat >/dev/null +printf 'old-version-1\n' | docker exec -i "${old_container}" mcli pipe local/compat/versioned.txt >/dev/null +printf 'old-version-2\n' | docker exec -i "${old_container}" mcli pipe local/compat/versioned.txt >/dev/null +test "$(docker exec "${old_container}" mcli ls --versions local/compat/versioned.txt | grep -c 'versioned.txt')" -ge 2 +docker exec "${old_container}" mcli mb --with-lock local/locked >/dev/null +printf 'locked-by-old\n' | docker exec -i "${old_container}" mcli pipe local/locked/object.txt >/dev/null +dd if=/dev/zero bs=1048576 count=70 2>/dev/null | docker exec -i "${old_container}" mcli pipe local/compat/multipart.bin >/dev/null +test "$(docker exec "${old_container}" mcli stat --json local/compat/multipart.bin | jq -r '.size')" = 73400320 +docker exec "${old_container}" mcli admin user add local migration-user migration-secret-123 >/dev/null +docker exec "${old_container}" mcli admin policy attach local readwrite --user migration-user >/dev/null +stop_server "${old_container}" + +start_server "${new_container}" "${new_image}" silo server /data --address :9000 +test "$(docker exec "${new_container}" mcli cat local/compat/versioned.txt)" = old-version-2 +test "$(docker exec "${new_container}" mcli cat local/locked/object.txt)" = locked-by-old +test "$(docker exec "${new_container}" mcli stat --json local/compat/multipart.bin | jq -r '.size')" = 73400320 +docker exec "${new_container}" mcli admin user info local migration-user >/dev/null +docker exec "${new_container}" mcli alias set migrated http://127.0.0.1:9000 migration-user migration-secret-123 >/dev/null +printf 'written-by-silo\n' | docker exec -i "${new_container}" mcli pipe migrated/compat/silo.txt >/dev/null +stop_server "${new_container}" + +start_server "${rollback_container}" "${old_image}" minio server /data --address :9000 +test "$(docker exec "${rollback_container}" mcli cat local/compat/versioned.txt)" = old-version-2 +test "$(docker exec "${rollback_container}" mcli cat local/compat/silo.txt)" = written-by-silo +test "$(docker exec "${rollback_container}" mcli stat --json local/compat/multipart.bin | jq -r '.size')" = 73400320 +stop_server "${rollback_container}" + +echo "MinIO-to-Silo data upgrade and rollback checks passed" diff --git a/buildscripts/multipart-quorum-test.sh b/buildscripts/multipart-quorum-test.sh index f226b0e5a..4551f4303 100644 --- a/buildscripts/multipart-quorum-test.sh +++ b/buildscripts/multipart-quorum-test.sh @@ -5,16 +5,16 @@ if [ -n "$TEST_DEBUG" ]; then fi WORK_DIR="$PWD/.verify-$RANDOM" -MINIO_CONFIG_DIR="$WORK_DIR/.minio" -MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR" server) +SILO_CONFIG_DIR="$WORK_DIR/.silo" +SILO=("$PWD/silo" --config-dir "$SILO_CONFIG_DIR" server) -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi @@ -30,9 +30,9 @@ catch() { echo "error on line $1" fi - echo "Cleaning up instances of MinIO" - pkill minio || true - pkill -9 minio || true + echo "Cleaning up instances of Silo" + pkill silo || true + pkill -9 silo || true purge "$WORK_DIR" if [ $# -ne 0 ]; then exit $# @@ -41,32 +41,21 @@ catch() { catch -function start_minio_10drive() { +function start_silo_10drive() { start_port=$1 - export MINIO_ROOT_USER=minio - export MINIO_ROOT_PASSWORD=minio123 - export MC_HOST_minio="http://minio:minio123@127.0.0.1:${start_port}/" + export MINIO_ROOT_USER=silo + export MINIO_ROOT_PASSWORD=silo123 + export MC_HOST_silo="http://silo:silo123@127.0.0.1:${start_port}/" unset MINIO_KMS_AUTO_ENCRYPTION # do not auto-encrypt objects export MINIO_CI_CD=1 mkdir ${WORK_DIR} - C_PWD=${PWD} if [ ! -x "$PWD/mc" ]; then - MC_BUILD_DIR="mc-$RANDOM" - if ! git clone --quiet https://github.com/minio/mc "$MC_BUILD_DIR"; then - echo "failed to download https://github.com/minio/mc" - purge "${MC_BUILD_DIR}" - exit 1 - fi - - (cd "${MC_BUILD_DIR}" && go build -o "$C_PWD/mc") - - # remove mc source. - purge "${MC_BUILD_DIR}" + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" "$PWD/mc" fi - "${MINIO[@]}" --address ":$start_port" "${WORK_DIR}/disk{1...10}" >"${WORK_DIR}/server1.log" 2>&1 & + "${SILO[@]}" --address ":$start_port" "${WORK_DIR}/disk{1...10}" >"${WORK_DIR}/server1.log" 2>&1 & pid=$! disown $pid sleep 5 @@ -79,10 +68,10 @@ function start_minio_10drive() { exit 1 fi - "${PWD}/mc" mb --with-versioning minio/bucket + "${PWD}/mc" mb --with-versioning silo/bucket - export AWS_ACCESS_KEY_ID=minio - export AWS_SECRET_ACCESS_KEY=minio123 + export AWS_ACCESS_KEY_ID=silo + export AWS_SECRET_ACCESS_KEY=silo123 aws --endpoint-url http://localhost:"$start_port" s3api create-multipart-upload --bucket bucket --key obj-1 >upload-id.json uploadId=$(jq -r '.UploadId' upload-id.json) @@ -120,7 +109,7 @@ EOF function main() { start_port=$(shuf -i 10000-65000 -n 1) - start_minio_10drive ${start_port} + start_silo_10drive ${start_port} } main "$@" diff --git a/buildscripts/resolve-right-versions.sh b/buildscripts/resolve-right-versions.sh index afbdbb1ca..3b5a1a3f3 100755 --- a/buildscripts/resolve-right-versions.sh +++ b/buildscripts/resolve-right-versions.sh @@ -6,38 +6,29 @@ set -x set -e WORK_DIR="$PWD/.verify-$RANDOM" -MINIO_CONFIG_DIR="$WORK_DIR/.minio" -MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR" server) +SILO_CONFIG_DIR="$WORK_DIR/.silo" +SILO=("$PWD/silo" --config-dir "$SILO_CONFIG_DIR" server) -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi -function start_minio_5drive() { +function start_silo_5drive() { start_port=$1 - export MINIO_ROOT_USER=minio - export MINIO_ROOT_PASSWORD=minio123 - export MC_HOST_minio="http://minio:minio123@127.0.0.1:${start_port}/" + export MINIO_ROOT_USER=silo + export MINIO_ROOT_PASSWORD=silo123 + export MC_HOST_silo="http://silo:silo123@127.0.0.1:${start_port}/" unset MINIO_KMS_AUTO_ENCRYPTION # do not auto-encrypt objects export MINIO_CI_CD=1 - MC_BUILD_DIR="mc-$RANDOM" - if ! git clone --quiet https://github.com/minio/mc "$MC_BUILD_DIR"; then - echo "failed to download https://github.com/minio/mc" - purge "${MC_BUILD_DIR}" - exit 1 - fi - - (cd "${MC_BUILD_DIR}" && go build -o "$WORK_DIR/mc") - - # remove mc source. - purge "${MC_BUILD_DIR}" + mkdir -p "${WORK_DIR}" + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" "${WORK_DIR}/mc" "${WORK_DIR}/mc" cp --quiet -r "buildscripts/cicd-corpus/" "${WORK_DIR}/cicd-corpus/" - "${MINIO[@]}" --address ":$start_port" "${WORK_DIR}/cicd-corpus/disk{1...5}" >"${WORK_DIR}/server1.log" 2>&1 & + "${SILO[@]}" --address ":$start_port" "${WORK_DIR}/cicd-corpus/disk{1...5}" >"${WORK_DIR}/server1.log" 2>&1 & pid=$! disown $pid sleep 5 @@ -50,16 +41,16 @@ function start_minio_5drive() { exit 1 fi - "${WORK_DIR}/mc" stat minio/bucket/testobj + "${WORK_DIR}/mc" stat silo/bucket/testobj - pkill minio + pkill silo sleep 3 } function main() { start_port=$(shuf -i 10000-65000 -n 1) - start_minio_5drive ${start_port} + start_silo_5drive ${start_port} } function purge() { diff --git a/buildscripts/rewrite-old-new.sh b/buildscripts/rewrite-old-new.sh index 3527f3a68..7dda4db9c 100755 --- a/buildscripts/rewrite-old-new.sh +++ b/buildscripts/rewrite-old-new.sh @@ -5,48 +5,42 @@ set -o pipefail set -x WORK_DIR="$PWD/.verify-$RANDOM" -MINIO_CONFIG_DIR="$WORK_DIR/.minio" -MINIO_OLD=("$PWD/minio.RELEASE.2020-10-28T08-16-50Z" --config-dir "$MINIO_CONFIG_DIR" server) -MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR" server) +SILO_CONFIG_DIR="$WORK_DIR/.silo" +MINIO_OLD=("$PWD/minio.RELEASE.2020-10-28T08-16-50Z" --config-dir "$SILO_CONFIG_DIR" server) +SILO=("$PWD/silo" --config-dir "$SILO_CONFIG_DIR" server) -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi function download_old_release() { - if [ ! -f minio.RELEASE.2020-10-28T08-16-50Z ]; then - curl --silent -O https://dl.minio.io/server/minio/release/linux-amd64/archive/minio.RELEASE.2020-10-28T08-16-50Z - chmod a+x minio.RELEASE.2020-10-28T08-16-50Z + if [ ! -x minio.RELEASE.2020-10-28T08-16-50Z ]; then + : "${SILO_LEGACY_FIXTURE_2020:?set SILO_LEGACY_FIXTURE_2020 to the audited legacy binary}" + : "${SILO_LEGACY_SHA256_2020:?set SILO_LEGACY_SHA256_2020 to its audited SHA-256}" + "$(git rev-parse --show-toplevel)/buildscripts/install-verified-fixture.sh" \ + "${SILO_LEGACY_FIXTURE_2020}" "${SILO_LEGACY_SHA256_2020}" \ + "minio.RELEASE.2020-10-28T08-16-50Z" fi } function verify_rewrite() { start_port=$1 - export MINIO_ACCESS_KEY=minio - export MINIO_SECRET_KEY=minio123 - export MC_HOST_minio="http://minio:minio123@127.0.0.1:${start_port}/" + export MINIO_ACCESS_KEY=silo + export MINIO_SECRET_KEY=silo123 + export MC_HOST_silo="http://silo:silo123@127.0.0.1:${start_port}/" unset MINIO_KMS_AUTO_ENCRYPTION # do not auto-encrypt objects export MINIO_CI_CD=1 - MC_BUILD_DIR="mc-$RANDOM" - if ! git clone --quiet https://github.com/minio/mc "$MC_BUILD_DIR"; then - echo "failed to download https://github.com/minio/mc" - purge "${MC_BUILD_DIR}" - exit 1 - fi - - (cd "${MC_BUILD_DIR}" && go build -o "$WORK_DIR/mc") - - # remove mc source. - purge "${MC_BUILD_DIR}" + mkdir -p "${WORK_DIR}" + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" "${WORK_DIR}/mc" "${MINIO_OLD[@]}" --address ":$start_port" "${WORK_DIR}/xl{1...16}" >"${WORK_DIR}/server1.log" 2>&1 & pid=$! disown $pid - "${WORK_DIR}/mc" ready minio/ + "${WORK_DIR}/mc" ready silo/ if ! ps -p ${pid} 1>&2 >/dev/null; then echo "server1 log:" @@ -56,30 +50,30 @@ function verify_rewrite() { exit 1 fi - "${WORK_DIR}/mc" mb minio/healing-rewrite-bucket --quiet --with-lock + "${WORK_DIR}/mc" mb silo/healing-rewrite-bucket --quiet --with-lock "${WORK_DIR}/mc" cp \ buildscripts/verify-build.sh \ - minio/healing-rewrite-bucket/ \ + silo/healing-rewrite-bucket/ \ --disable-multipart --quiet "${WORK_DIR}/mc" cp \ buildscripts/verify-build.sh \ - minio/healing-rewrite-bucket/ \ + silo/healing-rewrite-bucket/ \ --disable-multipart --quiet "${WORK_DIR}/mc" cp \ buildscripts/verify-build.sh \ - minio/healing-rewrite-bucket/ \ + silo/healing-rewrite-bucket/ \ --disable-multipart --quiet kill ${pid} sleep 3 - "${MINIO[@]}" --address ":$start_port" "${WORK_DIR}/xl{1...16}" >"${WORK_DIR}/server1.log" 2>&1 & + "${SILO[@]}" --address ":$start_port" "${WORK_DIR}/xl{1...16}" >"${WORK_DIR}/server1.log" 2>&1 & pid=$! disown $pid - "${WORK_DIR}/mc" ready minio/ + "${WORK_DIR}/mc" ready silo/ if ! ps -p ${pid} 1>&2 >/dev/null; then echo "server1 log:" @@ -92,8 +86,8 @@ function verify_rewrite() { if ! ./s3-check-md5 \ -debug \ -versions \ - -access-key minio \ - -secret-key minio123 \ + -access-key silo \ + -secret-key silo123 \ -endpoint "http://127.0.0.1:${start_port}/" 2>&1 | grep INTACT; then echo "server1 log:" cat "${WORK_DIR}/server1.log" @@ -101,7 +95,7 @@ function verify_rewrite() { mkdir -p inspects ( cd inspects - "${WORK_DIR}/mc" admin inspect minio/healing-rewrite-bucket/verify-build.sh/** + "${WORK_DIR}/mc" admin inspect silo/healing-rewrite-bucket/verify-build.sh/** ) "${WORK_DIR}/mc" mb play/inspects @@ -111,14 +105,14 @@ function verify_rewrite() { exit 1 fi - go run ./buildscripts/heal-manual.go "127.0.0.1:${start_port}" "minio" "minio123" + go run ./buildscripts/heal-manual.go "127.0.0.1:${start_port}" "silo" "silo123" sleep 1 if ! ./s3-check-md5 \ -debug \ -versions \ - -access-key minio \ - -secret-key minio123 \ + -access-key silo \ + -secret-key silo123 \ -endpoint http://127.0.0.1:${start_port}/ 2>&1 | grep INTACT; then echo "server1 log:" cat "${WORK_DIR}/server1.log" @@ -126,7 +120,7 @@ function verify_rewrite() { mkdir -p inspects ( cd inspects - "${WORK_DIR}/mc" admin inspect minio/healing-rewrite-bucket/verify-build.sh/** + "${WORK_DIR}/mc" admin inspect silo/healing-rewrite-bucket/verify-build.sh/** ) "${WORK_DIR}/mc" mb play/inspects diff --git a/buildscripts/test-timeout.sh b/buildscripts/test-timeout.sh index 77a248a64..e27b79087 100644 --- a/buildscripts/test-timeout.sh +++ b/buildscripts/test-timeout.sh @@ -5,16 +5,16 @@ if [ -n "$TEST_DEBUG" ]; then fi WORK_DIR="$PWD/.verify-$RANDOM" -MINIO_CONFIG_DIR="$WORK_DIR/.minio" -MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR" server) +SILO_CONFIG_DIR="$WORK_DIR/.silo" +SILO=("$PWD/silo" --config-dir "$SILO_CONFIG_DIR" server) -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi @@ -30,9 +30,9 @@ catch() { echo "error on line $1" fi - echo "Cleaning up instances of MinIO" - pkill minio || true - pkill -9 minio || true + echo "Cleaning up instances of Silo" + pkill silo || true + pkill -9 silo || true purge "$WORK_DIR" if [ $# -ne 0 ]; then exit $# @@ -70,31 +70,20 @@ function send_put_object_request() { return 0 } -function test_minio_with_timeout() { +function test_silo_with_timeout() { start_port=$1 - export MINIO_ROOT_USER=minio - export MINIO_ROOT_PASSWORD=minio123 - export MC_HOST_minio="http://minio:minio123@127.0.0.1:${start_port}/" + export MINIO_ROOT_USER=silo + export MINIO_ROOT_PASSWORD=silo123 + export MC_HOST_silo="http://silo:silo123@127.0.0.1:${start_port}/" export MINIO_CI_CD=1 mkdir ${WORK_DIR} - C_PWD=${PWD} if [ ! -x "$PWD/mc" ]; then - MC_BUILD_DIR="mc-$RANDOM" - if ! git clone --quiet https://github.com/minio/mc "$MC_BUILD_DIR"; then - echo "failed to download https://github.com/minio/mc" - purge "${MC_BUILD_DIR}" - exit 1 - fi - - (cd "${MC_BUILD_DIR}" && go build -o "$C_PWD/mc") - - # remove mc source. - purge "${MC_BUILD_DIR}" + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" "$PWD/mc" fi - "${MINIO[@]}" --address ":$start_port" --read-header-timeout ${srv_hdr_timeout}s --idle-timeout ${srv_idle_timeout}s "${WORK_DIR}/disk/" >"${WORK_DIR}/server1.log" 2>&1 & + "${SILO[@]}" --address ":$start_port" --read-header-timeout ${srv_hdr_timeout}s --idle-timeout ${srv_idle_timeout}s "${WORK_DIR}/disk/" >"${WORK_DIR}/server1.log" 2>&1 & pid=$! disown $pid sleep 1 @@ -109,20 +98,20 @@ function test_minio_with_timeout() { set -e - "${PWD}/mc" mb minio/testbucket - "${PWD}/mc" anonymous set public minio/testbucket + "${PWD}/mc" mb silo/testbucket + "${PWD}/mc" anonymous set public silo/testbucket # slow header writing send_put_object_request 20 0 && exit -1 - "${PWD}/mc" stat minio/testbucket/testobject && exit -1 + "${PWD}/mc" stat silo/testbucket/testobject && exit -1 # quick header write and slow bodywrite send_put_object_request 0 40 && exit -1 - "${PWD}/mc" stat minio/testbucket/testobject && exit -1 + "${PWD}/mc" stat silo/testbucket/testobject && exit -1 # quick header and body write send_put_object_request 1 1 || exit -1 - "${PWD}/mc" stat minio/testbucket/testobject || exit -1 + "${PWD}/mc" stat silo/testbucket/testobject || exit -1 } function main() { @@ -131,7 +120,7 @@ function main() { export srv_idle_timeout=5 export -f gen_put_request - test_minio_with_timeout ${start_port} + test_silo_with_timeout ${start_port} } main "$@" diff --git a/buildscripts/verify-build.sh b/buildscripts/verify-build.sh index e15d64758..ad2515e1a 100755 --- a/buildscripts/verify-build.sh +++ b/buildscripts/verify-build.sh @@ -5,8 +5,8 @@ set -e set -E set -o pipefail -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi @@ -15,196 +15,196 @@ WORK_DIR="$PWD/.verify-$RANDOM" export MINT_MODE=core export MINT_DATA_DIR="$WORK_DIR/data" export SERVER_ENDPOINT="127.0.0.1:9000" -export MC_HOST_verify="http://minio:minio123@${SERVER_ENDPOINT}/" -export MC_HOST_verify_ipv6="http://minio:minio123@[::1]:9000/" -export ACCESS_KEY="minio" -export SECRET_KEY="minio123" +export MC_HOST_verify="http://silo:silo123@${SERVER_ENDPOINT}/" +export MC_HOST_verify_ipv6="http://silo:silo123@[::1]:9000/" +export ACCESS_KEY="silo" +export SECRET_KEY="silo123" export ENABLE_HTTPS=0 export GO111MODULE=on export GOGC=25 export ENABLE_ADMIN=1 export MINIO_CI_CD=1 -MINIO_CONFIG_DIR="$WORK_DIR/.minio" -MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR") +SILO_CONFIG_DIR="$WORK_DIR/.silo" +SILO=("$PWD/silo" --config-dir "$SILO_CONFIG_DIR") FILE_1_MB="$MINT_DATA_DIR/datafile-1-MB" FILE_65_MB="$MINT_DATA_DIR/datafile-65-MB" FUNCTIONAL_TESTS="$WORK_DIR/functional-tests.sh" -function start_minio_fs() { +function start_silo_fs() { export MINIO_ROOT_USER=$ACCESS_KEY export MINIO_ROOT_PASSWORD=$SECRET_KEY - "${MINIO[@]}" server "${WORK_DIR}/fs-disk" >"$WORK_DIR/fs-minio.log" 2>&1 & + "${SILO[@]}" server "${WORK_DIR}/fs-disk" >"$WORK_DIR/fs-silo.log" 2>&1 & "${WORK_DIR}/mc" ready verify } -function start_minio_erasure() { - "${MINIO[@]}" server "${WORK_DIR}/erasure-disk1" "${WORK_DIR}/erasure-disk2" "${WORK_DIR}/erasure-disk3" "${WORK_DIR}/erasure-disk4" >"$WORK_DIR/erasure-minio.log" 2>&1 & +function start_silo_erasure() { + "${SILO[@]}" server "${WORK_DIR}/erasure-disk1" "${WORK_DIR}/erasure-disk2" "${WORK_DIR}/erasure-disk3" "${WORK_DIR}/erasure-disk4" >"$WORK_DIR/erasure-silo.log" 2>&1 & "${WORK_DIR}/mc" ready verify } -function start_minio_erasure_sets() { +function start_silo_erasure_sets() { export MINIO_ENDPOINTS="${WORK_DIR}/erasure-disk-sets{1...32}" - "${MINIO[@]}" server >"$WORK_DIR/erasure-minio-sets.log" 2>&1 & + "${SILO[@]}" server >"$WORK_DIR/erasure-silo-sets.log" 2>&1 & "${WORK_DIR}/mc" ready verify } -function start_minio_pool_erasure_sets() { +function start_silo_pool_erasure_sets() { export MINIO_ROOT_USER=$ACCESS_KEY export MINIO_ROOT_PASSWORD=$SECRET_KEY export MINIO_ENDPOINTS="http://127.0.0.1:9000${WORK_DIR}/pool-disk-sets{1...4} http://127.0.0.1:9001${WORK_DIR}/pool-disk-sets{5...8}" - "${MINIO[@]}" server --address ":9000" >"$WORK_DIR/pool-minio-9000.log" 2>&1 & - "${MINIO[@]}" server --address ":9001" >"$WORK_DIR/pool-minio-9001.log" 2>&1 & + "${SILO[@]}" server --address ":9000" >"$WORK_DIR/pool-silo-9000.log" 2>&1 & + "${SILO[@]}" server --address ":9001" >"$WORK_DIR/pool-silo-9001.log" 2>&1 & "${WORK_DIR}/mc" ready verify } -function start_minio_pool_erasure_sets_ipv6() { +function start_silo_pool_erasure_sets_ipv6() { export MINIO_ROOT_USER=$ACCESS_KEY export MINIO_ROOT_PASSWORD=$SECRET_KEY export MINIO_ENDPOINTS="http://[::1]:9000${WORK_DIR}/pool-disk-sets-ipv6{1...4} http://[::1]:9001${WORK_DIR}/pool-disk-sets-ipv6{5...8}" - "${MINIO[@]}" server --address="[::1]:9000" >"$WORK_DIR/pool-minio-ipv6-9000.log" 2>&1 & - "${MINIO[@]}" server --address="[::1]:9001" >"$WORK_DIR/pool-minio-ipv6-9001.log" 2>&1 & + "${SILO[@]}" server --address="[::1]:9000" >"$WORK_DIR/pool-silo-ipv6-9000.log" 2>&1 & + "${SILO[@]}" server --address="[::1]:9001" >"$WORK_DIR/pool-silo-ipv6-9001.log" 2>&1 & "${WORK_DIR}/mc" ready verify_ipv6 } -function start_minio_dist_erasure() { +function start_silo_dist_erasure() { export MINIO_ROOT_USER=$ACCESS_KEY export MINIO_ROOT_PASSWORD=$SECRET_KEY export MINIO_ENDPOINTS="http://127.0.0.1:9000${WORK_DIR}/dist-disk1 http://127.0.0.1:9001${WORK_DIR}/dist-disk2 http://127.0.0.1:9002${WORK_DIR}/dist-disk3 http://127.0.0.1:9003${WORK_DIR}/dist-disk4" for i in $(seq 0 3); do - "${MINIO[@]}" server --address ":900${i}" >"$WORK_DIR/dist-minio-900${i}.log" 2>&1 & + "${SILO[@]}" server --address ":900${i}" >"$WORK_DIR/dist-silo-900${i}.log" 2>&1 & done "${WORK_DIR}/mc" ready verify } function run_test_fs() { - start_minio_fs + start_silo_fs (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS") rv=$? - pkill minio + pkill silo sleep 3 if [ "$rv" -ne 0 ]; then - cat "$WORK_DIR/fs-minio.log" + cat "$WORK_DIR/fs-silo.log" fi - rm -f "$WORK_DIR/fs-minio.log" + rm -f "$WORK_DIR/fs-silo.log" return "$rv" } function run_test_erasure_sets() { - start_minio_erasure_sets + start_silo_erasure_sets (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS") rv=$? - pkill minio + pkill silo sleep 3 if [ "$rv" -ne 0 ]; then - cat "$WORK_DIR/erasure-minio-sets.log" + cat "$WORK_DIR/erasure-silo-sets.log" fi - rm -f "$WORK_DIR/erasure-minio-sets.log" + rm -f "$WORK_DIR/erasure-silo-sets.log" return "$rv" } function run_test_pool_erasure_sets() { - start_minio_pool_erasure_sets + start_silo_pool_erasure_sets (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS") rv=$? - pkill minio + pkill silo sleep 3 if [ "$rv" -ne 0 ]; then for i in $(seq 0 1); do echo "server$i log:" - cat "$WORK_DIR/pool-minio-900$i.log" + cat "$WORK_DIR/pool-silo-900$i.log" done fi for i in $(seq 0 1); do - rm -f "$WORK_DIR/pool-minio-900$i.log" + rm -f "$WORK_DIR/pool-silo-900$i.log" done return "$rv" } function run_test_pool_erasure_sets_ipv6() { - start_minio_pool_erasure_sets_ipv6 + start_silo_pool_erasure_sets_ipv6 export SERVER_ENDPOINT="[::1]:9000" (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS") rv=$? - pkill minio + pkill silo sleep 3 if [ "$rv" -ne 0 ]; then for i in $(seq 0 1); do echo "server$i log:" - cat "$WORK_DIR/pool-minio-ipv6-900$i.log" + cat "$WORK_DIR/pool-silo-ipv6-900$i.log" done fi for i in $(seq 0 1); do - rm -f "$WORK_DIR/pool-minio-ipv6-900$i.log" + rm -f "$WORK_DIR/pool-silo-ipv6-900$i.log" done return "$rv" } function run_test_erasure() { - start_minio_erasure + start_silo_erasure (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS") rv=$? - pkill minio + pkill silo sleep 3 if [ "$rv" -ne 0 ]; then - cat "$WORK_DIR/erasure-minio.log" + cat "$WORK_DIR/erasure-silo.log" fi - rm -f "$WORK_DIR/erasure-minio.log" + rm -f "$WORK_DIR/erasure-silo.log" return "$rv" } function run_test_dist_erasure() { - start_minio_dist_erasure + start_silo_dist_erasure (cd "$WORK_DIR" && "$FUNCTIONAL_TESTS") rv=$? - pkill minio + pkill silo sleep 3 if [ "$rv" -ne 0 ]; then echo "server1 log:" - cat "$WORK_DIR/dist-minio-9000.log" + cat "$WORK_DIR/dist-silo-9000.log" echo "server2 log:" - cat "$WORK_DIR/dist-minio-9001.log" + cat "$WORK_DIR/dist-silo-9001.log" echo "server3 log:" - cat "$WORK_DIR/dist-minio-9002.log" + cat "$WORK_DIR/dist-silo-9002.log" echo "server4 log:" - cat "$WORK_DIR/dist-minio-9003.log" + cat "$WORK_DIR/dist-silo-9003.log" fi - rm -f "$WORK_DIR/dist-minio-9000.log" "$WORK_DIR/dist-minio-9001.log" "$WORK_DIR/dist-minio-9002.log" "$WORK_DIR/dist-minio-9003.log" + rm -f "$WORK_DIR/dist-silo-9000.log" "$WORK_DIR/dist-silo-9001.log" "$WORK_DIR/dist-silo-9002.log" "$WORK_DIR/dist-silo-9003.log" return "$rv" } @@ -216,31 +216,21 @@ function purge() { function __init__() { echo "Initializing environment" mkdir -p "$WORK_DIR" - mkdir -p "$MINIO_CONFIG_DIR" + mkdir -p "$SILO_CONFIG_DIR" mkdir -p "$MINT_DATA_DIR" - MC_BUILD_DIR="mc-$RANDOM" - if ! git clone --quiet https://github.com/minio/mc "$MC_BUILD_DIR"; then - echo "failed to download https://github.com/minio/mc" - purge "${MC_BUILD_DIR}" - exit 1 - fi - - (cd "${MC_BUILD_DIR}" && go build -o "${WORK_DIR}/mc") - - # remove mc source. - purge "${MC_BUILD_DIR}" + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" "${WORK_DIR}/mc" shred -n 1 -s 1M - 1>"$FILE_1_MB" 2>/dev/null shred -n 1 -s 65M - 1>"$FILE_65_MB" 2>/dev/null ## version is purposefully set to '3' for minio to migrate configuration file - echo '{"version": "3", "credential": {"accessKey": "minio", "secretKey": "minio123"}, "region": "us-east-1"}' >"$MINIO_CONFIG_DIR/config.json" + echo '{"version": "3", "credential": {"accessKey": "silo", "secretKey": "silo123"}, "region": "us-east-1"}' >"$SILO_CONFIG_DIR/config.json" - if ! wget -q -O "$FUNCTIONAL_TESTS" https://raw.githubusercontent.com/minio/mc/master/functional-tests.sh; then - echo "failed to download https://raw.githubusercontent.com/minio/mc/master/functional-tests.sh" - exit 1 - fi + "$(git rev-parse --show-toplevel)/buildscripts/install-verified-fixture.sh" \ + https://raw.githubusercontent.com/pgsty/mc/4c4dcc4b55baf238cd0c81030d77945b3828f157/functional-tests.sh \ + 9b98c8152b294d567b9bc732869226dd4f65d0f4d84092dc066a900a66a9e22c \ + "$FUNCTIONAL_TESTS" sed -i 's|-sS|-sSg|g' "$FUNCTIONAL_TESTS" chmod a+x "$FUNCTIONAL_TESTS" diff --git a/buildscripts/verify-healing-empty-erasure-set.sh b/buildscripts/verify-healing-empty-erasure-set.sh index ddbbc1c06..92acebd1c 100755 --- a/buildscripts/verify-healing-empty-erasure-set.sh +++ b/buildscripts/verify-healing-empty-erasure-set.sh @@ -4,18 +4,18 @@ set -E set -o pipefail -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi WORK_DIR="$PWD/.verify-$RANDOM" -MINIO_CONFIG_DIR="$WORK_DIR/.minio" -MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR" server) +SILO_CONFIG_DIR="$WORK_DIR/.silo" +SILO=("$PWD/silo" --config-dir "$SILO_CONFIG_DIR" server) -function start_minio_3_node() { - export MINIO_ROOT_USER=minio - export MINIO_ROOT_PASSWORD=minio123 +function start_silo_3_node() { + export MINIO_ROOT_USER=silo + export MINIO_ROOT_PASSWORD=silo123 export MINIO_ERASURE_SET_DRIVE_COUNT=6 export MINIO_CI_CD=1 @@ -25,26 +25,26 @@ function start_minio_3_node() { args="$args http://127.0.0.1:$((start_port + i))${WORK_DIR}/$i/1/ http://127.0.0.1:$((start_port + i))${WORK_DIR}/$i/2/ http://127.0.0.1:$((start_port + i))${WORK_DIR}/$i/3/ http://127.0.0.1:$((start_port + i))${WORK_DIR}/$i/4/ http://127.0.0.1:$((start_port + i))${WORK_DIR}/$i/5/ http://127.0.0.1:$((start_port + i))${WORK_DIR}/$i/6/" done - "${MINIO[@]}" --address ":$((start_port + 1))" $args >"${WORK_DIR}/dist-minio-server1.log" 2>&1 & + "${SILO[@]}" --address ":$((start_port + 1))" $args >"${WORK_DIR}/dist-silo-server1.log" 2>&1 & pid1=$! disown ${pid1} - "${MINIO[@]}" --address ":$((start_port + 2))" $args >"${WORK_DIR}/dist-minio-server2.log" 2>&1 & + "${SILO[@]}" --address ":$((start_port + 2))" $args >"${WORK_DIR}/dist-silo-server2.log" 2>&1 & pid2=$! disown $pid2 - "${MINIO[@]}" --address ":$((start_port + 3))" $args >"${WORK_DIR}/dist-minio-server3.log" 2>&1 & + "${SILO[@]}" --address ":$((start_port + 3))" $args >"${WORK_DIR}/dist-silo-server3.log" 2>&1 & pid3=$! disown $pid3 - export MC_HOST_myminio="http://minio:minio123@127.0.0.1:$((start_port + 1))" + export MC_HOST_mysilo="http://silo:silo123@127.0.0.1:$((start_port + 1))" - timeout 15m /tmp/mc ready myminio || fail + timeout 15m /tmp/mc ready mysilo || fail # Wait for all drives to be online and formatted - while [ $(/tmp/mc admin info --json myminio | jq '.info.servers[].drives[].state | select(. != "ok")' | wc -l) -gt 0 ]; do sleep 1; done + while [ $(/tmp/mc admin info --json mysilo | jq '.info.servers[].drives[].state | select(. != "ok")' | wc -l) -gt 0 ]; do sleep 1; done # Wait for all drives to be healed - while [ $(/tmp/mc admin info --json myminio | jq '.info.servers[].drives[].healing | select(. != null) | select(. == true)' | wc -l) -gt 0 ]; do sleep 1; done + while [ $(/tmp/mc admin info --json mysilo | jq '.info.servers[].drives[].healing | select(. != null) | select(. == true)' | wc -l) -gt 0 ]; do sleep 1; done # Wait for Status: in MinIO output while true; do @@ -66,26 +66,26 @@ function start_minio_3_node() { done if ! ps -p $pid1 1>&2 >/dev/null; then - echo "minio-server-1 is not running." && fail + echo "silo-server-1 is not running." && fail fi if ! ps -p $pid2 1>&2 >/dev/null; then - echo "minio-server-2 is not running." && fail + echo "silo-server-2 is not running." && fail fi if ! ps -p $pid3 1>&2 >/dev/null; then - echo "minio-server-3 is not running." && fail + echo "silo-server-3 is not running." && fail fi - if ! pkill minio; then + if ! pkill silo; then fail fi sleep 1 - if pgrep minio; then + if pgrep silo; then # forcibly killing, to proceed further properly. - if ! pkill -9 minio; then - echo "no minio process running anymore, proceed." + if ! pkill -9 silo; then + echo "no Silo process running anymore, proceed." fi fi } @@ -93,7 +93,7 @@ function start_minio_3_node() { function fail() { for i in $(seq 1 3); do echo "server$i log:" - cat "${WORK_DIR}/dist-minio-server$i.log" + cat "${WORK_DIR}/dist-silo-server$i.log" done echo "FAILED" purge "$WORK_DIR" @@ -101,7 +101,7 @@ function fail() { } function check_online() { - if ! grep -q 'API:' ${WORK_DIR}/dist-minio-*.log; then + if ! grep -q 'API:' ${WORK_DIR}/dist-silo-*.log; then echo "1" fi } @@ -113,19 +113,18 @@ function purge() { function __init__() { echo "Initializing environment" mkdir -p "$WORK_DIR" - mkdir -p "$MINIO_CONFIG_DIR" + mkdir -p "$SILO_CONFIG_DIR" ## version is purposefully set to '3' for minio to migrate configuration file - echo '{"version": "3", "credential": {"accessKey": "minio", "secretKey": "minio123"}, "region": "us-east-1"}' >"$MINIO_CONFIG_DIR/config.json" + echo '{"version": "3", "credential": {"accessKey": "silo", "secretKey": "silo123"}, "region": "us-east-1"}' >"$SILO_CONFIG_DIR/config.json" if [ ! -f /tmp/mc ]; then - wget --quiet -O /tmp/mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x /tmp/mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" /tmp/mc fi } function perform_test() { - start_minio_3_node $2 + start_silo_3_node $2 echo "Testing Distributed Erasure setup healing of drives" echo "Remove the contents of the disks belonging to '${1}' erasure set" @@ -133,7 +132,7 @@ function perform_test() { rm -rf ${WORK_DIR}/${1}/*/ set -x - start_minio_3_node $2 + start_silo_3_node $2 } function main() { diff --git a/buildscripts/verify-healing-with-root-disks.sh b/buildscripts/verify-healing-with-root-disks.sh index 6166eddd2..f3f36cd3c 100755 --- a/buildscripts/verify-healing-with-root-disks.sh +++ b/buildscripts/verify-healing-with-root-disks.sh @@ -4,20 +4,20 @@ set -E set -o pipefail set -x -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi WORK_DIR="$(mktemp -d)" -MINIO_CONFIG_DIR="$WORK_DIR/.minio" -MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR" server) +SILO_CONFIG_DIR="$WORK_DIR/.silo" +SILO=("$PWD/silo" --config-dir "$SILO_CONFIG_DIR" server) -function start_minio() { +function start_silo() { start_port=$1 - export MINIO_ROOT_USER=minio - export MINIO_ROOT_PASSWORD=minio123 + export MINIO_ROOT_USER=silo + export MINIO_ROOT_PASSWORD=silo123 unset MINIO_KMS_AUTO_ENCRYPTION # do not auto-encrypt objects unset MINIO_CI_CD unset CI @@ -28,7 +28,7 @@ function start_minio() { done for i in $(seq 1 4); do - "${MINIO[@]}" --address ":$((start_port + i))" ${args[@]} 2>&1 >"${WORK_DIR}/server$i.log" & + "${SILO[@]}" --address ":$((start_port + i))" ${args[@]} 2>&1 >"${WORK_DIR}/server$i.log" & done # Wait until all nodes return 403 @@ -60,7 +60,7 @@ function prepare_block_devices() { # Start a distributed MinIO setup, unmount one disk and check if it is formatted function main() { start_port=$(shuf -i 10000-65000 -n 1) - start_minio ${start_port} + start_silo ${start_port} # Unmount the disk, after the unmount the device id # /tmp/xxx/mnt/disk4 will be the same as '/' and it @@ -82,7 +82,7 @@ function main() { } function cleanup() { - pkill minio + pkill silo sudo umount ${WORK_DIR}/mnt/disk{1..3}/ sudo rm /dev/minio-loopdisk* rm -rf "$WORK_DIR" diff --git a/buildscripts/verify-healing.sh b/buildscripts/verify-healing.sh index 66778c179..33bd68245 100755 --- a/buildscripts/verify-healing.sh +++ b/buildscripts/verify-healing.sh @@ -4,23 +4,23 @@ set -E set -o pipefail -if [ ! -x "$PWD/minio" ]; then - echo "minio executable binary not found in current directory" +if [ ! -x "$PWD/silo" ]; then + echo "Silo executable binary not found in current directory" exit 1 fi WORK_DIR="$PWD/.verify-$RANDOM" -MINIO_CONFIG_DIR="$WORK_DIR/.minio" -MINIO=("$PWD/minio" --config-dir "$MINIO_CONFIG_DIR" server) +SILO_CONFIG_DIR="$WORK_DIR/.silo" +SILO=("$PWD/silo" --config-dir "$SILO_CONFIG_DIR" server) GOPATH=/tmp/gopath -function start_minio_3_node() { +function start_silo_3_node() { for i in $(seq 1 3); do - rm "${WORK_DIR}/dist-minio-server$i.log" + rm "${WORK_DIR}/dist-silo-server$i.log" done - export MINIO_ROOT_USER=minio - export MINIO_ROOT_PASSWORD=minio123 + export MINIO_ROOT_USER=silo + export MINIO_ROOT_PASSWORD=silo123 export MINIO_ERASURE_SET_DRIVE_COUNT=6 export MINIO_CI_CD=1 @@ -34,51 +34,51 @@ function start_minio_3_node() { args="$args http://127.0.0.1:$((start_port + 1))${WORK_DIR}/1/${d}/ http://127.0.0.1:$((start_port + 2))${WORK_DIR}/2/${d}/ http://127.0.0.1:$((start_port + 3))${WORK_DIR}/3/${d}/ " done - "${MINIO[@]}" --address ":$((start_port + 1))" $args >"${WORK_DIR}/dist-minio-server1.log" 2>&1 & + "${SILO[@]}" --address ":$((start_port + 1))" $args >"${WORK_DIR}/dist-silo-server1.log" 2>&1 & pid1=$! disown ${pid1} - "${MINIO[@]}" --address ":$((start_port + 2))" $args >"${WORK_DIR}/dist-minio-server2.log" 2>&1 & + "${SILO[@]}" --address ":$((start_port + 2))" $args >"${WORK_DIR}/dist-silo-server2.log" 2>&1 & pid2=$! disown $pid2 - "${MINIO[@]}" --address ":$((start_port + 3))" $args >"${WORK_DIR}/dist-minio-server3.log" 2>&1 & + "${SILO[@]}" --address ":$((start_port + 3))" $args >"${WORK_DIR}/dist-silo-server3.log" 2>&1 & pid3=$! disown $pid3 - export MC_HOST_myminio="http://minio:minio123@127.0.0.1:$((start_port + 1))" - timeout 15m /tmp/mc ready myminio || fail + export MC_HOST_mysilo="http://silo:silo123@127.0.0.1:$((start_port + 1))" + timeout 15m /tmp/mc ready mysilo || fail [ ${first_time} -eq 0 ] && upload_objects [ ${first_time} -ne 0 ] && sleep 120 if ! ps -p $pid1 1>&2 >/dev/null; then - echo "minio server 1 is not running" && fail + echo "silo server 1 is not running" && fail fi if ! ps -p $pid2 1>&2 >/dev/null; then - echo "minio server 2 is not running" && fail + echo "silo server 2 is not running" && fail fi if ! ps -p $pid3 1>&2 >/dev/null; then - echo "minio server 3 is not running" && fail + echo "silo server 3 is not running" && fail fi - if ! pkill minio; then + if ! pkill silo; then fail fi sleep 1 - if pgrep minio; then + if pgrep silo; then # forcibly killing, to proceed further properly. - if ! pkill -9 minio; then - echo "no minio process running anymore, proceed." + if ! pkill -9 silo; then + echo "no Silo process running anymore, proceed." fi fi } function check_heal() { - if ! grep -q 'API:' ${WORK_DIR}/dist-minio-*.log; then + if ! grep -q 'API:' ${WORK_DIR}/dist-silo-*.log; then return 1 fi @@ -103,9 +103,9 @@ function purge() { function fail() { for i in $(seq 1 3); do echo "server$i log:" - cat "${WORK_DIR}/dist-minio-server$i.log" + cat "${WORK_DIR}/dist-silo-server$i.log" done - pkill -9 minio + pkill -9 silo echo "FAILED" purge "$WORK_DIR" exit 1 @@ -114,28 +114,27 @@ function fail() { function __init__() { echo "Initializing environment" mkdir -p "$WORK_DIR" - mkdir -p "$MINIO_CONFIG_DIR" + mkdir -p "$SILO_CONFIG_DIR" ## version is purposefully set to '3' for minio to migrate configuration file - echo '{"version": "3", "credential": {"accessKey": "minio", "secretKey": "minio123"}, "region": "us-east-1"}' >"$MINIO_CONFIG_DIR/config.json" + echo '{"version": "3", "credential": {"accessKey": "silo", "secretKey": "silo123"}, "region": "us-east-1"}' >"$SILO_CONFIG_DIR/config.json" if [ ! -f /tmp/mc ]; then - wget --quiet -O /tmp/mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x /tmp/mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" /tmp/mc fi } function upload_objects() { - /tmp/mc mb myminio/testbucket/ + /tmp/mc mb mysilo/testbucket/ for ((i = 0; i < 20; i++)); do - echo "my content" | /tmp/mc pipe myminio/testbucket/file-$i + echo "my content" | /tmp/mc pipe mysilo/testbucket/file-$i done } function perform_test() { start_port=$2 - start_minio_3_node $start_port + start_silo_3_node $start_port echo "Testing Distributed Erasure setup healing of drives" echo "Remove the contents of the disks belonging to '${1}' node" @@ -143,7 +142,7 @@ function perform_test() { rm -rf ${WORK_DIR}/${1}/*/ set -x - start_minio_3_node $start_port + start_silo_3_node $start_port check_heal ${1} rv=$? diff --git a/docs/bucket/lifecycle/setup_ilm_transition.sh b/docs/bucket/lifecycle/setup_ilm_transition.sh index 975ea81f8..297a3d37a 100755 --- a/docs/bucket/lifecycle/setup_ilm_transition.sh +++ b/docs/bucket/lifecycle/setup_ilm_transition.sh @@ -16,9 +16,9 @@ catch() { done fi - echo "Cleaning up instances of MinIO" - pkill minio - pkill -9 minio + echo "Cleaning up instances of Silo" + pkill silo + pkill -9 silo rm -rf /tmp/multisitea rm -rf /tmp/multisiteb if [ $# -ne 0 ]; then @@ -39,21 +39,20 @@ unset MINIO_KMS_KES_ENDPOINT unset MINIO_KMS_KES_KEY_NAME if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi -minio server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_1.log 2>&1 & -minio server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_2.log 2>&1 & -minio server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_1.log 2>&1 & -minio server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_2.log 2>&1 & -# Wait to make sure all MinIO instances are up +# Wait to make sure all Silo instances are up export MC_HOST_sitea=http://minioadmin:minioadmin@127.0.0.1:9001 export MC_HOST_siteb=http://minioadmin:minioadmin@127.0.0.1:9004 diff --git a/docs/bucket/replication/delete-replication.sh b/docs/bucket/replication/delete-replication.sh index c91c70f2e..507ab7f56 100755 --- a/docs/bucket/replication/delete-replication.sh +++ b/docs/bucket/replication/delete-replication.sh @@ -18,9 +18,9 @@ catch() { cat /tmp/dc2.log fi - echo "Cleaning up instances of MinIO" + echo "Cleaning up instances of Silo" set +e - pkill minio + pkill silo pkill mc rm -rf /tmp/xl/ if [ $# -ne 0 ]; then @@ -34,7 +34,7 @@ set -e export MINIO_CI_CD=1 export MINIO_BROWSER=off export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" +export MINIO_ROOT_PASSWORD="silo123" export MINIO_KMS_AUTO_ENCRYPTION=off export MINIO_PROMETHEUS_AUTH_TYPE=public export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= @@ -44,8 +44,7 @@ unset MINIO_KMS_KES_ENDPOINT unset MINIO_KMS_KES_KEY_NAME if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi mkdir -p /tmp/xl/1/ /tmp/xl/2/ @@ -54,40 +53,40 @@ export MINIO_KMS_SECRET_KEY="my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmG export MINIO_ROOT_USER="minioadmin" export MINIO_ROOT_PASSWORD="minioadmin" -./minio server --address ":9001" /tmp/xl/1/{1...4}/ 2>&1 >/tmp/dc1.log & +./silo server --address ":9001" /tmp/xl/1/{1...4}/ 2>&1 >/tmp/dc1.log & pid1=$! -./minio server --address ":9002" /tmp/xl/2/{1...4}/ 2>&1 >/tmp/dc2.log & +./silo server --address ":9002" /tmp/xl/2/{1...4}/ 2>&1 >/tmp/dc2.log & pid2=$! sleep 3 -export MC_HOST_myminio1=http://minioadmin:minioadmin@localhost:9001 -export MC_HOST_myminio2=http://minioadmin:minioadmin@localhost:9002 +export MC_HOST_mysilo1=http://minioadmin:minioadmin@localhost:9001 +export MC_HOST_mysilo2=http://minioadmin:minioadmin@localhost:9002 -./mc ready myminio1 -./mc ready myminio2 +./mc ready mysilo1 +./mc ready mysilo2 -./mc mb myminio1/testbucket/ -./mc version enable myminio1/testbucket/ -./mc mb myminio2/testbucket/ -./mc version enable myminio2/testbucket/ +./mc mb mysilo1/testbucket/ +./mc version enable mysilo1/testbucket/ +./mc mb mysilo2/testbucket/ +./mc version enable mysilo2/testbucket/ -./mc replicate add myminio1/testbucket --remote-bucket http://minioadmin:minioadmin@localhost:9002/testbucket/ --priority 1 +./mc replicate add mysilo1/testbucket --remote-bucket http://minioadmin:minioadmin@localhost:9002/testbucket/ --priority 1 # Test replication of delete markers and permanent deletes -./mc cp README.md myminio1/testbucket/dir/file -./mc cp README.md myminio1/testbucket/dir/file +./mc cp README.md mysilo1/testbucket/dir/file +./mc cp README.md mysilo1/testbucket/dir/file sleep 1s -echo "=== myminio1" -./mc ls --versions myminio1/testbucket/dir/file +echo "=== mysilo1" +./mc ls --versions mysilo1/testbucket/dir/file -echo "=== myminio2" -./mc ls --versions myminio2/testbucket/dir/file +echo "=== mysilo2" +./mc ls --versions mysilo2/testbucket/dir/file -versionId="$(./mc ls --json --versions myminio1/testbucket/dir/ | tail -n1 | jq -r .versionId)" +versionId="$(./mc ls --json --versions mysilo1/testbucket/dir/ | tail -n1 | jq -r .versionId)" export AWS_ACCESS_KEY_ID=minioadmin export AWS_SECRET_ACCESS_KEY=minioadmin @@ -95,23 +94,23 @@ export AWS_REGION=us-east-1 aws s3api --endpoint-url http://localhost:9001 delete-object --bucket testbucket --key dir/file --version-id "$versionId" -./mc ls -r --versions myminio1/testbucket >/tmp/myminio1.txt -./mc ls -r --versions myminio2/testbucket >/tmp/myminio2.txt +./mc ls -r --versions mysilo1/testbucket >/tmp/mysilo1.txt +./mc ls -r --versions mysilo2/testbucket >/tmp/mysilo2.txt -out=$(diff -qpruN /tmp/myminio1.txt /tmp/myminio2.txt) +out=$(diff -qpruN /tmp/mysilo1.txt /tmp/mysilo2.txt) ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected no missing entries after replication: $out" exit 1 fi -./mc rm myminio1/testbucket/dir/file +./mc rm mysilo1/testbucket/dir/file sleep 1s -./mc ls -r --versions myminio1/testbucket >/tmp/myminio1.txt -./mc ls -r --versions myminio2/testbucket >/tmp/myminio2.txt +./mc ls -r --versions mysilo1/testbucket >/tmp/mysilo1.txt +./mc ls -r --versions mysilo2/testbucket >/tmp/mysilo2.txt -out=$(diff -qpruN /tmp/myminio1.txt /tmp/myminio2.txt) +out=$(diff -qpruN /tmp/mysilo1.txt /tmp/mysilo2.txt) ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected no missing entries after replication: $out" @@ -122,24 +121,24 @@ fi set -x -./mc mb myminio1/foobucket/ myminio2/foobucket/ --with-versioning -./mc replicate add myminio1/foobucket --remote-bucket http://minioadmin:minioadmin@localhost:9002/foobucket/ --priority 1 -./mc cp README.md myminio1/foobucket/dir/file +./mc mb mysilo1/foobucket/ mysilo2/foobucket/ --with-versioning +./mc replicate add mysilo1/foobucket --remote-bucket http://minioadmin:minioadmin@localhost:9002/foobucket/ --priority 1 +./mc cp README.md mysilo1/foobucket/dir/file -versionId="$(./mc ls --json --versions myminio1/foobucket/dir/ | jq -r .versionId)" +versionId="$(./mc ls --json --versions mysilo1/foobucket/dir/ | jq -r .versionId)" kill ${pid2} && wait ${pid2} || true aws s3api --endpoint-url http://localhost:9001 delete-object --bucket foobucket --key dir/file --version-id "$versionId" -out="$(./mc ls myminio1/foobucket/dir/)" +out="$(./mc ls mysilo1/foobucket/dir/)" if [ "$out" != "" ]; then echo "BUG: non versioned listing should not show pending/failed replicated delete:" echo "$out" exit 1 fi -out="$(./mc ls --versions myminio1/foobucket/dir/)" +out="$(./mc ls --versions mysilo1/foobucket/dir/)" if [ "$out" != "" ]; then echo "BUG: versioned listing should not show pending/failed replicated deletes:" echo "$out" diff --git a/docs/bucket/replication/setup_2site_existing_replication.sh b/docs/bucket/replication/setup_2site_existing_replication.sh index d7146201c..2b70b6342 100755 --- a/docs/bucket/replication/setup_2site_existing_replication.sh +++ b/docs/bucket/replication/setup_2site_existing_replication.sh @@ -18,9 +18,9 @@ catch() { done fi - echo "Cleaning up instances of MinIO" - pkill minio - pkill -9 minio + echo "Cleaning up instances of Silo" + pkill silo + pkill -9 silo rm -rf /tmp/multisitea rm -rf /tmp/multisiteb rm -rf /tmp/data @@ -35,7 +35,7 @@ set -e export MINIO_CI_CD=1 export MINIO_BROWSER=off export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" +export MINIO_ROOT_PASSWORD="silo123" export MINIO_KMS_AUTO_ENCRYPTION=off export MINIO_PROMETHEUS_AUTH_TYPE=public export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= @@ -45,22 +45,21 @@ unset MINIO_KMS_KES_ENDPOINT unset MINIO_KMS_KES_KEY_NAME if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi -minio server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_1.log 2>&1 & -minio server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_2.log 2>&1 & -minio server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_1.log 2>&1 & -minio server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_2.log 2>&1 & -export MC_HOST_sitea=http://minio:minio123@127.0.0.1:9001 -export MC_HOST_siteb=http://minio:minio123@127.0.0.1:9004 +export MC_HOST_sitea=http://minio:silo123@127.0.0.1:9001 +export MC_HOST_siteb=http://minio:silo123@127.0.0.1:9004 ./mc ready sitea ./mc ready siteb @@ -84,7 +83,7 @@ done echo "adding replication rule for site a -> site b" ./mc replicate add sitea/bucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9004/bucket + --remote-bucket http://minio:silo123@127.0.0.1:9004/bucket remote_arn=$(./mc replicate ls sitea/bucket --json | jq -r .rule.Destination.Bucket) sleep 1 @@ -138,7 +137,7 @@ fi echo "adding replication rule for site a -> site b" ./mc replicate add sitea/bucket-version/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9004/bucket-version + --remote-bucket http://minio:silo123@127.0.0.1:9004/bucket-version ./mc mb sitea/bucket-version/directory/ diff --git a/docs/bucket/replication/setup_3site_replication.sh b/docs/bucket/replication/setup_3site_replication.sh index db8fc7147..17eddee92 100755 --- a/docs/bucket/replication/setup_3site_replication.sh +++ b/docs/bucket/replication/setup_3site_replication.sh @@ -20,9 +20,9 @@ catch() { done fi - echo "Cleaning up instances of MinIO" - pkill minio - pkill -9 minio + echo "Cleaning up instances of Silo" + pkill silo + pkill -9 silo rm -rf /tmp/multisitea rm -rf /tmp/multisiteb rm -rf /tmp/multisitec @@ -37,7 +37,7 @@ set -e export MINIO_CI_CD=1 export MINIO_BROWSER=off export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" +export MINIO_ROOT_PASSWORD="silo123" export MINIO_KMS_AUTO_ENCRYPTION=off export MINIO_PROMETHEUS_AUTH_TYPE=public export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= @@ -46,32 +46,33 @@ unset MINIO_KMS_KES_KEY_FILE unset MINIO_KMS_KES_ENDPOINT unset MINIO_KMS_KES_KEY_NAME -go install -v github.com/minio/mc@master -cp -a $(go env GOPATH)/bin/mc ./mc +"$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc -if [ ! -f mc.RELEASE.2021-03-12T03-36-59Z ]; then - wget -q -O mc.RELEASE.2021-03-12T03-36-59Z https://dl.minio.io/client/mc/release/linux-amd64/archive/mc.RELEASE.2021-03-12T03-36-59Z && - chmod +x mc.RELEASE.2021-03-12T03-36-59Z +if [ ! -x mc.RELEASE.2021-03-12T03-36-59Z ]; then + "$(git rev-parse --show-toplevel)/buildscripts/install-verified-fixture.sh" \ + https://dl.min.io/client/mc/release/linux-amd64/archive/mc.RELEASE.2021-03-12T03-36-59Z \ + 8296d4aa02a4cd9cb812bae4d0f65a2bb4003e1475192dcfc1fd42a726250ffa \ + mc.RELEASE.2021-03-12T03-36-59Z fi -minio server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_1.log 2>&1 & -minio server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_2.log 2>&1 & -minio server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_1.log 2>&1 & -minio server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_2.log 2>&1 & -minio server --address 127.0.0.1:9005 "http://127.0.0.1:9005/tmp/multisitec/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9005 "http://127.0.0.1:9005/tmp/multisitec/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9006/tmp/multisitec/data/disterasure/xl{5...8}" >/tmp/sitec_1.log 2>&1 & -minio server --address 127.0.0.1:9006 "http://127.0.0.1:9005/tmp/multisitec/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9006 "http://127.0.0.1:9005/tmp/multisitec/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9006/tmp/multisitec/data/disterasure/xl{5...8}" >/tmp/sitec_2.log 2>&1 & -export MC_HOST_sitea=http://minio:minio123@127.0.0.1:9001 -export MC_HOST_siteb=http://minio:minio123@127.0.0.1:9004 -export MC_HOST_sitec=http://minio:minio123@127.0.0.1:9006 +export MC_HOST_sitea=http://minio:silo123@127.0.0.1:9001 +export MC_HOST_siteb=http://minio:silo123@127.0.0.1:9004 +export MC_HOST_sitec=http://minio:silo123@127.0.0.1:9006 ./mc ready sitea ./mc ready siteb @@ -92,73 +93,73 @@ export MC_HOST_sitec=http://minio:minio123@127.0.0.1:9006 echo "adding replication rule for a -> b : ${remote_arn}" sleep 1 ./mc replicate add sitea/bucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9004/bucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9004/bucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" sleep 1 echo "adding replication rule for b -> a : ${remote_arn}" ./mc replicate add siteb/bucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9001/bucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9001/bucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" sleep 1 echo "adding replication rule for a -> c : ${remote_arn}" ./mc replicate add sitea/bucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9006/bucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9006/bucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 2 sleep 1 echo "adding replication rule for c -> a : ${remote_arn}" ./mc replicate add sitec/bucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9001/bucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9001/bucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 2 sleep 1 echo "adding replication rule for b -> c : ${remote_arn}" ./mc replicate add siteb/bucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9006/bucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9006/bucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 3 sleep 1 echo "adding replication rule for c -> b : ${remote_arn}" ./mc replicate add sitec/bucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9004/bucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9004/bucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 3 sleep 1 echo "adding replication rule for olockbucket a -> b : ${remote_arn}" ./mc replicate add sitea/olockbucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9004/olockbucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9004/olockbucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" sleep 1 echo "adding replication rule for olockbucket b -> a : ${remote_arn}" ./mc replicate add siteb/olockbucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9001/olockbucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9001/olockbucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" sleep 1 echo "adding replication rule for olockbucket a -> c : ${remote_arn}" ./mc replicate add sitea/olockbucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9006/olockbucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9006/olockbucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 2 sleep 1 echo "adding replication rule for olockbucket c -> a : ${remote_arn}" ./mc replicate add sitec/olockbucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9001/olockbucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9001/olockbucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 2 sleep 1 echo "adding replication rule for olockbucket b -> c : ${remote_arn}" ./mc replicate add siteb/olockbucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9006/olockbucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9006/olockbucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 3 sleep 1 echo "adding replication rule for olockbucket c -> b : ${remote_arn}" ./mc replicate add sitec/olockbucket/ \ - --remote-bucket http://minio:minio123@127.0.0.1:9004/olockbucket \ + --remote-bucket http://minio:silo123@127.0.0.1:9004/olockbucket \ --replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 3 sleep 1 @@ -203,33 +204,33 @@ head -c 221227088 200M sleep 10 echo "Verifying ETag for all objects" -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9001/ -bucket bucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9002/ -bucket bucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9003/ -bucket bucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9004/ -bucket bucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9005/ -bucket bucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9006/ -bucket bucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9001/ -bucket bucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9002/ -bucket bucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9003/ -bucket bucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9004/ -bucket bucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9005/ -bucket bucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9006/ -bucket bucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9001/ -bucket olockbucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9002/ -bucket olockbucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9003/ -bucket olockbucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9004/ -bucket olockbucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9005/ -bucket olockbucket -./s3-check-md5 -versions -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9006/ -bucket olockbucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9001/ -bucket olockbucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9002/ -bucket olockbucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9003/ -bucket olockbucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9004/ -bucket olockbucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9005/ -bucket olockbucket +./s3-check-md5 -versions -access-key minio -secret-key silo123 -endpoint http://127.0.0.1:9006/ -bucket olockbucket # additional tests for encryption object alignment go install -v github.com/minio/multipart-debug@latest -upload_id=$(multipart-debug --endpoint 127.0.0.1:9001 --accesskey minio --secretkey minio123 multipart new --bucket bucket --object new-test-encrypted-object --encrypt) +upload_id=$(multipart-debug --endpoint 127.0.0.1:9001 --accesskey minio --secretkey silo123 multipart new --bucket bucket --object new-test-encrypted-object --encrypt) dd if=/dev/urandom bs=1 count=7048531 of=/tmp/7048531.txt dd if=/dev/urandom bs=1 count=2847391 of=/tmp/2847391.txt sudo apt install jq -y -etag_1=$(multipart-debug --endpoint 127.0.0.1:9002 --accesskey minio --secretkey minio123 multipart upload --bucket bucket --object new-test-encrypted-object --uploadid ${upload_id} --file /tmp/7048531.txt --number 1 | jq -r .ETag) -etag_2=$(multipart-debug --endpoint 127.0.0.1:9001 --accesskey minio --secretkey minio123 multipart upload --bucket bucket --object new-test-encrypted-object --uploadid ${upload_id} --file /tmp/2847391.txt --number 2 | jq -r .ETag) -multipart-debug --endpoint 127.0.0.1:9002 --accesskey minio --secretkey minio123 multipart complete --bucket bucket --object new-test-encrypted-object --uploadid ${upload_id} 1.${etag_1} 2.${etag_2} +etag_1=$(multipart-debug --endpoint 127.0.0.1:9002 --accesskey minio --secretkey silo123 multipart upload --bucket bucket --object new-test-encrypted-object --uploadid ${upload_id} --file /tmp/7048531.txt --number 1 | jq -r .ETag) +etag_2=$(multipart-debug --endpoint 127.0.0.1:9001 --accesskey minio --secretkey silo123 multipart upload --bucket bucket --object new-test-encrypted-object --uploadid ${upload_id} --file /tmp/2847391.txt --number 2 | jq -r .ETag) +multipart-debug --endpoint 127.0.0.1:9002 --accesskey minio --secretkey silo123 multipart complete --bucket bucket --object new-test-encrypted-object --uploadid ${upload_id} 1.${etag_1} 2.${etag_2} sleep 10 diff --git a/docs/bucket/replication/setup_ilm_expiry_replication.sh b/docs/bucket/replication/setup_ilm_expiry_replication.sh index b7fca9276..c5cdf451a 100755 --- a/docs/bucket/replication/setup_ilm_expiry_replication.sh +++ b/docs/bucket/replication/setup_ilm_expiry_replication.sh @@ -16,9 +16,9 @@ catch() { done fi - echo "Cleaning up instances of MinIO" - pkill minio - pkill -9 minio + echo "Cleaning up instances of Silo" + pkill silo + pkill -9 silo rm -rf /tmp/multisitea rm -rf /tmp/multisiteb rm -rf /tmp/multisitec @@ -35,7 +35,7 @@ set -e export MINIO_CI_CD=1 export MINIO_BROWSER=off export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" +export MINIO_ROOT_PASSWORD="silo123" export MINIO_KMS_AUTO_ENCRYPTION=off export MINIO_PROMETHEUS_AUTH_TYPE=public export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= @@ -45,36 +45,35 @@ unset MINIO_KMS_KES_ENDPOINT unset MINIO_KMS_KES_KEY_NAME if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi -minio server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_1.log 2>&1 & -minio server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_2.log 2>&1 & -minio server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9003 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_1.log 2>&1 & -minio server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/multisiteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/multisiteb/data/disterasure/xl{5...8}" >/tmp/siteb_2.log 2>&1 & -minio server --address 127.0.0.1:9005 "http://127.0.0.1:9005/tmp/multisitec/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9005 "http://127.0.0.1:9005/tmp/multisitec/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9006/tmp/multisitec/data/disterasure/xl{5...8}" >/tmp/sitec_1.log 2>&1 & -minio server --address 127.0.0.1:9006 "http://127.0.0.1:9005/tmp/multisitec/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9006 "http://127.0.0.1:9005/tmp/multisitec/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9006/tmp/multisitec/data/disterasure/xl{5...8}" >/tmp/sitec_2.log 2>&1 & -minio server --address 127.0.0.1:9007 "http://127.0.0.1:9007/tmp/multisited/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9007 "http://127.0.0.1:9007/tmp/multisited/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9008/tmp/multisited/data/disterasure/xl{5...8}" >/tmp/sited_1.log 2>&1 & -minio server --address 127.0.0.1:9008 "http://127.0.0.1:9007/tmp/multisited/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9008 "http://127.0.0.1:9007/tmp/multisited/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9008/tmp/multisited/data/disterasure/xl{5...8}" >/tmp/sited_2.log 2>&1 & -# Wait to make sure all MinIO instances are up +# Wait to make sure all Silo instances are up -export MC_HOST_sitea=http://minio:minio123@127.0.0.1:9001 -export MC_HOST_siteb=http://minio:minio123@127.0.0.1:9004 -export MC_HOST_sitec=http://minio:minio123@127.0.0.1:9006 -export MC_HOST_sited=http://minio:minio123@127.0.0.1:9008 +export MC_HOST_sitea=http://minio:silo123@127.0.0.1:9001 +export MC_HOST_siteb=http://minio:silo123@127.0.0.1:9004 +export MC_HOST_sitec=http://minio:silo123@127.0.0.1:9006 +export MC_HOST_sited=http://minio:silo123@127.0.0.1:9008 ./mc ready sitea ./mc ready siteb @@ -90,7 +89,7 @@ export MC_HOST_sited=http://minio:minio123@127.0.0.1:9008 sleep 10s ## Add warm tier -./mc ilm tier add minio sitea WARM-TIER --endpoint http://localhost:9006 --access-key minio --secret-key minio123 --bucket bucket +./mc ilm tier add minio sitea WARM-TIER --endpoint http://localhost:9006 --access-key minio --secret-key silo123 --bucket bucket ## Add ILM rules ./mc ilm add sitea/bucket --transition-days 0 --transition-tier WARM-TIER --transition-days 0 --noncurrent-expire-days 2 --expire-days 3 --prefix "myprefix" --tags "tag1=val1&tag2=val2" diff --git a/docs/bucket/replication/sio-error.sh b/docs/bucket/replication/sio-error.sh index 280710495..68dfb06cc 100755 --- a/docs/bucket/replication/sio-error.sh +++ b/docs/bucket/replication/sio-error.sh @@ -9,7 +9,7 @@ export CI=1 make || exit 255 -killall -9 minio || true +killall -9 silo || true rm -rf /tmp/xl/ mkdir -p /tmp/xl/1/ /tmp/xl/2/ @@ -26,39 +26,39 @@ for i in $(seq 1 $NODES); do done for i in $(seq 1 $NODES); do - ./minio server --address "127.0.0.1:$((9000 + i))" ${args1[@]} & # | tee /tmp/minio/node.$i & - ./minio server --address "127.0.0.1:$((9100 + i))" ${args2[@]} & # | tee /tmp/minio/node.$i & + ./silo server --address "127.0.0.1:$((9000 + i))" ${args1[@]} & # | tee /tmp/minio/node.$i & + ./silo server --address "127.0.0.1:$((9100 + i))" ${args2[@]} & # | tee /tmp/minio/node.$i & done sleep 10 -./mc alias set myminio1 http://localhost:9001 minioadmin minioadmin -./mc alias set myminio2 http://localhost:9101 minioadmin minioadmin +./mc alias set mysilo1 http://localhost:9001 minioadmin minioadmin +./mc alias set mysilo2 http://localhost:9101 minioadmin minioadmin -./mc ready myminio1 -./mc ready myminio2 +./mc ready mysilo1 +./mc ready mysilo2 sleep 1 -./mc mb myminio1/testbucket/ --with-lock -./mc mb myminio2/testbucket/ --with-lock +./mc mb mysilo1/testbucket/ --with-lock +./mc mb mysilo2/testbucket/ --with-lock -./mc encrypt set sse-s3 my-minio-key myminio1/testbucket/ -./mc encrypt set sse-s3 my-minio-key myminio2/testbucket/ +./mc encrypt set sse-s3 my-minio-key mysilo1/testbucket/ +./mc encrypt set sse-s3 my-minio-key mysilo2/testbucket/ -./mc replicate add myminio1/testbucket --remote-bucket http://minioadmin:minioadmin@localhost:9101/testbucket --priority 1 -./mc replicate add myminio2/testbucket --remote-bucket http://minioadmin:minioadmin@localhost:9001/testbucket --priority 1 +./mc replicate add mysilo1/testbucket --remote-bucket http://minioadmin:minioadmin@localhost:9101/testbucket --priority 1 +./mc replicate add mysilo2/testbucket --remote-bucket http://minioadmin:minioadmin@localhost:9001/testbucket --priority 1 sleep 1 cp README.md internal.tar -./mc cp internal.tar myminio1/testbucket/dir/1.tar -./mc cp internal.tar myminio2/testbucket/dir/2.tar +./mc cp internal.tar mysilo1/testbucket/dir/1.tar +./mc cp internal.tar mysilo2/testbucket/dir/2.tar sleep 1 -./mc ls -r --versions myminio1/testbucket/dir/ >/tmp/dir_1.txt -./mc ls -r --versions myminio2/testbucket/dir/ >/tmp/dir_2.txt +./mc ls -r --versions mysilo1/testbucket/dir/ >/tmp/dir_1.txt +./mc ls -r --versions mysilo2/testbucket/dir/ >/tmp/dir_2.txt out=$(diff -qpruN /tmp/dir_1.txt /tmp/dir_2.txt) ret=$? diff --git a/docs/bucket/replication/test_del_marker_proxying.sh b/docs/bucket/replication/test_del_marker_proxying.sh index 8d7521b4c..5919ae1f8 100755 --- a/docs/bucket/replication/test_del_marker_proxying.sh +++ b/docs/bucket/replication/test_del_marker_proxying.sh @@ -15,8 +15,8 @@ exit_1() { } cleanup() { - echo -n "Cleaning up instances of MinIO ..." - pkill -9 minio || sudo pkill -9 minio + echo -n "Cleaning up instances of Silo ..." + pkill -9 silo || sudo pkill -9 silo rm -rf /tmp/sitea rm -rf /tmp/siteb echo "done" @@ -29,23 +29,22 @@ export MINIO_BROWSER=off make install-race -# Start MinIO instances -echo -n "Starting MinIO instances ..." -minio server --address 127.0.0.1:9001 --console-address ":10000" "http://127.0.0.1:9001/tmp/sitea/data/disterasure/xl{1...4}" \ +# Start Silo instances +echo -n "Starting Silo instances ..." +silo server --address 127.0.0.1:9001 --console-address ":10000" "http://127.0.0.1:9001/tmp/sitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/sitea/data/disterasure/xl{5...8}" >/tmp/sitea_1.log 2>&1 & -minio server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/sitea/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9002 "http://127.0.0.1:9001/tmp/sitea/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9002/tmp/sitea/data/disterasure/xl{5...8}" >/tmp/sitea_2.log 2>&1 & -minio server --address 127.0.0.1:9003 --console-address ":10001" "http://127.0.0.1:9003/tmp/siteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9003 --console-address ":10001" "http://127.0.0.1:9003/tmp/siteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/siteb/data/disterasure/xl{5...8}" >/tmp/siteb_1.log 2>&1 & -minio server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/siteb/data/disterasure/xl{1...4}" \ +silo server --address 127.0.0.1:9004 "http://127.0.0.1:9003/tmp/siteb/data/disterasure/xl{1...4}" \ "http://127.0.0.1:9004/tmp/siteb/data/disterasure/xl{5...8}" >/tmp/siteb_2.log 2>&1 & echo "done" if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi export MC_HOST_sitea=http://minioadmin:minioadmin@127.0.0.1:9001 diff --git a/docs/bucket/versioning/versioning-tests.sh b/docs/bucket/versioning/versioning-tests.sh index 84fbec6f1..4c2534bce 100755 --- a/docs/bucket/versioning/versioning-tests.sh +++ b/docs/bucket/versioning/versioning-tests.sh @@ -16,9 +16,9 @@ catch() { cat "/tmp/sitea_2.log" fi - echo "Cleaning up instances of MinIO" - pkill minio - pkill -9 minio + echo "Cleaning up instances of Silo" + pkill silo + pkill -9 silo rm -rf /tmp/multisitea if [ $# -ne 0 ]; then exit $# @@ -39,14 +39,13 @@ unset MINIO_KMS_KES_ENDPOINT unset MINIO_KMS_KES_KEY_NAME if [ ! -f ./mc ]; then - wget -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi -minio server -S /tmp/no-certs --address ":9001" "http://localhost:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server -S /tmp/no-certs --address ":9001" "http://localhost:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://localhost:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_1.log 2>&1 & -minio server -S /tmp/no-certs --address ":9002" "http://localhost:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ +silo server -S /tmp/no-certs --address ":9002" "http://localhost:9001/tmp/multisitea/data/disterasure/xl{1...4}" \ "http://localhost:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_2.log 2>&1 & export MC_HOST_sitea=http://minioadmin:minioadmin@localhost:9002 diff --git a/docs/distributed/decom-compressed-sse-s3.sh b/docs/distributed/decom-compressed-sse-s3.sh index f8aba0986..123857744 100755 --- a/docs/distributed/decom-compressed-sse-s3.sh +++ b/docs/distributed/decom-compressed-sse-s3.sh @@ -4,12 +4,11 @@ if [ -n "$TEST_DEBUG" ]; then set -x fi -pkill minio +pkill silo rm -rf /tmp/xl if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi export CI=true @@ -19,50 +18,50 @@ export MINIO_COMPRESSION_MIME_TYPES="application/*" export MINIO_COMPRESSION_ALLOW_ENCRYPTION="on" export MINIO_KMS_AUTO_ENCRYPTION=on export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9000/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9000/" -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & pid=$! -./mc ready myminio +./mc ready mysilo -./mc admin user add myminio/ minio123 minio123 -./mc admin user add myminio/ minio12345 minio12345 +./mc admin user add mysilo/ silo123 silo123 +./mc admin user add mysilo/ silo12345 silo12345 -./mc admin policy create myminio/ rw ./docs/distributed/rw.json -./mc admin policy create myminio/ lake ./docs/distributed/rw.json +./mc admin policy create mysilo/ rw ./docs/distributed/rw.json +./mc admin policy create mysilo/ lake ./docs/distributed/rw.json -./mc admin policy attach myminio/ rw --user=minio123 -./mc admin policy attach myminio/ lake --user=minio12345 +./mc admin policy attach mysilo/ rw --user=silo123 +./mc admin policy attach mysilo/ lake --user=silo12345 -./mc mb -l myminio/versioned +./mc mb -l mysilo/versioned -./mc mirror internal myminio/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null ## Soft delete (creates delete markers) -./mc rm -r --force myminio/versioned >/dev/null +./mc rm -r --force mysilo/versioned >/dev/null ## mirror again to create another set of version on top -./mc mirror internal myminio/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null expected_checksum=$(./mc cat internal/dsync/drwmutex.go | md5sum) -user_count=$(./mc admin user list myminio/ | wc -l) -policy_count=$(./mc admin policy list myminio/ | wc -l) +user_count=$(./mc admin user list mysilo/ | wc -l) +policy_count=$(./mc admin policy list mysilo/ | wc -l) kill $pid -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & pid_1=$! -(minio server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & +(silo server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & pid_2=$! sleep 30 -./mc ready myminio +./mc ready mysilo -expanded_user_count=$(./mc admin user list myminio/ | wc -l) -expanded_policy_count=$(./mc admin policy list myminio/ | wc -l) +expanded_user_count=$(./mc admin user list mysilo/ | wc -l) +expanded_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ $user_count -ne $expanded_user_count ]; then echo "BUG: original user count differs from expanded setup" @@ -74,21 +73,21 @@ if [ $policy_count -ne $expanded_policy_count ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "expected versioning enabled after expansion" exit 1 fi -./mc mirror cmd myminio/versioned/ --quiet >/dev/null +./mc mirror cmd mysilo/versioned/ --quiet >/dev/null -./mc ls -r myminio/versioned/ >expanded_ns.txt -./mc ls -r --versions myminio/versioned/ >expanded_ns_versions.txt +./mc ls -r mysilo/versioned/ >expanded_ns.txt +./mc ls -r --versions mysilo/versioned/ >expanded_ns_versions.txt -./mc admin decom start myminio/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} +./mc admin decom start mysilo/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} -until $(./mc admin decom status myminio/ | grep -q Complete); do +until $(./mc admin decom status mysilo/ | grep -q Complete); do echo "waiting for decom to finish..." sleep 1 done @@ -98,15 +97,15 @@ kill $pid_2 sleep 5 -(minio server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & +(silo server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & pid=$! -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9001/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9001/" -./mc ready myminio +./mc ready mysilo -decom_user_count=$(./mc admin user list myminio/ | wc -l) -decom_policy_count=$(./mc admin policy list myminio/ | wc -l) +decom_user_count=$(./mc admin user list mysilo/ | wc -l) +decom_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ $user_count -ne $decom_user_count ]; then echo "BUG: original user count differs after decommission" @@ -118,21 +117,21 @@ if [ $policy_count -ne $decom_policy_count ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected versioning enabled after decommission" exit 1 fi -got_checksum=$(./mc cat myminio/versioned/dsync/drwmutex.go | md5sum) +got_checksum=$(./mc cat mysilo/versioned/dsync/drwmutex.go | md5sum) if [ "${expected_checksum}" != "${got_checksum}" ]; then echo "BUG: decommission failed on encrypted objects: expected ${expected_checksum} got ${got_checksum}" exit 1 fi -./mc ls -r myminio/versioned >decommissioned_ns.txt -./mc ls -r --versions myminio/versioned >decommissioned_ns_versions.txt +./mc ls -r mysilo/versioned >decommissioned_ns.txt +./mc ls -r --versions mysilo/versioned >decommissioned_ns_versions.txt out=$(diff -qpruN expanded_ns.txt decommissioned_ns.txt) ret=$? diff --git a/docs/distributed/decom-encrypted-kes.sh b/docs/distributed/decom-encrypted-kes.sh index 836a22b5b..bd1c4b7ad 100755 --- a/docs/distributed/decom-encrypted-kes.sh +++ b/docs/distributed/decom-encrypted-kes.sh @@ -4,13 +4,12 @@ if [ -n "$TEST_DEBUG" ]; then set -x fi -pkill minio +pkill silo pkill kes rm -rf /tmp/xl if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi if [ ! -f ./kes ]; then @@ -34,56 +33,56 @@ export MINIO_KMS_KES_ENDPOINT=https://127.0.0.1:7373 export MINIO_KMS_KES_API_KEY="${API_KEY}" export MINIO_KMS_KES_KEY_NAME=minio-default-key export MINIO_KMS_KES_CAPATH=public.crt -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9000/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9000/" -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & pid=$! -./mc ready myminio +./mc ready mysilo -./mc admin user add myminio/ minio123 minio123 -./mc admin user add myminio/ minio12345 minio12345 +./mc admin user add mysilo/ silo123 silo123 +./mc admin user add mysilo/ silo12345 silo12345 -./mc admin policy create myminio/ rw ./docs/distributed/rw.json -./mc admin policy create myminio/ lake ./docs/distributed/rw.json +./mc admin policy create mysilo/ rw ./docs/distributed/rw.json +./mc admin policy create mysilo/ lake ./docs/distributed/rw.json -./mc admin policy attach myminio/ rw --user=minio123 -./mc admin policy attach myminio/ lake --user=minio12345 +./mc admin policy attach mysilo/ rw --user=silo123 +./mc admin policy attach mysilo/ lake --user=silo12345 -./mc mb -l myminio/versioned -./mc mb -l myminio/versioned-1 +./mc mb -l mysilo/versioned +./mc mb -l mysilo/versioned-1 -./mc encrypt set sse-s3 myminio/versioned -./mc encrypt set sse-kms minio-default-key myminio/versioned-1 +./mc encrypt set sse-s3 mysilo/versioned +./mc encrypt set sse-kms minio-default-key mysilo/versioned-1 -./mc mirror internal myminio/versioned/ --quiet >/dev/null -./mc mirror internal myminio/versioned-1/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned-1/ --quiet >/dev/null ## Soft delete (creates delete markers) -./mc rm -r --force myminio/versioned >/dev/null -./mc rm -r --force myminio/versioned-1 >/dev/null +./mc rm -r --force mysilo/versioned >/dev/null +./mc rm -r --force mysilo/versioned-1 >/dev/null ## mirror again to create another set of version on top -./mc mirror internal myminio/versioned/ --quiet >/dev/null -./mc mirror internal myminio/versioned-1/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned-1/ --quiet >/dev/null expected_checksum=$(./mc cat internal/dsync/drwmutex.go | md5sum) -user_count=$(./mc admin user list myminio/ | wc -l) -policy_count=$(./mc admin policy list myminio/ | wc -l) +user_count=$(./mc admin user list mysilo/ | wc -l) +policy_count=$(./mc admin policy list mysilo/ | wc -l) kill $pid -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & pid_1=$! -(minio server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & +(silo server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & pid_2=$! -./mc ready myminio +./mc ready mysilo -expanded_user_count=$(./mc admin user list myminio/ | wc -l) -expanded_policy_count=$(./mc admin policy list myminio/ | wc -l) +expanded_user_count=$(./mc admin user list mysilo/ | wc -l) +expanded_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ "$user_count" -ne "$expanded_user_count" ]; then echo "BUG: original user count differs from expanded setup" @@ -95,45 +94,45 @@ if [ "$policy_count" -ne "$expanded_policy_count" ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "expected versioning enabled after expansion" exit 1 fi -./mc encrypt info myminio/versioned | grep -q "Auto encryption 'sse-s3' is enabled" +./mc encrypt info mysilo/versioned | grep -q "Auto encryption 'sse-s3' is enabled" ret=$? if [ $ret -ne 0 ]; then echo "expected encryption enabled after expansion" exit 1 fi -./mc version info myminio/versioned-1 | grep -q "versioning is enabled" +./mc version info mysilo/versioned-1 | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "expected versioning enabled after expansion" exit 1 fi -./mc encrypt info myminio/versioned-1 | grep -q "Auto encryption 'sse-kms' is enabled" +./mc encrypt info mysilo/versioned-1 | grep -q "Auto encryption 'sse-kms' is enabled" ret=$? if [ $ret -ne 0 ]; then echo "expected encryption enabled after expansion" exit 1 fi -./mc mirror cmd myminio/versioned/ --quiet >/dev/null -./mc mirror cmd myminio/versioned-1/ --quiet >/dev/null +./mc mirror cmd mysilo/versioned/ --quiet >/dev/null +./mc mirror cmd mysilo/versioned-1/ --quiet >/dev/null -./mc ls -r myminio/versioned/ >expanded_ns.txt -./mc ls -r --versions myminio/versioned/ >expanded_ns_versions.txt -./mc ls -r myminio/versioned-1/ >expanded_ns_1.txt -./mc ls -r --versions myminio/versioned-1/ >expanded_ns_versions_1.txt +./mc ls -r mysilo/versioned/ >expanded_ns.txt +./mc ls -r --versions mysilo/versioned/ >expanded_ns_versions.txt +./mc ls -r mysilo/versioned-1/ >expanded_ns_1.txt +./mc ls -r --versions mysilo/versioned-1/ >expanded_ns_versions_1.txt -./mc admin decom start myminio/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} +./mc admin decom start mysilo/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} -until $(./mc admin decom status myminio/ | grep -q Complete); do +until $(./mc admin decom status mysilo/ | grep -q Complete); do echo "waiting for decom to finish..." sleep 1s done @@ -143,17 +142,17 @@ kill $pid_2 sleep 5s -(minio server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & +(silo server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & pid=$! sleep 30s -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9001/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9001/" -./mc ready myminio +./mc ready mysilo -decom_user_count=$(./mc admin user list myminio/ | wc -l) -decom_policy_count=$(./mc admin policy list myminio/ | wc -l) +decom_user_count=$(./mc admin user list mysilo/ | wc -l) +decom_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ "$user_count" -ne "$decom_user_count" ]; then echo "BUG: original user count differs after decommission" @@ -165,50 +164,50 @@ if [ "$policy_count" -ne "$decom_policy_count" ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected versioning enabled after decommission" exit 1 fi -./mc encrypt info myminio/versioned | grep -q "Auto encryption 'sse-s3' is enabled" +./mc encrypt info mysilo/versioned | grep -q "Auto encryption 'sse-s3' is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected encryption enabled after expansion" exit 1 fi -./mc version info myminio/versioned-1 | grep -q "versioning is enabled" +./mc version info mysilo/versioned-1 | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected versioning enabled after decommission" exit 1 fi -./mc encrypt info myminio/versioned-1 | grep -q "Auto encryption 'sse-kms' is enabled" +./mc encrypt info mysilo/versioned-1 | grep -q "Auto encryption 'sse-kms' is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected encryption enabled after expansion" exit 1 fi -got_checksum=$(./mc cat myminio/versioned/dsync/drwmutex.go | md5sum) +got_checksum=$(./mc cat mysilo/versioned/dsync/drwmutex.go | md5sum) if [ "${expected_checksum}" != "${got_checksum}" ]; then echo "BUG: decommission failed on encrypted objects: expected ${expected_checksum} got ${got_checksum}" exit 1 fi -got_checksum_1=$(./mc cat myminio/versioned-1/dsync/drwmutex.go | md5sum) +got_checksum_1=$(./mc cat mysilo/versioned-1/dsync/drwmutex.go | md5sum) if [ "${expected_checksum}" != "${got_checksum_1}" ]; then echo "BUG: decommission failed on encrypted objects: expected ${expected_checksum} got ${got_checksum_1}" exit 1 fi -./mc ls -r myminio/versioned >decommissioned_ns.txt -./mc ls -r --versions myminio/versioned >decommissioned_ns_versions.txt -./mc ls -r myminio/versioned-1 >decommissioned_ns_1.txt -./mc ls -r --versions myminio/versioned-1 >decommissioned_ns_versions_1.txt +./mc ls -r mysilo/versioned >decommissioned_ns.txt +./mc ls -r --versions mysilo/versioned >decommissioned_ns_versions.txt +./mc ls -r mysilo/versioned-1 >decommissioned_ns_1.txt +./mc ls -r --versions mysilo/versioned-1 >decommissioned_ns_versions_1.txt out=$(diff -qpruN expanded_ns.txt decommissioned_ns.txt) ret=$? diff --git a/docs/distributed/decom-encrypted-sse-s3.sh b/docs/distributed/decom-encrypted-sse-s3.sh index 651803488..0163069c8 100755 --- a/docs/distributed/decom-encrypted-sse-s3.sh +++ b/docs/distributed/decom-encrypted-sse-s3.sh @@ -4,61 +4,60 @@ if [ -n "$TEST_DEBUG" ]; then set -x fi -pkill minio +pkill silo rm -rf /tmp/xl if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi export CI=true export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9000/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9000/" -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & pid=$! -./mc ready myminio +./mc ready mysilo -./mc admin user add myminio/ minio123 minio123 -./mc admin user add myminio/ minio12345 minio12345 +./mc admin user add mysilo/ silo123 silo123 +./mc admin user add mysilo/ silo12345 silo12345 -./mc admin policy create myminio/ rw ./docs/distributed/rw.json -./mc admin policy create myminio/ lake ./docs/distributed/rw.json +./mc admin policy create mysilo/ rw ./docs/distributed/rw.json +./mc admin policy create mysilo/ lake ./docs/distributed/rw.json -./mc admin policy attach myminio/ rw --user=minio123 -./mc admin policy attach myminio/ lake --user=minio12345 +./mc admin policy attach mysilo/ rw --user=silo123 +./mc admin policy attach mysilo/ lake --user=silo12345 -./mc mb -l myminio/versioned +./mc mb -l mysilo/versioned -./mc encrypt set sse-s3 myminio/versioned +./mc encrypt set sse-s3 mysilo/versioned -./mc mirror internal myminio/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null ## Soft delete (creates delete markers) -./mc rm -r --force myminio/versioned >/dev/null +./mc rm -r --force mysilo/versioned >/dev/null ## mirror again to create another set of version on top -./mc mirror internal myminio/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null expected_checksum=$(./mc cat internal/dsync/drwmutex.go | md5sum) -user_count=$(./mc admin user list myminio/ | wc -l) -policy_count=$(./mc admin policy list myminio/ | wc -l) +user_count=$(./mc admin user list mysilo/ | wc -l) +policy_count=$(./mc admin policy list mysilo/ | wc -l) kill $pid -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & pid_1=$! -(minio server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & +(silo server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & pid_2=$! -./mc ready myminio +./mc ready mysilo -expanded_user_count=$(./mc admin user list myminio/ | wc -l) -expanded_policy_count=$(./mc admin policy list myminio/ | wc -l) +expanded_user_count=$(./mc admin user list mysilo/ | wc -l) +expanded_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ $user_count -ne $expanded_user_count ]; then echo "BUG: original user count differs from expanded setup" @@ -70,28 +69,28 @@ if [ $policy_count -ne $expanded_policy_count ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "expected versioning enabled after expansion" exit 1 fi -./mc encrypt info myminio/versioned | grep -q "Auto encryption 'sse-s3' is enabled" +./mc encrypt info mysilo/versioned | grep -q "Auto encryption 'sse-s3' is enabled" ret=$? if [ $ret -ne 0 ]; then echo "expected encryption enabled after expansion" exit 1 fi -./mc mirror cmd myminio/versioned/ --quiet >/dev/null +./mc mirror cmd mysilo/versioned/ --quiet >/dev/null -./mc ls -r myminio/versioned/ >expanded_ns.txt -./mc ls -r --versions myminio/versioned/ >expanded_ns_versions.txt +./mc ls -r mysilo/versioned/ >expanded_ns.txt +./mc ls -r --versions mysilo/versioned/ >expanded_ns_versions.txt -./mc admin decom start myminio/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} +./mc admin decom start mysilo/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} -until $(./mc admin decom status myminio/ | grep -q Complete); do +until $(./mc admin decom status mysilo/ | grep -q Complete); do echo "waiting for decom to finish..." sleep 1 done @@ -101,15 +100,15 @@ kill $pid_2 sleep 5 -(minio server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & +(silo server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & pid=$! -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9001/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9001/" -./mc ready myminio +./mc ready mysilo -decom_user_count=$(./mc admin user list myminio/ | wc -l) -decom_policy_count=$(./mc admin policy list myminio/ | wc -l) +decom_user_count=$(./mc admin user list mysilo/ | wc -l) +decom_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ $user_count -ne $decom_user_count ]; then echo "BUG: original user count differs after decommission" @@ -121,28 +120,28 @@ if [ $policy_count -ne $decom_policy_count ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected versioning enabled after decommission" exit 1 fi -./mc encrypt info myminio/versioned | grep -q "Auto encryption 'sse-s3' is enabled" +./mc encrypt info mysilo/versioned | grep -q "Auto encryption 'sse-s3' is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected encryption enabled after expansion" exit 1 fi -got_checksum=$(./mc cat myminio/versioned/dsync/drwmutex.go | md5sum) +got_checksum=$(./mc cat mysilo/versioned/dsync/drwmutex.go | md5sum) if [ "${expected_checksum}" != "${got_checksum}" ]; then echo "BUG: decommission failed on encrypted objects: expected ${expected_checksum} got ${got_checksum}" exit 1 fi -./mc ls -r myminio/versioned >decommissioned_ns.txt -./mc ls -r --versions myminio/versioned >decommissioned_ns_versions.txt +./mc ls -r mysilo/versioned >decommissioned_ns.txt +./mc ls -r --versions mysilo/versioned >decommissioned_ns_versions.txt out=$(diff -qpruN expanded_ns.txt decommissioned_ns.txt) ret=$? diff --git a/docs/distributed/decom-encrypted.sh b/docs/distributed/decom-encrypted.sh index 6d47537b7..cbe505b69 100755 --- a/docs/distributed/decom-encrypted.sh +++ b/docs/distributed/decom-encrypted.sh @@ -4,61 +4,60 @@ if [ -n "$TEST_DEBUG" ]; then set -x fi -pkill minio +pkill silo rm -rf /tmp/xl if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi export CI=true export MINIO_KMS_AUTO_ENCRYPTION=on export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & pid=$! -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9000/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9000/" -./mc ready myminio +./mc ready mysilo -./mc admin user add myminio/ minio123 minio123 -./mc admin user add myminio/ minio12345 minio12345 +./mc admin user add mysilo/ silo123 silo123 +./mc admin user add mysilo/ silo12345 silo12345 -./mc admin policy create myminio/ rw ./docs/distributed/rw.json -./mc admin policy create myminio/ lake ./docs/distributed/rw.json +./mc admin policy create mysilo/ rw ./docs/distributed/rw.json +./mc admin policy create mysilo/ lake ./docs/distributed/rw.json -./mc admin policy attach myminio/ rw --user=minio123 -./mc admin policy attach myminio/ lake --user=minio12345 +./mc admin policy attach mysilo/ rw --user=silo123 +./mc admin policy attach mysilo/ lake --user=silo12345 -./mc mb -l myminio/versioned +./mc mb -l mysilo/versioned -./mc mirror internal myminio/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null ## Soft delete (creates delete markers) -./mc rm -r --force myminio/versioned >/dev/null +./mc rm -r --force mysilo/versioned >/dev/null ## mirror again to create another set of version on top -./mc mirror internal myminio/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null expected_checksum=$(./mc cat internal/dsync/drwmutex.go | md5sum) -user_count=$(./mc admin user list myminio/ | wc -l) -policy_count=$(./mc admin policy list myminio/ | wc -l) +user_count=$(./mc admin user list mysilo/ | wc -l) +policy_count=$(./mc admin policy list mysilo/ | wc -l) kill $pid -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & pid_1=$! -(minio server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & +(silo server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & pid_2=$! -./mc ready myminio +./mc ready mysilo -expanded_user_count=$(./mc admin user list myminio/ | wc -l) -expanded_policy_count=$(./mc admin policy list myminio/ | wc -l) +expanded_user_count=$(./mc admin user list mysilo/ | wc -l) +expanded_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ $user_count -ne $expanded_user_count ]; then echo "BUG: original user count differs from expanded setup" @@ -70,21 +69,21 @@ if [ $policy_count -ne $expanded_policy_count ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "expected versioning enabled after expansion" exit 1 fi -./mc mirror cmd myminio/versioned/ --quiet >/dev/null +./mc mirror cmd mysilo/versioned/ --quiet >/dev/null -./mc ls -r myminio/versioned/ >expanded_ns.txt -./mc ls -r --versions myminio/versioned/ >expanded_ns_versions.txt +./mc ls -r mysilo/versioned/ >expanded_ns.txt +./mc ls -r --versions mysilo/versioned/ >expanded_ns_versions.txt -./mc admin decom start myminio/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} +./mc admin decom start mysilo/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} -until $(./mc admin decom status myminio/ | grep -q Complete); do +until $(./mc admin decom status mysilo/ | grep -q Complete); do echo "waiting for decom to finish..." sleep 1 done @@ -94,15 +93,15 @@ kill $pid_2 sleep 5 -(minio server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & +(silo server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & pid=$! -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9001/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9001/" -./mc ready myminio +./mc ready mysilo -decom_user_count=$(./mc admin user list myminio/ | wc -l) -decom_policy_count=$(./mc admin policy list myminio/ | wc -l) +decom_user_count=$(./mc admin user list mysilo/ | wc -l) +decom_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ $user_count -ne $decom_user_count ]; then echo "BUG: original user count differs after decommission" @@ -114,15 +113,15 @@ if [ $policy_count -ne $decom_policy_count ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected versioning enabled after decommission" exit 1 fi -./mc ls -r myminio/versioned >decommissioned_ns.txt -./mc ls -r --versions myminio/versioned >decommissioned_ns_versions.txt +./mc ls -r mysilo/versioned >decommissioned_ns.txt +./mc ls -r --versions mysilo/versioned >decommissioned_ns_versions.txt out=$(diff -qpruN expanded_ns.txt decommissioned_ns.txt) ret=$? @@ -138,7 +137,7 @@ if [ $ret -ne 0 ]; then exit 1 fi -got_checksum=$(./mc cat myminio/versioned/dsync/drwmutex.go | md5sum) +got_checksum=$(./mc cat mysilo/versioned/dsync/drwmutex.go | md5sum) if [ "${expected_checksum}" != "${got_checksum}" ]; then echo "BUG: decommission failed on encrypted objects: expected ${expected_checksum} got ${got_checksum}" exit 1 diff --git a/docs/distributed/decom.sh b/docs/distributed/decom.sh index 18d9ca4fb..bb666de7f 100755 --- a/docs/distributed/decom.sh +++ b/docs/distributed/decom.sh @@ -4,67 +4,66 @@ if [ -n "$TEST_DEBUG" ]; then set -x fi -pkill minio +pkill silo rm -rf /tmp/xl rm -rf /tmp/xltier if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi export CI=true export MINIO_SCANNER_SPEED=fastest -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/tmp/decom.log) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/tmp/decom.log) & pid=$! -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9000/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9000/" -./mc ready myminio +./mc ready mysilo -./mc admin user add myminio/ minio123 minio123 -./mc admin user add myminio/ minio12345 minio12345 +./mc admin user add mysilo/ silo123 silo123 +./mc admin user add mysilo/ silo12345 silo12345 -./mc admin policy create myminio/ rw ./docs/distributed/rw.json -./mc admin policy create myminio/ lake ./docs/distributed/rw.json +./mc admin policy create mysilo/ rw ./docs/distributed/rw.json +./mc admin policy create mysilo/ lake ./docs/distributed/rw.json -./mc admin policy attach myminio/ rw --user=minio123 -./mc admin policy attach myminio/ lake --user=minio12345 +./mc admin policy attach mysilo/ rw --user=silo123 +./mc admin policy attach mysilo/ lake --user=silo12345 -./mc mb -l myminio/versioned +./mc mb -l mysilo/versioned -./mc mirror internal myminio/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null ## Soft delete (creates delete markers) -./mc rm -r --force myminio/versioned >/dev/null +./mc rm -r --force mysilo/versioned >/dev/null ## mirror again to create another set of version on top -./mc mirror internal myminio/versioned/ --quiet >/dev/null +./mc mirror internal mysilo/versioned/ --quiet >/dev/null expected_checksum=$(./mc cat internal/dsync/drwmutex.go | md5sum) -user_count=$(./mc admin user list myminio/ | wc -l) -policy_count=$(./mc admin policy list myminio/ | wc -l) +user_count=$(./mc admin user list mysilo/ | wc -l) +policy_count=$(./mc admin policy list mysilo/ | wc -l) ## create a warm tier instance -(minio server /tmp/xltier/{1...4}/disk{0...1} --address :9002 2>&1 >/dev/null) & +(silo server /tmp/xltier/{1...4}/disk{0...1} --address :9002 2>&1 >/dev/null) & export MC_HOST_mytier="http://minioadmin:minioadmin@localhost:9002/" -./mc ready myminio +./mc ready mysilo -./mc mb -l myminio/bucket2 +./mc mb -l mysilo/bucket2 ./mc mb -l mytier/tiered ## create a tier and set up ilm policy to tier immediately -./mc admin tier add minio myminio TIER1 --endpoint http://localhost:9002 --access-key minioadmin --secret-key minioadmin --bucket tiered --prefix prefix5/ -./mc ilm add myminio/bucket2 --transition-days 0 --transition-tier TIER1 --transition-days 0 +./mc admin tier add minio mysilo TIER1 --endpoint http://localhost:9002 --access-key minioadmin --secret-key minioadmin --bucket tiered --prefix prefix5/ +./mc ilm add mysilo/bucket2 --transition-days 0 --transition-tier TIER1 --transition-days 0 ## mirror some content to bucket2 and capture versions tiered -./mc mirror internal myminio/bucket2/ --quiet >/dev/null -./mc ls -r myminio/bucket2/ >bucket2_ns.txt -./mc ls -r --versions myminio/bucket2/ >bucket2_ns_versions.txt +./mc mirror internal mysilo/bucket2/ --quiet >/dev/null +./mc ls -r mysilo/bucket2/ >bucket2_ns.txt +./mc ls -r --versions mysilo/bucket2/ >bucket2_ns_versions.txt sleep 30 @@ -72,16 +71,16 @@ sleep 30 kill $pid -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_1.log) & pid_1=$! -(minio server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & +(silo server --address ":9001" http://localhost:9000/tmp/xl/{1...10}/disk{0...1} http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/expanded_2.log) & pid_2=$! -./mc ready myminio +./mc ready mysilo -expanded_user_count=$(./mc admin user list myminio/ | wc -l) -expanded_policy_count=$(./mc admin policy list myminio/ | wc -l) +expanded_user_count=$(./mc admin user list mysilo/ | wc -l) +expanded_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ $user_count -ne $expanded_user_count ]; then echo "BUG: original user count differs from expanded setup" @@ -93,22 +92,22 @@ if [ $policy_count -ne $expanded_policy_count ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "expected versioning enabled after expansion" exit 1 fi -./mc mirror cmd myminio/versioned/ --quiet >/dev/null +./mc mirror cmd mysilo/versioned/ --quiet >/dev/null -./mc ls -r myminio/versioned/ >expanded_ns.txt -./mc ls -r --versions myminio/versioned/ >expanded_ns_versions.txt +./mc ls -r mysilo/versioned/ >expanded_ns.txt +./mc ls -r --versions mysilo/versioned/ >expanded_ns_versions.txt -./mc admin decom start myminio/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} +./mc admin decom start mysilo/ http://localhost:9000/tmp/xl/{1...10}/disk{0...1} count=0 -until $(./mc admin decom status myminio/ | grep -q Complete); do +until $(./mc admin decom status mysilo/ | grep -q Complete); do echo "waiting for decom to finish..." count=$((count + 1)) if [ ${count} -eq 120 ]; then @@ -122,16 +121,16 @@ kill $pid_2 sleep 5 -(minio server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & +(silo server --address ":9001" http://localhost:9001/tmp/xl/{11...30}/disk{0...3} 2>&1 >/tmp/removed.log) & pid=$! sleep 5 -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9001/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9001/" -./mc ready myminio +./mc ready mysilo -decom_user_count=$(./mc admin user list myminio/ | wc -l) -decom_policy_count=$(./mc admin policy list myminio/ | wc -l) +decom_user_count=$(./mc admin user list mysilo/ | wc -l) +decom_policy_count=$(./mc admin policy list mysilo/ | wc -l) if [ $user_count -ne $decom_user_count ]; then echo "BUG: original user count differs after decommission" @@ -143,15 +142,15 @@ if [ $policy_count -ne $decom_policy_count ]; then exit 1 fi -./mc version info myminio/versioned | grep -q "versioning is enabled" +./mc version info mysilo/versioned | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected versioning enabled after decommission" exit 1 fi -./mc ls -r myminio/versioned >decommissioned_ns.txt -./mc ls -r --versions myminio/versioned >decommissioned_ns_versions.txt +./mc ls -r mysilo/versioned >decommissioned_ns.txt +./mc ls -r --versions mysilo/versioned >decommissioned_ns_versions.txt out=$(diff -qpruN expanded_ns.txt decommissioned_ns.txt) ret=$? @@ -167,22 +166,22 @@ if [ $ret -ne 0 ]; then exit 1 fi -got_checksum=$(./mc cat myminio/versioned/dsync/drwmutex.go | md5sum) +got_checksum=$(./mc cat mysilo/versioned/dsync/drwmutex.go | md5sum) if [ "${expected_checksum}" != "${got_checksum}" ]; then echo "BUG: decommission failed on encrypted objects: expected ${expected_checksum} got ${got_checksum}" exit 1 fi # after decommissioning, compare listings in bucket2 and tiered -./mc version info myminio/bucket2 | grep -q "versioning is enabled" +./mc version info mysilo/bucket2 | grep -q "versioning is enabled" ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected versioning enabled after decommission on bucket2" exit 1 fi -./mc ls -r myminio/bucket2 >decommissioned_bucket2_ns.txt -./mc ls -r --versions myminio/bucket2 >decommissioned_bucket2_ns_versions.txt +./mc ls -r mysilo/bucket2 >decommissioned_bucket2_ns.txt +./mc ls -r --versions mysilo/bucket2 >decommissioned_bucket2_ns_versions.txt ./mc ls -r --versions mytier/tiered/ >tiered_ns_versions2.txt out=$(diff -qpruN bucket2_ns.txt decommissioned_bucket2_ns.txt) @@ -206,7 +205,7 @@ if [ $ret -ne 0 ]; then exit 1 fi -got_checksum=$(./mc cat myminio/bucket2/dsync/drwmutex.go | md5sum) +got_checksum=$(./mc cat mysilo/bucket2/dsync/drwmutex.go | md5sum) if [ "${expected_checksum}" != "${got_checksum}" ]; then echo "BUG: decommission failed on encrypted objects with tiering: expected ${expected_checksum} got ${got_checksum}" exit 1 diff --git a/docs/distributed/distributed-from-config-file.sh b/docs/distributed/distributed-from-config-file.sh index cea171729..bcafd119e 100755 --- a/docs/distributed/distributed-from-config-file.sh +++ b/docs/distributed/distributed-from-config-file.sh @@ -3,9 +3,9 @@ set -e cleanup() { - echo "Cleaning up instances of MinIO" - pkill minio || true - pkill -9 minio || true + echo "Cleaning up instances of Silo" + pkill silo || true + pkill -9 silo || true rm -rf /tmp/xl/ || true rm -rf /tmp/minio.configfile.{1,2,3,4} || true } @@ -28,8 +28,7 @@ if [ ! -f ./mc ]; then ;; esac - wget -O mc https://dl.minio.io/client/mc/release/${os,,}-${arch,,}/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi for i in $(seq 1 4); do @@ -55,29 +54,29 @@ pools: # Specify the nodes and drives with pools EOF done -minio server --config /tmp/minio.configfile.1 >/tmp/minio1_1.log 2>&1 & +silo server --config /tmp/minio.configfile.1 >/tmp/silo1_1.log 2>&1 & site1_pid=$! -minio server --config /tmp/minio.configfile.2 >/tmp/minio2_1.log 2>&1 & +silo server --config /tmp/minio.configfile.2 >/tmp/silo2_1.log 2>&1 & site2_pid=$! -minio server --config /tmp/minio.configfile.3 >/tmp/minio3_1.log 2>&1 & +silo server --config /tmp/minio.configfile.3 >/tmp/silo3_1.log 2>&1 & site3_pid=$! -minio server --config /tmp/minio.configfile.4 >/tmp/minio4_1.log 2>&1 & +silo server --config /tmp/minio.configfile.4 >/tmp/silo4_1.log 2>&1 & site4_pid=$! -export MC_HOST_minio1=http://minr0otUS2r:pBU94AGAY85e@localhost:9001 -export MC_HOST_minio3=http://minr0otUS2r:pBU94AGAY85e@localhost:9003 +export MC_HOST_silo1=http://minr0otUS2r:pBU94AGAY85e@localhost:9001 +export MC_HOST_silo3=http://minr0otUS2r:pBU94AGAY85e@localhost:9003 -./mc ready minio1 -./mc ready minio3 +./mc ready silo1 +./mc ready silo3 -./mc mb minio1/testbucket -# copy large upload to newbucket on minio1 +./mc mb silo1/testbucket +# copy large upload to newbucket on silo1 truncate -s 17M lrgfile expected_checksum=$(cat ./lrgfile | md5sum) -./mc cp ./lrgfile minio1/testbucket +./mc cp ./lrgfile silo1/testbucket -actual_checksum=$(./mc cat minio3/testbucket/lrgfile | md5sum) +actual_checksum=$(./mc cat silo3/testbucket/lrgfile | md5sum) if [ "${expected_checksum}" != "${actual_checksum}" ]; then echo "unexpected object checksum, expected: ${expected_checksum} got: ${actual_checksum}" @@ -85,7 +84,7 @@ if [ "${expected_checksum}" != "${actual_checksum}" ]; then fi # Compare the difference of the list of disks and their location, with the below expected output -diff <(./mc admin info minio1 --json | jq -r '.info.servers[].drives[] | "\(.pool_index),\(.set_index),\(.disk_index) \(.endpoint)"' | sort) <( +diff <(./mc admin info silo1 --json | jq -r '.info.servers[].drives[] | "\(.pool_index),\(.set_index),\(.disk_index) \(.endpoint)"' | sort) <( cat <&1 >/dev/null) & +(silo server --address :22000 --console-address :10000 http://localhost:22000/tmp/ldap{1...4} 2>&1 >/dev/null) & sleep 30 -./mc ready myminio +./mc ready mysilo -./mc idp ldap add myminio server_addr=localhost:389 server_insecure=on \ +./mc idp ldap add mysilo server_addr=localhost:389 server_insecure=on \ lookup_bind_dn=cn=admin,dc=min,dc=io lookup_bind_password=admin \ user_dn_search_base_dn=dc=min,dc=io user_dn_search_filter="(uid=%s)" \ group_search_base_dn=ou=swengg,dc=min,dc=io group_search_filter="(&(objectclass=groupOfNames)(member=%d))" -./mc admin service restart myminio --json -./mc ready myminio -./mc admin cluster iam import myminio docs/distributed/samples/myminio-iam-info.zip +./mc admin service restart mysilo --json +./mc ready mysilo +./mc admin cluster iam import mysilo docs/distributed/samples/myminio-iam-info.zip sleep 10 # Verify the list of users and service accounts from the import -./mc admin user list myminio -USER_COUNT=$(./mc admin user list myminio | wc -l) +./mc admin user list mysilo +USER_COUNT=$(./mc admin user list mysilo | wc -l) if [ "${USER_COUNT}" -ne 2 ]; then echo "BUG: Expected no of users: 2 Found: ${USER_COUNT}" exit 1 fi -./mc admin user svcacct list myminio "uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io" --json -SVCACCT_COUNT_1=$(./mc admin user svcacct list myminio "uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io" --json | jq '.accessKey' | wc -l) +./mc admin user svcacct list mysilo "uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io" --json +SVCACCT_COUNT_1=$(./mc admin user svcacct list mysilo "uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io" --json | jq '.accessKey' | wc -l) if [ "${SVCACCT_COUNT_1}" -ne 2 ]; then echo "BUG: Expected svcacct count for 'uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io': 2. Found: ${SVCACCT_COUNT_1}" exit 1 fi -./mc admin user svcacct list myminio "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" --json -SVCACCT_COUNT_2=$(./mc admin user svcacct list myminio "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" --json | jq '.accessKey' | wc -l) +./mc admin user svcacct list mysilo "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" --json +SVCACCT_COUNT_2=$(./mc admin user svcacct list mysilo "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" --json | jq '.accessKey' | wc -l) if [ "${SVCACCT_COUNT_2}" -ne 2 ]; then echo "BUG: Expected svcacct count for 'uid=dillon,ou=people,ou=swengg,dc=min,dc=io': 2. Found: ${SVCACCT_COUNT_2}" exit 1 fi -# Kill MinIO and LDAP to start afresh with missing groups/DN -pkill minio +# Kill Silo and LDAP to start afresh with missing groups/DN +pkill silo docker rm -f $(docker ps -aq) rm -rf /tmp/ldap{1..4} @@ -76,40 +75,40 @@ make docker-images make docker-run cd - -(minio server --address ":24000" --console-address :10000 http://localhost:24000/tmp/ldap1{1...4} 2>&1 >/dev/null) & +(silo server --address ":24000" --console-address :10000 http://localhost:24000/tmp/ldap1{1...4} 2>&1 >/dev/null) & sleep 30 -./mc ready myminio1 +./mc ready mysilo1 -./mc idp ldap add myminio1 server_addr=localhost:389 server_insecure=on \ +./mc idp ldap add mysilo1 server_addr=localhost:389 server_insecure=on \ lookup_bind_dn=cn=admin,dc=min,dc=io lookup_bind_password=admin \ user_dn_search_base_dn=dc=min,dc=io user_dn_search_filter="(uid=%s)" \ group_search_base_dn=ou=hwengg,dc=min,dc=io group_search_filter="(&(objectclass=groupOfNames)(member=%d))" -./mc admin service restart myminio1 --json -./mc ready myminio1 -./mc admin cluster iam import myminio1 docs/distributed/samples/myminio-iam-info.zip +./mc admin service restart mysilo1 --json +./mc ready mysilo1 +./mc admin cluster iam import mysilo1 docs/distributed/samples/myminio-iam-info.zip sleep 10 # Verify the list of users and service accounts from the import -./mc admin user list myminio1 -USER_COUNT=$(./mc admin user list myminio1 | wc -l) +./mc admin user list mysilo1 +USER_COUNT=$(./mc admin user list mysilo1 | wc -l) if [ "${USER_COUNT}" -ne 1 ]; then echo "BUG: Expected no of users: 1 Found: ${USER_COUNT}" exit 1 fi -./mc admin user svcacct list myminio1 "uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io" --json -SVCACCT_COUNT_1=$(./mc admin user svcacct list myminio1 "uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io" --json | jq '.accessKey' | wc -l) +./mc admin user svcacct list mysilo1 "uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io" --json +SVCACCT_COUNT_1=$(./mc admin user svcacct list mysilo1 "uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io" --json | jq '.accessKey' | wc -l) if [ "${SVCACCT_COUNT_1}" -ne 2 ]; then echo "BUG: Expected svcacct count for 'uid=bobfisher,ou=people,ou=hwengg,dc=min,dc=io': 2. Found: ${SVCACCT_COUNT_1}" exit 1 fi -./mc admin user svcacct list myminio1 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" --json -SVCACCT_COUNT_2=$(./mc admin user svcacct list myminio1 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" --json | jq '.accessKey' | wc -l) +./mc admin user svcacct list mysilo1 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" --json +SVCACCT_COUNT_2=$(./mc admin user svcacct list mysilo1 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" --json | jq '.accessKey' | wc -l) if [ "${SVCACCT_COUNT_2}" -ne 0 ]; then echo "BUG: Expected svcacct count for 'uid=dillon,ou=people,ou=swengg,dc=min,dc=io': 0. Found: ${SVCACCT_COUNT_2}" exit 1 fi # Finally kill running processes -pkill minio +pkill silo docker rm -f $(docker ps -aq) diff --git a/docs/distributed/iam-import-with-openid.sh b/docs/distributed/iam-import-with-openid.sh index ca703aa5e..6157a6488 100755 --- a/docs/distributed/iam-import-with-openid.sh +++ b/docs/distributed/iam-import-with-openid.sh @@ -4,20 +4,19 @@ if [ -n "$TEST_DEBUG" ]; then set -x fi -pkill minio +pkill silo docker rm -f $(docker ps -aq) rm -rf /tmp/openid{1..4} -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:22000" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:22000" # The service account used below is already present in iam configuration getting imported -export MC_HOST_myminio1="http://dillon-service-2:dillon-service-2@localhost:22000" +export MC_HOST_mysilo1="http://dillon-service-2:dillon-service-2@localhost:22000" -# Start MinIO instance +# Start Silo instance export CI=true if [ ! -f ./mc ]; then - wget --quiet -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi mc -v @@ -30,12 +29,12 @@ mc -v cd - ) -(minio server --address :22000 --console-address :10000 http://localhost:22000/tmp/openid{1...4} 2>&1 >/tmp/server.log) & -./mc ready myminio -./mc mb myminio/test-bucket -./mc cp /etc/hosts myminio/test-bucket +(silo server --address :22000 --console-address :10000 http://localhost:22000/tmp/openid{1...4} 2>&1 >/tmp/server.log) & +./mc ready mysilo +./mc mb mysilo/test-bucket +./mc cp /etc/hosts mysilo/test-bucket -./mc idp openid add myminio \ +./mc idp openid add mysilo \ config_url="http://localhost:5556/dex/.well-known/openid-configuration" \ client_id="minio-client-app" \ client_secret="minio-client-app-secret" \ @@ -44,39 +43,39 @@ mc -v display_name="Login via dex1" \ role_policy="consoleAdmin" -./mc admin service restart myminio --json -./mc ready myminio -./mc admin cluster iam import myminio docs/distributed/samples/myminio-iam-info-openid.zip +./mc admin service restart mysilo --json +./mc ready mysilo +./mc admin cluster iam import mysilo docs/distributed/samples/myminio-iam-info-openid.zip # Verify if buckets / objects accessible using service account echo "Verifying buckets and objects access for the imported service account" -./mc ls myminio1/ --json -BKT_COUNT=$(./mc ls myminio1/ --json | jq '.key' | wc -l) +./mc ls mysilo1/ --json +BKT_COUNT=$(./mc ls mysilo1/ --json | jq '.key' | wc -l) if [ "${BKT_COUNT}" -ne 1 ]; then echo "BUG: Expected no of bucket: 1, Found: ${BKT_COUNT}" exit 1 fi -BKT_NAME=$(./mc ls myminio1/ --json | jq '.key' | sed 's/"//g' | sed 's\/\\g') +BKT_NAME=$(./mc ls mysilo1/ --json | jq '.key' | sed 's/"//g' | sed 's\/\\g') if [[ ${BKT_NAME} != "test-bucket" ]]; then echo "BUG: Expected bucket: test-bucket, Found: ${BKT_NAME}" exit 1 fi -./mc ls myminio1/test-bucket -OBJ_COUNT=$(./mc ls myminio1/test-bucket --json | jq '.key' | wc -l) +./mc ls mysilo1/test-bucket +OBJ_COUNT=$(./mc ls mysilo1/test-bucket --json | jq '.key' | wc -l) if [ "${OBJ_COUNT}" -ne 1 ]; then echo "BUG: Expected no of objects: 1, Found: ${OBJ_COUNT}" exit 1 fi -OBJ_NAME=$(./mc ls myminio1/test-bucket --json | jq '.key' | sed 's/"//g') +OBJ_NAME=$(./mc ls mysilo1/test-bucket --json | jq '.key' | sed 's/"//g') if [[ ${OBJ_NAME} != "hosts" ]]; then echo "BUG: Expected object: hosts, Found: ${BKT_NAME}" exit 1 fi # Finally kill running processes -pkill minio +pkill silo docker rm -f $(docker ps -aq) diff --git a/docs/federation/lookup/Corefile.example b/docs/federation/lookup/Corefile.example index b44a848a6..4ec7ce8de 100644 --- a/docs/federation/lookup/Corefile.example +++ b/docs/federation/lookup/Corefile.example @@ -1,5 +1,5 @@ . { - etcd churchofminio.com { + etcd silo.example { endpoint http://localhost:2379 http://localhost:4001 upstream /etc/resolv.conf } @@ -8,4 +8,4 @@ cache 160 mydomain.com loadbalance forward . /etc/resolv.conf -} \ No newline at end of file +} diff --git a/docs/iam/policies/pbac-tests.sh b/docs/iam/policies/pbac-tests.sh index 607abc3eb..9eaa9dd9e 100755 --- a/docs/iam/policies/pbac-tests.sh +++ b/docs/iam/policies/pbac-tests.sh @@ -4,12 +4,11 @@ if [ -n "$TEST_DEBUG" ]; then set -x fi -pkill minio +pkill silo pkill kes rm -rf /tmp/xl -go install -v github.com/minio/mc@master -cp -a $(go env GOPATH)/bin/mc ./mc +"$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc if [ ! -f ./kes ]; then wget --quiet -O kes https://github.com/minio/kes/releases/latest/download/kes-linux-amd64 && @@ -32,49 +31,49 @@ export MINIO_KMS_KES_ENDPOINT=https://127.0.0.1:7373 export MINIO_KMS_KES_API_KEY="${API_KEY}" export MINIO_KMS_KES_KEY_NAME=minio-default-key export MINIO_KMS_KES_CAPATH=public.crt -export MC_HOST_myminio="http://minioadmin:minioadmin@localhost:9000/" +export MC_HOST_mysilo="http://minioadmin:minioadmin@localhost:9000/" -(minio server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & +(silo server http://localhost:9000/tmp/xl/{1...10}/disk{0...1} 2>&1 >/dev/null) & pid=$! -mc ready myminio +mc ready mysilo -mc admin user add myminio/ minio123 minio123 +mc admin user add mysilo/ silo123 silo123 -mc admin policy create myminio/ deny-non-sse-kms-pol ./docs/iam/policies/deny-non-sse-kms-objects.json -mc admin policy create myminio/ deny-invalid-sse-kms-pol ./docs/iam/policies/deny-objects-with-invalid-sse-kms-key-id.json +mc admin policy create mysilo/ deny-non-sse-kms-pol ./docs/iam/policies/deny-non-sse-kms-objects.json +mc admin policy create mysilo/ deny-invalid-sse-kms-pol ./docs/iam/policies/deny-objects-with-invalid-sse-kms-key-id.json -mc admin policy attach myminio deny-non-sse-kms-pol --user minio123 -mc admin policy attach myminio deny-invalid-sse-kms-pol --user minio123 -mc admin policy attach myminio consoleAdmin --user minio123 +mc admin policy attach mysilo deny-non-sse-kms-pol --user silo123 +mc admin policy attach mysilo deny-invalid-sse-kms-pol --user silo123 +mc admin policy attach mysilo consoleAdmin --user silo123 -mc mb -l myminio/test-bucket -mc mb -l myminio/multi-key-poc +mc mb -l mysilo/test-bucket +mc mb -l mysilo/multi-key-poc -export MC_HOST_myminio1="http://minio123:minio123@localhost:9000/" +export MC_HOST_mysilo1="http://silo123:silo123@localhost:9000/" -mc cp /etc/issue myminio1/test-bucket +mc cp /etc/issue mysilo1/test-bucket ret=$? if [ $ret -ne 0 ]; then echo "BUG: PutObject to bucket: test-bucket should succeed. Failed" exit 1 fi -mc cp /etc/issue myminio1/multi-key-poc | grep -q "Insufficient permissions to access this path" +mc cp /etc/issue mysilo1/multi-key-poc | grep -q "Insufficient permissions to access this path" ret=$? if [ $ret -eq 0 ]; then echo "BUG: PutObject to bucket: multi-key-poc without sse-kms should fail. Succedded" exit 1 fi -mc cp /etc/hosts myminio1/multi-key-poc/hosts --enc-kms "myminio1/multi-key-poc/hosts=minio-default-key" +mc cp /etc/hosts mysilo1/multi-key-poc/hosts --enc-kms "mysilo1/multi-key-poc/hosts=minio-default-key" ret=$? if [ $ret -ne 0 ]; then echo "BUG: PutObject to bucket: multi-key-poc with valid sse-kms should succeed. Failed" exit 1 fi -mc cp /etc/issue myminio1/multi-key-poc/issue --enc-kms "myminio1/multi-key-poc/issue=minio-default-key-xxx" | grep "Insufficient permissions to access this path" +mc cp /etc/issue mysilo1/multi-key-poc/issue --enc-kms "mysilo1/multi-key-poc/issue=minio-default-key-xxx" | grep "Insufficient permissions to access this path" ret=$? if [ $ret -eq 0 ]; then echo "BUG: PutObject to bucket: multi-key-poc with invalid sse-kms should fail. Succeeded" diff --git a/docs/orchestration/docker-compose/docker-compose.yaml b/docs/orchestration/docker-compose/docker-compose.yaml index cfd7924a0..a5b18b2f5 100644 --- a/docs/orchestration/docker-compose/docker-compose.yaml +++ b/docs/orchestration/docker-compose/docker-compose.yaml @@ -1,9 +1,9 @@ version: '3.7' # Settings and configurations that are common for all containers -x-minio-common: &minio-common - image: quay.io/minio/minio:RELEASE.2025-09-06T17-38-46Z - command: server --console-address ":9001" http://minio{1...4}/data{1...2} +x-silo-common: &silo-common + image: docker.io/pgsty/silo:latest + command: server --console-address ":9001" http://silo{1...4}/data{1...2} expose: - "9000" - "9001" @@ -16,34 +16,34 @@ x-minio-common: &minio-common timeout: 5s retries: 5 -# starts 4 docker containers running minio server instances. +# starts 4 docker containers running silo server instances. # using nginx reverse proxy, load balancing, you can access # it through port 9000. services: - minio1: - <<: *minio-common - hostname: minio1 + silo1: + <<: *silo-common + hostname: silo1 volumes: - data1-1:/data1 - data1-2:/data2 - minio2: - <<: *minio-common - hostname: minio2 + silo2: + <<: *silo-common + hostname: silo2 volumes: - data2-1:/data1 - data2-2:/data2 - minio3: - <<: *minio-common - hostname: minio3 + silo3: + <<: *silo-common + hostname: silo3 volumes: - data3-1:/data1 - data3-2:/data2 - minio4: - <<: *minio-common - hostname: minio4 + silo4: + <<: *silo-common + hostname: silo4 volumes: - data4-1:/data1 - data4-2:/data2 @@ -57,10 +57,10 @@ services: - "9000:9000" - "9001:9001" depends_on: - - minio1 - - minio2 - - minio3 - - minio4 + - silo1 + - silo2 + - silo3 + - silo4 ## By default this config uses default local driver, ## For custom volumes replace with volume driver configuration. diff --git a/docs/orchestration/docker-compose/nginx.conf b/docs/orchestration/docker-compose/nginx.conf index cca82f6fe..a6b633db8 100644 --- a/docs/orchestration/docker-compose/nginx.conf +++ b/docs/orchestration/docker-compose/nginx.conf @@ -22,19 +22,19 @@ http { # include /etc/nginx/conf.d/*.conf; - upstream minio { - server minio1:9000; - server minio2:9000; - server minio3:9000; - server minio4:9000; + upstream silo { + server silo1:9000; + server silo2:9000; + server silo3:9000; + server silo4:9000; } upstream console { ip_hash; - server minio1:9001; - server minio2:9001; - server minio3:9001; - server minio4:9001; + server silo1:9001; + server silo2:9001; + server silo3:9001; + server silo4:9001; } server { @@ -63,7 +63,7 @@ http { proxy_set_header Connection ""; chunked_transfer_encoding off; - proxy_pass http://minio; + proxy_pass http://silo; } } diff --git a/docs/resiliency/docker-compose.yaml b/docs/resiliency/docker-compose.yaml index 842d766a1..53e6374a0 100644 --- a/docs/resiliency/docker-compose.yaml +++ b/docs/resiliency/docker-compose.yaml @@ -1,9 +1,9 @@ # Settings and configurations that are common for all containers -x-minio-common: &minio-common +x-silo-common: &silo-common build: context: ../../. - dockerfile: Dockerfile - command: server --console-address ":9001" http://minio{1...4}/data{1...8} + dockerfile: Dockerfile.goreleaser + command: server --console-address ":9001" http://silo{1...4}/data{1...8} expose: - "9000" - "9001" @@ -15,13 +15,13 @@ x-minio-common: &minio-common timeout: 5s retries: 5 -# starts 4 docker containers running minio server instances. +# Starts four containers running Silo server instances. # using nginx reverse proxy, load balancing, you can access # it through port 9000. services: - minio1: - <<: *minio-common - hostname: minio1 + silo1: + <<: *silo-common + hostname: silo1 volumes: - data1-1:/data1 - data1-2:/data2 @@ -32,9 +32,9 @@ services: - data1-7:/data7 - data1-8:/data8 - minio2: - <<: *minio-common - hostname: minio2 + silo2: + <<: *silo-common + hostname: silo2 volumes: - data2-1:/data1 - data2-2:/data2 @@ -45,9 +45,9 @@ services: - data2-7:/data7 - data2-8:/data8 - minio3: - <<: *minio-common - hostname: minio3 + silo3: + <<: *silo-common + hostname: silo3 volumes: - data3-1:/data1 - data3-2:/data2 @@ -58,9 +58,9 @@ services: - data3-7:/data7 - data3-8:/data8 - minio4: - <<: *minio-common - hostname: minio4 + silo4: + <<: *silo-common + hostname: silo4 volumes: - data4-1:/data1 - data4-2:/data2 @@ -80,10 +80,10 @@ services: - "9000:9000" - "9001:9001" depends_on: - - minio1 - - minio2 - - minio3 - - minio4 + - silo1 + - silo2 + - silo3 + - silo4 ## By default this config uses default local driver, ## For custom volumes replace with volume driver configuration. diff --git a/docs/resiliency/nginx.conf b/docs/resiliency/nginx.conf index cca82f6fe..a6b633db8 100644 --- a/docs/resiliency/nginx.conf +++ b/docs/resiliency/nginx.conf @@ -22,19 +22,19 @@ http { # include /etc/nginx/conf.d/*.conf; - upstream minio { - server minio1:9000; - server minio2:9000; - server minio3:9000; - server minio4:9000; + upstream silo { + server silo1:9000; + server silo2:9000; + server silo3:9000; + server silo4:9000; } upstream console { ip_hash; - server minio1:9001; - server minio2:9001; - server minio3:9001; - server minio4:9001; + server silo1:9001; + server silo2:9001; + server silo3:9001; + server silo4:9001; } server { @@ -63,7 +63,7 @@ http { proxy_set_header Connection ""; chunked_transfer_encoding off; - proxy_pass http://minio; + proxy_pass http://silo; } } diff --git a/docs/resiliency/resiliency-initial-script.sh b/docs/resiliency/resiliency-initial-script.sh index fcdca6fff..c6554b8d0 100755 --- a/docs/resiliency/resiliency-initial-script.sh +++ b/docs/resiliency/resiliency-initial-script.sh @@ -4,11 +4,11 @@ echo "script failed" >resiliency-initial.log # assume initial state -echo "sleep to wait for MinIO Server to be ready prior mc commands" +echo "sleep to wait for Silo Server to be ready prior mc commands" # https://github.com/minio/mc/issues/3599 MINIO_SERVER_URL="http://127.0.0.1:9000" -ALIAS_NAME=myminio +ALIAS_NAME=mysilo BUCKET="test-bucket" SRC_DIR="/tmp/data" INLINED_DIR="/tmp/inlined" diff --git a/docs/resiliency/resiliency-tests.sh b/docs/resiliency/resiliency-tests.sh index 12b093d35..c3cadc535 100755 --- a/docs/resiliency/resiliency-tests.sh +++ b/docs/resiliency/resiliency-tests.sh @@ -3,19 +3,8 @@ TESTS_RUN_STATUS=1 function cleanup() { - echo "Cleaning up MinIO deployment" - docker compose -f "${DOCKER_COMPOSE_FILE}" down --volumes - for container in $(docker ps -q); do - echo Removing docker $container - docker rm -f $container >/dev/null 2>&1 - docker wait $container - done -} - -function cleanup_and_prune() { - cleanup - docker system prune --volumes --force - docker image prune --all --force + echo "Cleaning up Silo deployment" + docker compose -f "${DOCKER_COMPOSE_FILE}" down --volumes --remove-orphans } function verify_resiliency() { @@ -56,53 +45,53 @@ function test_resiliency_success_with_server_down() { echo echo -e "${GREEN}Running test_resiliency_success_with_server_down ...${NC}" # Stop one node - docker stop resiliency-minio1-1 + docker stop resiliency-silo1-1 sleep 10 verify_resiliency "${FUNCNAME[0]}" # Finally restart the node - docker start resiliency-minio1-1 + docker start resiliency-silo1-1 - ./mc ready myminio + ./mc ready mysilo } function test_resiliency_failure_with_server_down_and_single_disk_offline() { echo echo -e "${GREEN}Running test_resiliency_failure_with_server_down_and_single_disk_offline ...${NC}" # Stop one node - docker stop resiliency-minio1-1 + docker stop resiliency-silo1-1 # In additional, suspend one more disk per set in order to induce a failure - docker exec resiliency-minio2-1 /bin/sh -c "mv /data2/.minio.sys /data2/.minio.bkp && touch /data2/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "mv /data6/.minio.sys /data6/.minio.bkp && touch /data6/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "mv /data2/.minio.sys /data2/.minio.bkp && touch /data2/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "mv /data6/.minio.sys /data6/.minio.bkp && touch /data6/.minio.sys" sleep 10 verify_resiliency_failure "${FUNCNAME[0]}" # Enable the disks back on nodes - docker exec resiliency-minio2-1 /bin/sh -c "rm -rf /data2/.minio.sys && mv /data2/.minio.bkp /data2/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "rm -rf /data6/.minio.sys && mv /data6/.minio.bkp /data6/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "rm -rf /data2/.minio.sys && mv /data2/.minio.bkp /data2/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "rm -rf /data6/.minio.sys && mv /data6/.minio.bkp /data6/.minio.sys" # Finally restart the node - docker start resiliency-minio1-1 - ./mc ready myminio + docker start resiliency-silo1-1 + ./mc ready mysilo } function test_resiliency_failure_with_servers_down() { echo echo -e "${GREEN}Running test_resiliency_failure_with_servers_down ...${NC}" # Stop two nodes - docker stop resiliency-minio1-1 - docker stop resiliency-minio2-1 + docker stop resiliency-silo1-1 + docker stop resiliency-silo2-1 sleep 10 verify_resiliency_failure "${FUNCNAME[0]}" # Restart the nodes - docker start resiliency-minio1-1 - docker start resiliency-minio2-1 + docker start resiliency-silo1-1 + docker start resiliency-silo2-1 - ./mc ready myminio + ./mc ready mysilo } function test_resiliency_success_with_disks_offline() { @@ -110,29 +99,29 @@ function test_resiliency_success_with_disks_offline() { echo -e "${GREEN}Running test_resiliency_success_with_disks_offline ...${NC}" # There are 8 disks on each node with EC:4 and two erasure sets. # We should be able to safely suspend one disk per set from each server. - docker exec resiliency-minio1-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" - docker exec resiliency-minio1-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" - docker exec resiliency-minio4-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" - docker exec resiliency-minio4-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" + docker exec resiliency-silo1-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" + docker exec resiliency-silo1-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" + docker exec resiliency-silo4-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" + docker exec resiliency-silo4-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" sleep 10 verify_resiliency "${FUNCNAME[0]}" # Finally enable the disks back on nodes - docker exec resiliency-minio1-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" - docker exec resiliency-minio1-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" - docker exec resiliency-minio4-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" - docker exec resiliency-minio4-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" + docker exec resiliency-silo1-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" + docker exec resiliency-silo1-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" + docker exec resiliency-silo4-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" + docker exec resiliency-silo4-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" - ./mc ready myminio + ./mc ready mysilo } function test_resiliency_failure_with_too_many_disks_offline() { @@ -141,33 +130,33 @@ function test_resiliency_failure_with_too_many_disks_offline() { # There are 8 disks on each node with EC:4 and two erasure sets. # We should be able to safely suspend one disk per set from each server. # suspending one additional disk from each set should cause failures - docker exec resiliency-minio1-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" - docker exec resiliency-minio4-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" - docker exec resiliency-minio1-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" - docker exec resiliency-minio4-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "mv /data2/.minio.sys /data2/.minio.bkp && touch /data2/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "mv /data6/.minio.sys /data6/.minio.bkp && touch /data6/.minio.sys" + docker exec resiliency-silo1-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" + docker exec resiliency-silo4-1 /bin/sh -c "mv /data1/.minio.sys /data1/.minio.bkp && touch /data1/.minio.sys" + docker exec resiliency-silo1-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" + docker exec resiliency-silo4-1 /bin/sh -c "mv /data5/.minio.sys /data5/.minio.bkp && touch /data5/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "mv /data2/.minio.sys /data2/.minio.bkp && touch /data2/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "mv /data6/.minio.sys /data6/.minio.bkp && touch /data6/.minio.sys" sleep 10 verify_resiliency_failure "${FUNCNAME[0]}" # Finally enable the disks back on nodes - docker exec resiliency-minio1-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" - docker exec resiliency-minio4-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" - docker exec resiliency-minio1-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" - docker exec resiliency-minio4-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" - docker exec resiliency-minio2-1 /bin/sh -c "rm -rf /data2/.minio.sys && mv /data2/.minio.bkp /data2/.minio.sys" - docker exec resiliency-minio3-1 /bin/sh -c "rm -rf /data6/.minio.sys && mv /data6/.minio.bkp /data6/.minio.sys" + docker exec resiliency-silo1-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" + docker exec resiliency-silo4-1 /bin/sh -c "rm -rf /data1/.minio.sys && mv /data1/.minio.bkp /data1/.minio.sys" + docker exec resiliency-silo1-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" + docker exec resiliency-silo4-1 /bin/sh -c "rm -rf /data5/.minio.sys && mv /data5/.minio.bkp /data5/.minio.sys" + docker exec resiliency-silo2-1 /bin/sh -c "rm -rf /data2/.minio.sys && mv /data2/.minio.bkp /data2/.minio.sys" + docker exec resiliency-silo3-1 /bin/sh -c "rm -rf /data6/.minio.sys && mv /data6/.minio.bkp /data6/.minio.sys" - ./mc ready myminio + ./mc ready mysilo } function find_erasure_set_for_file() { @@ -175,7 +164,7 @@ function find_erasure_set_for_file() { local FILE=$1 local DIR=$2 # Check for existence of file in erasure set 1 - docker exec resiliency-minio1-1 /bin/sh -c "stat /data1/test-bucket/$DIR/$FILE/xl.meta" >/dev/null 2>&1 + docker exec resiliency-silo1-1 /bin/sh -c "stat /data1/test-bucket/$DIR/$FILE/xl.meta" >/dev/null 2>&1 STATUS=$? if [ $STATUS -eq 0 ]; then DATA_DRIVE=1 @@ -183,7 +172,7 @@ function find_erasure_set_for_file() { if [ $DATA_DRIVE -eq -1 ]; then # Check for existence of file in erasure set 2 - docker exec resiliency-minio1-1 /bin/sh -c "stat /data5/test-bucket/$DIR/$FILE/xl.meta" >/dev/null 2>&1 + docker exec resiliency-silo1-1 /bin/sh -c "stat /data5/test-bucket/$DIR/$FILE/xl.meta" >/dev/null 2>&1 STATUS=$? if [ $STATUS -eq 0 ]; then DATA_DRIVE=5 @@ -208,28 +197,28 @@ function test_resiliency_healing_missing_xl_metas() { fi # Remove single xl.meta -- status still green - OUTPUT=$(docker exec resiliency-minio1-1 /bin/sh -c "rm /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo1-1 /bin/sh -c "rm /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/xl.meta") WANT='{ "before": { "color": "green", "missing": 1, "corrupted": 0 }, "after": { "color": "green", "missing": 0, "corrupted": 0 }, "args": {"file": "'${FILE}'", "dir": "'${DIR}'"} }' verify_resiliency_healing "${FUNCNAME[0]}" "${WANT}" # Remove two xl.meta's -- status becomes yellow - OUTPUT=$(docker exec resiliency-minio1-1 /bin/sh -c "rm /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/xl.meta") - OUTPUT=$(docker exec resiliency-minio2-1 /bin/sh -c "rm /data$((DATA_DRIVE + 1))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo1-1 /bin/sh -c "rm /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo2-1 /bin/sh -c "rm /data$((DATA_DRIVE + 1))/test-bucket/initial-data/$FILE/xl.meta") WANT='{ "before": { "color": "yellow", "missing": 2, "corrupted": 0 }, "after": { "color": "green", "missing": 0, "corrupted": 0 }, "args": {"file": "'${FILE}'", "dir": "'${DIR}'"} }' verify_resiliency_healing "${FUNCNAME[0]}" "${WANT}" # Remove three xl.meta's -- status becomes red (3 missing) - OUTPUT=$(docker exec resiliency-minio1-1 /bin/sh -c "rm /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/xl.meta") - OUTPUT=$(docker exec resiliency-minio2-1 /bin/sh -c "rm /data$((DATA_DRIVE + 1))/test-bucket/initial-data/$FILE/xl.meta") - OUTPUT=$(docker exec resiliency-minio3-1 /bin/sh -c "rm /data$((DATA_DRIVE + 2))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo1-1 /bin/sh -c "rm /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo2-1 /bin/sh -c "rm /data$((DATA_DRIVE + 1))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo3-1 /bin/sh -c "rm /data$((DATA_DRIVE + 2))/test-bucket/initial-data/$FILE/xl.meta") WANT='{ "before": { "color": "red", "missing": 3, "corrupted": 0 }, "after": { "color": "green", "missing": 0, "corrupted": 0 }, "args": {"file": "'${FILE}'", "dir": "'${DIR}'"} }' verify_resiliency_healing "${FUNCNAME[0]}" "${WANT}" # Remove four xl.meta's -- status becomes red (4 missing) - OUTPUT=$(docker exec resiliency-minio1-1 /bin/sh -c "rm /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/xl.meta") - OUTPUT=$(docker exec resiliency-minio2-1 /bin/sh -c "rm /data$((DATA_DRIVE + 1))/test-bucket/initial-data/$FILE/xl.meta") - OUTPUT=$(docker exec resiliency-minio3-1 /bin/sh -c "rm /data$((DATA_DRIVE + 2))/test-bucket/initial-data/$FILE/xl.meta") - OUTPUT=$(docker exec resiliency-minio4-1 /bin/sh -c "rm /data$((DATA_DRIVE + 3))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo1-1 /bin/sh -c "rm /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo2-1 /bin/sh -c "rm /data$((DATA_DRIVE + 1))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo3-1 /bin/sh -c "rm /data$((DATA_DRIVE + 2))/test-bucket/initial-data/$FILE/xl.meta") + OUTPUT=$(docker exec resiliency-silo4-1 /bin/sh -c "rm /data$((DATA_DRIVE + 3))/test-bucket/initial-data/$FILE/xl.meta") WANT='{ "before": { "color": "red", "missing": 4, "corrupted": 0 }, "after": { "color": "green", "missing": 0, "corrupted": 0 }, "args": {"file": "'${FILE}'", "dir": "'${DIR}'"} }' verify_resiliency_healing "${FUNCNAME[0]}" "${WANT}" } @@ -250,22 +239,22 @@ function test_resiliency_healing_truncated_parts() { fi # Truncate single part -- status still green - OUTPUT=$(docker exec resiliency-minio1-1 /bin/sh -c "truncate --size=10K /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/*/part.1") + OUTPUT=$(docker exec resiliency-silo1-1 /bin/sh -c "truncate --size=10K /data$((DATA_DRIVE))/test-bucket/initial-data/$FILE/*/part.1") WANT='{ "before": { "color": "green", "missing": 0, "corrupted": 1 }, "after": { "color": "green", "missing": 0, "corrupted": 0 }, "args": {"file": "'${FILE}'", "dir": "'${DIR}'"} }' verify_resiliency_healing "${FUNCNAME[0]}" "${WANT}" # Truncate two parts -- status becomes yellow (2 missing) - OUTPUT=$(docker exec resiliency-minio2-1 /bin/sh -c "truncate --size=10K /data{$((DATA_DRIVE))..$((DATA_DRIVE + 1))}/test-bucket/initial-data/$FILE/*/part.1") + OUTPUT=$(docker exec resiliency-silo2-1 /bin/sh -c "truncate --size=10K /data{$((DATA_DRIVE))..$((DATA_DRIVE + 1))}/test-bucket/initial-data/$FILE/*/part.1") WANT='{ "before": { "color": "yellow", "missing": 0, "corrupted": 2 }, "after": { "color": "green", "missing": 0, "corrupted": 0 }, "args": {"file": "'${FILE}'", "dir": "'${DIR}'"} }' verify_resiliency_healing "${FUNCNAME[0]}" "${WANT}" # Truncate three parts -- status becomes red (3 missing) - OUTPUT=$(docker exec resiliency-minio3-1 /bin/sh -c "truncate --size=10K /data{$((DATA_DRIVE))..$((DATA_DRIVE + 2))}/test-bucket/initial-data/$FILE/*/part.1") + OUTPUT=$(docker exec resiliency-silo3-1 /bin/sh -c "truncate --size=10K /data{$((DATA_DRIVE))..$((DATA_DRIVE + 2))}/test-bucket/initial-data/$FILE/*/part.1") WANT='{ "before": { "color": "red", "missing": 0, "corrupted": 3 }, "after": { "color": "green", "missing": 0, "corrupted": 0 }, "args": {"file": "'${FILE}'", "dir": "'${DIR}'"} }' verify_resiliency_healing "${FUNCNAME[0]}" "${WANT}" # Truncate four parts -- status becomes red (4 missing) - OUTPUT=$(docker exec resiliency-minio4-1 /bin/sh -c "truncate --size=10K /data{$((DATA_DRIVE))..$((DATA_DRIVE + 3))}/test-bucket/initial-data/$FILE/*/part.1") + OUTPUT=$(docker exec resiliency-silo4-1 /bin/sh -c "truncate --size=10K /data{$((DATA_DRIVE))..$((DATA_DRIVE + 3))}/test-bucket/initial-data/$FILE/*/part.1") WANT='{ "before": { "color": "red", "missing": 0, "corrupted": 4 }, "after": { "color": "green", "missing": 0, "corrupted": 0 }, "args": {"file": "'${FILE}'", "dir": "'${DIR}'"} }' verify_resiliency_healing "${FUNCNAME[0]}" "${WANT}" } @@ -275,19 +264,19 @@ function induce_bitrot() { local DIR=$2 local FILE=$3 # Figure out the UUID of the directory where the `part.*` files are stored - UUID=$(docker exec resiliency-minio$NODE-1 /bin/sh -c "ls -l $DIR/test-bucket/initial-data/$FILE/*/part.1") + UUID=$(docker exec resiliency-silo$NODE-1 /bin/sh -c "ls -l $DIR/test-bucket/initial-data/$FILE/*/part.1") UUID=$(echo $UUID | cut -d " " -f 9 | cut -d "/" -f 6) # Determine head and tail size of file where we will introduce bitrot - FILE_SIZE=$(docker exec resiliency-minio$NODE-1 /bin/sh -c "stat --printf="%s" $DIR/test-bucket/initial-data/$FILE/$UUID/part.1") + FILE_SIZE=$(docker exec resiliency-silo$NODE-1 /bin/sh -c "stat --printf="%s" $DIR/test-bucket/initial-data/$FILE/$UUID/part.1") TAIL_SIZE=$((FILE_SIZE - 32 * 2)) # Extract head and tail of file - $(docker exec resiliency-minio$NODE-1 /bin/sh -c "cat $DIR/test-bucket/initial-data/$FILE/$UUID/part.1 | head --bytes 32 > /tmp/head") - $(docker exec resiliency-minio$NODE-1 /bin/sh -c "cat $DIR/test-bucket/initial-data/$FILE/$UUID/part.1 | tail --bytes $TAIL_SIZE > /tmp/tail") + $(docker exec resiliency-silo$NODE-1 /bin/sh -c "cat $DIR/test-bucket/initial-data/$FILE/$UUID/part.1 | head --bytes 32 > /tmp/head") + $(docker exec resiliency-silo$NODE-1 /bin/sh -c "cat $DIR/test-bucket/initial-data/$FILE/$UUID/part.1 | tail --bytes $TAIL_SIZE > /tmp/tail") # Corrupt the part by writing head twice followed by tail - $(docker exec resiliency-minio$NODE-1 /bin/sh -c "cat /tmp/head /tmp/head /tmp/tail > $DIR/test-bucket/initial-data/$FILE/$UUID/part.1") + $(docker exec resiliency-silo$NODE-1 /bin/sh -c "cat /tmp/head /tmp/head /tmp/tail > $DIR/test-bucket/initial-data/$FILE/$UUID/part.1") } function test_resiliency_healing_induced_bitrot() { @@ -338,15 +327,15 @@ function induce_bitrot_for_xlmeta() { local FILE=$3 # Determine head and tail size of file where we will introduce bitrot - FILE_SIZE=$(docker exec resiliency-minio$NODE-1 /bin/sh -c "stat --printf="%s" $DIR/test-bucket/inlined-data/$FILE/xl.meta") + FILE_SIZE=$(docker exec resiliency-silo$NODE-1 /bin/sh -c "stat --printf="%s" $DIR/test-bucket/inlined-data/$FILE/xl.meta") HEAD_SIZE=$((FILE_SIZE - 32 * 2)) # Extract head and tail of file - $(docker exec resiliency-minio$NODE-1 /bin/sh -c "cat $DIR/test-bucket/inlined-data/$FILE/xl.meta | head --bytes $HEAD_SIZE > /head") - $(docker exec resiliency-minio$NODE-1 /bin/sh -c "cat $DIR/test-bucket/inlined-data/$FILE/xl.meta | tail --bytes 32 > /tail") + $(docker exec resiliency-silo$NODE-1 /bin/sh -c "cat $DIR/test-bucket/inlined-data/$FILE/xl.meta | head --bytes $HEAD_SIZE > /head") + $(docker exec resiliency-silo$NODE-1 /bin/sh -c "cat $DIR/test-bucket/inlined-data/$FILE/xl.meta | tail --bytes 32 > /tail") # Corrupt xl.meta by writing head followed by tail twice - $(docker exec resiliency-minio$NODE-1 /bin/sh -c "cat /head /tail tmp/tail > $DIR/test-bucket/inlined-data/$FILE/xl.meta") + $(docker exec resiliency-silo$NODE-1 /bin/sh -c "cat /head /tail tmp/tail > $DIR/test-bucket/inlined-data/$FILE/xl.meta") } function test_resiliency_healing_inlined_metadata() { @@ -393,21 +382,21 @@ function test_resiliency_healing_inlined_metadata() { function main() { if [ ! -f ./mc ]; then - wget -q https://dl.minio.io/client/mc/release/linux-amd64/mc && chmod +x ./mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi - export MC_HOST_myminio=http://minioadmin:minioadmin@localhost:9000 + export MC_HOST_mysilo=http://minioadmin:minioadmin@localhost:9000 - cleanup_and_prune + cleanup - # Run resiliency tests against MinIO + # Run resiliency tests against Silo docker compose -f "${DOCKER_COMPOSE_FILE}" up -d # Initial setup docs/resiliency/resiliency-initial-script.sh RESULT=$(grep "script passed" resiliency-verify-failure.log # assume initial state -ALIAS_NAME=myminio +ALIAS_NAME=mysilo BUCKET="test-bucket" DEST_DIR="/tmp/dest" diff --git a/docs/resiliency/resiliency-verify-healing-script.sh b/docs/resiliency/resiliency-verify-healing-script.sh index 8127d03d1..fc85d1ddf 100755 --- a/docs/resiliency/resiliency-verify-healing-script.sh +++ b/docs/resiliency/resiliency-verify-healing-script.sh @@ -8,7 +8,7 @@ DIR=$(echo $1 | jq -r '.args.dir') DEEP=$(echo $1 | jq -r '.args.deep') WANT=$(echo $1 | jq 'del(.args)') # ... and remove args from wanted result -ALIAS_NAME=myminio +ALIAS_NAME=mysilo BUCKET="test-bucket" JQUERY='select(.name=="'"${BUCKET}"'/'"${DIR}"'/'"${FILE}"'") | {"before":{"color": .before.color, "missing": .before.missing, "corrupted": .before.corrupted},"after":{"color": .after.color, "missing": .after.missing, "corrupted": .after.corrupted}}' if [ "$DEEP" = "true" ]; then diff --git a/docs/resiliency/resiliency-verify-script.sh b/docs/resiliency/resiliency-verify-script.sh index 50220b0a2..05e14049b 100755 --- a/docs/resiliency/resiliency-verify-script.sh +++ b/docs/resiliency/resiliency-verify-script.sh @@ -2,7 +2,7 @@ echo "script failed" >resiliency-verify.log # assume initial state -ALIAS_NAME=myminio +ALIAS_NAME=mysilo BUCKET="test-bucket" SRC_DIR="/tmp/data" DEST_DIR="/tmp/dest" diff --git a/docs/select/select.py b/docs/select/select.py index 3c9a5e856..ef5fc7e0a 100644 --- a/docs/select/select.py +++ b/docs/select/select.py @@ -4,7 +4,7 @@ import boto3 s3 = boto3.client('s3', endpoint_url='http://localhost:9000', aws_access_key_id='minio', - aws_secret_access_key='minio123', + aws_secret_access_key='silo123', region_name='us-east-1') r = s3.select_object_content( diff --git a/docs/site-replication/ldap.yaml b/docs/site-replication/ldap.yaml index b1e1c3090..1de8fbc14 100644 --- a/docs/site-replication/ldap.yaml +++ b/docs/site-replication/ldap.yaml @@ -9,6 +9,6 @@ services: - "389:389" - "636:636" environment: - LDAP_ORGANIZATION: "MinIO Inc" + LDAP_ORGANIZATION: "Silo Inc" LDAP_DOMAIN: "min.io" LDAP_ADMIN_PASSWORD: "admin" diff --git a/docs/site-replication/run-multi-site-ldap.sh b/docs/site-replication/run-multi-site-ldap.sh index 351ca92a3..02327e339 100755 --- a/docs/site-replication/run-multi-site-ldap.sh +++ b/docs/site-replication/run-multi-site-ldap.sh @@ -4,24 +4,24 @@ exit_1() { cleanup - echo "minio1 ============" - cat /tmp/minio1_1.log - cat /tmp/minio1_2.log - echo "minio2 ============" - cat /tmp/minio2_1.log - cat /tmp/minio2_2.log - echo "minio3 ============" - cat /tmp/minio3_1.log - cat /tmp/minio3_2.log + echo "silo1 ============" + cat /tmp/silo1_1.log + cat /tmp/silo1_2.log + echo "silo2 ============" + cat /tmp/silo2_1.log + cat /tmp/silo2_2.log + echo "silo3 ============" + cat /tmp/silo3_1.log + cat /tmp/silo3_2.log exit 1 } cleanup() { - echo "Cleaning up instances of MinIO" - pkill minio - pkill -9 minio - rm -rf /tmp/minio-ldap-idp{1,2,3} + echo "Cleaning up instances of Silo" + pkill silo + pkill -9 silo + rm -rf /tmp/silo-ldap-idp{1,2,3} } cleanup @@ -34,7 +34,7 @@ unset MINIO_KMS_KES_KEY_NAME export MINIO_CI_CD=1 export MINIO_BROWSER=off export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" +export MINIO_ROOT_PASSWORD="silo123" export MINIO_KMS_AUTO_ENCRYPTION=off export MINIO_PROMETHEUS_AUTH_TYPE=public export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= @@ -48,73 +48,72 @@ export MINIO_IDENTITY_LDAP_GROUP_SEARCH_BASE_DN="ou=swengg,dc=min,dc=io" export MINIO_IDENTITY_LDAP_GROUP_SEARCH_FILTER="(&(objectclass=groupOfNames)(member=%d))" if [ ! -f ./mc ]; then - wget -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi -minio server --config-dir /tmp/minio-ldap --address ":9001" /tmp/minio-ldap-idp1/{1...4} >/tmp/minio1_1.log 2>&1 & +silo server --config-dir /tmp/silo-ldap --address ":9001" /tmp/silo-ldap-idp1/{1...4} >/tmp/silo1_1.log 2>&1 & site1_pid=$! -minio server --config-dir /tmp/minio-ldap --address ":9002" /tmp/minio-ldap-idp2/{1...4} >/tmp/minio2_1.log 2>&1 & +silo server --config-dir /tmp/silo-ldap --address ":9002" /tmp/silo-ldap-idp2/{1...4} >/tmp/silo2_1.log 2>&1 & site2_pid=$! -minio server --config-dir /tmp/minio-ldap --address ":9003" /tmp/minio-ldap-idp3/{1...4} >/tmp/minio3_1.log 2>&1 & +silo server --config-dir /tmp/silo-ldap --address ":9003" /tmp/silo-ldap-idp3/{1...4} >/tmp/silo3_1.log 2>&1 & site3_pid=$! -export MC_HOST_minio1=http://minio:minio123@localhost:9001 -export MC_HOST_minio2=http://minio:minio123@localhost:9002 -export MC_HOST_minio3=http://minio:minio123@localhost:9003 +export MC_HOST_silo1=http://minio:silo123@localhost:9001 +export MC_HOST_silo2=http://minio:silo123@localhost:9002 +export MC_HOST_silo3=http://minio:silo123@localhost:9003 -./mc ready minio1 -./mc ready minio2 -./mc ready minio3 +./mc ready silo1 +./mc ready silo2 +./mc ready silo3 -./mc admin replicate add minio1 minio2 minio3 +./mc admin replicate add silo1 silo2 silo3 -./mc idp ldap policy attach minio1 consoleAdmin --user="uid=dillon,ou=people,ou=swengg,dc=min,dc=io" +./mc idp ldap policy attach silo1 consoleAdmin --user="uid=dillon,ou=people,ou=swengg,dc=min,dc=io" sleep 5 -./mc admin user info minio2 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" -./mc admin user info minio3 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" -./mc admin policy create minio1 rw ./docs/site-replication/rw.json +./mc admin user info silo2 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" +./mc admin user info silo3 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" +./mc admin policy create silo1 rw ./docs/site-replication/rw.json sleep 5 -./mc admin policy info minio2 rw >/dev/null 2>&1 -./mc admin policy info minio3 rw >/dev/null 2>&1 +./mc admin policy info silo2 rw >/dev/null 2>&1 +./mc admin policy info silo3 rw >/dev/null 2>&1 -./mc admin policy remove minio3 rw +./mc admin policy remove silo3 rw sleep 10 -./mc admin policy info minio1 rw +./mc admin policy info silo1 rw if [ $? -eq 0 ]; then echo "expecting the command to fail, exiting.." exit_1 fi -./mc admin policy info minio2 rw +./mc admin policy info silo2 rw if [ $? -eq 0 ]; then echo "expecting the command to fail, exiting.." exit_1 fi -./mc admin user info minio1 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" +./mc admin user info silo1 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" if [ $? -ne 0 ]; then echo "policy mapping missing, exiting.." exit_1 fi -./mc admin user info minio2 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" +./mc admin user info silo2 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" if [ $? -ne 0 ]; then echo "policy mapping missing, exiting.." exit_1 fi -./mc admin user info minio3 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" +./mc admin user info silo3 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" if [ $? -ne 0 ]; then echo "policy mapping missing, exiting.." exit_1 fi # LDAP simple user -./mc admin user svcacct add minio2 dillon --access-key testsvc --secret-key testsvc123 +./mc admin user svcacct add silo2 dillon --access-key testsvc --secret-key testsvc123 if [ $? -ne 0 ]; then echo "adding svc account failed, exiting.." exit_1 @@ -122,33 +121,33 @@ fi sleep 10 -./mc idp ldap policy entities minio1 -./mc idp ldap policy entities minio2 -./mc idp ldap policy entities minio3 +./mc idp ldap policy entities silo1 +./mc idp ldap policy entities silo2 +./mc idp ldap policy entities silo3 -./mc admin service restart minio1 -./mc admin service restart minio2 -./mc admin service restart minio3 +./mc admin service restart silo1 +./mc admin service restart silo2 +./mc admin service restart silo3 sleep 10 -./mc idp ldap policy entities minio1 -./mc idp ldap policy entities minio2 -./mc idp ldap policy entities minio3 +./mc idp ldap policy entities silo1 +./mc idp ldap policy entities silo2 +./mc idp ldap policy entities silo3 -./mc admin user svcacct info minio1 testsvc +./mc admin user svcacct info silo1 testsvc if [ $? -ne 0 ]; then echo "svc account not mirrored, exiting.." exit_1 fi -./mc admin user svcacct info minio2 testsvc +./mc admin user svcacct info silo2 testsvc if [ $? -ne 0 ]; then echo "svc account not mirrored, exiting.." exit_1 fi -./mc admin user svcacct info minio3 testsvc +./mc admin user svcacct info silo3 testsvc if [ $? -ne 0 ]; then echo "svc account not mirrored, exiting.." exit_1 @@ -158,25 +157,25 @@ MC_HOST_svc1=http://testsvc:testsvc123@localhost:9001 ./mc ls svc1 MC_HOST_svc2=http://testsvc:testsvc123@localhost:9002 ./mc ls svc2 MC_HOST_svc3=http://testsvc:testsvc123@localhost:9003 ./mc ls svc3 -./mc admin user svcacct rm minio1 testsvc +./mc admin user svcacct rm silo1 testsvc if [ $? -ne 0 ]; then echo "removing svc account failed, exiting.." exit_1 fi -./mc admin user info minio1 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" +./mc admin user info silo1 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" if [ $? -ne 0 ]; then echo "policy mapping missing, exiting.." exit_1 fi -./mc admin user info minio2 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" +./mc admin user info silo2 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" if [ $? -ne 0 ]; then echo "policy mapping missing, exiting.." exit_1 fi -./mc admin user info minio3 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" +./mc admin user info silo3 "uid=dillon,ou=people,ou=swengg,dc=min,dc=io" if [ $? -ne 0 ]; then echo "policy mapping missing, exiting.." exit_1 @@ -184,154 +183,154 @@ fi sleep 10 -./mc admin user svcacct info minio2 testsvc +./mc admin user svcacct info silo2 testsvc if [ $? -eq 0 ]; then echo "svc account found after delete, exiting.." exit_1 fi -./mc admin user svcacct info minio3 testsvc +./mc admin user svcacct info silo3 testsvc if [ $? -eq 0 ]; then echo "svc account found after delete, exiting.." exit_1 fi -./mc mb minio1/newbucket -# copy large upload to newbucket on minio1 +./mc mb silo1/newbucket +# copy large upload to newbucket on silo1 truncate -s 17M lrgfile expected_checksum=$(cat ./lrgfile | md5sum) -./mc cp ./lrgfile minio1/newbucket +./mc cp ./lrgfile silo1/newbucket -# create a bucket bucket2 on minio1. -./mc mb minio1/bucket2 +# create a bucket bucket2 on silo1. +./mc mb silo1/bucket2 sleep 5 -./mc stat --no-list minio2/newbucket +./mc stat --no-list silo2/newbucket if [ $? -ne 0 ]; then echo "expecting bucket to be present. exiting.." exit_1 fi -./mc stat --no-list minio3/newbucket +./mc stat --no-list silo3/newbucket if [ $? -ne 0 ]; then echo "expecting bucket to be present. exiting.." exit_1 fi -./mc cp README.md minio2/newbucket/ +./mc cp README.md silo2/newbucket/ sleep 5 -./mc stat --no-list minio1/newbucket/README.md +./mc stat --no-list silo1/newbucket/README.md if [ $? -ne 0 ]; then echo "expecting object to be present. exiting.." exit_1 fi -./mc stat --no-list minio3/newbucket/README.md +./mc stat --no-list silo3/newbucket/README.md if [ $? -ne 0 ]; then echo "expecting object to be present. exiting.." exit_1 fi sleep 10 -./mc stat --no-list minio3/newbucket/lrgfile +./mc stat --no-list silo3/newbucket/lrgfile if [ $? -ne 0 ]; then echo "expected object to be present, exiting.." exit_1 fi -actual_checksum=$(./mc cat minio3/newbucket/lrgfile | md5sum) +actual_checksum=$(./mc cat silo3/newbucket/lrgfile | md5sum) if [ "${expected_checksum}" != "${actual_checksum}" ]; then echo "replication failed on multipart objects expected ${expected_checksum} got ${actual_checksum}" exit fi rm ./lrgfile -./mc rm -r --versions --force minio1/newbucket/lrgfile +./mc rm -r --versions --force silo1/newbucket/lrgfile if [ $? -ne 0 ]; then echo "expected object to be present, exiting.." exit_1 fi sleep 5 -./mc stat --no-list minio1/newbucket/lrgfile +./mc stat --no-list silo1/newbucket/lrgfile if [ $? -eq 0 ]; then echo "expected object to be deleted permanently after replication, exiting.." exit_1 fi -vID=$(./mc stat --no-list minio2/newbucket/README.md --json | jq .versionID) +vID=$(./mc stat --no-list silo2/newbucket/README.md --json | jq .versionID) if [ $? -ne 0 ]; then echo "expecting object to be present. exiting.." exit_1 fi -./mc tag set --version-id "${vID}" minio2/newbucket/README.md "key=val" +./mc tag set --version-id "${vID}" silo2/newbucket/README.md "key=val" if [ $? -ne 0 ]; then echo "expecting tag set to be successful. exiting.." exit_1 fi sleep 5 -./mc tag remove --version-id "${vID}" minio2/newbucket/README.md +./mc tag remove --version-id "${vID}" silo2/newbucket/README.md if [ $? -ne 0 ]; then echo "expecting tag removal to be successful. exiting.." exit_1 fi sleep 5 -replStatus_minio2=$(./mc stat --no-list minio2/newbucket/README.md --json | jq -r .replicationStatus) +replStatus_silo2=$(./mc stat --no-list silo2/newbucket/README.md --json | jq -r .replicationStatus) if [ $? -ne 0 ]; then echo "expecting object to be present. exiting.." exit_1 fi -if [ ${replStatus_minio2} != "COMPLETED" ]; then +if [ ${replStatus_silo2} != "COMPLETED" ]; then echo "expected tag removal to have replicated, exiting..." exit_1 fi -./mc rm minio3/newbucket/README.md +./mc rm silo3/newbucket/README.md sleep 5 -./mc stat --no-list minio2/newbucket/README.md +./mc stat --no-list silo2/newbucket/README.md if [ $? -eq 0 ]; then echo "expected file to be deleted, exiting.." exit_1 fi -./mc stat --no-list minio1/newbucket/README.md +./mc stat --no-list silo1/newbucket/README.md if [ $? -eq 0 ]; then echo "expected file to be deleted, exiting.." exit_1 fi -./mc mb --with-lock minio3/newbucket-olock +./mc mb --with-lock silo3/newbucket-olock sleep 5 -enabled_minio2=$(./mc stat --json minio2/newbucket-olock | jq -r .ObjectLock.enabled) +enabled_silo2=$(./mc stat --json silo2/newbucket-olock | jq -r .ObjectLock.enabled) if [ $? -ne 0 ]; then echo "expected bucket to be mirrored with object-lock but not present, exiting..." exit_1 fi -if [ "${enabled_minio2}" != "Enabled" ]; then +if [ "${enabled_silo2}" != "Enabled" ]; then echo "expected bucket to be mirrored with object-lock enabled, exiting..." exit_1 fi -enabled_minio1=$(./mc stat --json minio1/newbucket-olock | jq -r .ObjectLock.enabled) +enabled_silo1=$(./mc stat --json silo1/newbucket-olock | jq -r .ObjectLock.enabled) if [ $? -ne 0 ]; then echo "expected bucket to be mirrored with object-lock but not present, exiting..." exit_1 fi -if [ "${enabled_minio1}" != "Enabled" ]; then +if [ "${enabled_silo1}" != "Enabled" ]; then echo "expected bucket to be mirrored with object-lock enabled, exiting..." exit_1 fi # "Test if most recent tag update is replicated" -./mc tag set minio2/newbucket "key=val1" +./mc tag set silo2/newbucket "key=val1" if [ $? -ne 0 ]; then echo "expecting tag set to be successful. exiting.." exit_1 @@ -339,49 +338,49 @@ fi sleep 10 -val=$(./mc tag list minio1/newbucket --json | jq -r .tagset | jq -r .key) +val=$(./mc tag list silo1/newbucket --json | jq -r .tagset | jq -r .key) if [ "${val}" != "val1" ]; then echo "expected bucket tag to have replicated, exiting..." exit_1 fi -# stop minio1 +# stop silo1 kill -9 ${site1_pid} -# Update tag on minio2/newbucket when minio1 is down -./mc tag set minio2/newbucket "key=val2" -# create a new bucket on minio2. This should replicate to minio1 after it comes online. -./mc mb minio2/newbucket2 -# delete bucket2 on minio2. This should replicate to minio1 after it comes online. -./mc rb minio2/bucket2 +# Update tag on silo2/newbucket when silo1 is down +./mc tag set silo2/newbucket "key=val2" +# create a new bucket on silo2. This should replicate to silo1 after it comes online. +./mc mb silo2/newbucket2 +# delete bucket2 on silo2. This should replicate to silo1 after it comes online. +./mc rb silo2/bucket2 -# Restart minio1 instance -minio server --config-dir /tmp/minio-ldap --address ":9001" /tmp/minio-ldap-idp1/{1...4} >/tmp/minio1_1.log 2>&1 & +# Restart silo1 instance +silo server --config-dir /tmp/silo-ldap --address ":9001" /tmp/silo-ldap-idp1/{1...4} >/tmp/silo1_1.log 2>&1 & sleep 200 -# Test whether most recent tag update on minio2 is replicated to minio1 -val=$(./mc tag list minio1/newbucket --json | jq -r .tagset | jq -r .key) +# Test whether most recent tag update on silo2 is replicated to silo1 +val=$(./mc tag list silo1/newbucket --json | jq -r .tagset | jq -r .key) if [ "${val}" != "val2" ]; then echo "expected bucket tag to have replicated, exiting..." exit_1 fi -# Test if bucket created/deleted when minio1 is down healed -diff -q <(./mc ls minio1) <(./mc ls minio2) 1>/dev/null +# Test if bucket created/deleted when silo1 is down healed +diff -q <(./mc ls silo1) <(./mc ls silo2) 1>/dev/null if [ $? -ne 0 ]; then echo "expected 'bucket2' delete and 'newbucket2' creation to have replicated, exiting..." exit_1 fi # force a resync after removing all site replication -./mc admin replicate rm --all --force minio1 -./mc rb minio2 --force --dangerous -./mc admin replicate add minio1 minio2 -./mc admin replicate resync start minio1 minio2 +./mc admin replicate rm --all --force silo1 +./mc rb silo2 --force --dangerous +./mc admin replicate add silo1 silo2 +./mc admin replicate resync start silo1 silo2 sleep 30 -./mc ls -r --versions minio1/newbucket >/tmp/minio1.txt -./mc ls -r --versions minio2/newbucket >/tmp/minio2.txt +./mc ls -r --versions silo1/newbucket >/tmp/silo1.txt +./mc ls -r --versions silo2/newbucket >/tmp/silo2.txt -out=$(diff -qpruN /tmp/minio1.txt /tmp/minio2.txt) +out=$(diff -qpruN /tmp/silo1.txt /tmp/silo2.txt) ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected no missing entries after replication resync: $out" diff --git a/docs/site-replication/run-multi-site-minio-idp.sh b/docs/site-replication/run-multi-site-minio-idp.sh deleted file mode 100755 index 48df4f241..000000000 --- a/docs/site-replication/run-multi-site-minio-idp.sh +++ /dev/null @@ -1,458 +0,0 @@ -#!/usr/bin/env bash - -# shellcheck disable=SC2120 -exit_1() { - cleanup - - echo "minio1 ============" - cat /tmp/minio1_1.log - cat /tmp/minio1_2.log - echo "minio2 ============" - cat /tmp/minio2_1.log - cat /tmp/minio2_2.log - echo "minio3 ============" - cat /tmp/minio3_1.log - cat /tmp/minio3_2.log - - exit 1 -} - -cleanup() { - echo "Cleaning up instances of MinIO" - pkill minio - pkill -9 minio - rm -rf /tmp/minio-internal-idp{1,2,3} -} - -cleanup - -unset MINIO_KMS_KES_CERT_FILE -unset MINIO_KMS_KES_KEY_FILE -unset MINIO_KMS_KES_ENDPOINT -unset MINIO_KMS_KES_KEY_NAME - -export MINIO_CI_CD=1 -export MINIO_BROWSER=off -export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" -export MINIO_KMS_AUTO_ENCRYPTION=off -export MINIO_PROMETHEUS_AUTH_TYPE=public -export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= - -if [ ! -f ./mc ]; then - wget -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc -fi - -minio server --config-dir /tmp/minio-internal --address ":9001" http://localhost:9001/tmp/minio-internal-idp1/{1...4} http://localhost:9010/tmp/minio-internal-idp1/{5...8} >/tmp/minio1_1.log 2>&1 & -site1_pid1=$! -minio server --config-dir /tmp/minio-internal --address ":9010" http://localhost:9001/tmp/minio-internal-idp1/{1...4} http://localhost:9010/tmp/minio-internal-idp1/{5...8} >/tmp/minio1_2.log 2>&1 & -site1_pid2=$! - -minio server --config-dir /tmp/minio-internal --address ":9002" http://localhost:9002/tmp/minio-internal-idp2/{1...4} http://localhost:9020/tmp/minio-internal-idp2/{5...8} >/tmp/minio2_1.log 2>&1 & -site2_pid1=$! -minio server --config-dir /tmp/minio-internal --address ":9020" http://localhost:9002/tmp/minio-internal-idp2/{1...4} http://localhost:9020/tmp/minio-internal-idp2/{5...8} >/tmp/minio2_2.log 2>&1 & -site2_pid2=$! - -minio server --config-dir /tmp/minio-internal --address ":9003" http://localhost:9003/tmp/minio-internal-idp3/{1...4} http://localhost:9030/tmp/minio-internal-idp3/{5...8} >/tmp/minio3_1.log 2>&1 & -site3_pid1=$! -minio server --config-dir /tmp/minio-internal --address ":9030" http://localhost:9003/tmp/minio-internal-idp3/{1...4} http://localhost:9030/tmp/minio-internal-idp3/{5...8} >/tmp/minio3_2.log 2>&1 & -site3_pid2=$! - -export MC_HOST_minio1=http://minio:minio123@localhost:9001 -export MC_HOST_minio2=http://minio:minio123@localhost:9002 -export MC_HOST_minio3=http://minio:minio123@localhost:9003 - -export MC_HOST_minio10=http://minio:minio123@localhost:9010 -export MC_HOST_minio20=http://minio:minio123@localhost:9020 -export MC_HOST_minio30=http://minio:minio123@localhost:9030 - -./mc ready minio1 -./mc ready minio2 -./mc ready minio3 -./mc ready minio10 -./mc ready minio20 -./mc ready minio30 - -./mc admin replicate add minio1 minio2 - -site_enabled=$(./mc admin replicate info minio1) -site_enabled_peer=$(./mc admin replicate info minio10) - -[[ $site_enabled =~ "is not enabled" ]] && { - echo "expected both peers to have same information" - exit_1 -} - -[[ $site_enabled_peer =~ "is not enabled" ]] && { - echo "expected both peers to have same information" - exit_1 -} - -./mc admin user add minio1 foobar foo12345 - -## add foobar-g group with foobar -./mc admin group add minio2 foobar-g foobar - -./mc admin policy attach minio1 consoleAdmin --user=foobar -sleep 5 - -./mc admin user info minio2 foobar - -./mc admin group info minio1 foobar-g - -./mc admin policy create minio1 rw ./docs/site-replication/rw.json - -sleep 5 -./mc admin policy info minio2 rw >/dev/null 2>&1 - -./mc admin replicate status minio1 - -## Add a new empty site -./mc admin replicate add minio1 minio2 minio3 - -sleep 10 - -./mc admin policy info minio3 rw >/dev/null 2>&1 - -./mc admin policy remove minio3 rw - -./mc admin replicate status minio3 - -sleep 10 - -./mc admin policy info minio1 rw -if [ $? -eq 0 ]; then - echo "expecting the command to fail, exiting.." - exit_1 -fi - -./mc admin policy info minio2 rw -if [ $? -eq 0 ]; then - echo "expecting the command to fail, exiting.." - exit_1 -fi - -./mc admin policy info minio3 rw -if [ $? -eq 0 ]; then - echo "expecting the command to fail, exiting.." - exit_1 -fi - -./mc admin user info minio1 foobar -if [ $? -ne 0 ]; then - echo "policy mapping missing on 'minio1', exiting.." - exit_1 -fi - -./mc admin user info minio2 foobar -if [ $? -ne 0 ]; then - echo "policy mapping missing on 'minio2', exiting.." - exit_1 -fi - -./mc admin user info minio3 foobar -if [ $? -ne 0 ]; then - echo "policy mapping missing on 'minio3', exiting.." - exit_1 -fi - -./mc admin group info minio3 foobar-g -if [ $? -ne 0 ]; then - echo "group mapping missing on 'minio3', exiting.." - exit_1 -fi - -./mc admin user svcacct add minio2 foobar --access-key testsvc --secret-key testsvc123 -if [ $? -ne 0 ]; then - echo "adding svc account failed, exiting.." - exit_1 -fi - -./mc admin user svcacct add minio2 minio --access-key testsvc2 --secret-key testsvc123 -if [ $? -ne 0 ]; then - echo "adding root svc account testsvc2 failed, exiting.." - exit_1 -fi - -sleep 10 - -export MC_HOST_rootsvc=http://testsvc2:testsvc123@localhost:9002 -./mc ls rootsvc -if [ $? -ne 0 ]; then - echo "root service account not inherited root permissions, exiting.." - exit_1 -fi - -./mc admin user svcacct info minio1 testsvc -if [ $? -ne 0 ]; then - echo "svc account not mirrored, exiting.." - exit_1 -fi - -./mc admin user svcacct info minio2 testsvc -if [ $? -ne 0 ]; then - echo "svc account not mirrored, exiting.." - exit_1 -fi - -./mc admin user svcacct rm minio1 testsvc -if [ $? -ne 0 ]; then - echo "removing svc account failed, exiting.." - exit_1 -fi - -sleep 10 -./mc admin user svcacct info minio2 testsvc -if [ $? -eq 0 ]; then - echo "svc account found after delete, exiting.." - exit_1 -fi - -./mc admin user svcacct info minio3 testsvc -if [ $? -eq 0 ]; then - echo "svc account found after delete, exiting.." - exit_1 -fi - -./mc mb minio1/newbucket -# copy large upload to newbucket on minio1 -truncate -s 17M lrgfile -expected_checksum=$(cat ./lrgfile | md5sum) - -./mc cp ./lrgfile minio1/newbucket - -sleep 5 -./mc stat --no-list minio2/newbucket -if [ $? -ne 0 ]; then - echo "expecting bucket to be present. exiting.." - exit_1 -fi - -./mc stat --no-list minio3/newbucket -if [ $? -ne 0 ]; then - echo "expecting bucket to be present. exiting.." - exit_1 -fi - -err_minio2=$(./mc stat --no-list minio2/newbucket/xxx --json | jq -r .error.cause.message) -if [ $? -ne 0 ]; then - echo "expecting object to be missing. exiting.." - exit_1 -fi - -if [ "${err_minio2}" != "Object does not exist" ]; then - echo "expected to see Object does not exist error, exiting..." - exit_1 -fi - -./mc cp README.md minio2/newbucket/ - -sleep 5 -./mc stat --no-list minio1/newbucket/README.md -if [ $? -ne 0 ]; then - echo "expecting object to be present. exiting.." - exit_1 -fi - -./mc stat --no-list minio3/newbucket/README.md -if [ $? -ne 0 ]; then - echo "expecting object to be present. exiting.." - exit_1 -fi - -sleep 10 -./mc stat --no-list minio3/newbucket/lrgfile -if [ $? -ne 0 ]; then - echo "expected object to be present, exiting.." - exit_1 -fi - -actual_checksum=$(./mc cat minio3/newbucket/lrgfile | md5sum) -if [ "${expected_checksum}" != "${actual_checksum}" ]; then - echo "replication failed on multipart objects expected ${expected_checksum} got ${actual_checksum}" - exit -fi -rm ./lrgfile - -./mc rm -r --versions --force minio1/newbucket/lrgfile -if [ $? -ne 0 ]; then - echo "expected object to be present, exiting.." - exit_1 -fi - -sleep 5 -./mc stat --no-list minio1/newbucket/lrgfile -if [ $? -eq 0 ]; then - echo "expected object to be deleted permanently after replication, exiting.." - exit_1 -fi - -vID=$(./mc stat --no-list minio2/newbucket/README.md --json | jq .versionID) -if [ $? -ne 0 ]; then - echo "expecting object to be present. exiting.." - exit_1 -fi -./mc tag set --version-id "${vID}" minio2/newbucket/README.md "key=val" -if [ $? -ne 0 ]; then - echo "expecting tag set to be successful. exiting.." - exit_1 -fi -sleep 5 -val=$(./mc tag list minio1/newbucket/README.md --version-id "${vID}" --json | jq -r .tagset.key) -if [ "${val}" != "val" ]; then - echo "expected bucket tag to have replicated, exiting..." - exit_1 -fi -./mc tag remove --version-id "${vID}" minio2/newbucket/README.md -if [ $? -ne 0 ]; then - echo "expecting tag removal to be successful. exiting.." - exit_1 -fi -sleep 5 - -replStatus_minio2=$(./mc stat --no-list minio2/newbucket/README.md --json | jq -r .replicationStatus) -if [ $? -ne 0 ]; then - echo "expecting object to be present. exiting.." - exit_1 -fi - -if [ ${replStatus_minio2} != "COMPLETED" ]; then - echo "expected tag removal to have replicated, exiting..." - exit_1 -fi - -./mc rm minio3/newbucket/README.md -sleep 5 - -./mc stat --no-list minio2/newbucket/README.md -if [ $? -eq 0 ]; then - echo "expected file to be deleted, exiting.." - exit_1 -fi - -./mc stat --no-list minio1/newbucket/README.md -if [ $? -eq 0 ]; then - echo "expected file to be deleted, exiting.." - exit_1 -fi - -./mc mb --with-lock minio3/newbucket-olock -sleep 5 - -set -x - -enabled_minio2=$(./mc stat --json minio2/newbucket-olock | jq -r .ObjectLock.enabled) -if [ $? -ne 0 ]; then - echo "expected bucket to be mirrored with object-lock but not present, exiting..." - exit_1 -fi - -if [ "${enabled_minio2}" != "Enabled" ]; then - echo "expected bucket to be mirrored with object-lock enabled, exiting..." - exit_1 -fi - -enabled_minio1=$(./mc stat --json minio1/newbucket-olock | jq -r .ObjectLock.enabled) -if [ $? -ne 0 ]; then - echo "expected bucket to be mirrored with object-lock but not present, exiting..." - exit_1 -fi - -if [ "${enabled_minio1}" != "Enabled" ]; then - echo "expected bucket to be mirrored with object-lock enabled, exiting..." - exit_1 -fi - -set +x - -# "Test if most recent tag update is replicated" -./mc tag set minio2/newbucket "key=val1" -if [ $? -ne 0 ]; then - echo "expecting tag set to be successful. exiting.." - exit_1 -fi -sleep 5 - -val=$(./mc tag list minio1/newbucket --json | jq -r .tagset | jq -r .key) -if [ "${val}" != "val1" ]; then - echo "expected bucket tag to have replicated, exiting..." - exit_1 -fi -# Create user with policy consoleAdmin on minio1 -./mc admin user add minio1 foobarx foobar123 -if [ $? -ne 0 ]; then - echo "adding user failed, exiting.." - exit_1 -fi -./mc admin policy attach minio1 consoleAdmin --user=foobarx -if [ $? -ne 0 ]; then - echo "adding policy mapping failed, exiting.." - exit_1 -fi -sleep 10 - -# unset policy for foobarx in minio2 -./mc admin policy detach minio2 consoleAdmin --user=foobarx -if [ $? -ne 0 ]; then - echo "unset policy mapping failed, exiting.." - exit_1 -fi - -# create a bucket bucket2 on minio1. -./mc mb minio1/bucket2 - -sleep 10 - -# Test whether policy detach replicated to minio1 -policy=$(./mc admin user info minio1 foobarx --json | jq -r .policyName) -if [ "${policy}" != "null" ]; then - echo "expected policy detach to have replicated, exiting..." - exit_1 -fi - -kill -9 ${site1_pid1} ${site1_pid2} - -# Update tag on minio2/newbucket when minio1 is down -./mc tag set minio2/newbucket "key=val2" -# create a new bucket on minio2. This should replicate to minio1 after it comes online. -./mc mb minio2/newbucket2 - -# delete bucket2 on minio2. This should replicate to minio1 after it comes online. -./mc rb minio2/bucket2 - -# Restart minio1 instance -minio server --config-dir /tmp/minio-internal --address ":9001" http://localhost:9001/tmp/minio-internal-idp1/{1...4} http://localhost:9010/tmp/minio-internal-idp1/{5...8} >/tmp/minio1_1.log 2>&1 & -minio server --config-dir /tmp/minio-internal --address ":9010" http://localhost:9001/tmp/minio-internal-idp1/{1...4} http://localhost:9010/tmp/minio-internal-idp1/{5...8} >/tmp/minio1_2.log 2>&1 & -sleep 200 - -# Test whether most recent tag update on minio2 is replicated to minio1 -val=$(./mc tag list minio1/newbucket --json | jq -r .tagset | jq -r .key) -if [ "${val}" != "val2" ]; then - echo "expected bucket tag to have replicated, exiting..." - exit_1 -fi - -# Test if bucket created/deleted when minio1 is down healed -diff -q <(./mc ls minio1) <(./mc ls minio2) 1>/dev/null -if [ $? -ne 0 ]; then - echo "expected 'bucket2' delete and 'newbucket2' creation to have replicated, exiting..." - exit_1 -fi - -# force a resync after removing all site replication -./mc admin replicate rm --all --force minio1 -./mc rb minio2 --force --dangerous -./mc admin replicate add minio1 minio2 -./mc admin replicate resync start minio1 minio2 -sleep 30 - -./mc ls -r --versions minio1/newbucket >/tmp/minio1.txt -./mc ls -r --versions minio2/newbucket >/tmp/minio2.txt - -out=$(diff -qpruN /tmp/minio1.txt /tmp/minio2.txt) -ret=$? -if [ $ret -ne 0 ]; then - echo "BUG: expected no missing entries after replication resync: $out" - exit 1 -fi diff --git a/docs/site-replication/run-multi-site-oidc.sh b/docs/site-replication/run-multi-site-oidc.sh index d71a86a4a..af832fce6 100755 --- a/docs/site-replication/run-multi-site-oidc.sh +++ b/docs/site-replication/run-multi-site-oidc.sh @@ -4,21 +4,21 @@ exit_1() { cleanup - echo "minio1 ============" - cat /tmp/minio1_1.log - echo "minio2 ============" - cat /tmp/minio2_1.log - echo "minio3 ============" - cat /tmp/minio3_1.log + echo "silo1 ============" + cat /tmp/silo1_1.log + echo "silo2 ============" + cat /tmp/silo2_1.log + echo "silo3 ============" + cat /tmp/silo3_1.log exit 1 } cleanup() { - echo "Cleaning up instances of MinIO" - pkill minio - pkill -9 minio - rm -rf /tmp/minio{1,2,3} + echo "Cleaning up instances of Silo" + pkill silo + pkill -9 silo + rm -rf /tmp/silo{1,2,3} } cleanup @@ -31,7 +31,7 @@ unset MINIO_KMS_KES_KEY_NAME export MINIO_CI_CD=1 export MINIO_BROWSER=off export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" +export MINIO_ROOT_PASSWORD="silo123" export MINIO_KMS_AUTO_ENCRYPTION=off export MINIO_PROMETHEUS_AUTH_TYPE=public export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= @@ -42,64 +42,63 @@ export MINIO_IDENTITY_OPENID_CLAIM_NAME="groups" export MINIO_IDENTITY_OPENID_SCOPES="openid,groups" export MINIO_IDENTITY_OPENID_REDIRECT_URI="http://127.0.0.1:10000/oauth_callback" -minio server --address ":9001" --console-address ":10000" /tmp/minio1/{1...4} >/tmp/minio1_1.log 2>&1 & +silo server --address ":9001" --console-address ":10000" /tmp/silo1/{1...4} >/tmp/silo1_1.log 2>&1 & site1_pid=$! export MINIO_IDENTITY_OPENID_REDIRECT_URI="http://127.0.0.1:11000/oauth_callback" -minio server --address ":9002" --console-address ":11000" /tmp/minio2/{1...4} >/tmp/minio2_1.log 2>&1 & +silo server --address ":9002" --console-address ":11000" /tmp/silo2/{1...4} >/tmp/silo2_1.log 2>&1 & site2_pid=$! export MINIO_IDENTITY_OPENID_REDIRECT_URI="http://127.0.0.1:12000/oauth_callback" -minio server --address ":9003" --console-address ":12000" /tmp/minio3/{1...4} >/tmp/minio3_1.log 2>&1 & +silo server --address ":9003" --console-address ":12000" /tmp/silo3/{1...4} >/tmp/silo3_1.log 2>&1 & site3_pid=$! if [ ! -f ./mc ]; then - wget -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc && - chmod +x mc + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc fi -export MC_HOST_minio1=http://minio:minio123@localhost:9001 -export MC_HOST_minio2=http://minio:minio123@localhost:9002 -export MC_HOST_minio3=http://minio:minio123@localhost:9003 +export MC_HOST_silo1=http://minio:silo123@localhost:9001 +export MC_HOST_silo2=http://minio:silo123@localhost:9002 +export MC_HOST_silo3=http://minio:silo123@localhost:9003 -./mc ready minio1 -./mc ready minio2 -./mc ready minio3 +./mc ready silo1 +./mc ready silo2 +./mc ready silo3 -./mc admin replicate add minio1 minio2 minio3 +./mc admin replicate add silo1 silo2 silo3 -./mc admin policy create minio1 projecta ./docs/site-replication/rw.json +./mc admin policy create silo1 projecta ./docs/site-replication/rw.json sleep 5 -./mc admin policy info minio2 projecta >/dev/null 2>&1 +./mc admin policy info silo2 projecta >/dev/null 2>&1 if [ $? -ne 0 ]; then echo "expecting the command to succeed, exiting.." exit_1 fi -./mc admin policy info minio3 projecta >/dev/null 2>&1 +./mc admin policy info silo3 projecta >/dev/null 2>&1 if [ $? -ne 0 ]; then echo "expecting the command to succeed, exiting.." exit_1 fi -./mc admin policy remove minio3 projecta +./mc admin policy remove silo3 projecta sleep 10 -./mc admin policy info minio1 projecta +./mc admin policy info silo1 projecta if [ $? -eq 0 ]; then echo "expecting the command to fail, exiting.." exit_1 fi -./mc admin policy info minio2 projecta +./mc admin policy info silo2 projecta if [ $? -eq 0 ]; then echo "expecting the command to fail, exiting.." exit_1 fi -./mc admin policy create minio1 projecta ./docs/site-replication/rw.json +./mc admin policy create silo1 projecta ./docs/site-replication/rw.json sleep 5 -# Generate STS credential with STS call to minio1 +# Generate STS credential with STS call to silo1 STS_CRED=$(MINIO_ENDPOINT=http://localhost:9001 go run ./docs/site-replication/gen-oidc-sts-cred.go) MC_HOST_foo=http://${STS_CRED}@localhost:9001 ./mc ls foo @@ -110,7 +109,7 @@ fi sleep 2 -# Check that the STS credential works on minio2 and minio3. +# Check that the STS credential works on silo2 and silo3. MC_HOST_foo=http://${STS_CRED}@localhost:9002 ./mc ls foo if [ $? -ne 0 ]; then echo "Expected sts credential to work, exiting.." @@ -126,7 +125,7 @@ fi STS_ACCESS_KEY=$(echo ${STS_CRED} | cut -d ':' -f 1) # Create service account for STS user -./mc admin user svcacct add minio2 $STS_ACCESS_KEY --access-key testsvc --secret-key testsvc123 +./mc admin user svcacct add silo2 $STS_ACCESS_KEY --access-key testsvc --secret-key testsvc123 if [ $? -ne 0 ]; then echo "adding svc account failed, exiting.." exit_1 @@ -134,192 +133,192 @@ fi sleep 10 -./mc admin user svcacct info minio1 testsvc +./mc admin user svcacct info silo1 testsvc if [ $? -ne 0 ]; then echo "svc account not mirrored, exiting.." exit_1 fi -./mc admin user svcacct info minio2 testsvc +./mc admin user svcacct info silo2 testsvc if [ $? -ne 0 ]; then echo "svc account not mirrored, exiting.." exit_1 fi -./mc admin user svcacct rm minio1 testsvc +./mc admin user svcacct rm silo1 testsvc if [ $? -ne 0 ]; then echo "removing svc account failed, exiting.." exit_1 fi sleep 10 -./mc admin user svcacct info minio2 testsvc +./mc admin user svcacct info silo2 testsvc if [ $? -eq 0 ]; then echo "svc account found after delete, exiting.." exit_1 fi -./mc admin user svcacct info minio3 testsvc +./mc admin user svcacct info silo3 testsvc if [ $? -eq 0 ]; then echo "svc account found after delete, exiting.." exit_1 fi -# create a bucket bucket2 on minio1. -./mc mb minio1/bucket2 +# create a bucket bucket2 on silo1. +./mc mb silo1/bucket2 -./mc mb minio1/newbucket +./mc mb silo1/newbucket -# copy large upload to newbucket on minio1 +# copy large upload to newbucket on silo1 truncate -s 17M lrgfile expected_checksum=$(cat ./lrgfile | md5sum) -./mc cp ./lrgfile minio1/newbucket +./mc cp ./lrgfile silo1/newbucket sleep 5 -./mc stat --no-list minio2/newbucket +./mc stat --no-list silo2/newbucket if [ $? -ne 0 ]; then echo "expecting bucket to be present. exiting.." exit_1 fi -./mc stat --no-list minio3/newbucket +./mc stat --no-list silo3/newbucket if [ $? -ne 0 ]; then echo "expecting bucket to be present. exiting.." exit_1 fi -./mc cp README.md minio2/newbucket/ +./mc cp README.md silo2/newbucket/ sleep 5 -./mc stat --no-list minio1/newbucket/README.md +./mc stat --no-list silo1/newbucket/README.md if [ $? -ne 0 ]; then echo "expecting object to be present. exiting.." exit_1 fi -./mc stat --no-list minio3/newbucket/README.md +./mc stat --no-list silo3/newbucket/README.md if [ $? -ne 0 ]; then echo "expecting object to be present. exiting.." exit_1 fi -./mc rm minio3/newbucket/README.md +./mc rm silo3/newbucket/README.md sleep 5 -./mc stat --no-list minio2/newbucket/README.md +./mc stat --no-list silo2/newbucket/README.md if [ $? -eq 0 ]; then echo "expected file to be deleted, exiting.." exit_1 fi -./mc stat --no-list minio1/newbucket/README.md +./mc stat --no-list silo1/newbucket/README.md if [ $? -eq 0 ]; then echo "expected file to be deleted, exiting.." exit_1 fi sleep 10 -./mc stat --no-list minio3/newbucket/lrgfile +./mc stat --no-list silo3/newbucket/lrgfile if [ $? -ne 0 ]; then echo "expected object to be present, exiting.." exit_1 fi -actual_checksum=$(./mc cat minio3/newbucket/lrgfile | md5sum) +actual_checksum=$(./mc cat silo3/newbucket/lrgfile | md5sum) if [ "${expected_checksum}" != "${actual_checksum}" ]; then echo "replication failed on multipart objects expected ${expected_checksum} got ${actual_checksum}" exit fi rm ./lrgfile -./mc rm -r --versions --force minio1/newbucket/lrgfile +./mc rm -r --versions --force silo1/newbucket/lrgfile if [ $? -ne 0 ]; then echo "expected object to be present, exiting.." exit_1 fi sleep 5 -./mc stat --no-list minio1/newbucket/lrgfile +./mc stat --no-list silo1/newbucket/lrgfile if [ $? -eq 0 ]; then echo "expected object to be deleted permanently after replication, exiting.." exit_1 fi -./mc mb --with-lock minio3/newbucket-olock +./mc mb --with-lock silo3/newbucket-olock sleep 5 -enabled_minio2=$(./mc stat --json minio2/newbucket-olock | jq -r .ObjectLock.enabled) +enabled_silo2=$(./mc stat --json silo2/newbucket-olock | jq -r .ObjectLock.enabled) if [ $? -ne 0 ]; then echo "expected bucket to be mirrored with object-lock but not present, exiting..." exit_1 fi -if [ "${enabled_minio2}" != "Enabled" ]; then +if [ "${enabled_silo2}" != "Enabled" ]; then echo "expected bucket to be mirrored with object-lock enabled, exiting..." exit_1 fi -enabled_minio1=$(./mc stat --json minio1/newbucket-olock | jq -r .ObjectLock.enabled) +enabled_silo1=$(./mc stat --json silo1/newbucket-olock | jq -r .ObjectLock.enabled) if [ $? -ne 0 ]; then echo "expected bucket to be mirrored with object-lock but not present, exiting..." exit_1 fi -if [ "${enabled_minio1}" != "Enabled" ]; then +if [ "${enabled_silo1}" != "Enabled" ]; then echo "expected bucket to be mirrored with object-lock enabled, exiting..." exit_1 fi # "Test if most recent tag update is replicated" -./mc tag set minio2/newbucket "key=val1" +./mc tag set silo2/newbucket "key=val1" if [ $? -ne 0 ]; then echo "expecting tag set to be successful. exiting.." exit_1 fi sleep 10 -val=$(./mc tag list minio1/newbucket --json | jq -r .tagset | jq -r .key) +val=$(./mc tag list silo1/newbucket --json | jq -r .tagset | jq -r .key) if [ "${val}" != "val1" ]; then echo "expected bucket tag to have replicated, exiting..." exit_1 fi -# stop minio1 instance +# stop silo1 instance kill -9 ${site1_pid} -# Update tag on minio2/newbucket when minio1 is down -./mc tag set minio2/newbucket "key=val2" -# create a new bucket on minio2. This should replicate to minio1 after it comes online. -./mc mb minio2/newbucket2 -# delete bucket2 on minio2. This should replicate to minio1 after it comes online. -./mc rb minio2/bucket2 +# Update tag on silo2/newbucket when silo1 is down +./mc tag set silo2/newbucket "key=val2" +# create a new bucket on silo2. This should replicate to silo1 after it comes online. +./mc mb silo2/newbucket2 +# delete bucket2 on silo2. This should replicate to silo1 after it comes online. +./mc rb silo2/bucket2 -# Restart minio1 instance -minio server --address ":9001" --console-address ":10000" /tmp/minio1/{1...4} >/tmp/minio1_1.log 2>&1 & +# Restart silo1 instance +silo server --address ":9001" --console-address ":10000" /tmp/silo1/{1...4} >/tmp/silo1_1.log 2>&1 & sleep 200 -# Test whether most recent tag update on minio2 is replicated to minio1 -val=$(./mc tag list minio1/newbucket --json | jq -r .tagset | jq -r .key) +# Test whether most recent tag update on silo2 is replicated to silo1 +val=$(./mc tag list silo1/newbucket --json | jq -r .tagset | jq -r .key) if [ "${val}" != "val2" ]; then echo "expected bucket tag to have replicated, exiting..." exit_1 fi -# Test if bucket created/deleted when minio1 is down healed -diff -q <(./mc ls minio1) <(./mc ls minio2) 1>/dev/null +# Test if bucket created/deleted when silo1 is down healed +diff -q <(./mc ls silo1) <(./mc ls silo2) 1>/dev/null if [ $? -ne 0 ]; then echo "expected 'bucket2' delete and 'newbucket2' creation to have replicated, exiting..." exit_1 fi # force a resync after removing all site replication -./mc admin replicate rm --all --force minio1 -./mc rb minio2 --force --dangerous -./mc admin replicate add minio1 minio2 -./mc admin replicate resync start minio1 minio2 +./mc admin replicate rm --all --force silo1 +./mc rb silo2 --force --dangerous +./mc admin replicate add silo1 silo2 +./mc admin replicate resync start silo1 silo2 sleep 30 -./mc ls -r --versions minio1/newbucket >/tmp/minio1.txt -./mc ls -r --versions minio2/newbucket >/tmp/minio2.txt +./mc ls -r --versions silo1/newbucket >/tmp/silo1.txt +./mc ls -r --versions silo2/newbucket >/tmp/silo2.txt -out=$(diff -qpruN /tmp/minio1.txt /tmp/minio2.txt) +out=$(diff -qpruN /tmp/silo1.txt /tmp/silo2.txt) ret=$? if [ $ret -ne 0 ]; then echo "BUG: expected no missing entries after replication resync: $out" diff --git a/docs/site-replication/run-multi-site-silo-idp.sh b/docs/site-replication/run-multi-site-silo-idp.sh new file mode 100755 index 000000000..513ae2205 --- /dev/null +++ b/docs/site-replication/run-multi-site-silo-idp.sh @@ -0,0 +1,457 @@ +#!/usr/bin/env bash + +# shellcheck disable=SC2120 +exit_1() { + cleanup + + echo "silo1 ============" + cat /tmp/silo1_1.log + cat /tmp/silo1_2.log + echo "silo2 ============" + cat /tmp/silo2_1.log + cat /tmp/silo2_2.log + echo "silo3 ============" + cat /tmp/silo3_1.log + cat /tmp/silo3_2.log + + exit 1 +} + +cleanup() { + echo "Cleaning up instances of Silo" + pkill silo + pkill -9 silo + rm -rf /tmp/silo-internal-idp{1,2,3} +} + +cleanup + +unset MINIO_KMS_KES_CERT_FILE +unset MINIO_KMS_KES_KEY_FILE +unset MINIO_KMS_KES_ENDPOINT +unset MINIO_KMS_KES_KEY_NAME + +export MINIO_CI_CD=1 +export MINIO_BROWSER=off +export MINIO_ROOT_USER="minio" +export MINIO_ROOT_PASSWORD="silo123" +export MINIO_KMS_AUTO_ENCRYPTION=off +export MINIO_PROMETHEUS_AUTH_TYPE=public +export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw= + +if [ ! -f ./mc ]; then + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc +fi + +silo server --config-dir /tmp/silo-internal --address ":9001" http://localhost:9001/tmp/silo-internal-idp1/{1...4} http://localhost:9010/tmp/silo-internal-idp1/{5...8} >/tmp/silo1_1.log 2>&1 & +site1_pid1=$! +silo server --config-dir /tmp/silo-internal --address ":9010" http://localhost:9001/tmp/silo-internal-idp1/{1...4} http://localhost:9010/tmp/silo-internal-idp1/{5...8} >/tmp/silo1_2.log 2>&1 & +site1_pid2=$! + +silo server --config-dir /tmp/silo-internal --address ":9002" http://localhost:9002/tmp/silo-internal-idp2/{1...4} http://localhost:9020/tmp/silo-internal-idp2/{5...8} >/tmp/silo2_1.log 2>&1 & +site2_pid1=$! +silo server --config-dir /tmp/silo-internal --address ":9020" http://localhost:9002/tmp/silo-internal-idp2/{1...4} http://localhost:9020/tmp/silo-internal-idp2/{5...8} >/tmp/silo2_2.log 2>&1 & +site2_pid2=$! + +silo server --config-dir /tmp/silo-internal --address ":9003" http://localhost:9003/tmp/silo-internal-idp3/{1...4} http://localhost:9030/tmp/silo-internal-idp3/{5...8} >/tmp/silo3_1.log 2>&1 & +site3_pid1=$! +silo server --config-dir /tmp/silo-internal --address ":9030" http://localhost:9003/tmp/silo-internal-idp3/{1...4} http://localhost:9030/tmp/silo-internal-idp3/{5...8} >/tmp/silo3_2.log 2>&1 & +site3_pid2=$! + +export MC_HOST_silo1=http://minio:silo123@localhost:9001 +export MC_HOST_silo2=http://minio:silo123@localhost:9002 +export MC_HOST_silo3=http://minio:silo123@localhost:9003 + +export MC_HOST_silo10=http://minio:silo123@localhost:9010 +export MC_HOST_silo20=http://minio:silo123@localhost:9020 +export MC_HOST_silo30=http://minio:silo123@localhost:9030 + +./mc ready silo1 +./mc ready silo2 +./mc ready silo3 +./mc ready silo10 +./mc ready silo20 +./mc ready silo30 + +./mc admin replicate add silo1 silo2 + +site_enabled=$(./mc admin replicate info silo1) +site_enabled_peer=$(./mc admin replicate info silo10) + +[[ $site_enabled =~ "is not enabled" ]] && { + echo "expected both peers to have same information" + exit_1 +} + +[[ $site_enabled_peer =~ "is not enabled" ]] && { + echo "expected both peers to have same information" + exit_1 +} + +./mc admin user add silo1 foobar foo12345 + +## add foobar-g group with foobar +./mc admin group add silo2 foobar-g foobar + +./mc admin policy attach silo1 consoleAdmin --user=foobar +sleep 5 + +./mc admin user info silo2 foobar + +./mc admin group info silo1 foobar-g + +./mc admin policy create silo1 rw ./docs/site-replication/rw.json + +sleep 5 +./mc admin policy info silo2 rw >/dev/null 2>&1 + +./mc admin replicate status silo1 + +## Add a new empty site +./mc admin replicate add silo1 silo2 silo3 + +sleep 10 + +./mc admin policy info silo3 rw >/dev/null 2>&1 + +./mc admin policy remove silo3 rw + +./mc admin replicate status silo3 + +sleep 10 + +./mc admin policy info silo1 rw +if [ $? -eq 0 ]; then + echo "expecting the command to fail, exiting.." + exit_1 +fi + +./mc admin policy info silo2 rw +if [ $? -eq 0 ]; then + echo "expecting the command to fail, exiting.." + exit_1 +fi + +./mc admin policy info silo3 rw +if [ $? -eq 0 ]; then + echo "expecting the command to fail, exiting.." + exit_1 +fi + +./mc admin user info silo1 foobar +if [ $? -ne 0 ]; then + echo "policy mapping missing on 'silo1', exiting.." + exit_1 +fi + +./mc admin user info silo2 foobar +if [ $? -ne 0 ]; then + echo "policy mapping missing on 'silo2', exiting.." + exit_1 +fi + +./mc admin user info silo3 foobar +if [ $? -ne 0 ]; then + echo "policy mapping missing on 'silo3', exiting.." + exit_1 +fi + +./mc admin group info silo3 foobar-g +if [ $? -ne 0 ]; then + echo "group mapping missing on 'silo3', exiting.." + exit_1 +fi + +./mc admin user svcacct add silo2 foobar --access-key testsvc --secret-key testsvc123 +if [ $? -ne 0 ]; then + echo "adding svc account failed, exiting.." + exit_1 +fi + +./mc admin user svcacct add silo2 minio --access-key testsvc2 --secret-key testsvc123 +if [ $? -ne 0 ]; then + echo "adding root svc account testsvc2 failed, exiting.." + exit_1 +fi + +sleep 10 + +export MC_HOST_rootsvc=http://testsvc2:testsvc123@localhost:9002 +./mc ls rootsvc +if [ $? -ne 0 ]; then + echo "root service account not inherited root permissions, exiting.." + exit_1 +fi + +./mc admin user svcacct info silo1 testsvc +if [ $? -ne 0 ]; then + echo "svc account not mirrored, exiting.." + exit_1 +fi + +./mc admin user svcacct info silo2 testsvc +if [ $? -ne 0 ]; then + echo "svc account not mirrored, exiting.." + exit_1 +fi + +./mc admin user svcacct rm silo1 testsvc +if [ $? -ne 0 ]; then + echo "removing svc account failed, exiting.." + exit_1 +fi + +sleep 10 +./mc admin user svcacct info silo2 testsvc +if [ $? -eq 0 ]; then + echo "svc account found after delete, exiting.." + exit_1 +fi + +./mc admin user svcacct info silo3 testsvc +if [ $? -eq 0 ]; then + echo "svc account found after delete, exiting.." + exit_1 +fi + +./mc mb silo1/newbucket +# copy large upload to newbucket on silo1 +truncate -s 17M lrgfile +expected_checksum=$(cat ./lrgfile | md5sum) + +./mc cp ./lrgfile silo1/newbucket + +sleep 5 +./mc stat --no-list silo2/newbucket +if [ $? -ne 0 ]; then + echo "expecting bucket to be present. exiting.." + exit_1 +fi + +./mc stat --no-list silo3/newbucket +if [ $? -ne 0 ]; then + echo "expecting bucket to be present. exiting.." + exit_1 +fi + +err_silo2=$(./mc stat --no-list silo2/newbucket/xxx --json | jq -r .error.cause.message) +if [ $? -ne 0 ]; then + echo "expecting object to be missing. exiting.." + exit_1 +fi + +if [ "${err_silo2}" != "Object does not exist" ]; then + echo "expected to see Object does not exist error, exiting..." + exit_1 +fi + +./mc cp README.md silo2/newbucket/ + +sleep 5 +./mc stat --no-list silo1/newbucket/README.md +if [ $? -ne 0 ]; then + echo "expecting object to be present. exiting.." + exit_1 +fi + +./mc stat --no-list silo3/newbucket/README.md +if [ $? -ne 0 ]; then + echo "expecting object to be present. exiting.." + exit_1 +fi + +sleep 10 +./mc stat --no-list silo3/newbucket/lrgfile +if [ $? -ne 0 ]; then + echo "expected object to be present, exiting.." + exit_1 +fi + +actual_checksum=$(./mc cat silo3/newbucket/lrgfile | md5sum) +if [ "${expected_checksum}" != "${actual_checksum}" ]; then + echo "replication failed on multipart objects expected ${expected_checksum} got ${actual_checksum}" + exit +fi +rm ./lrgfile + +./mc rm -r --versions --force silo1/newbucket/lrgfile +if [ $? -ne 0 ]; then + echo "expected object to be present, exiting.." + exit_1 +fi + +sleep 5 +./mc stat --no-list silo1/newbucket/lrgfile +if [ $? -eq 0 ]; then + echo "expected object to be deleted permanently after replication, exiting.." + exit_1 +fi + +vID=$(./mc stat --no-list silo2/newbucket/README.md --json | jq .versionID) +if [ $? -ne 0 ]; then + echo "expecting object to be present. exiting.." + exit_1 +fi +./mc tag set --version-id "${vID}" silo2/newbucket/README.md "key=val" +if [ $? -ne 0 ]; then + echo "expecting tag set to be successful. exiting.." + exit_1 +fi +sleep 5 +val=$(./mc tag list silo1/newbucket/README.md --version-id "${vID}" --json | jq -r .tagset.key) +if [ "${val}" != "val" ]; then + echo "expected bucket tag to have replicated, exiting..." + exit_1 +fi +./mc tag remove --version-id "${vID}" silo2/newbucket/README.md +if [ $? -ne 0 ]; then + echo "expecting tag removal to be successful. exiting.." + exit_1 +fi +sleep 5 + +replStatus_silo2=$(./mc stat --no-list silo2/newbucket/README.md --json | jq -r .replicationStatus) +if [ $? -ne 0 ]; then + echo "expecting object to be present. exiting.." + exit_1 +fi + +if [ ${replStatus_silo2} != "COMPLETED" ]; then + echo "expected tag removal to have replicated, exiting..." + exit_1 +fi + +./mc rm silo3/newbucket/README.md +sleep 5 + +./mc stat --no-list silo2/newbucket/README.md +if [ $? -eq 0 ]; then + echo "expected file to be deleted, exiting.." + exit_1 +fi + +./mc stat --no-list silo1/newbucket/README.md +if [ $? -eq 0 ]; then + echo "expected file to be deleted, exiting.." + exit_1 +fi + +./mc mb --with-lock silo3/newbucket-olock +sleep 5 + +set -x + +enabled_silo2=$(./mc stat --json silo2/newbucket-olock | jq -r .ObjectLock.enabled) +if [ $? -ne 0 ]; then + echo "expected bucket to be mirrored with object-lock but not present, exiting..." + exit_1 +fi + +if [ "${enabled_silo2}" != "Enabled" ]; then + echo "expected bucket to be mirrored with object-lock enabled, exiting..." + exit_1 +fi + +enabled_silo1=$(./mc stat --json silo1/newbucket-olock | jq -r .ObjectLock.enabled) +if [ $? -ne 0 ]; then + echo "expected bucket to be mirrored with object-lock but not present, exiting..." + exit_1 +fi + +if [ "${enabled_silo1}" != "Enabled" ]; then + echo "expected bucket to be mirrored with object-lock enabled, exiting..." + exit_1 +fi + +set +x + +# "Test if most recent tag update is replicated" +./mc tag set silo2/newbucket "key=val1" +if [ $? -ne 0 ]; then + echo "expecting tag set to be successful. exiting.." + exit_1 +fi +sleep 5 + +val=$(./mc tag list silo1/newbucket --json | jq -r .tagset | jq -r .key) +if [ "${val}" != "val1" ]; then + echo "expected bucket tag to have replicated, exiting..." + exit_1 +fi +# Create user with policy consoleAdmin on silo1 +./mc admin user add silo1 foobarx foobar123 +if [ $? -ne 0 ]; then + echo "adding user failed, exiting.." + exit_1 +fi +./mc admin policy attach silo1 consoleAdmin --user=foobarx +if [ $? -ne 0 ]; then + echo "adding policy mapping failed, exiting.." + exit_1 +fi +sleep 10 + +# unset policy for foobarx in silo2 +./mc admin policy detach silo2 consoleAdmin --user=foobarx +if [ $? -ne 0 ]; then + echo "unset policy mapping failed, exiting.." + exit_1 +fi + +# create a bucket bucket2 on silo1. +./mc mb silo1/bucket2 + +sleep 10 + +# Test whether policy detach replicated to silo1 +policy=$(./mc admin user info silo1 foobarx --json | jq -r .policyName) +if [ "${policy}" != "null" ]; then + echo "expected policy detach to have replicated, exiting..." + exit_1 +fi + +kill -9 ${site1_pid1} ${site1_pid2} + +# Update tag on silo2/newbucket when silo1 is down +./mc tag set silo2/newbucket "key=val2" +# create a new bucket on silo2. This should replicate to silo1 after it comes online. +./mc mb silo2/newbucket2 + +# delete bucket2 on silo2. This should replicate to silo1 after it comes online. +./mc rb silo2/bucket2 + +# Restart silo1 instance +silo server --config-dir /tmp/silo-internal --address ":9001" http://localhost:9001/tmp/silo-internal-idp1/{1...4} http://localhost:9010/tmp/silo-internal-idp1/{5...8} >/tmp/silo1_1.log 2>&1 & +silo server --config-dir /tmp/silo-internal --address ":9010" http://localhost:9001/tmp/silo-internal-idp1/{1...4} http://localhost:9010/tmp/silo-internal-idp1/{5...8} >/tmp/silo1_2.log 2>&1 & +sleep 200 + +# Test whether most recent tag update on silo2 is replicated to silo1 +val=$(./mc tag list silo1/newbucket --json | jq -r .tagset | jq -r .key) +if [ "${val}" != "val2" ]; then + echo "expected bucket tag to have replicated, exiting..." + exit_1 +fi + +# Test if bucket created/deleted when silo1 is down healed +diff -q <(./mc ls silo1) <(./mc ls silo2) 1>/dev/null +if [ $? -ne 0 ]; then + echo "expected 'bucket2' delete and 'newbucket2' creation to have replicated, exiting..." + exit_1 +fi + +# force a resync after removing all site replication +./mc admin replicate rm --all --force silo1 +./mc rb silo2 --force --dangerous +./mc admin replicate add silo1 silo2 +./mc admin replicate resync start silo1 silo2 +sleep 30 + +./mc ls -r --versions silo1/newbucket >/tmp/silo1.txt +./mc ls -r --versions silo2/newbucket >/tmp/silo2.txt + +out=$(diff -qpruN /tmp/silo1.txt /tmp/silo2.txt) +ret=$? +if [ $ret -ne 0 ]; then + echo "BUG: expected no missing entries after replication resync: $out" + exit 1 +fi diff --git a/docs/site-replication/run-replication-with-checksum-header.sh b/docs/site-replication/run-replication-with-checksum-header.sh index f7bf81a22..a4afd58d1 100755 --- a/docs/site-replication/run-replication-with-checksum-header.sh +++ b/docs/site-replication/run-replication-with-checksum-header.sh @@ -4,18 +4,18 @@ exit_1() { cleanup - echo "minio1 ============" - cat /tmp/minio1_1.log - echo "minio2 ============" - cat /tmp/minio2_1.log + echo "silo1 ============" + cat /tmp/silo1_1.log + echo "silo2 ============" + cat /tmp/silo2_1.log exit 1 } cleanup() { - echo -n "Cleaning up instances of MinIO ..." - pkill -9 minio || sudo pkill -9 minio - rm -rf /tmp/minio{1,2} + echo -n "Cleaning up instances of Silo ..." + pkill -9 silo || sudo pkill -9 silo + rm -rf /tmp/silo{1,2} echo "done" } @@ -33,7 +33,7 @@ cleanup export MINIO_CI_CD=1 export MINIO_BROWSER=off export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" +export MINIO_ROOT_PASSWORD="silo123" # Download AWS CLI echo -n "Download and install AWS CLI" @@ -51,11 +51,11 @@ cat >~/.aws/credentials </tmp/minio1_1.log 2>&1 & -CI=on MINIO_KMS_SECRET_KEY=minio-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=minio123 minio server --certs-dir /tmp/certs --address ":9002" --console-address ":11000" /tmp/minio2/{1...4}/disk{1...4} /tmp/minio2/{5...8}/disk{1...4} >/tmp/minio2_1.log 2>&1 & +# Start Silo instances +echo -n "Starting Silo instances ..." +CI=on MINIO_KMS_SECRET_KEY=minio-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=silo123 silo server --certs-dir /tmp/certs --address ":9001" --console-address ":10000" /tmp/silo1/{1...4}/disk{1...4} /tmp/silo1/{5...8}/disk{1...4} >/tmp/silo1_1.log 2>&1 & +CI=on MINIO_KMS_SECRET_KEY=minio-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=silo123 silo server --certs-dir /tmp/certs --address ":9002" --console-address ":11000" /tmp/silo2/{1...4}/disk{1...4} /tmp/silo2/{5...8}/disk{1...4} >/tmp/silo2_1.log 2>&1 & echo "done" if [ ! -f ./mc ]; then - echo -n "Downloading MinIO client ..." - wget -O mc https://dl.min.io/client/mc/release/linux-amd64/mc && - chmod +x mc + echo -n "Downloading Silo client ..." + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc echo "done" fi -export MC_HOST_minio1=https://minio:minio123@localhost:9001 -export MC_HOST_minio2=https://minio:minio123@localhost:9002 +export MC_HOST_silo1=https://minio:silo123@localhost:9001 +export MC_HOST_silo2=https://minio:silo123@localhost:9002 -./mc ready minio1 --insecure -./mc ready minio2 --insecure +./mc ready silo1 --insecure +./mc ready silo2 --insecure # Prepare data for tests echo -n "Preparing test data ..." @@ -91,16 +90,16 @@ shred -s 500M /tmp/data/mpartobj echo "done" # Add replication site -./mc admin replicate add minio1 minio2 --insecure +./mc admin replicate add silo1 silo2 --insecure # sleep for replication to complete sleep 30 # Create bucket in source cluster -echo "Create bucket in source MinIO instance" -./mc mb minio1/test-bucket --insecure +echo "Create bucket in source Silo instance" +./mc mb silo1/test-bucket --insecure # Load objects to source site with checksum header -echo "Loading objects to source MinIO instance" +echo "Loading objects to source Silo instance" OBJ_CHKSUM=$(openssl dgst -sha256 -binary /tmp/minio1_1.log 2>&1 & -CI=on MINIO_KMS_SECRET_KEY=minio-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=minio123 minio server --certs-dir /tmp/certs --address ":9002" --console-address ":11000" /tmp/minio2/{1...4}/disk{1...4} /tmp/minio2/{5...8}/disk{1...4} >/tmp/minio2_1.log 2>&1 & +# Start Silo instances +echo -n "Starting Silo instances ..." +CI=on MINIO_KMS_SECRET_KEY=minio-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=silo123 silo server --certs-dir /tmp/certs --address ":9001" --console-address ":10000" /tmp/silo1/{1...4}/disk{1...4} /tmp/silo1/{5...8}/disk{1...4} >/tmp/silo1_1.log 2>&1 & +CI=on MINIO_KMS_SECRET_KEY=minio-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=silo123 silo server --certs-dir /tmp/certs --address ":9002" --console-address ":11000" /tmp/silo2/{1...4}/disk{1...4} /tmp/silo2/{5...8}/disk{1...4} >/tmp/silo2_1.log 2>&1 & echo "done" if [ ! -f ./mc ]; then - echo -n "Downloading MinIO client ..." - wget -O mc https://dl.min.io/client/mc/release/linux-amd64/mc && - chmod +x mc + echo -n "Downloading Silo client ..." + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc echo "done" fi -export MC_HOST_minio1=https://minio:minio123@localhost:9001 -export MC_HOST_minio2=https://minio:minio123@localhost:9002 +export MC_HOST_silo1=https://minio:silo123@localhost:9001 +export MC_HOST_silo2=https://minio:silo123@localhost:9002 -./mc ready minio1 --insecure -./mc ready minio2 --insecure +./mc ready silo1 --insecure +./mc ready silo2 --insecure # Prepare data for tests echo -n "Preparing test data ..." @@ -73,181 +72,181 @@ shred -s 500M /tmp/data/custpartsize echo "done" # Add replication site -./mc admin replicate add minio1 minio2 --insecure +./mc admin replicate add silo1 silo2 --insecure # sleep for replication to complete sleep 30 # Create bucket in source cluster -echo "Create bucket in source MinIO instance" -./mc mb minio1/test-bucket --insecure +echo "Create bucket in source Silo instance" +./mc mb silo1/test-bucket --insecure # Enable SSE KMS for the bucket -./mc encrypt set sse-kms minio-default-key minio1/test-bucket --insecure +./mc encrypt set sse-kms minio-default-key silo1/test-bucket --insecure # Load objects to source site -echo "Loading objects to source MinIO instance" -./mc cp /tmp/data/encrypted minio1/test-bucket --insecure -./mc cp /tmp/data/mpartobj minio1/test-bucket/mpartobj --enc-c "minio1/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure -./mc cp /tmp/data/defpartsize minio1/test-bucket --insecure -./mc put /tmp/data/custpartsize minio1/test-bucket --insecure --part-size 50MiB +echo "Loading objects to source Silo instance" +./mc cp /tmp/data/encrypted silo1/test-bucket --insecure +./mc cp /tmp/data/mpartobj silo1/test-bucket/mpartobj --enc-c "silo1/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure +./mc cp /tmp/data/defpartsize silo1/test-bucket --insecure +./mc put /tmp/data/custpartsize silo1/test-bucket --insecure --part-size 50MiB sleep 120 # List the objects from source site echo "Objects from source instance" -./mc ls minio1/test-bucket --insecure -count1=$(./mc ls minio1/test-bucket/encrypted --insecure | wc -l) +./mc ls silo1/test-bucket --insecure +count1=$(./mc ls silo1/test-bucket/encrypted --insecure | wc -l) if [ "${count1}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/encrypted not found" + echo "BUG: object silo1/test-bucket/encrypted not found" exit_1 fi -count2=$(./mc ls minio1/test-bucket/mpartobj --insecure | wc -l) +count2=$(./mc ls silo1/test-bucket/mpartobj --insecure | wc -l) if [ "${count2}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/mpartobj not found" + echo "BUG: object silo1/test-bucket/mpartobj not found" exit_1 fi -count3=$(./mc ls minio1/test-bucket/defpartsize --insecure | wc -l) +count3=$(./mc ls silo1/test-bucket/defpartsize --insecure | wc -l) if [ "${count3}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/defpartsize not found" + echo "BUG: object silo1/test-bucket/defpartsize not found" exit_1 fi -count4=$(./mc ls minio1/test-bucket/custpartsize --insecure | wc -l) +count4=$(./mc ls silo1/test-bucket/custpartsize --insecure | wc -l) if [ "${count4}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/custpartsize not found" + echo "BUG: object silo1/test-bucket/custpartsize not found" exit_1 fi # List the objects from replicated site echo "Objects from replicated instance" -./mc ls minio2/test-bucket --insecure -repcount1=$(./mc ls minio2/test-bucket/encrypted --insecure | wc -l) +./mc ls silo2/test-bucket --insecure +repcount1=$(./mc ls silo2/test-bucket/encrypted --insecure | wc -l) if [ "${repcount1}" -ne 1 ]; then echo "BUG: object test-bucket/encrypted not replicated" exit_1 fi -repcount2=$(./mc ls minio2/test-bucket/mpartobj --insecure | wc -l) +repcount2=$(./mc ls silo2/test-bucket/mpartobj --insecure | wc -l) if [ "${repcount2}" -ne 1 ]; then echo "BUG: object test-bucket/mpartobj not replicated" exit_1 fi -repcount3=$(./mc ls minio2/test-bucket/defpartsize --insecure | wc -l) +repcount3=$(./mc ls silo2/test-bucket/defpartsize --insecure | wc -l) if [ "${repcount3}" -ne 1 ]; then echo "BUG: object test-bucket/defpartsize not replicated" exit_1 fi -repcount4=$(./mc ls minio2/test-bucket/custpartsize --insecure | wc -l) +repcount4=$(./mc ls silo2/test-bucket/custpartsize --insecure | wc -l) if [ "${repcount4}" -ne 1 ]; then echo "BUG: object test-bucket/custpartsize not replicated" exit_1 fi # Stat the objects from source site -echo "Stat minio1/test-bucket/encrypted" -./mc stat --no-list minio1/test-bucket/encrypted --insecure --json -stat_out1=$(./mc stat --no-list minio1/test-bucket/encrypted --insecure --json) +echo "Stat silo1/test-bucket/encrypted" +./mc stat --no-list silo1/test-bucket/encrypted --insecure --json +stat_out1=$(./mc stat --no-list silo1/test-bucket/encrypted --insecure --json) src_obj1_algo=$(echo "${stat_out1}" | jq '.metadata."X-Amz-Server-Side-Encryption"') src_obj1_keyid=$(echo "${stat_out1}" | jq '.metadata."X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id"') -echo "Stat minio1/test-bucket/defpartsize" -./mc stat --no-list minio1/test-bucket/defpartsize --insecure --json -stat_out2=$(./mc stat --no-list minio1/test-bucket/defpartsize --insecure --json) +echo "Stat silo1/test-bucket/defpartsize" +./mc stat --no-list silo1/test-bucket/defpartsize --insecure --json +stat_out2=$(./mc stat --no-list silo1/test-bucket/defpartsize --insecure --json) src_obj2_algo=$(echo "${stat_out2}" | jq '.metadata."X-Amz-Server-Side-Encryption"') src_obj2_keyid=$(echo "${stat_out2}" | jq '.metadata."X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id"') -echo "Stat minio1/test-bucket/custpartsize" -./mc stat --no-list minio1/test-bucket/custpartsize --insecure --json -stat_out3=$(./mc stat --no-list minio1/test-bucket/custpartsize --insecure --json) +echo "Stat silo1/test-bucket/custpartsize" +./mc stat --no-list silo1/test-bucket/custpartsize --insecure --json +stat_out3=$(./mc stat --no-list silo1/test-bucket/custpartsize --insecure --json) src_obj3_algo=$(echo "${stat_out3}" | jq '.metadata."X-Amz-Server-Side-Encryption"') src_obj3_keyid=$(echo "${stat_out3}" | jq '.metadata."X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id"') -echo "Stat minio1/test-bucket/mpartobj" -./mc stat --no-list minio1/test-bucket/mpartobj --enc-c "minio1/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out4=$(./mc stat --no-list minio1/test-bucket/mpartobj --enc-c "minio1/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo1/test-bucket/mpartobj" +./mc stat --no-list silo1/test-bucket/mpartobj --enc-c "silo1/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out4=$(./mc stat --no-list silo1/test-bucket/mpartobj --enc-c "silo1/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure --json) src_obj4_etag=$(echo "${stat_out4}" | jq '.etag') src_obj4_size=$(echo "${stat_out4}" | jq '.size') src_obj4_md5=$(echo "${stat_out4}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') # Stat the objects from replicated site -echo "Stat minio2/test-bucket/encrypted" -./mc stat --no-list minio2/test-bucket/encrypted --insecure --json -stat_out1_rep=$(./mc stat --no-list minio2/test-bucket/encrypted --insecure --json) +echo "Stat silo2/test-bucket/encrypted" +./mc stat --no-list silo2/test-bucket/encrypted --insecure --json +stat_out1_rep=$(./mc stat --no-list silo2/test-bucket/encrypted --insecure --json) rep_obj1_algo=$(echo "${stat_out1_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption"') rep_obj1_keyid=$(echo "${stat_out1_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id"') -echo "Stat minio2/test-bucket/defpartsize" -./mc stat --no-list minio2/test-bucket/defpartsize --insecure --json -stat_out2_rep=$(./mc stat --no-list minio2/test-bucket/defpartsize --insecure --json) +echo "Stat silo2/test-bucket/defpartsize" +./mc stat --no-list silo2/test-bucket/defpartsize --insecure --json +stat_out2_rep=$(./mc stat --no-list silo2/test-bucket/defpartsize --insecure --json) rep_obj2_algo=$(echo "${stat_out2_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption"') rep_obj2_keyid=$(echo "${stat_out2_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id"') -echo "Stat minio2/test-bucket/custpartsize" -./mc stat --no-list minio2/test-bucket/custpartsize --insecure --json -stat_out3_rep=$(./mc stat --no-list minio2/test-bucket/custpartsize --insecure --json) +echo "Stat silo2/test-bucket/custpartsize" +./mc stat --no-list silo2/test-bucket/custpartsize --insecure --json +stat_out3_rep=$(./mc stat --no-list silo2/test-bucket/custpartsize --insecure --json) rep_obj3_algo=$(echo "${stat_out3_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption"') rep_obj3_keyid=$(echo "${stat_out3_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id"') -echo "Stat minio2/test-bucket/mpartobj" -./mc stat --no-list minio2/test-bucket/mpartobj --enc-c "minio2/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out4_rep=$(./mc stat --no-list minio2/test-bucket/mpartobj --enc-c "minio2/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo2/test-bucket/mpartobj" +./mc stat --no-list silo2/test-bucket/mpartobj --enc-c "silo2/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out4_rep=$(./mc stat --no-list silo2/test-bucket/mpartobj --enc-c "silo2/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure --json) rep_obj4_etag=$(echo "${stat_out4}" | jq '.etag') rep_obj4_size=$(echo "${stat_out4}" | jq '.size') rep_obj4_md5=$(echo "${stat_out4}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') # Check the algo and keyId of replicated objects if [ "${rep_obj1_algo}" != "${src_obj1_algo}" ]; then - echo "BUG: Algorithm: '${rep_obj1_algo}' of replicated object: 'minio2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_algo}'" + echo "BUG: Algorithm: '${rep_obj1_algo}' of replicated object: 'silo2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_algo}'" exit_1 fi if [ "${rep_obj1_keyid}" != "${src_obj1_keyid}" ]; then - echo "BUG: KeyId: '${rep_obj1_keyid}' of replicated object: 'minio2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_keyid}'" + echo "BUG: KeyId: '${rep_obj1_keyid}' of replicated object: 'silo2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_keyid}'" exit_1 fi if [ "${rep_obj2_algo}" != "${src_obj2_algo}" ]; then - echo "BUG: Algorithm: '${rep_obj2_algo}' of replicated object: 'minio2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_algo}'" + echo "BUG: Algorithm: '${rep_obj2_algo}' of replicated object: 'silo2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_algo}'" exit_1 fi if [ "${rep_obj2_keyid}" != "${src_obj2_keyid}" ]; then - echo "BUG: KeyId: '${rep_obj2_keyid}' of replicated object: 'minio2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_keyid}'" + echo "BUG: KeyId: '${rep_obj2_keyid}' of replicated object: 'silo2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_keyid}'" exit_1 fi if [ "${rep_obj3_algo}" != "${src_obj3_algo}" ]; then - echo "BUG: Algorithm: '${rep_obj3_algo}' of replicated object: 'minio2/test-bucket/custpartsize' doesn't match with source value: '${src_obj3_algo}'" + echo "BUG: Algorithm: '${rep_obj3_algo}' of replicated object: 'silo2/test-bucket/custpartsize' doesn't match with source value: '${src_obj3_algo}'" exit_1 fi if [ "${rep_obj3_keyid}" != "${src_obj3_keyid}" ]; then - echo "BUG: KeyId: '${rep_obj3_keyid}' of replicated object: 'minio2/test-bucket/custpartsize' doesn't match with source value: '${src_obj3_keyid}'" + echo "BUG: KeyId: '${rep_obj3_keyid}' of replicated object: 'silo2/test-bucket/custpartsize' doesn't match with source value: '${src_obj3_keyid}'" exit_1 fi # Check the etag, size and md5 of replicated SSEC object if [ "${rep_obj4_etag}" != "${src_obj4_etag}" ]; then - echo "BUG: Etag: '${rep_obj4_etag}' of replicated object: 'minio2/test-bucket/mpartobj' doesn't match with source value: '${src_obj4_etag}'" + echo "BUG: Etag: '${rep_obj4_etag}' of replicated object: 'silo2/test-bucket/mpartobj' doesn't match with source value: '${src_obj4_etag}'" exit_1 fi if [ "${rep_obj4_size}" != "${src_obj4_size}" ]; then - echo "BUG: Size: '${rep_obj4_size}' of replicated object: 'minio2/test-bucket/mpartobj' doesn't match with source value: '${src_obj4_size}'" + echo "BUG: Size: '${rep_obj4_size}' of replicated object: 'silo2/test-bucket/mpartobj' doesn't match with source value: '${src_obj4_size}'" exit_1 fi if [ "${src_obj4_md5}" != "${rep_obj4_md5}" ]; then - echo "BUG: MD5 checksum of object 'minio2/test-bucket/mpartobj' doesn't match with source. Expected: '${src_obj4_md5}', Found: '${rep_obj4_md5}'" + echo "BUG: MD5 checksum of object 'silo2/test-bucket/mpartobj' doesn't match with source. Expected: '${src_obj4_md5}', Found: '${rep_obj4_md5}'" exit_1 fi # Check content of replicated objects -./mc cat minio2/test-bucket/encrypted --insecure -./mc cat minio2/test-bucket/mpartobj --enc-c "minio2/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure >/dev/null || exit_1 -./mc cat minio2/test-bucket/defpartsize --insecure >/dev/null || exit_1 -./mc cat minio2/test-bucket/custpartsize --insecure >/dev/null || exit_1 +./mc cat silo2/test-bucket/encrypted --insecure +./mc cat silo2/test-bucket/mpartobj --enc-c "silo2/test-bucket/mpartobj=${TEST_MINIO_ENC_KEY}" --insecure >/dev/null || exit_1 +./mc cat silo2/test-bucket/defpartsize --insecure >/dev/null || exit_1 +./mc cat silo2/test-bucket/custpartsize --insecure >/dev/null || exit_1 -echo -n "Starting MinIO instances with different kms key ..." -CI=on MINIO_KMS_SECRET_KEY=minio3-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=minio123 minio server --certs-dir /tmp/certs --address ":9003" --console-address ":10000" /tmp/minio3/disk{1...4} >/tmp/minio3_1.log 2>&1 & -CI=on MINIO_KMS_SECRET_KEY=minio4-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=minio123 minio server --certs-dir /tmp/certs --address ":9004" --console-address ":11000" /tmp/minio4/disk{1...4} >/tmp/minio4_1.log 2>&1 & +echo -n "Starting Silo instances with different kms key ..." +CI=on MINIO_KMS_SECRET_KEY=silo3-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=silo123 silo server --certs-dir /tmp/certs --address ":9003" --console-address ":10000" /tmp/silo3/disk{1...4} >/tmp/silo3_1.log 2>&1 & +CI=on MINIO_KMS_SECRET_KEY=silo4-default-key:IyqsU3kMFloCNup4BsZtf/rmfHVcTgznO2F25CkEH1g= MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=silo123 silo server --certs-dir /tmp/certs --address ":9004" --console-address ":11000" /tmp/silo4/disk{1...4} >/tmp/silo4_1.log 2>&1 & echo "done" -export MC_HOST_minio3=https://minio:minio123@localhost:9003 -export MC_HOST_minio4=https://minio:minio123@localhost:9004 +export MC_HOST_silo3=https://minio:silo123@localhost:9003 +export MC_HOST_silo4=https://minio:silo123@localhost:9004 -./mc ready minio3 --insecure -./mc ready minio4 --insecure +./mc ready silo3 --insecure +./mc ready silo4 --insecure -./mc admin replicate add minio3 minio4 --insecure -./mc mb minio3/bucket --insecure -./mc cp --insecure --enc-kms minio3/bucket=minio3-default-key /tmp/data/encrypted minio3/bucket/x +./mc admin replicate add silo3 silo4 --insecure +./mc mb silo3/bucket --insecure +./mc cp --insecure --enc-kms silo3/bucket=silo3-default-key /tmp/data/encrypted silo3/bucket/x sleep 10 -st=$(./mc stat --json --no-list --insecure minio3/bucket/x | jq -r .replicationStatus) +st=$(./mc stat --json --no-list --insecure silo3/bucket/x | jq -r .replicationStatus) if [ "${st}" != "FAILED" ]; then echo "BUG: Replication succeeded when kms key is different" exit_1 diff --git a/docs/site-replication/run-ssec-object-replication-with-compression.sh b/docs/site-replication/run-ssec-object-replication-with-compression.sh index 4f55f7a1b..5e9e82aba 100755 --- a/docs/site-replication/run-ssec-object-replication-with-compression.sh +++ b/docs/site-replication/run-ssec-object-replication-with-compression.sh @@ -4,19 +4,19 @@ exit_1() { cleanup - echo "minio1 ============" - cat /tmp/minio1_1.log - echo "minio2 ============" - cat /tmp/minio2_1.log + echo "silo1 ============" + cat /tmp/silo1_1.log + echo "silo2 ============" + cat /tmp/silo2_1.log exit 1 } cleanup() { - echo -n "Cleaning up instances of MinIO ..." - pkill minio || sudo pkill minio - pkill -9 minio || sudo pkill -9 minio - rm -rf /tmp/minio{1,2} + echo -n "Cleaning up instances of Silo ..." + pkill silo || sudo pkill silo + pkill -9 silo || sudo pkill -9 silo + rm -rf /tmp/silo{1,2} echo "done" } @@ -25,11 +25,11 @@ cleanup export MINIO_CI_CD=1 export MINIO_BROWSER=off export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" +export MINIO_ROOT_PASSWORD="silo123" TEST_MINIO_ENC_KEY="MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDA" -# Create certificates for TLS enabled MinIO -echo -n "Setup certs for MinIO instances ..." +# Create certificates for TLS enabled Silo +echo -n "Setup certs for Silo instances ..." wget -O certgen https://github.com/minio/certgen/releases/latest/download/certgen-linux-amd64 && chmod +x certgen ./certgen --host localhost mkdir -p /tmp/certs @@ -37,24 +37,23 @@ mv public.crt /tmp/certs || sudo mv public.crt /tmp/certs mv private.key /tmp/certs || sudo mv private.key /tmp/certs echo "done" -# Start MinIO instances -echo -n "Starting MinIO instances ..." -minio server --certs-dir /tmp/certs --address ":9001" --console-address ":10000" /tmp/minio1/{1...4}/disk{1...4} /tmp/minio1/{5...8}/disk{1...4} >/tmp/minio1_1.log 2>&1 & -minio server --certs-dir /tmp/certs --address ":9002" --console-address ":11000" /tmp/minio2/{1...4}/disk{1...4} /tmp/minio2/{5...8}/disk{1...4} >/tmp/minio2_1.log 2>&1 & +# Start Silo instances +echo -n "Starting Silo instances ..." +silo server --certs-dir /tmp/certs --address ":9001" --console-address ":10000" /tmp/silo1/{1...4}/disk{1...4} /tmp/silo1/{5...8}/disk{1...4} >/tmp/silo1_1.log 2>&1 & +silo server --certs-dir /tmp/certs --address ":9002" --console-address ":11000" /tmp/silo2/{1...4}/disk{1...4} /tmp/silo2/{5...8}/disk{1...4} >/tmp/silo2_1.log 2>&1 & echo "done" if [ ! -f ./mc ]; then - echo -n "Downloading MinIO client ..." - wget -O mc https://dl.min.io/client/mc/release/linux-amd64/mc && - chmod +x mc + echo -n "Downloading Silo client ..." + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc echo "done" fi -export MC_HOST_minio1=https://minio:minio123@localhost:9001 -export MC_HOST_minio2=https://minio:minio123@localhost:9002 +export MC_HOST_silo1=https://minio:silo123@localhost:9001 +export MC_HOST_silo2=https://minio:silo123@localhost:9002 -./mc ready minio1 --insecure -./mc ready minio2 --insecure +./mc ready silo1 --insecure +./mc ready silo2 --insecure # Prepare data for tests echo -n "Preparing test data ..." @@ -67,129 +66,129 @@ touch /tmp/data/mpartobj.txt shred -s 500M /tmp/data/mpartobj.txt echo "done" -# Enable compression for site minio1 -./mc admin config set minio1 compression enable=on extensions=".txt" --insecure -./mc admin config set minio1 compression allow_encryption=off --insecure +# Enable compression for site silo1 +./mc admin config set silo1 compression enable=on extensions=".txt" --insecure +./mc admin config set silo1 compression allow_encryption=off --insecure # Create bucket in source cluster -echo "Create bucket in source MinIO instance" -./mc mb minio1/test-bucket --insecure +echo "Create bucket in source Silo instance" +./mc mb silo1/test-bucket --insecure # Load objects to source site -echo "Loading objects to source MinIO instance" -./mc cp /tmp/data/plainfile minio1/test-bucket --insecure -./mc cp /tmp/data/encrypted minio1/test-bucket/encrypted --enc-c "minio1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure -./mc cp /tmp/data/defpartsize minio1/test-bucket/defpartsize --enc-c "minio1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure +echo "Loading objects to source Silo instance" +./mc cp /tmp/data/plainfile silo1/test-bucket --insecure +./mc cp /tmp/data/encrypted silo1/test-bucket/encrypted --enc-c "silo1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure +./mc cp /tmp/data/defpartsize silo1/test-bucket/defpartsize --enc-c "silo1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure # Below should fail as compression and SSEC used at the same time # DISABLED: We must check the response header to see if compression was actually applied -#RESULT=$({ ./mc put /tmp/data/mpartobj.txt minio1/test-bucket/mpartobj.txt --enc-c "minio1/test-bucket/mpartobj.txt=${TEST_MINIO_ENC_KEY}" --insecure; } 2>&1) +#RESULT=$({ ./mc put /tmp/data/mpartobj.txt silo1/test-bucket/mpartobj.txt --enc-c "silo1/test-bucket/mpartobj.txt=${TEST_MINIO_ENC_KEY}" --insecure; } 2>&1) #if [[ ${RESULT} != *"Server side encryption specified with SSE-C with compression not allowed"* ]]; then # echo "BUG: Loading an SSE-C object to site with compression should fail. Succeeded though." # exit_1 #fi # Add replication site -./mc admin replicate add minio1 minio2 --insecure +./mc admin replicate add silo1 silo2 --insecure # sleep for replication to complete sleep 30 # List the objects from source site echo "Objects from source instance" -./mc ls minio1/test-bucket --insecure -count1=$(./mc ls minio1/test-bucket/plainfile --insecure | wc -l) +./mc ls silo1/test-bucket --insecure +count1=$(./mc ls silo1/test-bucket/plainfile --insecure | wc -l) if [ "${count1}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/plainfile not found" + echo "BUG: object silo1/test-bucket/plainfile not found" exit_1 fi -count2=$(./mc ls minio1/test-bucket/encrypted --insecure | wc -l) +count2=$(./mc ls silo1/test-bucket/encrypted --insecure | wc -l) if [ "${count2}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/encrypted not found" + echo "BUG: object silo1/test-bucket/encrypted not found" exit_1 fi -count3=$(./mc ls minio1/test-bucket/defpartsize --insecure | wc -l) +count3=$(./mc ls silo1/test-bucket/defpartsize --insecure | wc -l) if [ "${count3}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/defpartsize not found" + echo "BUG: object silo1/test-bucket/defpartsize not found" exit_1 fi sleep 120 # List the objects from replicated site echo "Objects from replicated instance" -./mc ls minio2/test-bucket --insecure -repcount1=$(./mc ls minio2/test-bucket/plainfile --insecure | wc -l) +./mc ls silo2/test-bucket --insecure +repcount1=$(./mc ls silo2/test-bucket/plainfile --insecure | wc -l) if [ "${repcount1}" -ne 1 ]; then echo "BUG: object test-bucket/plainfile not replicated" exit_1 fi -repcount2=$(./mc ls minio2/test-bucket/encrypted --insecure | wc -l) +repcount2=$(./mc ls silo2/test-bucket/encrypted --insecure | wc -l) if [ "${repcount2}" -ne 1 ]; then echo "BUG: object test-bucket/encrypted not replicated" exit_1 fi -repcount3=$(./mc ls minio2/test-bucket/defpartsize --insecure | wc -l) +repcount3=$(./mc ls silo2/test-bucket/defpartsize --insecure | wc -l) if [ "${repcount3}" -ne 1 ]; then echo "BUG: object test-bucket/defpartsize not replicated" exit_1 fi # Stat the SSEC objects from source site -echo "Stat minio1/test-bucket/encrypted" -./mc stat --no-list minio1/test-bucket/encrypted --enc-c "minio1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out1=$(./mc stat --no-list minio1/test-bucket/encrypted --enc-c "minio1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo1/test-bucket/encrypted" +./mc stat --no-list silo1/test-bucket/encrypted --enc-c "silo1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out1=$(./mc stat --no-list silo1/test-bucket/encrypted --enc-c "silo1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json) src_obj1_etag=$(echo "${stat_out1}" | jq '.etag') src_obj1_size=$(echo "${stat_out1}" | jq '.size') src_obj1_md5=$(echo "${stat_out1}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') -echo "Stat minio1/test-bucket/defpartsize" -./mc stat --no-list minio1/test-bucket/defpartsize --enc-c "minio1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out2=$(./mc stat --no-list minio1/test-bucket/defpartsize --enc-c "minio1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo1/test-bucket/defpartsize" +./mc stat --no-list silo1/test-bucket/defpartsize --enc-c "silo1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out2=$(./mc stat --no-list silo1/test-bucket/defpartsize --enc-c "silo1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) src_obj2_etag=$(echo "${stat_out2}" | jq '.etag') src_obj2_size=$(echo "${stat_out2}" | jq '.size') src_obj2_md5=$(echo "${stat_out2}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') # Stat the SSEC objects from replicated site -echo "Stat minio2/test-bucket/encrypted" -./mc stat --no-list minio2/test-bucket/encrypted --enc-c "minio2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out1_rep=$(./mc stat --no-list minio2/test-bucket/encrypted --enc-c "minio2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo2/test-bucket/encrypted" +./mc stat --no-list silo2/test-bucket/encrypted --enc-c "silo2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out1_rep=$(./mc stat --no-list silo2/test-bucket/encrypted --enc-c "silo2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json) rep_obj1_etag=$(echo "${stat_out1_rep}" | jq '.etag') rep_obj1_size=$(echo "${stat_out1_rep}" | jq '.size') rep_obj1_md5=$(echo "${stat_out1_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') -echo "Stat minio2/test-bucket/defpartsize" -./mc stat --no-list minio2/test-bucket/defpartsize --enc-c "minio2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out2_rep=$(./mc stat --no-list minio2/test-bucket/defpartsize --enc-c "minio2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo2/test-bucket/defpartsize" +./mc stat --no-list silo2/test-bucket/defpartsize --enc-c "silo2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out2_rep=$(./mc stat --no-list silo2/test-bucket/defpartsize --enc-c "silo2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) rep_obj2_etag=$(echo "${stat_out2_rep}" | jq '.etag') rep_obj2_size=$(echo "${stat_out2_rep}" | jq '.size') rep_obj2_md5=$(echo "${stat_out2_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') # Check the etag and size of replicated SSEC objects if [ "${rep_obj1_etag}" != "${src_obj1_etag}" ]; then - echo "BUG: Etag: '${rep_obj1_etag}' of replicated object: 'minio2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_etag}'" + echo "BUG: Etag: '${rep_obj1_etag}' of replicated object: 'silo2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_etag}'" exit_1 fi if [ "${rep_obj1_size}" != "${src_obj1_size}" ]; then - echo "BUG: Size: '${rep_obj1_size}' of replicated object: 'minio2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_size}'" + echo "BUG: Size: '${rep_obj1_size}' of replicated object: 'silo2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_size}'" exit_1 fi if [ "${rep_obj2_etag}" != "${src_obj2_etag}" ]; then - echo "BUG: Etag: '${rep_obj2_etag}' of replicated object: 'minio2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_etag}'" + echo "BUG: Etag: '${rep_obj2_etag}' of replicated object: 'silo2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_etag}'" exit_1 fi if [ "${rep_obj2_size}" != "${src_obj2_size}" ]; then - echo "BUG: Size: '${rep_obj2_size}' of replicated object: 'minio2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_size}'" + echo "BUG: Size: '${rep_obj2_size}' of replicated object: 'silo2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_size}'" exit_1 fi # Check content of replicated SSEC objects -./mc cat minio2/test-bucket/encrypted --enc-c "minio2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure -./mc cat minio2/test-bucket/defpartsize --enc-c "minio2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure >/dev/null || exit_1 +./mc cat silo2/test-bucket/encrypted --enc-c "silo2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure +./mc cat silo2/test-bucket/defpartsize --enc-c "silo2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure >/dev/null || exit_1 # Check the MD5 checksums of encrypted objects from source and target if [ "${src_obj1_md5}" != "${rep_obj1_md5}" ]; then - echo "BUG: MD5 checksum of object 'minio2/test-bucket/encrypted' doesn't match with source. Expected: '${src_obj1_md5}', Found: '${rep_obj1_md5}'" + echo "BUG: MD5 checksum of object 'silo2/test-bucket/encrypted' doesn't match with source. Expected: '${src_obj1_md5}', Found: '${rep_obj1_md5}'" exit_1 fi if [ "${src_obj2_md5}" != "${rep_obj2_md5}" ]; then - echo "BUG: MD5 checksum of object 'minio2/test-bucket/defpartsize' doesn't match with source. Expected: '${src_obj2_md5}', Found: '${rep_obj2_md5}'" + echo "BUG: MD5 checksum of object 'silo2/test-bucket/defpartsize' doesn't match with source. Expected: '${src_obj2_md5}', Found: '${rep_obj2_md5}'" exit_1 fi diff --git a/docs/site-replication/run-ssec-object-replication.sh b/docs/site-replication/run-ssec-object-replication.sh index 0f50f8345..5bd237872 100755 --- a/docs/site-replication/run-ssec-object-replication.sh +++ b/docs/site-replication/run-ssec-object-replication.sh @@ -4,19 +4,19 @@ exit_1() { cleanup - echo "minio1 ============" - cat /tmp/minio1_1.log - echo "minio2 ============" - cat /tmp/minio2_1.log + echo "silo1 ============" + cat /tmp/silo1_1.log + echo "silo2 ============" + cat /tmp/silo2_1.log exit 1 } cleanup() { - echo -n "Cleaning up instances of MinIO ..." - pkill minio || sudo pkill minio - pkill -9 minio || sudo pkill -9 minio - rm -rf /tmp/minio{1,2} + echo -n "Cleaning up instances of Silo ..." + pkill silo || sudo pkill silo + pkill -9 silo || sudo pkill -9 silo + rm -rf /tmp/silo{1,2} echo "done" } @@ -25,11 +25,11 @@ cleanup export MINIO_CI_CD=1 export MINIO_BROWSER=off export MINIO_ROOT_USER="minio" -export MINIO_ROOT_PASSWORD="minio123" +export MINIO_ROOT_PASSWORD="silo123" TEST_MINIO_ENC_KEY="MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDA" -# Create certificates for TLS enabled MinIO -echo -n "Setup certs for MinIO instances ..." +# Create certificates for TLS enabled Silo +echo -n "Setup certs for Silo instances ..." wget -O certgen https://github.com/minio/certgen/releases/latest/download/certgen-linux-amd64 && chmod +x certgen ./certgen --host localhost mkdir -p /tmp/certs @@ -37,24 +37,23 @@ mv public.crt /tmp/certs || sudo mv public.crt /tmp/certs mv private.key /tmp/certs || sudo mv private.key /tmp/certs echo "done" -# Start MinIO instances -echo -n "Starting MinIO instances ..." -minio server --certs-dir /tmp/certs --address ":9001" --console-address ":10000" /tmp/minio1/{1...4}/disk{1...4} /tmp/minio1/{5...8}/disk{1...4} >/tmp/minio1_1.log 2>&1 & -minio server --certs-dir /tmp/certs --address ":9002" --console-address ":11000" /tmp/minio2/{1...4}/disk{1...4} /tmp/minio2/{5...8}/disk{1...4} >/tmp/minio2_1.log 2>&1 & +# Start Silo instances +echo -n "Starting Silo instances ..." +silo server --certs-dir /tmp/certs --address ":9001" --console-address ":10000" /tmp/silo1/{1...4}/disk{1...4} /tmp/silo1/{5...8}/disk{1...4} >/tmp/silo1_1.log 2>&1 & +silo server --certs-dir /tmp/certs --address ":9002" --console-address ":11000" /tmp/silo2/{1...4}/disk{1...4} /tmp/silo2/{5...8}/disk{1...4} >/tmp/silo2_1.log 2>&1 & echo "done" if [ ! -f ./mc ]; then - echo -n "Downloading MinIO client ..." - wget -O mc https://dl.min.io/client/mc/release/linux-amd64/mc && - chmod +x mc + echo -n "Downloading Silo client ..." + "$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" ./mc echo "done" fi -export MC_HOST_minio1=https://minio:minio123@localhost:9001 -export MC_HOST_minio2=https://minio:minio123@localhost:9002 +export MC_HOST_silo1=https://minio:silo123@localhost:9001 +export MC_HOST_silo2=https://minio:silo123@localhost:9002 -./mc ready minio1 --insecure -./mc ready minio2 --insecure +./mc ready silo1 --insecure +./mc ready silo2 --insecure # Prepare data for tests echo -n "Preparing test data ..." @@ -68,155 +67,155 @@ shred -s 500M /tmp/data/custpartsize echo "done" # Add replication site -./mc admin replicate add minio1 minio2 --insecure +./mc admin replicate add silo1 silo2 --insecure # sleep for replication to complete sleep 30 # Create bucket in source cluster -echo "Create bucket in source MinIO instance" -./mc mb minio1/test-bucket --insecure +echo "Create bucket in source Silo instance" +./mc mb silo1/test-bucket --insecure # Load objects to source site -echo "Loading objects to source MinIO instance" +echo "Loading objects to source Silo instance" set -x -./mc cp /tmp/data/plainfile minio1/test-bucket --insecure -./mc cp /tmp/data/encrypted minio1/test-bucket/encrypted --enc-c "minio1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure -./mc cp /tmp/data/defpartsize minio1/test-bucket/defpartsize --enc-c "minio1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure -./mc put /tmp/data/custpartsize minio1/test-bucket/custpartsize --enc-c "minio1/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --part-size 50MiB +./mc cp /tmp/data/plainfile silo1/test-bucket --insecure +./mc cp /tmp/data/encrypted silo1/test-bucket/encrypted --enc-c "silo1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure +./mc cp /tmp/data/defpartsize silo1/test-bucket/defpartsize --enc-c "silo1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure +./mc put /tmp/data/custpartsize silo1/test-bucket/custpartsize --enc-c "silo1/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --part-size 50MiB set +x sleep 120 # List the objects from source site echo "Objects from source instance" -./mc ls minio1/test-bucket --insecure -count1=$(./mc ls minio1/test-bucket/plainfile --insecure | wc -l) +./mc ls silo1/test-bucket --insecure +count1=$(./mc ls silo1/test-bucket/plainfile --insecure | wc -l) if [ "${count1}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/plainfile not found" + echo "BUG: object silo1/test-bucket/plainfile not found" exit_1 fi -count2=$(./mc ls minio1/test-bucket/encrypted --insecure | wc -l) +count2=$(./mc ls silo1/test-bucket/encrypted --insecure | wc -l) if [ "${count2}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/encrypted not found" + echo "BUG: object silo1/test-bucket/encrypted not found" exit_1 fi -count3=$(./mc ls minio1/test-bucket/defpartsize --insecure | wc -l) +count3=$(./mc ls silo1/test-bucket/defpartsize --insecure | wc -l) if [ "${count3}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/defpartsize not found" + echo "BUG: object silo1/test-bucket/defpartsize not found" exit_1 fi -count4=$(./mc ls minio1/test-bucket/custpartsize --insecure | wc -l) +count4=$(./mc ls silo1/test-bucket/custpartsize --insecure | wc -l) if [ "${count4}" -ne 1 ]; then - echo "BUG: object minio1/test-bucket/custpartsize not found" + echo "BUG: object silo1/test-bucket/custpartsize not found" exit_1 fi # List the objects from replicated site echo "Objects from replicated instance" -./mc ls minio2/test-bucket --insecure -repcount1=$(./mc ls minio2/test-bucket/plainfile --insecure | wc -l) +./mc ls silo2/test-bucket --insecure +repcount1=$(./mc ls silo2/test-bucket/plainfile --insecure | wc -l) if [ "${repcount1}" -ne 1 ]; then echo "BUG: object test-bucket/plainfile not replicated" exit_1 fi -repcount2=$(./mc ls minio2/test-bucket/encrypted --insecure | wc -l) +repcount2=$(./mc ls silo2/test-bucket/encrypted --insecure | wc -l) if [ "${repcount2}" -ne 1 ]; then echo "BUG: object test-bucket/encrypted not replicated" exit_1 fi -repcount3=$(./mc ls minio2/test-bucket/defpartsize --insecure | wc -l) +repcount3=$(./mc ls silo2/test-bucket/defpartsize --insecure | wc -l) if [ "${repcount3}" -ne 1 ]; then echo "BUG: object test-bucket/defpartsize not replicated" exit_1 fi -repcount4=$(./mc ls minio2/test-bucket/custpartsize --insecure | wc -l) +repcount4=$(./mc ls silo2/test-bucket/custpartsize --insecure | wc -l) if [ "${repcount4}" -ne 1 ]; then echo "BUG: object test-bucket/custpartsize not replicated" exit_1 fi # Stat the SSEC objects from source site -echo "Stat minio1/test-bucket/encrypted" -./mc stat --no-list minio1/test-bucket/encrypted --enc-c "minio1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out1=$(./mc stat --no-list minio1/test-bucket/encrypted --enc-c "minio1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo1/test-bucket/encrypted" +./mc stat --no-list silo1/test-bucket/encrypted --enc-c "silo1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out1=$(./mc stat --no-list silo1/test-bucket/encrypted --enc-c "silo1/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json) src_obj1_etag=$(echo "${stat_out1}" | jq '.etag') src_obj1_size=$(echo "${stat_out1}" | jq '.size') src_obj1_md5=$(echo "${stat_out1}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') -echo "Stat minio1/test-bucket/defpartsize" -./mc stat --no-list minio1/test-bucket/defpartsize --enc-c "minio1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out2=$(./mc stat --no-list minio1/test-bucket/defpartsize --enc-c "minio1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo1/test-bucket/defpartsize" +./mc stat --no-list silo1/test-bucket/defpartsize --enc-c "silo1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out2=$(./mc stat --no-list silo1/test-bucket/defpartsize --enc-c "silo1/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) src_obj2_etag=$(echo "${stat_out2}" | jq '.etag') src_obj2_size=$(echo "${stat_out2}" | jq '.size') src_obj2_md5=$(echo "${stat_out2}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') -echo "Stat minio1/test-bucket/custpartsize" -./mc stat --no-list minio1/test-bucket/custpartsize --enc-c "minio1/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out3=$(./mc stat --no-list minio1/test-bucket/custpartsize --enc-c "minio1/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo1/test-bucket/custpartsize" +./mc stat --no-list silo1/test-bucket/custpartsize --enc-c "silo1/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out3=$(./mc stat --no-list silo1/test-bucket/custpartsize --enc-c "silo1/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) src_obj3_etag=$(echo "${stat_out3}" | jq '.etag') src_obj3_size=$(echo "${stat_out3}" | jq '.size') src_obj3_md5=$(echo "${stat_out3}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') # Stat the SSEC objects from replicated site -echo "Stat minio2/test-bucket/encrypted" -./mc stat --no-list minio2/test-bucket/encrypted --enc-c "minio2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out1_rep=$(./mc stat --no-list minio2/test-bucket/encrypted --enc-c "minio2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo2/test-bucket/encrypted" +./mc stat --no-list silo2/test-bucket/encrypted --enc-c "silo2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out1_rep=$(./mc stat --no-list silo2/test-bucket/encrypted --enc-c "silo2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure --json) rep_obj1_etag=$(echo "${stat_out1_rep}" | jq '.etag') rep_obj1_size=$(echo "${stat_out1_rep}" | jq '.size') rep_obj1_md5=$(echo "${stat_out1_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') -echo "Stat minio2/test-bucket/defpartsize" -./mc stat --no-list minio2/test-bucket/defpartsize --enc-c "minio2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out2_rep=$(./mc stat --no-list minio2/test-bucket/defpartsize --enc-c "minio2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo2/test-bucket/defpartsize" +./mc stat --no-list silo2/test-bucket/defpartsize --enc-c "silo2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out2_rep=$(./mc stat --no-list silo2/test-bucket/defpartsize --enc-c "silo2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) rep_obj2_etag=$(echo "${stat_out2_rep}" | jq '.etag') rep_obj2_size=$(echo "${stat_out2_rep}" | jq '.size') rep_obj2_md5=$(echo "${stat_out2_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') -echo "Stat minio2/test-bucket/custpartsize" -./mc stat --no-list minio2/test-bucket/custpartsize --enc-c "minio2/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json -stat_out3_rep=$(./mc stat --no-list minio2/test-bucket/custpartsize --enc-c "minio2/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) +echo "Stat silo2/test-bucket/custpartsize" +./mc stat --no-list silo2/test-bucket/custpartsize --enc-c "silo2/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json +stat_out3_rep=$(./mc stat --no-list silo2/test-bucket/custpartsize --enc-c "silo2/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure --json) rep_obj3_etag=$(echo "${stat_out3_rep}" | jq '.etag') rep_obj3_size=$(echo "${stat_out3_rep}" | jq '.size') rep_obj3_md5=$(echo "${stat_out3_rep}" | jq '.metadata."X-Amz-Server-Side-Encryption-Customer-Key-Md5"') # Check the etag and size of replicated SSEC objects if [ "${rep_obj1_etag}" != "${src_obj1_etag}" ]; then - echo "BUG: Etag: '${rep_obj1_etag}' of replicated object: 'minio2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_etag}'" + echo "BUG: Etag: '${rep_obj1_etag}' of replicated object: 'silo2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_etag}'" exit_1 fi if [ "${rep_obj1_size}" != "${src_obj1_size}" ]; then - echo "BUG: Size: '${rep_obj1_size}' of replicated object: 'minio2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_size}'" + echo "BUG: Size: '${rep_obj1_size}' of replicated object: 'silo2/test-bucket/encrypted' doesn't match with source value: '${src_obj1_size}'" exit_1 fi if [ "${rep_obj2_etag}" != "${src_obj2_etag}" ]; then - echo "BUG: Etag: '${rep_obj2_etag}' of replicated object: 'minio2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_etag}'" + echo "BUG: Etag: '${rep_obj2_etag}' of replicated object: 'silo2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_etag}'" exit_1 fi if [ "${rep_obj2_size}" != "${src_obj2_size}" ]; then - echo "BUG: Size: '${rep_obj2_size}' of replicated object: 'minio2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_size}'" + echo "BUG: Size: '${rep_obj2_size}' of replicated object: 'silo2/test-bucket/defpartsize' doesn't match with source value: '${src_obj2_size}'" exit_1 fi if [ "${rep_obj3_etag}" != "${src_obj3_etag}" ]; then - echo "BUG: Etag: '${rep_obj3_etag}' of replicated object: 'minio2/test-bucket/custpartsize' doesn't match with source value: '${src_obj3_etag}'" + echo "BUG: Etag: '${rep_obj3_etag}' of replicated object: 'silo2/test-bucket/custpartsize' doesn't match with source value: '${src_obj3_etag}'" exit_1 fi if [ "${rep_obj3_size}" != "${src_obj3_size}" ]; then - echo "BUG: Size: '${rep_obj3_size}' of replicated object: 'minio2/test-bucket/custpartsize' doesn't match with source value: '${src_obj3_size}'" + echo "BUG: Size: '${rep_obj3_size}' of replicated object: 'silo2/test-bucket/custpartsize' doesn't match with source value: '${src_obj3_size}'" exit_1 fi # Check content of replicated SSEC objects -./mc cat minio2/test-bucket/encrypted --enc-c "minio2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure -./mc cat minio2/test-bucket/defpartsize --enc-c "minio2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure >/dev/null || exit_1 -./mc cat minio2/test-bucket/custpartsize --enc-c "minio2/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure >/dev/null || exit_1 +./mc cat silo2/test-bucket/encrypted --enc-c "silo2/test-bucket/encrypted=${TEST_MINIO_ENC_KEY}" --insecure +./mc cat silo2/test-bucket/defpartsize --enc-c "silo2/test-bucket/defpartsize=${TEST_MINIO_ENC_KEY}" --insecure >/dev/null || exit_1 +./mc cat silo2/test-bucket/custpartsize --enc-c "silo2/test-bucket/custpartsize=${TEST_MINIO_ENC_KEY}" --insecure >/dev/null || exit_1 # Check the MD5 checksums of encrypted objects from source and target if [ "${src_obj1_md5}" != "${rep_obj1_md5}" ]; then - echo "BUG: MD5 checksum of object 'minio2/test-bucket/encrypted' doesn't match with source. Expected: '${src_obj1_md5}', Found: '${rep_obj1_md5}'" + echo "BUG: MD5 checksum of object 'silo2/test-bucket/encrypted' doesn't match with source. Expected: '${src_obj1_md5}', Found: '${rep_obj1_md5}'" exit_1 fi if [ "${src_obj2_md5}" != "${rep_obj2_md5}" ]; then - echo "BUG: MD5 checksum of object 'minio2/test-bucket/defpartsize' doesn't match with source. Expected: '${src_obj2_md5}', Found: '${rep_obj2_md5}'" + echo "BUG: MD5 checksum of object 'silo2/test-bucket/defpartsize' doesn't match with source. Expected: '${src_obj2_md5}', Found: '${rep_obj2_md5}'" exit_1 fi if [ "${src_obj3_md5}" != "${rep_obj3_md5}" ]; then - echo "BUG: MD5 checksum of object 'minio2/test-bucket/custpartsize' doesn't match with source. Expected: '${src_obj3_md5}', Found: '${rep_obj3_md5}'" + echo "BUG: MD5 checksum of object 'silo2/test-bucket/custpartsize' doesn't match with source. Expected: '${src_obj3_md5}', Found: '${rep_obj3_md5}'" exit_1 fi diff --git a/docs/tuning/tuned.conf b/docs/tuning/tuned.conf index 18f5dece0..4ad3b5228 100644 --- a/docs/tuning/tuned.conf +++ b/docs/tuning/tuned.conf @@ -1,5 +1,5 @@ [main] -summary=Maximum server performance for MinIO +summary=Maximum server performance for Silo [vm] transparent_hugepage=madvise