#!/bin/bash

# pre-requirments:
# apt-get install cloud-localds
# Cloudimg: wget https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
# Packer: https://releases.hashicorp.com/packer/1.1.3/packer_1.1.3_linux_amd64.zip

# Those script - only example for variables, which should be passed to packer and
# overwrite variables under /scripts/ directory

# External script sources:
# http/bootstrap.saltstack.com.sh https://github.com/saltstack/salt-bootstrap
#

export IMAGE_NAME="mcp-offline-mirror-$(date '+%Y-%m-%d-%H-%M-%S')"
export PACKER_IMAGES_CACHE="${HOME}/packer_images_cache/"
#
export CLUSTER_MODEL="https://gerrit.mcp.mirantis.com/mcp/mcp-offline-model"
export CLUSTER_MODEL_REF="master"
export CLUSTER_NAME="mcp-offline"

export MCP_VERSION="proposed"

BINARY_MCP_VERSION="proposed"
export UBUNTU_BASEURL="http://mirror.mirantis.com/${BINARY_MCP_VERSION}/ubuntu/"
export SALTSTACK_REPO="http://mirror.mirantis.com/${BINARY_MCP_VERSION}/saltstack-2017.7/xenial xenial main"
export SALTSTACK_GPG="http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2017.7/SALTSTACK-GPG-KEY.pub"
export APT_MIRANTIS_GPG="http://apt.mirantis.com/public.gpg"
export APT_MIRANTIS_SALT_REPO="http://apt.mirantis.com/xenial/ ${BINARY_MCP_VERSION} salt "
#
export GIT_SALT_FORMULAS_SCRIPTS="https://gerrit.mcp.mirantis.com/salt-formulas/salt-formulas-scripts"
export SCRIPTS_REF="master"
#
# Openstack-related variables
#export VM_FLAVOR="3c4fe514-3eb6-464d-a419-7be09d72cf1e"
#export VM_FLOATING_IP_POOL="095f43ed-65ba-48ce-8185-d4080e430a88"
#export IMAGE_NAME="mcp-offline-mirror-$(date '+%Y-%m-%d-%H-%M-%S')"
#export VM_IMAGE="9953a40d-1fa2-4f26-b146-0507dbc912dc" # ubuntu cloud img
# May be need, if cloud with keystone v3 used
#export OS_TENANT_ID=$OS_PROJECT_ID
#export OS_DOMAIN_NAME="xxxx"
#export OS_TENANT_NAME="xxxxx"

# Hard-coded folder in template
mkdir -p "${PACKER_IMAGES_CACHE}"

export PACKER_LOG=1
pushd config-drive
  if [ ! -e model ]; then
    git clone ${CLUSTER_MODEL} model/
    pushd model
      git fetch ${CLUSTER_MODEL} ${CLUSTER_MODEL_REF} && git checkout FETCH_HEAD
      pushd classes/system
        git submodule init
        git submodule update
      popd
    popd
  fi
  if [ ! -e salt_scripts ]; then
    git clone ${GIT_SALT_FORMULAS_SCRIPTS} salt_scripts/
    pushd salt_scripts
    git fetch ${GIT_SALT_FORMULAS_SCRIPTS} ${SCRIPTS_REF} && git checkout FETCH_HEAD
    popd
  fi
popd

[ -f config-drive/cloudata.iso ] && rm -v config-drive/cloudata.iso
mkisofs -o config-drive/cloudata.iso -V cidata -r -J --quiet config-drive
# For qemu test-build:
packer build -only=qemu -parallel=false -on-error=ask template.json
# rm -rf ~/.packer.d/
