This tears out the alternative path of using screen, so that we only use systemd enabled paths. This simplifies the number of ways that devstack can be run, and provides a much more reliable process launcher than the screen based approach. Change-Id: I8c27182f60b0f5310b3a8bf5feb02beb7ffbb26a
		
			
				
	
	
		
			184 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			184 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
# **unstack.sh**
 | 
						|
 | 
						|
# 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
 | 
						|
 | 
						|
UNSTACK_ALL=${UNSTACK_ALL:-""}
 | 
						|
 | 
						|
while getopts ":a" opt; do
 | 
						|
    case $opt in
 | 
						|
        a)
 | 
						|
            UNSTACK_ALL="-1"
 | 
						|
            ;;
 | 
						|
    esac
 | 
						|
done
 | 
						|
 | 
						|
# Keep track of the current DevStack directory.
 | 
						|
TOP_DIR=$(cd $(dirname "$0") && pwd)
 | 
						|
FILES=$TOP_DIR/files
 | 
						|
 | 
						|
# Import common functions
 | 
						|
source $TOP_DIR/functions
 | 
						|
 | 
						|
# Import database library
 | 
						|
source $TOP_DIR/lib/database
 | 
						|
 | 
						|
# Load local configuration
 | 
						|
source $TOP_DIR/openrc
 | 
						|
 | 
						|
# Destination path for service data
 | 
						|
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
 | 
						|
 | 
						|
 | 
						|
# Configure Projects
 | 
						|
# ==================
 | 
						|
 | 
						|
# Plugin Phase 0: override_defaults - allow plugins to override
 | 
						|
# defaults before other services are run
 | 
						|
run_phase override_defaults
 | 
						|
 | 
						|
# Import apache functions
 | 
						|
source $TOP_DIR/lib/apache
 | 
						|
 | 
						|
# Import TLS functions
 | 
						|
source $TOP_DIR/lib/tls
 | 
						|
 | 
						|
# Source project function libraries
 | 
						|
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/placement
 | 
						|
source $TOP_DIR/lib/cinder
 | 
						|
source $TOP_DIR/lib/swift
 | 
						|
source $TOP_DIR/lib/neutron
 | 
						|
source $TOP_DIR/lib/ldap
 | 
						|
source $TOP_DIR/lib/dstat
 | 
						|
source $TOP_DIR/lib/etcd3
 | 
						|
 | 
						|
# 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
 | 
						|
 | 
						|
load_plugin_settings
 | 
						|
 | 
						|
# Determine what system we are running on.  This provides ``os_VENDOR``,
 | 
						|
# ``os_RELEASE``, ``os_PACKAGE``, ``os_CODENAME``
 | 
						|
GetOSVersion
 | 
						|
 | 
						|
set -o xtrace
 | 
						|
 | 
						|
# Run extras
 | 
						|
# ==========
 | 
						|
 | 
						|
# Phase: unstack
 | 
						|
run_phase unstack
 | 
						|
 | 
						|
# Call service stop
 | 
						|
 | 
						|
if is_service_enabled nova; then
 | 
						|
    stop_nova
 | 
						|
fi
 | 
						|
 | 
						|
if is_service_enabled placement; then
 | 
						|
    stop_placement
 | 
						|
fi
 | 
						|
 | 
						|
if is_service_enabled glance; then
 | 
						|
    stop_glance
 | 
						|
fi
 | 
						|
 | 
						|
if is_service_enabled keystone; then
 | 
						|
    stop_keystone
 | 
						|
fi
 | 
						|
 | 
						|
# Swift runs daemons
 | 
						|
if is_service_enabled s-proxy; then
 | 
						|
    stop_swift
 | 
						|
    cleanup_swift
 | 
						|
fi
 | 
						|
 | 
						|
# Apache has the WSGI processes
 | 
						|
if is_service_enabled horizon; then
 | 
						|
    stop_horizon
 | 
						|
fi
 | 
						|
 | 
						|
# Kill TLS proxies and cleanup certificates
 | 
						|
if is_service_enabled tls-proxy; then
 | 
						|
    stop_tls_proxy
 | 
						|
    cleanup_CA
 | 
						|
fi
 | 
						|
 | 
						|
SCSI_PERSIST_DIR=$CINDER_STATE_PATH/volumes/*
 | 
						|
 | 
						|
# 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
 | 
						|
if is_service_enabled cinder; then
 | 
						|
    stop_cinder || /bin/true
 | 
						|
    cleanup_cinder || /bin/true
 | 
						|
fi
 | 
						|
 | 
						|
if [[ -n "$UNSTACK_ALL" ]]; then
 | 
						|
    # Stop MySQL server
 | 
						|
    if is_service_enabled mysql; then
 | 
						|
        stop_service mysql
 | 
						|
    fi
 | 
						|
 | 
						|
    if is_service_enabled postgresql; then
 | 
						|
        stop_service postgresql
 | 
						|
    fi
 | 
						|
 | 
						|
    # Stop rabbitmq-server
 | 
						|
    if is_service_enabled rabbit; then
 | 
						|
        stop_service rabbitmq-server
 | 
						|
    fi
 | 
						|
fi
 | 
						|
 | 
						|
if is_service_enabled neutron; then
 | 
						|
    stop_neutron
 | 
						|
    cleanup_neutron
 | 
						|
fi
 | 
						|
 | 
						|
if is_service_enabled etcd3; then
 | 
						|
    stop_etcd3
 | 
						|
    cleanup_etcd3
 | 
						|
fi
 | 
						|
 | 
						|
if is_service_enabled dstat; then
 | 
						|
    stop_dstat
 | 
						|
fi
 | 
						|
 | 
						|
# NOTE: Cinder automatically installs the lvm2 package, independently of the
 | 
						|
# enabled backends. So if Cinder is enabled, and installed successfully we are
 | 
						|
# sure lvm2 (lvremove, /etc/lvm/lvm.conf, etc.) is here.
 | 
						|
if is_service_enabled cinder && is_package_installed lvm2; then
 | 
						|
    # Using /bin/true here indicates a BUG - maybe the
 | 
						|
    # DEFAULT_VOLUME_GROUP_NAME doesn't exist?  We should
 | 
						|
    # isolate this further down in lib/cinder cleanup.
 | 
						|
    clean_lvm_volume_group $DEFAULT_VOLUME_GROUP_NAME || /bin/true
 | 
						|
    clean_lvm_filter
 | 
						|
fi
 |