Improve and highlight logging to console 09/38909/1
authorMartin Kulhavy <martin.kulhavy@nokia.com>
Tue, 8 Aug 2017 11:27:33 +0000 (14:27 +0300)
committerMartin Kulhavy <martin.kulhavy@nokia.com>
Tue, 8 Aug 2017 11:27:33 +0000 (14:27 +0300)
xtrace produces a lot of output that can be hard to read. This commit
adds a function to print important information messages in bold yellow,
so that they stand out in the log and make it easier for the user to
understand what is currently happening.

Change-Id: I78d3dbd909beca30b36723b879b13436932629f9
Signed-off-by: Martin Kulhavy <martin.kulhavy@nokia.com>
ci/03-maasdeploy.sh
ci/tools.sh [new file with mode: 0644]

index 1e93627..9fb7400 100755 (executable)
@@ -2,6 +2,8 @@
 #placeholder for deployment script.
 set -ex
 
+source tools.sh
+
 virtinstall=0
 labname=$1
 
@@ -9,7 +11,8 @@ if [ ! -e $HOME/.ssh/id_rsa ]; then
     ssh-keygen -N '' -f $HOME/.ssh/id_rsa
 fi
 
-#install the packages needed
+# Install the packages needed
+echo_info "Installing and upgrading required packages"
 sudo apt-get install software-properties-common -y
 sudo apt-add-repository ppa:juju/stable -y
 sudo apt-add-repository ppa:maas/stable -y
@@ -37,6 +40,7 @@ sudo -H pip install --upgrade pip
 #
 
 # Get labconfig and generate deployconfig.yaml
+echo_info "Parsing lab configuration file"
 case "$labname" in
     intelpod[569]|orangepod[12]|cengnpod[12] )
         array=(${labname//pod/ })
@@ -126,7 +130,7 @@ else
     sudo mv 90-joid-init /etc/sudoers.d/
 fi
 
-echo "... Deployment of maas Started ...."
+echo_info "Deployment of MAAS started"
 
 #
 # Virsh preparation
@@ -221,7 +225,7 @@ configuremaas(){
                  compute-external storage-data storage-cluster admin \
                  tenant-data tenant-api tenant-public
     do
-        echo "Creating the space $space"
+        echo_info "Creating the space $space"
         maas $PROFILE spaces create name=$space || true
     done
 
@@ -299,7 +303,7 @@ setupspacenetwork(){
             'storage')         JUJU_SPACE="tenant-stor";   DHCP='' ;;
             'storagecluster')  JUJU_SPACE="storclus";      DHCP='' ;;
             'floating')        JUJU_SPACE="tenant-public"; DHCP='' ;;
-            *)                 JUJU_SPACE='default';       DHCP='OFF'; echo "      >>> Unknown SPACE" ;;
+            *)                 JUJU_SPACE='default';       DHCP='OFF'; echo_info "      >>> Unknown SPACE" ;;
         esac
         JUJU_SPACE_ID=$(maas $PROFILE spaces read | jq -r ".[] |  select(.name==\"$JUJU_SPACE\")".id)
         JUJU_VLAN_VID=$(maas $PROFILE subnets read | jq -r ".[] |  select(.name==\"$SPACE_CIDR\")".vlan.vid)
