#!/bin/bash

source /var/onap/functions

ccsdk_src_folder=$git_src_folder/ccsdk
ccsdk_repos=("ccsdk" "ccsdk/dashboard" "ccsdk/distribution" "ccsdk/parent"
"ccsdk/platform/blueprints" "ccsdk/platform/nbapi" "ccsdk/platform/plugins"
"ccsdk/sli" "ccsdk/sli/adaptors" "ccsdk/sli/core" "ccsdk/sli/northbound"
"ccsdk/sli/plugins" "ccsdk/storage" "ccsdk/storage/esaas" "ccsdk/storage/pgaas"
"ccsdk/utils")

# _build_ccsdk_images() - Build CCSDK Docker images from source code
function _build_ccsdk_images {
    install_package unzip
    compile_src $ccsdk_src_folder/distribution
    for image in ubuntu opendaylight odlsli dgbuilder-docker; do
        build_docker_image $ccsdk_src_folder/distribution/$image docker
    done
}

# get_ccsdk_images() - Get CCSDK Docker images
function get_ccsdk_images {
    if [[ "$build_image" == "True" ]]; then
        _build_ccsdk_images
    else
        for image in ubuntu odl dgbuilder; do
            pull_onap_image ccsdk-$image-image
        done
    fi
}

# init_ccsdk() - Function that initialize Multi Cloud services
function init_ccsdk {
    if [[ "$clone_repo" == "True" ]]; then
        clone_repos "ccsdk"
        if [[ "$compile_repo" == "True" ]]; then
            compile_repos "ccsdk"
        fi
    fi
    if [[ "$skip_get_images" == "False" ]]; then
        get_ccsdk_images
    fi
}
