Add Kubernetes Functionality to launch QEMU containers

Made modifications to the qemu launching script to allow for kubernetes
integration. Added the default variables for a launch to the kubernetes
launch helper script. Generated the yaml file used to create the
deployment for QEMU. Commented out the testing portion of the
run-qemu-robot-test.sh script for now since the tests do not exist
anymore. This way script can still be used for launching QEMU instances.

Change-Id: I6ec5a33a0e6c84cd169894d931c5535a4e9329d7
Signed-off-by: Alanny Lopez <alanny.lopez@ibm.com>
diff --git a/run-qemu-robot-test.sh b/run-qemu-robot-test.sh
index 32786b9..be87575 100755
--- a/run-qemu-robot-test.sh
+++ b/run-qemu-robot-test.sh
@@ -30,6 +30,12 @@
 #                       directory was changed in the build-setup.sh run, this
 #                       variable should also be changed. Otherwise, the default
 #                       should be used.
+#  LAUNCH             = Used to determine how to launch the qemu robot test
+#                       containers. The options are "local", and "k8s". It will
+#                       default to local which will launch a single container
+#                       to do the runs. If specified k8s will launch a group of
+#                       containers into a kubernetes cluster using the helper
+#                       script.
 #
 ###############################################################################
 
@@ -40,6 +46,7 @@
 DOCKER_IMG_NAME=${DOCKER_IMG_NAME:-openbmc/ubuntu-robot-qemu}
 OBMC_BUILD_DIR=${OBMC_BUILD_DIR:-/tmp/openbmc/build}
 UPSTREAM_WORKSPACE=${UPSTREAM_WORKSPACE:-${1}}
+LAUNCH=${LAUNCH:-local}
 
 # Determine the architecture
 ARCH=$(uname -m)
@@ -68,72 +75,88 @@
 # Copy the scripts to start and verify QEMU in the workspace
 cp $DIR/scripts/boot-qemu* ${UPSTREAM_WORKSPACE}
 
-# Move into the upstream workspace directory
-cd ${UPSTREAM_WORKSPACE}
+################################################################################
 
-# Start QEMU docker instance
-# root in docker required to open up the https/ssh ports
-obmc_qemu_docker=$(docker run --detach \
-                              --user root \
-                              --env HOME=${OBMC_BUILD_DIR} \
-                              --env QEMU_RUN_TIMER=${QEMU_RUN_TIMER} \
-                              --env QEMU_ARCH=${QEMU_ARCH} \
-                              --workdir "${OBMC_BUILD_DIR}"           \
-                              --volume "${UPSTREAM_WORKSPACE}":"${OBMC_BUILD_DIR}" \
-                              --tty \
-                              ${DOCKER_IMG_NAME} ${OBMC_BUILD_DIR}/boot-qemu-test.exp)
+if [[ ${LAUNCH} == "local" ]]; then
 
+  # Start QEMU docker instance
+  # root in docker required to open up the https/ssh ports
+  obmc_qemu_docker=$(docker run --detach \
+                                --user root \
+                                --env HOME=${OBMC_BUILD_DIR} \
+                                --env QEMU_RUN_TIMER=${QEMU_RUN_TIMER} \
+                                --env QEMU_ARCH=${QEMU_ARCH} \
+                                --workdir "${OBMC_BUILD_DIR}"           \
+                                --volume "${UPSTREAM_WORKSPACE}":"${OBMC_BUILD_DIR}" \
+                                --tty \
+                                ${DOCKER_IMG_NAME} ${OBMC_BUILD_DIR}/boot-qemu-test.exp)
 
-# We can use default ports because we're going to have the 2
-# docker instances talk over their private network
-DOCKER_SSH_PORT=22
-DOCKER_HTTPS_PORT=443
-DOCKER_QEMU_IP_ADDR="$(docker inspect $obmc_qemu_docker |  \
-                      grep -m 1 "IPAddress\":" | cut -d '"' -f 4)"
+  # We can use default ports because we're going to have the 2
+  # docker instances talk over their private network
+  DOCKER_SSH_PORT=22
+  DOCKER_HTTPS_PORT=443
+  DOCKER_QEMU_IP_ADDR="$(docker inspect $obmc_qemu_docker |  \
+                       grep -m 1 "IPAddress\":" | cut -d '"' -f 4)"
 
