blob: 463516c20390503987d4468c6a3cb5b386405faa [file] [log] [blame]
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
set -o errexit
bold=$(tput bold)
normal=$(tput sgr0)
c_name="heron-sandbox"
check_docker_install() {
if ! [[ $(which docker) && $(docker --version) ]]; then
echo "Docker is not currently installed on your system"
exit 1
fi
}
sandbox_start() {
docker run -d -p 8889:8889 -p 9000:9000 --name=$c_name $1 > /dev/null
echo "${bold}The Heron Sandbox is up and running ${normal}"
}
sandbox_ps() {
docker ps -f name=$c_name
}
sandbox_clogs() {
docker logs $c_name
}
sandbox_shell() {
echo "${bold}Starting the Heron Sandbox shell${normal}"
docker exec -it $c_name /bin/bash
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo "Unable to create a shell session for the container '$c_name'"
exit 1
fi
echo "${bold}Terminating the Heron Sandbox shell${normal}"
}
sandbox_stop() {
docker stop $c_name > /dev/null 2>&1
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo "Unable to stop the container '$c_name'"
exit 1
fi
docker rm -f -v $c_name > /dev/null 2>&1
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo "Unable to remove the container '$c_name'"
exit 1
fi
echo "${bold}The Heron Sandbox has been successfully shut down${normal}"
}
check_docker_install
case $1 in
start)
DOCKER_IMAGE=${2:-heron/heron:latest}
sandbox_start $DOCKER_IMAGE
;;
ps)
sandbox_ps
;;
clogs)
sandbox_clogs
;;
stop)
sandbox_stop
;;
shell)
sandbox_shell
;;
help|*)
echo " "
echo "${bold}The Heron Sandbox CLI tool${normal}"
echo "=========================="
echo " "
echo "The Heron Sandbox is a version of Heron that runs inside of a single Docker container."
echo "Example topologies are included inside the container as well, making the Heron Sandbox"
echo "an ideal tool for initial experimentation with Heron."
echo " "
echo "${bold}Starting and shutting down the Heron Sandbox${normal}"
echo " "
echo " ${bold}Start${normal} the Heron Sandbox:"
echo " $0 start"
echo " "
echo " ${bold}Shut down${normal} the Heron Sandbox:"
echo " $0 stop"
echo " "
echo " ${bold}Check${normal} if the Heron Sandbox is running:"
echo " $0 ps"
echo " "
echo "${bold}Example topologies included with the Heron Sandbox${normal}"
echo " "
echo " Heron ${bold}Java API${normal} example topologies are available in:"
echo " /heron/examples/heron-api-examples.jar"
echo " "
echo " Heron ${bold}Java Streamlet API${normal} example topologies are available in:"
echo " /heron/examples/heron-streamlet-examples.jar"
echo " "
echo " Heron ${bold}Java ECO${normal} example topologies are available in:"
echo " /heron/examples/heron-eco-examples.jar"
echo " "
echo "${bold}Experimenting with the examples in the Heron Sandbox${normal}"
echo " "
echo " First, ${bold}open a shell session${normal} to play with example topologies:"
echo " $0 shell"
echo " "
echo " ${bold}NOTE${normal}: Make sure Docker is running on your machine first. See instructions"
echo " here: https://docs.docker.com/machine/get-started"
echo " "
echo " Then you can ${bold}submit${normal} a topology via the shell:"
echo " heron submit sandbox /heron/examples/heron-api-examples.jar org.apache.heron.examples.api.ExclamationTopology exclamation"
echo " "
echo " You can ${bold}deactivate${normal} the topology via the shell as well:"
echo " heron deactivate sandbox exclamation"
echo " "
echo " To ${bold}activate${normal} a deactivated topology:"
echo " heron activate sandbox exclamation"
echo " "
echo " Finally, you can ${bold}kill${normal} a topology and remove it from the cluster:"
echo " heron kill sandbox exclamation"
echo " "
exit 1
;;
esac