#!/bin/bash

source /var/onap/functions

testsuite_src_folder=$git_src_folder/testsuite
testsuite_repos=("testsuite" "testsuite/heatbridge" "testsuite/properties" \
"testsuite/python-testing-utils")

# _setup_ete_folder() - Create and copy ete folder structure
function _setup_ete_folder {
    mkdir -p /opt/eteshare/config

    cp $testsuite_src_folder/integration_* /opt/eteshare/config
    cp $testsuite_src_folder/vm_config2robot.sh /opt/eteshare/config
    cp $testsuite_src_folder/ete.sh /opt
    cp $testsuite_src_folder/demo.sh /opt

    chmod +x /opt/ete.sh
    chmod +x /opt/demo.sh
}

# get_robot_images() - Pull or build the Robot Docker images
function get_robot_images {
    pull_openecomp_image testsuite
}

# install_robot() - Run Robot services
function install_robot {
    docker rm -f openecompete_container
    docker run -d --name openecompete_container -v /opt/eteshare:/share -p 88:88 $nexus_docker_repo/openecomp/testsuite:$docker_version
}

# init_robot() - Function that initialize Robot services
function init_robot {
    if [[ "$clone_repo" == "True" ]]; then
        clone_repos "testsuite"
        _setup_ete_folder
        if [[ "$compile_repo" == "True" ]]; then
            compile_repos "testsuite"
        fi
    fi

    if [[ "$skip_get_images" == "False" ]]; then
        get_robot_images
        if [[ "$skip_install" == "False" ]]; then
            install_robot
        fi
    fi
}