@@ -381,11 +385,13 @@ addnodes(){
     if [ $VIRSHIP != "" ]; then
         # Check if the IP is not already present among the known hosts
         if ! ssh-keygen -F $VIRSHIP > /dev/null ; then
-            echo "SSH fingerprint of the host is not known yet, adding"
+            echo_info "SSH fingerprint of the host is not known yet, adding to known_hosts"
             ssh-keyscan -H $VIRSHIP >> ~/.ssh/known_hosts
         fi
     fi
 
+    echo_info "Creating and adding bootstrap node"
+
     virt-install --connect $VIRSHURL --name bootstrap --ram 4098 --cpu host --vcpus 2 --video \
                  cirrus --arch x86_64 --disk size=20,format=qcow2,bus=virtio,cache=directsync,io=native,pool=default \
                  $netw --boot network,hd,menu=off --noautoconsole \
@@ -437,31 +443,35 @@ addnodes(){
             maas $PROFILE tag update-nodes compute add=$nodeid || true
         done
     else
-       units=`cat deployconfig.json | jq .opnfv.units`
+        units=`cat deployconfig.json | jq .opnfv.units`
 
-       until [ $(($units)) -lt 1 ]; do
-           units=$(($units - 1));
-           NODE_NAME=`cat labconfig.json | jq ".lab.racks[].nodes[$units].name" | cut -d \" -f 2 `
-           MAC_ADDRESS=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"admin\").mac"[0] | cut -d \" -f 2 `
-           MAC_ADDRESS1=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"floating\").mac"[0] | cut -d \" -f 2 `
-           POWER_TYPE=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.type" | cut -d \" -f 2 `
-           POWER_IP=`cat labconfig.json |  jq ".lab.racks[].nodes[$units].power.address" | cut -d \" -f 2 `
-           POWER_USER=`cat labconfig.json |  jq ".lab.racks[].nodes[$units].power.user" | cut -d \" -f 2 `
-           POWER_PASS=`cat labconfig.json |  jq ".lab.racks[].nodes[$units].power.pass" | cut -d \" -f 2 `
-
-           maas $PROFILE machines create autodetect_nodegroup='yes' name=$NODE_NAME \
-               hostname=$NODE_NAME power_type=$POWER_TYPE power_parameters_power_address=$POWER_IP \
-               power_parameters_power_user=$POWER_USER power_parameters_power_pass=$POWER_PASS mac_addresses=$MAC_ADDRESS \
-               mac_addresses=$MAC_ADDRESS1 architecture='amd64/generic'
-       done
+        until [ $(($units)) -lt 1 ]; do
+            units=$(($units - 1));
+            NODE_NAME=`cat labconfig.json | jq ".lab.racks[].nodes[$units].name" | cut -d \" -f 2 `
+            MAC_ADDRESS=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"admin\").mac"[0] | cut -d \" -f 2 `
+            MAC_ADDRESS1=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"floating\").mac"[0] | cut -d \" -f 2 `
+            POWER_TYPE=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.type" | cut -d \" -f 2 `
+            POWER_IP=`cat labconfig.json |  jq ".lab.racks[].nodes[$units].power.address" | cut -d \" -f 2 `
+            POWER_USER=`cat labconfig.json |  jq ".lab.racks[].nodes[$units].power.user" | cut -d \" -f 2 `
+            POWER_PASS=`cat labconfig.json |  jq ".lab.racks[].nodes[$units].power.pass" | cut -d \" -f 2 `
+
+            echo_info "Creating node $NODE_NAME"
+            maas $PROFILE machines create autodetect_nodegroup='yes' name=$NODE_NAME \
+                hostname=$NODE_NAME power_type=$POWER_TYPE power_parameters_power_address=$POWER_IP \
+                power_parameters_power_user=$POWER_USER power_parameters_power_pass=$POWER_PASS mac_addresses=$MAC_ADDRESS \
+                mac_addresses=$MAC_ADDRESS1 architecture='amd64/generic'
+        done
     fi
 
     maas $PROFILE pods create type=virsh power_address="$VIRSHURL" power_user=$USER
 
     # Make sure nodes are added into MAAS and none of them is in commissioning state
+    i=0
     while [ "$(maas $PROFILE nodes read | grep Commissioning )" ];
     do
+        echo_info "Waiting for nodes to finish commissioning. ${i} minutes elapsed."
         sleep 60
+        i=$[$i+1]
 
         # Make sure that no nodes have failed commissioning or testing
         if [ "$(maas $PROFILE nodes read | grep 'Failed' )" ];
@@ -491,7 +501,7 @@ sleep 120
 # Let's add the nodes now. Currently works only for virtual deployment.
 addnodes
 
-echo "... Deployment of maas finish ...."
+echo_info "Initial deployment of MAAS finished"
 
 #Added the Qtip public to run the Qtip test after install on bare metal nodes.
 #maas $PROFILE sshkeys new key="`cat ./maas/sshkeys/QtipKey.pub`"
@@ -521,6 +531,7 @@ addcloud() {
     echo "      auth-types: [oauth1]" >> maas-cloud.yaml
     echo "      endpoint: $API_SERVERMAAS" >> maas-cloud.yaml
 
+    echo_info "Adding cloud $cloudname"
     juju add-cloud $cloudname maas-cloud.yaml --replace
 }
 
@@ -538,7 +549,7 @@ if [ -e ./labconfig.json ]; then
         # Get the NAME/SYS_ID of this node
         NODE_NAME=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].name")
         NODE_SYS_ID=$(maas $PROFILE nodes read | jq -r ".[] |  select(.hostname==\"$NODE_NAME\")".system_id)
-        echo ">>> Configuring node $NODE_NAME [$NODE_ID][$NODE_SYS_ID]"
+        echo_info ">>> Configuring node $NODE_NAME [$NODE_ID][$NODE_SYS_ID]"
         # Recover the network interfaces list and configure each one
         #   with sorting the list, we have hardware interface first, than the vlan interfaces
         IF_LIST=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].nics[] ".ifname | sort -u )
