#!/bin/bash

source /var/onap/functions

# _build_vvp_images() - Builds VNFSDK images from source code
function _build_vvp_images {
    echo "pass"
}

# get_vvp_images - Function that clones vvp Docker images
function get_vvp_images {
    if [[ "$build_image" == "True" ]]; then
        _build_vvp_images
    else
        pull_docker_image refrepo:1.0-STAGING-latest
        pull_docker_image refrepo:latest
    fi
}

# install_vvp - Function that installs vvp Docker images
function install_vvp {
    echo "pass"
}

# init_vvp() - Init VNFSDK services
function init_vvp {
    if [[ "$clone_repo" == "True" ]]; then
        clone_repos "vvp"
        if [[ "$compile_repo" == "True" ]]; then
            compile_repos "vvp"
        fi
    fi

    if [[ "$skip_get_images" == "False" ]]; then
        get_vvp_images
        if [[ "$skip_install" == "False" ]]; then
            install_vvp
        fi
    fi
}
