#!/bin/bash set -ex PYTHON="python2" function run_payload { local payload="$1" sudo "$PYTHON" <&2 sudo touch -- "$keyring" sudo ceph-authtool "$keyring" --import-keyring "$T" rm -f -- "$T" } function conf_keys { local client="$1" ls /etc/ceph >&2 ceph auth get-or-create "client.manila" mds 'allow *' osd 'allow rw' mon 'allow *' | import_key "$client" /etc/ceph/ceph.keyring } function create_data_isolated { local PAYLOAD=' vp = VolumePath(None, "vol_isolated") vc.create_volume(vp, (1<<33), data_isolated=True) auth_result = vc.authorize(vp, "vol_data_isolated", tenant_id="test") print("[client.vol_data_isolated]\n\tkey = ", auth_result["auth_key"]) ' run_payload "$PAYLOAD" | import_key "vol_data_isolated" } function create_default { local PAYLOAD=' vp = VolumePath(None, "vol_default") vc.create_volume(vp, (1<<33)) auth_result = vc.authorize(vp, "vol_default", tenant_id="test") print("[client.vol_default]\n\tkey = ", auth_result["auth_key"]) ' run_payload "$PAYLOAD" | import_key "vol_default" } function create { create_data_isolated create_default } function populate { pwd df -h . ls -l cp -a /usr/bin . } function verify_data_isolated { ceph fs subvolume getpath cephfs vol_isolated stat bin ls bin | tail } function verify_default { ceph fs subvolume getpath cephfs vol_default stat bin ls bin | tail } function verify { diff <(ceph fs subvolume ls cephfs | jq -cS 'sort_by(.name)' | tee /dev/stderr) <(printf '[{"name":"vol_isolated"},{"name":"vol_default"}]' | jq -cS 'sort_by(.name)') verify_data_isolated verify_default } function main { if [ "$1" = create ]; then conf_keys create elif [ "$1" = populate ]; then populate elif [ "$1" = verify ]; then # verify (sub)volumes still exist and are configured correctly verify else exit 1 fi } main "$ACTION"