#!/bin/bash

set -eux

# Override TMP_DIR for image build.
# It defaults /tmp. But, /tmp is usually tmpfs mounted on Fedora, and dib will
# use a tmpfs on it's own if there is enough free RAM.
export TMP_DIR=${TMP_DIR:-/var/tmp}

export NODE_ARCH=${NODE_ARCH:-amd64}
export NODE_DIST=${NODE_DIST:-"fedora"}
export DEPLOY_IMAGE_ELEMENT=${DEPLOY_IMAGE_ELEMENT:-deploy}

export DIB_INSTALLTYPE_nova=package
export DIB_INSTALLTYPE_heat=package
export DIB_INSTALLTYPE_keystone=package
export DIB_INSTALLTYPE_neutron=package
export DIB_INSTALLTYPE_glance=package
export DIB_INSTALLTYPE_swift=package
export DIB_INSTALLTYPE_cinder=package
export DIB_INSTALLTYPE_horizon=package
export DIB_INSTALLTYPE_python_cinderclient=package
export DIB_INSTALLTYPE_python_glanceclient=package
export DIB_INSTALLTYPE_python_heatclient=package
export DIB_INSTALLTYPE_python_keystoneclient=package
export DIB_INSTALLTYPE_python_neutronclient=package
export DIB_INSTALLTYPE_python_novaclient=package
export DIB_INSTALLTYPE_python_swiftclient=package
export DIB_INSTALLTYPE_python_ceilometerclient=package
export DIB_INSTALLTYPE_python_ironicclient=package

export DIB_INSTALLTYPE_os_collect_config=package
export DIB_INSTALLTYPE_os_refresh_config=package
export DIB_INSTALLTYPE_os_apply_config=package

export DIB_INSTALLTYPE_get_pip_py=package

export ELEMENTS_PATH=/usr/share/tripleo-image-elements:/usr/share/instack-undercloud

if [ ! -f deploy-ramdisk.initramfs -o \
     ! -f deploy-ramdisk.kernel ]; then
    ramdisk-image-create \
        -a $NODE_ARCH \
        -o deploy-ramdisk \
        $NODE_DIST $DEPLOY_IMAGE_ELEMENT \
        2>&1 | tee dib-deploy.log
fi

if [ ! -f overcloud-control.qcow2 ]; then
    disk-image-create \
        -a $NODE_ARCH \
        -o overcloud-control \
        $NODE_DIST pip-cache boot-stack cinder-api cinder-volume os-collect-config \
        neutron-network-node dhcp-all-interfaces stackuser swift-proxy swift-storage \
        swift-package-updates \
        selinux-package-updates \
        baremetal \
        fedora-rdo-icehouse-repository \
        horizon \
        rabbitmq-server \
        keystone-1289935 \
        mariadb-rdo \
        stable-interface-names \
        os-refresh-config-reboot \
        2>&1 | tee dib-overcloud-control.log
fi

if [ ! -f overcloud-compute.qcow2 ]; then
    disk-image-create \
        -a $NODE_ARCH \
        -o overcloud-compute \
        $NODE_DIST pip-cache nova-compute nova-kvm neutron-openvswitch-agent os-collect-config \
        selinux-package-updates \
        baremetal \
        dhcp-all-interfaces stackuser fedora-rdo-icehouse-repository \
        stable-interface-names \
        os-refresh-config-reboot \
        2>&1 | tee dib-overcloud-compute.log
fi

if [ ! -f overcloud-cinder-volume.qcow2 ]; then
    disk-image-create \
        -a $NODE_ARCH \
        -o overcloud-cinder-volume \
        $NODE_DIST pip-cache cinder-volume neutron-openvswitch-agent os-collect-config \
        selinux-package-updates \
        baremetal \
        dhcp-all-interfaces stackuser fedora-rdo-icehouse-repository \
        stable-interface-names \
        os-refresh-config-reboot \
        2>&1 | tee dib-overcloud-cinder-volume.log
fi

if [ ! -f overcloud-swift-storage.qcow2 ]; then
    disk-image-create \
        -a $NODE_ARCH \
        -o overcloud-swift-storage \
        $NODE_DIST pip-cache swift-storage neutron-openvswitch-agent os-collect-config \
        swift-package-updates \
        selinux-package-updates \
        baremetal \
        dhcp-all-interfaces stackuser fedora-rdo-icehouse-repository \
        stable-interface-names \
        os-refresh-config-reboot \
        2>&1 | tee dib-overcloud-swift-storage.log
fi

if [ ! -f fedora-user.qcow2 ]; then
    # Just copy the already downloaded Fedora cloud image as fedora-user.qcow2
    cp ~/.cache/image-create/fedora-20.x86_64.qcow2 fedora-user.qcow2
fi
