#!/bin/bash
set -eux

manifest=$(get-pip-manifest os-collect-config)

virtualenv --setuptools $OS_COLLECT_CONFIG_VENV_DIR
set +u
source $OS_COLLECT_CONFIG_VENV_DIR/bin/activate
set -u

if [ -n "$manifest" ]; then
    use-pip-manifest $manifest
else
    # Need setuptools>=1.0 to manage connections when
    # downloading from pypi using http_proxy and https_proxy
    $OS_COLLECT_CONFIG_VENV_DIR/bin/pip install -U 'setuptools>=1.0'
    # bug #1293812 : Avoid easy_install triggering on pbr.
    $OS_COLLECT_CONFIG_VENV_DIR/bin/pip install -U 'pbr>=0.11,<2.0'
    $OS_COLLECT_CONFIG_VENV_DIR/bin/pip install -U os-collect-config
fi

# Write the manifest of what was installed
write-pip-manifest os-collect-config

ln -s $OS_COLLECT_CONFIG_VENV_DIR/bin/os-collect-config /usr/local/bin/os-collect-config

# Minimal static config for bootstrapping
cat > /etc/os-collect-config.conf <<eof
[DEFAULT]
command=os-refresh-config
eof
chmod 600 /etc/os-collect-config.conf

if [ "$DIB_INIT_SYSTEM" == "upstart" ] ; then
    cat > /etc/init/os-collect-config.conf <<eof
start on runlevel [2345]
stop on runlevel [016]
respawn

# We're logging to syslog
console none

exec os-collect-config  2>&1 | logger -t os-collect-config
eof

elif [ "$DIB_INIT_SYSTEM" == "systemd" ] ; then
    cat > /lib/systemd/system/os-collect-config.service <<eof
[Unit]
Description=Collect metadata and run hook commands.
After=cloud-config.service
Before=crond.service

[Service]
ExecStart=/usr/local/bin/os-collect-config
Restart=on-failure

[Install]
WantedBy=multi-user.target
eof

else
    echo Only systems with systemd or upstart are supported.
    exit 1
fi
os-svc-enable -n os-collect-config

set +u
deactivate
set -u
