aboutsummaryrefslogtreecommitdiff
path: root/tools/kolla-compose
diff options
context:
space:
mode:
Diffstat (limited to 'tools/kolla-compose')
-rwxr-xr-xtools/kolla-compose156
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