#!/bin/bash
#
# Install python pip & virtualenv packages & then create
# a python virtualenv & install the infra-ansible dependencies in it

# check platform prerequisites
case $(uname) in
  Linux)
    # check if the apt-get executable is available
    if hash apt-get 2>/dev/null; then
        # check for & install the various packages
        hash pip 2>/dev/null || { sudo -E apt-get install -y python-pip; }
        [[ -z "$(dpkg -l python-dev | grep '^ii  python-dev')" ]] && sudo -E apt-get install -y python-dev
        hash virtualenv 2>/dev/null || { sudo pip install virtualenv; }
    elif hash yum 2>/dev/null; then
        # on RHEL/CentOS, pip is installed during the virtualenv setup
        hash virtualenv 2>/dev/null || { sudo -E yum install -y python-virtualenv python-devel gcc gcc-c++; }
        hash wget 2>/dev/null || { sudo -E yum install -y wget; }
    else
        echo "ERROR: Zoinks, I only know about Debian and RHEL"
        exit 1
    fi

    ;;
  Darwin)
    hash pip 2>/dev/null || { echo "ERROR: pip isn't installed, please rectify this!" ; exit 1; }
    hash virtualenv 2>/dev/null || { sudo pip install virtualenv; }
    ;;
esac


# Create a fresh infra-ansible virtual environment
[[ -e venv ]] && rm -rf venv
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt

# Create inventory folder
if [[ ! -d inventory ]]; then
    mkdir inventory
fi

# Install roles dependencies from requirements.yml
ansible-galaxy install -r requirements.yml

# Install Ansible openstack inventory
wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack.py -O inventory/openstack.py
chmod +x inventory/openstack.py