8c2ce6ea72
Introduce the tooling to build virtual environments. * tools/build_venv.sh: build a venv * introduce lib/stack to house functionality extracted from stack.sh that is needed in other places, such as Grenade; start with stack_install_service to wrap the venv install mechanics * declare PROJECT_VENV array to track where project venvs should be installed * create a venv for each project defined in PROJECT_VENV in stack_install_service() Change-Id: I508588c0e2541b976dd94569d44b61dd2c35c01c
134 lines
3.0 KiB
Bash
Executable File
134 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# **clean.sh**
|
|
|
|
# ``clean.sh`` does its best to eradicate traces of a Grenade
|
|
# run except for the following:
|
|
# - both base and target code repos are left alone
|
|
# - packages (system and pip) are left alone
|
|
|
|
# This means that all data files are removed. More??
|
|
|
|
# Keep track of the current devstack directory.
|
|
TOP_DIR=$(cd $(dirname "$0") && pwd)
|
|
|
|
# Import common functions
|
|
source $TOP_DIR/functions
|
|
|
|
FILES=$TOP_DIR/files
|
|
|
|
# Load local configuration
|
|
source $TOP_DIR/openrc
|
|
|
|
# Get the variables that are set in stack.sh
|
|
if [[ -r $TOP_DIR/.stackenv ]]; then
|
|
source $TOP_DIR/.stackenv
|
|
fi
|
|
|
|
# Determine what system we are running on. This provides ``os_VENDOR``,
|
|
# ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME``
|
|
# and ``DISTRO``
|
|
GetDistro
|
|
|
|
# Import apache functions
|
|
source $TOP_DIR/lib/apache
|
|
source $TOP_DIR/lib/ldap
|
|
|
|
# Import database library
|
|
source $TOP_DIR/lib/database
|
|
source $TOP_DIR/lib/rpc_backend
|
|
|
|
source $TOP_DIR/lib/tls
|
|
|
|
source $TOP_DIR/lib/oslo
|
|
source $TOP_DIR/lib/horizon
|
|
source $TOP_DIR/lib/keystone
|
|
source $TOP_DIR/lib/glance
|
|
source $TOP_DIR/lib/nova
|
|
source $TOP_DIR/lib/cinder
|
|
source $TOP_DIR/lib/swift
|
|
source $TOP_DIR/lib/ceilometer
|
|
source $TOP_DIR/lib/heat
|
|
source $TOP_DIR/lib/neutron
|
|
source $TOP_DIR/lib/ironic
|
|
source $TOP_DIR/lib/trove
|
|
|
|
|
|
# Extras Source
|
|
# --------------
|
|
|
|
# Phase: source
|
|
if [[ -d $TOP_DIR/extras.d ]]; then
|
|
for i in $TOP_DIR/extras.d/*.sh; do
|
|
[[ -r $i ]] && source $i source
|
|
done
|
|
fi
|
|
|
|
# See if there is anything running...
|
|
# need to adapt when run_service is merged
|
|
SESSION=$(screen -ls | awk '/[0-9].stack/ { print $1 }')
|
|
if [[ -n "$SESSION" ]]; then
|
|
# Let unstack.sh do its thing first
|
|
$TOP_DIR/unstack.sh --all
|
|
fi
|
|
|
|
# Run extras
|
|
# ==========
|
|
|
|
# Phase: clean
|
|
if [[ -d $TOP_DIR/extras.d ]]; then
|
|
for i in $TOP_DIR/extras.d/*.sh; do
|
|
[[ -r $i ]] && source $i clean
|
|
done
|
|
fi
|
|
|
|
# Clean projects
|
|
|
|
# BUG: cinder tgt doesn't exit cleanly if it's not running.
|
|
cleanup_cinder || /bin/true
|
|
|
|
cleanup_glance
|
|
cleanup_keystone
|
|
cleanup_nova
|
|
cleanup_neutron
|
|
cleanup_swift
|
|
|
|
if is_service_enabled ldap; then
|
|
cleanup_ldap
|
|
fi
|
|
|
|
# Do the hypervisor cleanup until this can be moved back into lib/nova
|
|
if is_service_enabled nova && [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then
|
|
cleanup_nova_hypervisor
|
|
fi
|
|
|
|
# Clean out /etc
|
|
sudo rm -rf /etc/keystone /etc/glance /etc/nova /etc/cinder /etc/swift /etc/heat /etc/neutron
|
|
|
|
# Clean out tgt
|
|
sudo rm -f /etc/tgt/conf.d/*
|
|
|
|
# Clean up the message queue
|
|
cleanup_rpc_backend
|
|
cleanup_database
|
|
|
|
# Clean out data, logs and status
|
|
LOGDIR=$(dirname "$LOGFILE")
|
|
sudo rm -rf $DATA_DIR $LOGDIR $DEST/status
|
|
if [[ -n "$SCREEN_LOGDIR" ]] && [[ -d "$SCREEN_LOGDIR" ]]; then
|
|
sudo rm -rf $SCREEN_LOGDIR
|
|
fi
|
|
|
|
# Clean up venvs
|
|
DIRS_TO_CLEAN="$WHEELHOUSE ${PROJECT_VENV[@]}"
|
|
rm -rf $DIRS_TO_CLEAN
|
|
|
|
# Clean up files
|
|
|
|
FILES_TO_CLEAN=".localrc.auto docs/files docs/html shocco/ stack-screenrc test*.conf* test.ini*"
|
|
FILES_TO_CLEAN+=".stackenv .prereqs"
|
|
|
|
for file in $FILES_TO_CLEAN; do
|
|
rm -rf $TOP_DIR/$file
|
|
done
|