diff options
Diffstat (limited to 'tools/kolla-compose')
| -rwxr-xr-x | tools/kolla-compose | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/tools/kolla-compose b/tools/kolla-compose new file mode 100755 index 000000000..4df9ea4db --- /dev/null +++ b/tools/kolla-compose @@ -0,0 +1,156 @@ +#!/bin/bash +# +# This script can be used to interact with kolla. + +# Move to top level directory +REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')") +cd "$(dirname "$REAL_PATH")/.." + +. tools/validate-docker-execute + +NETWORK_MANAGER=$(grep -sri NETWORK_MANAGER ./compose/openstack.env | cut -f2 -d'=') +if [[ -z "$NETWORK_MANAGER" ]]; then + echo 'No network manager defined in ./compose/openstack.env, defaulting to "neutron".' + NETWORK_MANAGER="neutron" +fi + +function process { + local service=$1 + echo "$ACTION $service" + docker-compose -f ./compose/${service}.yml $COMPOSE_CMD + if [[ $? -ne 0 ]]; then + echo "Call docker-compose -f ./compose/${service}.yml $COMPOSE_CMD fail." + exit 1 + fi +} + +function process_all { + process rabbitmq + process mariadb + process keystone + process glance-api-registry + process nova-api-conductor-scheduler-consoleauth-novncproxy + if [[ "${NETWORK_MANAGER}" == "nova" ]] ; then + process nova-compute-network + else + # Defaulting to neutron + process nova-compute + process neutron-server + process neutron-linuxbridge-agent + process neutron-agents + fi + process heat-api-engine + process magnum-api-conductor + process horizon + process cinder-api-scheduler + process cinder-backup + process cinder-volume + process ceilometer + process gnocchi +} + +function check_selinux { + # Check for SELinux in Enforcing mode and exit if found + if [[ -x /usr/sbin/getenforce ]]; then + if [[ $(/usr/sbin/getenforce) == "Enforcing" ]]; then + echo "You must execute this script without SELinux enforcing mode." + echo "Turn off SELinux enforcing mode by running:" + echo "$ sudo setenforce permissive" + exit 1 + fi + fi +} + +function pre_start { + check_selinux + + if [[ -r ./openrc ]]; then + # Source openrc for commands + source ./openrc + else + echo 'Could not find ./openrc; bootstrap your environment with "./tools/genenv".' + exit 1 + fi +} + +function post_start { + echo -n "Waiting for OpenStack services to become available" + + until [ $(nova service-list 2>&1 | grep -c enabled) -ge 4 ]; do + echo -n . + sleep 2 + done + + until [ $(neutron agent-list 2>&1 | grep -c ':-)') -ge 4 ]; do + echo -n . + sleep 2 + done + echo " done" + + echo Example Usage: + echo source openrc # source keystone credentials + + echo Configure your environment once by running: + echo tools/init-runonce +} + +function usage { + cat <<EOF +Usage: $0 COMMAND + +Commands: + pull Pull all of the Docker images + start Start all kolla containers + status List running kolla containers + stop Stop all kolla containers + restart Restart all kolla containers + destroy Kill and remove all kolla containers and volumes +EOF +} + +case "$1" in + +(pull) + ACTION="Pulling" + COMPOSE_CMD="pull" + process_all + ;; + +(start) + ACTION="Starting" + COMPOSE_CMD="up -d" + pre_start + process_all + post_start + ;; + +(restart) + ACTION="Restarting" + COMPOSE_CMD="restart" + process_all + ;; + +(status) + ACTION="Status of" + COMPOSE_CMD="ps" + process_all + ;; + +(stop) + ACTION="Stopping" + COMPOSE_CMD="stop" + process_all + ;; + +(destroy) + ACTION="Destroying" + COMPOSE_CMD="kill" + process_all + COMPOSE_CMD="rm -f -v" + process_all + ;; + +(*) usage + exit 0 + ;; +esac |
