Addressed comments from reviewers from the last commit. Cleaned up color
coding in the installer messages. Added explicit command line parsing to
support future arguments. Lowered the privilage of the user that starts
the cluster services.

Change-Id: Ia287890548bfc9096e1919641b2f4c1f39f443e2
diff --git a/install/CreateInstaller.sh b/install/CreateInstaller.sh
index cabc1e8..2003867 100755
--- a/install/CreateInstaller.sh
+++ b/install/CreateInstaller.sh
@@ -11,6 +11,11 @@
 shutdownTimeout=5
 ipTimeout=10
 
+# Command line argument variables
+testMode="no"
+
+
+
 lBlue='\033[1;34m'
 green='\033[0;32m'
 orange='\033[0;33m'
@@ -24,6 +29,24 @@
 uId=`id -u`
 wd=`pwd`
 
+parse_args()
+{
+	for i in $@
+	do
+		case "$i" in
+			"test" )
+				testMode="yes"
+				echo -e "${lBlue}Test mode is ${green}enabled${NC}"
+				;;
+		esac
+	done
+}
+
+
+######################################
+# MAIN MAIN MAIN MAIN MAIN MAIN MAIN #
+######################################
+parse_args $@
 # Validate that vagrant is installed.
 echo -e "${lBlue}Ensure that ${lCyan}vagrant${lBlue} is installed${NC}"
 vInst=`which vagrant`
@@ -50,15 +73,15 @@
 # Verify if this is intended to be a test environment, if so
 # configure the 3 VMs which will be started later to emulate
 # the production installation cluster.
-if [ $# -eq 1 -a "$1" == "test" ]; then
-	echo -e "${lBlue}Testing, configure the ${lCyan}ha-serv${lBlue} VMs${NC}"
+if [ "$testMode" == "yes" ]; then
+	echo -e "${lBlue}Test mode ${green}enabled${lBlue}, configure the ${lCyan}ha-serv${lBlue} VMs${NC}"
 	# Update the vagrant settings file
 	sed -i -e '/server_name/s/.*/server_name: "ha-serv'${uId}'-"/' settings.vagrant.yaml
 	sed -i -e '/docker_push_registry/s/.*/docker_push_registry: "vinstall'${uId}':5000"/' ansible/group_vars/all
 	sed -i -e "/vinstall/s/vinstall/vinstall${uId}/" ../ansible/roles/docker/templates/daemon.json
 
 	# Set the insecure registry configuration based on the installer hostname
-	echo -e "${lBlue}Set up the inescure registry config for hostname ${lCyan}vinstall${uId}${NC}"
+	echo -e "${lBlue}Set up the insecure registry config for hostname ${lCyan}vinstall${uId}${NC}"
 	echo '{' > ansible/roles/voltha/templates/daemon.json
 	echo '"insecure-registries" : ["vinstall'${uId}':5000"]' >> ansible/roles/voltha/templates/daemon.json
 	echo '}' >> ansible/roles/voltha/templates/daemon.json
@@ -170,8 +193,8 @@
 
 # If we're in test mode, change the hostname of the installer vm
 # also start the 3 vagrant target VMs
-if [ $# -eq 1 -a "$1" == "test" ]; then
-	echo -e "${lBlue}Test mode, change the installer host name to ${yellow}vinstall${uId}${NC}"
+if [ "$testMode" == "yes" ]; then
+	echo -e "${lBlue}Test mode, change the installer host name to ${lCyan}vinstall${uId}${NC}"
 	ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i key.pem vinstall@$ipAddr \
 		sudo hostnamectl set-hostname vinstall${uId}
 	ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i key.pem vinstall@$ipAddr \
@@ -188,7 +211,7 @@
 vVM=`virsh list | grep voltha_voltha${uId}`
 
 if [ -z "$vVM" ]; then
-	if [ $# -eq 1 -a "$1" == "test" ]; then
+	if [ "$testMode" == "yes" ]; then
 		./BuildVoltha.sh $1
 		rtrn=$?
 	else
@@ -197,7 +220,7 @@
 		rtrn=$?
 	fi
 	if [ $rtrn -ne 0 ]; then
-		echo -e "${red}Voltha build failed!! ${yellow}Please review the log and correct${lBlue} is running${NC}"
+		echo -e "${red}Voltha build failed!! ${lCyan}Please review the log and correct${lBlue} is running${NC}"
 		exit 1
 	fi
 fi
@@ -206,7 +229,7 @@
 # when running in test mode. This will provide the entire suite
 # of available containers to the VM cluster.
 
-if [ $# -eq 1 -a "$1" == "test" ]; then
+if [ "$testMode" == "yes" ]; then
 	echo -e "${lBlue}Extracting the docker image list from the voltha VM${NC}"
 	volIpAddr=`virsh domifaddr $vVmName${uId} | tail -n +3 | awk '{ print $4 }' | sed -e 's~/.*~~'`
 	ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ../.vagrant/machines/voltha${uId}/libvirt/private_key vagrant@$volIpAddr "docker image ls" > images.tmp
@@ -217,7 +240,7 @@
 	cat image-list.cfg >> ansible/group_vars/all
 	rm -f image-list.cfg
 else
-	echo -e "${lBlue}Set up the docker image list from ${yellow}containers.cfg${NC}"
+	echo -e "${lBlue}Set up the docker image list from ${lCyan}containers.cfg${NC}"
 	sed -i -e '/voltha_containers:/,$d' ansible/group_vars/all
 	cat containers.cfg >> ansible/group_vars/all
 fi
@@ -233,12 +256,6 @@
 ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i key.pem vinstall@$ipAddr sudo apt-get -y upgrade 
 
 
-
-# Copy the apt repository to the VM because it's way too slow using ansible
-#echo -e "${red}NOT COPYING${lBlue} the apt-repository to the VM, ${red}TESTING ONLY REMOVE FOR PRODUCTION${NC}"
-#echo -e "${lBlue}Copy the apt-repository to the VM${NC}"
-#scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i key.pem -r apt-mirror vinstall@$ipAddr:apt-mirror
-
 # Create the docker.cfg file in the ansible tree using the VMs IP address
 echo 'DOCKER_OPTS="$DOCKER_OPTS --insecure-registry '$ipAddr':5000 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --registry-mirror=http://'$ipAddr':5001"' > ansible/roles/docker/templates/docker.cfg
 
@@ -256,20 +273,26 @@
 echo "$ipAddr" >> ansible/hosts/installer
 echo "ansible_ssh_private_key_file: $wd/key.pem" > ansible/host_vars/$ipAddr
 
-# Launch the ansible playbook
-echo -e "${lBlue}Launching the ansible playbook${NC}"
+# Launch the ansible playbooks
+
+echo -e "${lBlue}Launching the ${lCyan}volthainstall${lBlue} ansible playbook on the installer vm${NC}"
 ansible-playbook ansible/volthainstall.yml -i ansible/hosts/installer
-if [ $? -ne 0 ]; then
-	echo -e "${red}PLAYBOOK FAILED, Exiting${NC}"
-	exit
-fi
-ansible-playbook ansible/volthainstall.yml -i ansible/hosts/voltha
-if [ $? -ne 0 ]; then
+rtrn=$?
+if [ $rtrn -ne 0 ]; then
 	echo -e "${red}PLAYBOOK FAILED, Exiting${NC}"
 	exit
 fi
 
-if [ $# -eq 1 -a "$1" == "test" ]; then
+
+echo -e "${lBlue}Launching the ${lCyan}volthainstall${lBlue} ansible playbook on the voltha vm${NC}"
+ansible-playbook ansible/volthainstall.yml -i ansible/hosts/voltha
+rtrn=$?
+if [ $rtrn -ne 0 ]; then
+	echo -e "${red}PLAYBOOK FAILED, Exiting${NC}"
+	exit
+fi
+
+if [ "$testMode" == "yes" ]; then
 	echo -e "${lBlue}Testing, the install image ${red}WILL NOT${lBlue} be built${NC}"
 
 
@@ -372,6 +395,6 @@
 	fi
 	# Clean up
 	rm $installerArchive
-	echo -e "${lBlue}The install image is built and can be found in ${yellow}$installerDirectory${NC}"
-	echo -e "${lBlue}Copy all the files in ${yellow}$installerDirectory${lBlue} to the traasnport media${NC}"
+	echo -e "${lBlue}The install image is built and can be found in ${lCyan}$installerDirectory${NC}"
+	echo -e "${lBlue}Copy all the files in ${lCyan}$installerDirectory${lBlue} to the traasnport media${NC}"
 fi
diff --git a/install/ansible/roles/cluster-host/tasks/main.yml b/install/ansible/roles/cluster-host/tasks/main.yml
index 6280b6f..3d2296e 100644
--- a/install/ansible/roles/cluster-host/tasks/main.yml
+++ b/install/ansible/roles/cluster-host/tasks/main.yml
@@ -69,7 +69,7 @@
     dest: "/var/lib/apt"
   tags: [cluster_host]
 
-- name: Dependent software is installed (this cand take about 10 Min, DONT'T PANIC, go for coffee instead)
+- name: Dependent software is installed (this can take about 10 Min, DONT'T PANIC, go for coffee instead)
   command: dpkg -R -i "{{ target_voltha_home }}/deb_files"
 #  ignore_errors: true
   when: target == "cluster"
diff --git a/install/ansible/roles/voltha/tasks/main.yml b/install/ansible/roles/voltha/tasks/main.yml
index 0f14844..2fa5ccd 100644
--- a/install/ansible/roles/voltha/tasks/main.yml
+++ b/install/ansible/roles/voltha/tasks/main.yml
@@ -137,15 +137,18 @@
 
 - name: voltha overlay network exists
   command: docker network create --opt encrypted=true --driver overlay --subnet 10.10.12.0/24 voltha_net
+  become: voltha
   when: target == "startup"
   tags: [voltha]
 
 - name: consul cluster is running
   command: docker stack deploy -c {{ target_voltha_dir }}/compose/docker-compose-consul-cluster.yml consul
+  become: voltha
   when: target == "startup"
   tags: [voltha]
 
 - name: kafka is running
   command: docker stack deploy -c {{ target_voltha_dir}}/compose/docker-compose-kafka-cluster.yml kafka
+  become: voltha
   when: target == "startup"
   tags: [voltha]
diff --git a/install/cleanup.sh b/install/cleanup.sh
index f1e4a68..4282846 100755
--- a/install/cleanup.sh
+++ b/install/cleanup.sh
@@ -4,7 +4,7 @@
 rm -f ansible/roles/voltha/templates/daemon.json
 rm -fr volthaInstaller-2/
 rm -fr volthaInstaller/
-rm -f ansible/volthainstall.retry
+rm -f ansible/*.retry
 rm -fr .test
 rm -f key.pem
 sed -i -e '/voltha_containers:/,$d' ansible/group_vars/all