-# Now wait for the OpenBMC QEMU Docker instance to get to standby
-attempt=60
-while [ $attempt -gt 0 ]; do
+  #Now wait for the OpenBMC QEMU Docker instance to get to standby
+  attempt=60
+  while [ $attempt -gt 0 ]; do
     attempt=$(( $attempt - 1 ))
     echo "Waiting for qemu to get to standby (attempt: $attempt)..."
     result=$(docker logs $obmc_qemu_docker)
     if grep -q 'OPENBMC-READY' <<< $result ; then
-        echo "QEMU is ready!"
-        # Give QEMU a few secs to stablize
-        sleep 5
-        break
+      echo "QEMU is ready!"
+      # Give QEMU a few secs to stablize
+      sleep 5
+      break
     fi
-    sleep 2
-done
+      sleep 2
+  done
 
-if [ "$attempt" -eq 0 ]; then
+  if [ "$attempt" -eq 0 ]; then
     echo "Timed out waiting for QEMU, exiting"
     exit 1
+  fi
+
+  # Now run the Robot test (Tests commented out until they are working again)
+
+  # Timestamp for job
+  #echo "Robot Test started, $(date)"
+
+  #mkdir -p ${WORKSPACE}
+  #cd ${WORKSPACE}
+
+  # Copy in the script which will execute the Robot tests
+  #cp $DIR/scripts/run-robot.sh ${WORKSPACE}
+
+  # Run the Docker container to execute the Robot test cases
+  # The test results will be put in ${WORKSPACE}
+  #docker run --rm \
+  #           --user root \
+  #           --env HOME=${HOME} \
+  #           --env IP_ADDR=${DOCKER_QEMU_IP_ADDR} \
+  #           --env SSH_PORT=${DOCKER_SSH_PORT} \
+  #           --env HTTPS_PORT=${DOCKER_HTTPS_PORT} \
+  #           --workdir ${HOME} \
+  #           --volume ${WORKSPACE}:${HOME} \
+  #           --tty \
+  #           ${DOCKER_IMG_NAME} ${HOME}/run-robot.sh
+
+  # Now stop the QEMU Docker image
+  docker stop $obmc_qemu_docker
+
+elif [[ ${LAUNCH} == "k8s" ]]; then
+  # Package the Upstream into an image based off the one created by the build-qemu-robot.sh
+  # Dockerfile = $( cat << EOF
+  imgname=$DOCKER_IMG_NAME
+  cd $DIR
+  source ./kubernetes/kubernetes-launch.sh QEMU-launch false false deployment
+
+  # Xcat Launch (NYI)
+
+  # source ./kubernetes/kubernetes-launch.sh XCAT-launch true true
+
+else
+  echo "LAUNCH variable invalid, Exiting"
+  exit 1
 fi
-
-# Now run the Robot test
-
-# Timestamp for job
-echo "Robot Test started, $(date)"
-
-mkdir -p ${WORKSPACE}
-cd ${WORKSPACE}
-
-# Copy in the script which will execute the Robot tests
-cp $DIR/scripts/run-robot.sh ${WORKSPACE}
-
-# Run the Docker container to execute the Robot test cases
-# The test results will be put in ${WORKSPACE}
-docker run --rm \
-           --user root \
-           --env HOME=${HOME} \
-           --env IP_ADDR=${DOCKER_QEMU_IP_ADDR} \
-           --env SSH_PORT=${DOCKER_SSH_PORT} \
-           --env HTTPS_PORT=${DOCKER_HTTPS_PORT} \
-           --workdir ${HOME} \
-           --volume ${WORKSPACE}:${HOME} \
-           --tty \
-           ${DOCKER_IMG_NAME} ${HOME}/run-robot.sh
-
-# Now stop the QEMU Docker image
-docker stop $obmc_qemu_docker