#!/bin/bash
set -e

[ -z $LAYEROPS_IMAGE_VERSION ] && export LAYEROPS_IMAGE_VERSION=$(date +%Y-%m-%d)

export ANSIBLE_HOST_KEY_CHECKING=false
export ANSIBLE_LOAD_CALLBACK_PLUGINS=true
export ANSIBLE_STDOUT_CALLBACK=yaml
export ANSIBLE_ROLES_PATH=../ansible/roles

export LAYEROPS_SEED_IMAGE=/tmp/seed-$RANDOM.img

export LAYEROPS_PLAYBOOK_ROOTDIR=../ansible

export LAYEROPS_PLAYBOOK_FILE=install-${LAYEROPS_IMAGE_TYPE:-client}.yml
[ -f $LAYEROPS_PLAYBOOK_ROOTDIR/$LAYEROPS_PLAYBOOK_FILE ] || sh -c "echo Missing file $LAYEROPS_PLAYBOOK_ROOTDIR/$LAYEROPS_PLAYBOOK_FILE && exit 1"

case ${1:-empty} in
  lxc)
    LXC_UBUNTU_MINIMAL_REMOTE=https://cloud-images.ubuntu.com/minimal/releases/
    lxc remote ls | grep $LXC_UBUNTU_MINIMAL_REMOTE > /dev/null || lxc remote add --protocol simplestreams ubuntu-minimal $LXC_UBUNTU_MINIMAL_REMOTE
    export LAYEROPS_PACKER_FILE=lxc.pkr.hcl
    export LAYEROPS_IMAGE_NAME="layerops-${LAYEROPS_IMAGE_TYPE:-client}-lxc-${LAYEROPS_IMAGE_VERSION}"
    [ -z $LAYEROPS_IMAGE_DEST ] && export LAYEROPS_IMAGE_DEST=$PWD
  ;;
  *)
    echo "Usage: $0 [aws|azure|gcp|lxc|openstack|outscale|scaleway]"
    exit 1
  ;;
esac

packer init -upgrade $LAYEROPS_PACKER_FILE
packer build -force $LAYEROPS_PACKER_FILE

# Make outscale image public
if [ $1 == "outscale"  ]
then
  cat <<EOF > ~/.osc/config.json
{
    "default": {
        "access_key": "$OUTSCALE_ACCESSKEYID",
        "secret_key": "$OUTSCALE_SECRETKEYID",
        "host": "outscale.com",
        "https": true,
        "method": "POST",
        "region_name": "$OUTSCALE_REGION"
    }
}
EOF
  IMAGE_ID=$(osc-cli api ReadImages  --Filters "{\"ImageNames\": [\"$LAYEROPS_IMAGE_NAME\"]}" | jq -r .Images[0].ImageId)
  osc-cli api UpdateImage --ImageId "$IMAGE_ID" --PermissionsToLaunch "{\"Additions\": {\"AccountIds\": [\"$OUTSCALE_ACCOUNT_ID\"], \"GlobalPermission\": True}}"
fi

# Clean
if [ -f "$LAYEROPS_SEED_IMAGE" ] ; then rm -f $LAYEROPS_SEED_IMAGE ; fi
