#!/bin/bash
#
# lib/oslo
#
# Functions to install libraries from git
#
# We need this to handle the fact that projects would like to use
# pre-released versions of oslo libraries.

# Dependencies:
#
# - ``functions`` file

# ``stack.sh`` calls the entry points in this order:
#
# - install_libraries

# Save trace setting
_XTRACE_LIB_LIBRARIES=$(set +o | grep xtrace)
set +o xtrace


# Defaults
# --------
GITDIR["automaton"]=$DEST/automaton
GITDIR["castellan"]=$DEST/castellan
GITDIR["cliff"]=$DEST/cliff
GITDIR["cursive"]=$DEST/cursive
GITDIR["debtcollector"]=$DEST/debtcollector
GITDIR["futurist"]=$DEST/futurist
GITDIR["openstacksdk"]=$DEST/openstacksdk
GITDIR["os-client-config"]=$DEST/os-client-config
GITDIR["osc-lib"]=$DEST/osc-lib
GITDIR["osc-placement"]=$DEST/osc-placement
GITDIR["oslo.cache"]=$DEST/oslo.cache
GITDIR["oslo.concurrency"]=$DEST/oslo.concurrency
GITDIR["oslo.config"]=$DEST/oslo.config
GITDIR["oslo.context"]=$DEST/oslo.context
GITDIR["oslo.db"]=$DEST/oslo.db
GITDIR["oslo.i18n"]=$DEST/oslo.i18n
GITDIR["oslo.log"]=$DEST/oslo.log
GITDIR["oslo.messaging"]=$DEST/oslo.messaging
GITDIR["oslo.middleware"]=$DEST/oslo.middleware
GITDIR["oslo.policy"]=$DEST/oslo.policy
GITDIR["oslo.privsep"]=$DEST/oslo.privsep
GITDIR["oslo.reports"]=$DEST/oslo.reports
GITDIR["oslo.rootwrap"]=$DEST/oslo.rootwrap
GITDIR["oslo.serialization"]=$DEST/oslo.serialization
GITDIR["oslo.service"]=$DEST/oslo.service
GITDIR["oslo.utils"]=$DEST/oslo.utils
GITDIR["oslo.versionedobjects"]=$DEST/oslo.versionedobjects
GITDIR["oslo.vmware"]=$DEST/oslo.vmware
GITDIR["osprofiler"]=$DEST/osprofiler
GITDIR["pycadf"]=$DEST/pycadf
GITDIR["stevedore"]=$DEST/stevedore
GITDIR["taskflow"]=$DEST/taskflow
GITDIR["tooz"]=$DEST/tooz

# Non oslo libraries are welcomed below as well, this prevents
# duplication of this code.
GITDIR["os-brick"]=$DEST/os-brick
GITDIR["os-traits"]=$DEST/os-traits

# Support entry points installation of console scripts
OSLO_BIN_DIR=$(get_python_exec_prefix)


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

function _install_lib_from_source {
    local name=$1
    if use_library_from_git "$name"; then
        git_clone_by_name "$name"
        setup_dev_lib -bindep "$name"
    fi
}

# install_oslo - install libraries that oslo needs
function install_oslo {
    install_libs
}

# install_libs() - Install additional libraries that we need and want
# on all environments. Some will only install here if from source,
# others will always install.
function install_libs {
    _install_lib_from_source "automaton"
    _install_lib_from_source "castellan"
    _install_lib_from_source "cliff"
    _install_lib_from_source "cursive"
    _install_lib_from_source "debtcollector"
    _install_lib_from_source "futurist"
    _install_lib_from_source "openstacksdk"
    _install_lib_from_source "osc-lib"
    _install_lib_from_source "osc-placement"
    _install_lib_from_source "os-client-config"
    _install_lib_from_source "oslo.cache"
    _install_lib_from_source "oslo.concurrency"
    _install_lib_from_source "oslo.config"
    _install_lib_from_source "oslo.context"
    _install_lib_from_source "oslo.db"
    _install_lib_from_source "oslo.i18n"
    _install_lib_from_source "oslo.log"
    _install_lib_from_source "oslo.messaging"
    _install_lib_from_source "oslo.middleware"
    _install_lib_from_source "oslo.policy"
    _install_lib_from_source "oslo.privsep"
    _install_lib_from_source "oslo.reports"
    _install_lib_from_source "oslo.rootwrap"
    _install_lib_from_source "oslo.serialization"
    _install_lib_from_source "oslo.service"
    _install_lib_from_source "oslo.utils"
    _install_lib_from_source "oslo.versionedobjects"
    _install_lib_from_source "oslo.vmware"
    _install_lib_from_source "osprofiler"
    _install_lib_from_source "pycadf"
    _install_lib_from_source "stevedore"
    _install_lib_from_source "taskflow"
    _install_lib_from_source "tooz"
    # installation of additional libraries
    #
    # os-traits for nova
    _install_lib_from_source "os-brick"
    _install_lib_from_source "os-traits"
    #
    # python client libraries we might need from git can go here
    _install_lib_from_source "python-barbicanclient"


    # etcd (because tooz does not have a hard dependency on these)
    #
    # NOTE(sdague): this is currently a work around because tooz
    # doesn't pull in etcd3.
    pip_install etcd3
    pip_install etcd3gw
}

# Restore xtrace
$_XTRACE_LIB_LIBRARIES

# Tell emacs to use shell-script-mode
## Local variables:
## mode: shell-script
## End: