diff --git a/devstack/gluster-functions.sh b/devstack/gluster-functions.sh old mode 100644 new mode 100755 index 526c13f..0c817e4 --- a/devstack/gluster-functions.sh +++ b/devstack/gluster-functions.sh @@ -192,3 +192,24 @@ function configure_nova_backend_glusterfs { _mount_gluster_volume $NOVA_INSTANCES_PATH $NOVA_GLUSTERFS_SHARE } + +# Configure GlusterFS-NFS as backend for Manila +function _configure_manila_glusterfs_nfs { + #TODO(BharatK): Add script to configure GlusterFS-NFS as a backend for Manila. + echo "Need to add script to configure GlusterFS-NFS as a backend for Manila." +} + +# Configure GlusterFS-Native as backend for Manila +function _configure_manila_glusterfs_native { + #TODO(BharatK): Add script to configure GlusterFS-Native as a backend for Manila. + echo "Need to add script to configure GlusterFS-Native as a backend for Manila." +} + +# Configure GlusterFS as a backend for Manila +function configure_manila_backend_glusterfs { + if [[ "${GLUSTERFS_MANILA_DRIVER_TYPE}" == "glusterfs" ]]; then + _configure_manila_glusterfs_nfs + else + _configure_manila_glusterfs_native + fi +} diff --git a/devstack/plugin.sh b/devstack/plugin.sh old mode 100644 new mode 100755 index 0f61df8..45f8037 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -15,6 +15,7 @@ # - configure_cinder_backend_glusterfs # - configure_glance_backend_glusterfs # - configure_nova_backend_glusterfs +# - configure_manila_backend_glusterfs # - stop_glusterfs # - cleanup_glusterfs @@ -30,10 +31,16 @@ CONFIGURE_GLUSTERFS_GLANCE=${CONFIGURE_GLUSTERFS_GLANCE:-False} # Set CONFIGURE_GLUSTERFS_NOVA to true, to configure GlusterFS as a backend for Nova. CONFIGURE_GLUSTERFS_NOVA=${CONFIGURE_GLUSTERFS_NOVA:-False} +# Set CONFIGURE_GLUSTERFS_MANILA to true, to configure GlusterFS as a backend for Manila. +CONFIGURE_GLUSTERFS_MANILA=${CONFIGURE_GLUSTERFS_MANILA:-False} + +# Set GLUSTERFS_MANILA_DRIVER_TYPE to either 'glusterfs' or 'glusterfs-native'. +GLUSTERFS_MANILA_DRIVER_TYPE=${GLUSTERFS_MANILA_DRIVER_TYPE:-glusterfs} + # Error out when devstack-plugin-glusterfs is enabled, but not selected as a backend for Cinder, Glance or Nova. -if [ "$CONFIGURE_GLUSTERFS_CINDER" = "False" ] && [ "$CONFIGURE_GLUSTERFS_GLANCE" = "False" ] && [ "$CONFIGURE_GLUSTERFS_NOVA" = "False" ]; then - echo "GlusterFS plugin enabled but not selected as a backend for Cinder, Glance or Nova." - echo "Please set CONFIGURE_GLUSTERFS_CINDER, CONFIGURE_GLUSTERFS_GLANCE and/or CONFIGURE_GLUSTERFS_NOVA to True in localrc." +if [ "$CONFIGURE_GLUSTERFS_CINDER" = "False" ] && [ "$CONFIGURE_GLUSTERFS_GLANCE" = "False" ] && [ "$CONFIGURE_GLUSTERFS_NOVA" = "False" ] && [ "$CONFIGURE_GLUSTERFS_MANILA" = "False" ]; then + echo "GlusterFS plugin enabled but not selected as a backend for Cinder, Glance, Nova or Manila." + echo "Please set CONFIGURE_GLUSTERFS_CINDER, CONFIGURE_GLUSTERFS_GLANCE, CONFIGURE_GLUSTERFS_NOVA and/or CONFIGURE_GLUSTERFS_MANILA to True in localrc." exit 1 fi @@ -99,6 +106,10 @@ elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then echo_summary "Configuring GlusterFS as a backend for Nova" configure_nova_backend_glusterfs fi + if is_service_enabled manila && [[ "$CONFIGURE_GLUSTERFS_MANILA" == "True" ]]; then + echo_summary "Configuring GlusterFS as a backend for Manila" + configure_manila_backend_glusterfs + fi fi if [[ "$1" == "unstack" ]]; then diff --git a/devstack/post_test_hook.sh b/devstack/post_test_hook.sh new file mode 100755 index 0000000..9dd4b88 --- /dev/null +++ b/devstack/post_test_hook.sh @@ -0,0 +1,81 @@ +#!/bin/bash -xe +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# This script is executed inside post_test_hook function in devstack gate. + +sudo chown -R jenkins:stack $BASE/new/tempest +sudo chown -R jenkins:stack $BASE/data/tempest +sudo chmod -R o+rx $BASE/new/devstack/files + +# Import devstack functions 'iniset' +source $BASE/new/devstack/functions + + + +if [[ "$JOB_NAME" =~ "glusterfs-native" ]]; then + local BACKEND_NAME="GLUSTERNATIVE" + iniset $BASE/new/tempest/etc/tempest.conf share enable_protocols glusterfs + iniset $BASE/new/tempest/etc/tempest.conf share storage_protocol GLUSTERFS +else + local BACKEND_NAME="GLUSTERFS" + iniset $BASE/new/tempest/etc/tempest.conf share enable_protocols nfs + iniset $BASE/new/tempest/etc/tempest.conf share enable_ip_rules_for_protocols nfs + iniset $BASE/new/tempest/etc/tempest.conf share storage_protocol NFS +fi + + +iniset $BASE/new/tempest/etc/tempest.conf share backend_names $BACKEND_NAME + +# Set two retries for CI jobs +iniset $BASE/new/tempest/etc/tempest.conf share share_creation_retry_number 2 + +# Suppress errors in cleanup of resources +SUPPRESS_ERRORS=${SUPPRESS_ERRORS_IN_CLEANUP:-True} +iniset $BASE/new/tempest/etc/tempest.conf share suppress_errors_in_cleanup $SUPPRESS_ERRORS + + +# Disable multi_backend tests +RUN_MANILA_MULTI_BACKEND_TESTS=${RUN_MANILA_MULTI_BACKEND_TESTS:-False} +iniset $BASE/new/tempest/etc/tempest.conf share multi_backend $RUN_MANILA_MULTI_BACKEND_TESTS + +# Disable manage/unmanage tests +RUN_MANILA_MANAGE_TESTS=${RUN_MANILA_MANAGE_TESTS:-False} +iniset $BASE/new/tempest/etc/tempest.conf share run_manage_unmanage_tests $RUN_MANILA_MANAGE_TESTS + +# Disable extend tests +RUN_MANILA_EXTEND_TESTS=${RUN_MANILA_EXTEND_TESTS:-False} +iniset $BASE/new/tempest/etc/tempest.conf share run_extend_tests $RUN_MANILA_EXTEND_TESTS + +# Disable shrink tests +RUN_MANILA_SHRINK_TESTS=${RUN_MANILA_SHRINK_TESTS:-False} +iniset $BASE/new/tempest/etc/tempest.conf share run_shrink_tests $RUN_MANILA_SHRINK_TESTS + +# Disable multi_tenancy tests +iniset $BASE/new/tempest/etc/tempest.conf share multitenancy_enabled False + + +# let us control if we die or not +set +o errexit +cd $BASE/new/tempest + +export MANILA_TEMPEST_CONCURRENCY=${MANILA_TEMPEST_CONCURRENCY:-12} +export MANILA_TESTS=${MANILA_TESTS:-'tempest.api.share*'} + +if [[ "$JOB_NAME" =~ "scenario" ]]; then + echo "Set test set to scenario only" + MANILA_TESTS='tempest.scenario.*share*' +fi + +echo "Running tempest manila test suites" +sudo -H -u jenkins tox -eall $MANILA_TESTS -- --concurrency=$MANILA_TEMPEST_CONCURRENCY diff --git a/devstack/pre_test_hook.sh b/devstack/pre_test_hook.sh new file mode 100755 index 0000000..c3e35fb --- /dev/null +++ b/devstack/pre_test_hook.sh @@ -0,0 +1,50 @@ +#!/bin/bash -xe +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# This script is executed inside pre_test_hook function in devstack gate. + +localrc_path=$BASE/new/devstack/localrc +echo "DEVSTACK_GATE_TEMPEST_ALLOW_TENANT_ISOLATION=1" >> $localrc_path +echo "API_RATE_LIMIT=False" >> $localrc_path +echo "TEMPEST_SERVICES+=,manila" >> $localrc_path + +echo "MANILA_USE_DOWNGRADE_MIGRATIONS=True" >> $localrc_path + +# JOB_NAME is defined in openstack-infra/config project +# used by CI/CD, where this script is intended to be used. +if [[ "$JOB_NAME" =~ "multibackend" ]]; then + echo "MANILA_MULTI_BACKEND=True" >> $localrc_path +else + echo "MANILA_MULTI_BACKEND=False" >> $localrc_path +fi + +# Enabling isolated metadata in Neutron is required because +# Tempest creates isolated networks and created vm's in scenario tests don't +# have access to Nova Metadata service. This leads to unavailability of +# created vm's in scenario tests. +echo '[[post-config|$Q_DHCP_CONF_FILE]]' >> $localrc_path +echo '[DEFAULT]' >> $localrc_path +echo "enable_isolated_metadata=True" >> $localrc_path + +# Go to Tempest dir and checkout stable commit to avoid possible +# incompatibilities for plugin stored in Manila repo. +TEMPEST_COMMIT="489f5e62" # 15 June, 2015 +cd $BASE/new/tempest +git checkout $TEMPEST_COMMIT + +# Print current Tempest status +git status + +# Install Manila Tempest integration +cp -r $BASE/new/manila/contrib/tempest/tempest/* $BASE/new/tempest/tempest