#!/bin/bash

source /var/onap/functions

# get_mr_images() - Function that retrieves the Message Router Docker images
function get_mr_images {
    pull_docker_image attos/dmaap
    pull_docker_image wurstmeister/zookeeper
}

# install_message_router() - Downloads and configure message router source code
function install_message_router {
    install_docker_compose

    pushd $mr_src_folder
    bash deploy.sh
    popd
}

# init_mr() - Function that initialize Message Router services
function init_mr {
    if [[ "$clone_repo" == "True" ]]; then
        clone_repo dcae/demo/startup/message-router $mr_src_folder
    fi
    if [[ "$skip_get_images" == "False" ]]; then
        get_mr_images
        if [[ "$skip_install" == "False" ]]; then
            install_message_router
        fi
    fi
}