@@ -551,9 +562,9 @@ if [ -e ./labconfig.json ]; then
                 'public')   IF_MODE='AUTO' ;;
                 'storage')  IF_MODE='AUTO' ;;
                 'floating') IF_MODE='link_up' ;;
-                *) SUBNET_CIDR='null'; IF_MODE='null'; echo "      >>> Unknown SPACE" ;;
+                *) SUBNET_CIDR='null'; IF_MODE='null'; echo_info "      >>> Unknown SPACE" ;;
             esac
-            echo "   >>> Configuring interface $IF_NAME [$IF_SPACE][$SUBNET_CIDR]"
+            echo_info "   >>> Configuring interface $IF_NAME [$IF_SPACE][$SUBNET_CIDR]"
 
             # if we have a vlan parameter in the space config
             IF_VLAN=$(cat labconfig.json | jq --raw-output ".opnfv.spaces[] | select(.type==\"$IF_SPACE\")".vlan)
@@ -566,7 +577,7 @@ if [ -e ./labconfig.json ]; then
 
             # In case of a VLAN interface
             if ([ $IF_VLAN ] && [ "$IF_VLAN" != "null" ]); then
-                echo "      >>> Configuring VLAN $IF_VLAN"
+                echo_info "      >>> Configuring VLAN $IF_VLAN"
                 VLANID=$(maas $PROFILE subnets read | jq ".[].vlan | select(.vid==$IF_VLAN)".id)
                 FABRICID=$(maas $PROFILE subnets read | jq ".[].vlan | select(.vid==$IF_VLAN)".fabric_id)
                 INTERFACE=$(maas $PROFILE interfaces read $NODE_SYS_ID | jq ".[] | select(.vlan.fabric_id==$FABRICID)".id)
@@ -605,7 +616,7 @@ if [ -e ./labconfig.json ]; then
                 maas $PROFILE interface link-subnet $NODE_SYS_ID $IF_NAME  mode=$IF_MODE subnet=$SUBNET_CIDR || true
                 sleep 2
             else
-                echo "      >>> Not configuring, we have an empty Subnet CIDR"
+                echo_info "      >>> Not configuring, we have an empty Subnet CIDR"
             fi
 
         done
@@ -623,4 +634,4 @@ fi
 #
 # End of scripts
 #
-echo " .... MAAS deployment finished successfully ...."
+echo_info " .... MAAS deployment finished successfully ...."
diff --git a/ci/tools.sh b/ci/tools.sh
new file mode 100644 (file)
index 0000000..4eed361
--- /dev/null
@@ -0,0 +1,26 @@
+##############################################################################
+# Copyright (c) 2017 Nokia and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+#######################################
+# Echo printing in yellow bold color
+# Arguments:
+#   Same as for echo
+# Returns:
+#   None
+#######################################
+function echo_info { (
+    # don't clutter the script output with the xtrace of the echo command
+    { set +x; } 2> /dev/null
+
+    yellow_bold='\033[1;33m'
+    color_off='\033[0m'
+    echo "${@:1:($#-1)}" -e "$yellow_bold${@: -1}$color_off";
+  )
+}