| #!/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 | 
 |     fi | 
 | } |