# DIVIDER #!/bin/bash # DIVIDER UNSTACK_ALL="" while getopts ":a" opt; do case $opt in a) UNSTACK_ALL="" ;; esac done # DIVIDER TOP_DIR=$(cd $(dirname "$0") && pwd) FILES=$TOP_DIR/files # DIVIDER source $TOP_DIR/functions # DIVIDER source $TOP_DIR/lib/database # DIVIDER source $TOP_DIR/openrc # DIVIDER DATA_DIR=${DATA_DIR:-${DEST}/data} if [[ $EUID -eq 0 ]]; then echo "You are running this script as root." echo "It might work but you will have a better day running it as $STACK_USER" exit 1 fi # DIVIDER # DIVIDER run_phase override_defaults # DIVIDER source $TOP_DIR/lib/apache # DIVIDER source $TOP_DIR/lib/tls # DIVIDER source $TOP_DIR/lib/infra source $TOP_DIR/lib/oslo source $TOP_DIR/lib/lvm 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/heat source $TOP_DIR/lib/neutron-legacy source $TOP_DIR/lib/ldap source $TOP_DIR/lib/dstat source $TOP_DIR/lib/dlm # DIVIDER # DIVIDER if [[ -d $TOP_DIR/extras.d ]]; then for i in $TOP_DIR/extras.d/*.sh; do [[ -r $i ]] && source $i source done fi load_plugin_settings # DIVIDER GetOSVersion set -o xtrace # DIVIDER # DIVIDER run_phase unstack if [[ "$Q_USE_DEBUG_COMMAND" == "True" ]]; then source $TOP_DIR/openrc teardown_neutron_debug fi # DIVIDER if is_service_enabled heat; then stop_heat fi if is_service_enabled nova; then stop_nova fi if is_service_enabled glance; then stop_glance fi if is_service_enabled keystone; then stop_keystone fi # DIVIDER if is_service_enabled s-proxy; then stop_swift cleanup_swift fi # DIVIDER if is_service_enabled horizon; then stop_horizon fi # DIVIDER if is_service_enabled tls-proxy; then stop_tls_proxy cleanup_CA fi if [ "$USE_SSL" == "True" ]; then cleanup_CA fi SCSI_PERSIST_DIR=$CINDER_STATE_PATH/volumes/* # DIVIDER # DIVIDER if is_service_enabled cinder; then stop_cinder || /bin/true cleanup_cinder || /bin/true fi if [[ -n "$UNSTACK_ALL" ]]; then # DIVIDER if is_service_enabled mysql; then stop_service mysql fi if is_service_enabled postgresql; then stop_service postgresql fi # DIVIDER if is_service_enabled rabbit; then stop_service rabbitmq-server fi fi if is_service_enabled neutron; then stop_neutron stop_neutron_third_party cleanup_neutron fi if is_service_enabled dstat; then stop_dstat fi if is_service_enabled zookeeper; then stop_zookeeper fi # DIVIDER SCREEN=$(which screen) if [[ -n "$SCREEN" ]]; then SESSION=$(screen -ls | awk '/[0-9].stack/ { print $1 }') if [[ -n "$SESSION" ]]; then screen -X -S $SESSION quit fi fi # DIVIDER if is_service_enabled cinder; then clean_lvm_volume_group $DEFAULT_VOLUME_GROUP_NAME || /bin/true clean_lvm_filter fi # DIVIDER

Stops that which is started by stack.sh (mostly) mysql and rabbit are left running as OpenStack code refreshes do not require them to be restarted.

Stop all processes by setting UNSTACK_ALL or specifying -a on the command line

Keep track of the current DevStack directory.

Import common functions

Import database library

Load local configuration

Destination path for service data

Configure Projects

Plugin Phase 0: override_defaults - allow plugins to override defaults before other services are run

Import apache functions

Import TLS functions

Source project function libraries

Extras Source

Phase: source

Determine what system we are running on. This provides os_VENDOR, os_RELEASE, os_UPDATE, os_PACKAGE, os_CODENAME

Run extras

Phase: unstack

Call service stop

Swift runs daemons

Apache has the WSGI processes

Kill TLS proxies and cleanup certificates

BUG: tgt likes to exit 1 on service stop if everything isn't perfect, we should clean up cinder stop paths.

Get the iSCSI volumes

Stop MySQL server

Stop rabbitmq-server

Clean up the remainder of the screen processes

BUG: maybe it doesn't exist? We should isolate this further down. NOTE: Cinder automatically installs the lvm2 package, independently of the enabled backends. So if Cinder is enabled, we are sure lvm (lvremove, /etc/lvm/lvm.conf, etc.) is here.