#!/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 ${src_folders[mr]}
    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 ${src_folders[mr]}
    fi
    if [[ "$skip_get_images" == "False" ]]; then
        get_mr_images
        if [[ "$skip_install" == "False" ]]; then
            install_message_router
        fi
    fi
}
