#!/bin/bash
#
# lib/stack
#
# These functions are code snippets pulled out of ``stack.sh`` for easier
# re-use by Grenade.  They can assume the same environment is available
# as in the lower part of ``stack.sh``, namely a valid stackrc has been sourced
# as well as all of the ``lib/*`` files for the services have been sourced.
#
# For clarity, all functions declared here that came from ``stack.sh``
# shall be named with the prefix ``stack_``.


# Functions
# ---------

# Generic service install handles venv creation if configured for service
# stack_install_service service
function stack_install_service {
    local service=$1
    if type install_${service} >/dev/null 2>&1; then
        # FIXME(dhellmann): Needs to be python3-aware at some point.
        if [[ ${USE_VENV} = True && -n ${PROJECT_VENV[$service]:-} ]]; then
            rm -rf ${PROJECT_VENV[$service]}
            source $TOP_DIR/tools/build_venv.sh ${PROJECT_VENV[$service]} ${ADDITIONAL_VENV_PACKAGES//,/ }
            export PIP_VIRTUAL_ENV=${PROJECT_VENV[$service]:-}

            # Install other OpenStack prereqs that might come from source repos
            install_oslo
            install_keystonemiddleware
        fi
        install_${service}
        if [[ ${USE_VENV} = True && -n ${PROJECT_VENV[$service]:-} ]]; then
            unset PIP_VIRTUAL_ENV
        fi
    else
        echo "No function declared with name 'install_${service}'."
        exit 1
    fi
}
