Sofia Enriquez 5d731a49a9 Enable volume revert to snapshot NFS tests
Since Id1e40fd42b88c63dbbba2aaae77c40660ddac4c7 we need to enable revert
to snapshot  tests in order to check that bugfix and possibly discover
new failures on the driver.

Partial-Bug: #1946059
Change-Id: If84fad2e6c0218fce2285a2638843b01c4e4bae7
2022-03-31 12:59:37 +00:00

124 lines
3.9 KiB
Bash

# Devstack NFS plugin
NFS_EXPORT_DIR=${NFS_EXPORT_DIR:-/srv/nfs1}
STACK_NFS_CONF=${STACK_NFS_CONF:-/etc/exports.d/stack_nfs.exports}
NFS_SECURE_FILE_PERMISSIONS=${NFS_SECURE_FILE_PERMISSIONS:-False}
NFS_SECURE_FILE_OPERATIONS=${NFS_SECURE_FILE_OPERATIONS:-False}
if is_ubuntu; then
NFS_SERVICE=nfs-kernel-server
else
NFS_SERVICE=nfs-server
fi
function install_nfs {
if is_ubuntu; then
install_package nfs-common
install_package nfs-kernel-server
elif is_fedora; then
install_package nfs-utils
elif is_suse; then
install_package nfs-kernel-server
install_package nfs-client
fi
}
function configure_nfs {
sudo mkdir -p $NFS_EXPORT_DIR
sudo chown $STACK_USER $NFS_EXPORT_DIR
sudo mkdir -p /etc/exports.d
cat <<EOF | sudo tee ${STACK_NFS_CONF}>/dev/null
$NFS_EXPORT_DIR localhost(rw,no_root_squash)
EOF
}
function start_nfs {
sudo service $NFS_SERVICE start
}
# is_nfs_enabled_for_service() - checks whether the OpenStack service
# specified as an argument is enabled with NFS as its storage backend.
function is_nfs_enabled_for_service {
local config config_name enabled service
enabled=1
service=$1
# Construct the global variable ENABLE_NFS_.* corresponding to a
# $service.
config_name=ENABLE_NFS_$(echo $service | \
tr '[:lower:]' '[:upper:]' | tr '-' '_')
config=$(eval echo "\$$config_name")
if (is_service_enabled $service) && [[ $config == 'True' ]]; then
enabled=0
fi
return $enabled
}
function configure_cinder_nfs {
iniset $CINDER_CONF nfs nas_host localhost
iniset $CINDER_CONF nfs nas_share_path ${NFS_EXPORT_DIR}
iniset $CINDER_CONF nfs nas_secure_file_operations \
${NFS_SECURE_FILE_OPERATIONS}
iniset $CINDER_CONF nfs nas_secure_file_permissions \
${NFS_SECURE_FILE_PERMISSIONS}
# NFS snapshot support is currently opt-in only.
iniset $CINDER_CONF nfs nfs_snapshot_support True
# Point Cinder to the Nova service correctly
# Cinder's defaults don't match what devstack sets up.
iniset $CINDER_CONF DEFAULT nova_catalog_info compute:nova:publicURL
iniset $CINDER_CONF DEFAULT nova_catalog_admin_info compute:nova:publicURL
}
# Configures tempest for running Cinder volume API tests with an NFS backend.
function configure_tempest_nfs {
# The Cinder NFS backend doesn't yet support snapshot, backup or clone.
iniset $TEMPEST_CONFIG volume-feature-enabled snapshot True
iniset $TEMPEST_CONFIG volume-feature-enabled backup False
iniset $TEMPEST_CONFIG volume-feature-enabled clone True
iniset $TEMPEST_CONFIG volume-feature-enabled manage_snapshot False
if [[ "$TARGET_BRANCH" =~ master ]]; then
iniset $TEMPEST_CONFIG volume-feature-enabled volume_revert False
else
iniset $TEMPEST_CONFIG volume-feature-enabled volume_revert True
fi
iniset $TEMPEST_CONFIG compute-feature-enabled attach_encrypted_volume False
}
if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
echo_summary "Installing NFS"
install_nfs
echo_summary "Configuring NFS"
configure_nfs
echo_summary "Initializing NFS"
start_nfs
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
if is_nfs_enabled_for_service cinder; then
configure_cinder_nfs
sudo service $NFS_SERVICE restart
fi
elif [[ "$1" == "stack" && "$2" == "test-config" ]]; then
if is_nfs_enabled_for_service cinder; then
configure_tempest_nfs
fi
fi
if [[ "$1" == "unstack" ]]; then
# Unmount any NFS shares mounted by Cinder
if [[ -d ${DATA_DIR}/cinder/mnt ]]; then
find ${DATA_DIR}/cinder/mnt -mindepth 1 -maxdepth 1 -type d \
| sudo xargs --no-run-if-empty umount -l
fi
sudo rm -f ${STACK_NFS_CONF}
# Reload to ensure (removed) config is reread, but don't
# interfere with other NFS exports.
sudo service $NFS_SERVICE reload
fi