#!/bin/bash

source /var/onap/functions

multicloud_src_folder=$git_src_folder/multicloud
multicloud_repos=("multicloud" "multicloud/framework" "multicloud/openstack" \
"multicloud/openstack/vmware" "multicloud/openstack/windriver" \
"multicloud/azure")
openstack_release="newton"

function _build_images {
    install_docker
    install_python_requirements $multicloud_src_folder/openstack/$openstack_release
    pushd $multicloud_src_folder/openstack/$openstack_release
    bash build_image.sh
    popd
}

# get_multicloud_images() -
function get_multicloud_images {
    if [[ "$build_image" == "True" ]]; then
        _build_images
    else
        pull_onap_image multicloud/openstack-$openstack_release
    fi
}

# install_multicloud() - 
function install_multicloud {
    pushd $multicloud_src_folder/openstack/$openstack_release
    /opt/docker/docker-compose up -d
    popd
}

# init_multicloud() - Function that initialize Multi Cloud services
function init_multicloud {
    if [[ "$clone_repo" == "True" ]]; then
        clone_repos "multicloud"
        if [[ "$compile_repo" == "True" ]]; then
            compile_repos "multicloud"
        fi
    fi
    if [[ "$skip_get_images" == "False" ]]; then
        get_multicloud_images
        if [[ "$skip_install" == "False" ]]; then
            install_multicloud
        fi
    fi
}
