From ef0e2a57b8e3ac2f4a18216fb551118ba8256cd7 Mon Sep 17 00:00:00 2001
From: Stephen C Phillips <steve@scphillips.com>
Date: Fri, 25 May 2018 17:10:50 +0100
Subject: [PATCH] Tidies script, improving use of jq

---
 clmctest/conts-create.sh  | 62 ++++++++++++++++-----------------------
 clmctest/conts-destroy.sh | 16 ++++------
 clmctest/conts-start.sh   | 11 ++-----
 clmctest/conts-stop.sh    | 13 +++-----
 4 files changed, 39 insertions(+), 63 deletions(-)

diff --git a/clmctest/conts-create.sh b/clmctest/conts-create.sh
index f49e376..bfe4a5a 100755
--- a/clmctest/conts-create.sh
+++ b/clmctest/conts-create.sh
@@ -2,21 +2,19 @@
 set -eu -o pipefail
 
 rspec_file=rspec.json
-service_count=`jq '. | length' ${rspec_file}`
-i=0
-while [  $i -lt ${service_count} ]; do
-    service_name_key=".[${i}].name"
-    service_name=`jq ${service_name_key} ${rspec_file} | tr -d '"'`
 
+service_names=$(jq -r '.[].name' ${rspec_file})
+for service_name in $service_names; do
     if ! lxc-info -n ${service_name}; then
         echo "Creating container: ${service_name}"
         lxc-create -t download -n ${service_name} -- --dist ubuntu --release xenial --arch amd64
-        
-        ip_key=".[${i}].ip_address"
-        ip=`jq ${ip_key} ${rspec_file} | tr -d '"'`
+
+        SERVICE=$(jq --arg NAME ${service_name} '.[] | select(.name==$NAME)' ${rspec_file})
+        echo $SERVICE
+        ip=$(echo $SERVICE | jq -r '.ip_address')
         echo "dhcp-host=${service_name},${ip}" >> /etc/lxc/dnsmasq.conf
 
-        echo "Coping files"
+        echo "Copying files"
         container_dir="/var/lib/lxc/"${service_name}"/rootfs"
         container_vagrant_dir=${container_dir}"/vagrant"
 
@@ -39,48 +37,40 @@ while [  $i -lt ${service_count} ]; do
             cmd=/vagrant/clmctest/services/pytest/install.sh
             lxc-attach -n ${service_name} -- ${cmd}
         else
-            sf_id_key=".[${i}].sf_id"
-            sf_id=`jq ${sf_id_key} ${rspec_file} | tr -d '"'`        
+            location=$(echo $SERVICE | jq -r '.location')
+            sf_id=$(echo $SERVICE | jq -r '.sf_id')
+            sf_id_instance=$(echo $SERVICE | jq -r '.sf_id_instance')
+            sfc_id=$(echo $SERVICE | jq -r '.sfc_id')
+            sfc_id_instance=$(echo $SERVICE | jq -r '.sfc_id_instance')
+            sr_id=$(echo $SERVICE | jq -r '.sr_id')
+            ipendpoint_id=$(echo $SERVICE | jq -r '.ipendpoint_id')
+            influxdb_url=$(echo $SERVICE | jq -r '.influxdb_url')
+            database_name=$(echo $SERVICE | jq -r '.database_name')
+
+            echo "*********************"
+            echo $location
+            echo $sf_id
+
             cmd=/vagrant/clmctest/services/${sf_id}/install.sh
             lxc-attach -n ${service_name} -v REPO_ROOT=/vagrant -- ${cmd}
 
             cmd=/vagrant/scripts/clmc-agent/install.sh
             lxc-attach -n ${service_name} -v REPO_ROOT=/vagrant -- ${cmd}
 
-            cp -f /vagrant/scripts/clmc-agent/telegraf.conf ${container_dir}/etc/telegraf/ 
-            cp -f /vagrant/scripts/clmc-agent/telegraf_output.conf ${container_dir}/etc/telegraf/telegraf.d/                
-            cp /vagrant/clmctest/services/${sf_id}/telegraf_${sf_id}.conf ${container_dir}/etc/telegraf/telegraf.d/ 
+            cp -f /vagrant/scripts/clmc-agent/telegraf.conf ${container_dir}/etc/telegraf/
+            cp -f /vagrant/scripts/clmc-agent/telegraf_output.conf ${container_dir}/etc/telegraf/telegraf.d/
+            cp /vagrant/clmctest/services/${sf_id}/telegraf_${sf_id}.conf ${container_dir}/etc/telegraf/telegraf.d/
 
             cmd=/vagrant/scripts/clmc-agent/configure_template.sh
             lxc-attach -n ${service_name} -- ${cmd}
 
-            location_key=".[${i}].location"
-            location=`jq ${location_key} ${rspec_file} | tr -d '"'`
-            sfc_id_key=".[${i}].sfc_id"
-            sfc_id=`jq ${sfc_id_key} ${rspec_file} | tr -d '"'`
-            sfc_id_instance_key=".[${i}].sfc_id_instance"
-            sfc_id_instance=`jq ${sfc_id_instance_key} ${rspec_file} | tr -d '"'`
-            sf_id_key=".[${i}].sf_id"
-            sf_id=`jq ${sf_id_key} ${rspec_file} | tr -d '"'`
-            sf_id_instance_key=".[${i}].sf_id_instance"
-            sf_id_instance=`jq ${sf_id_instance_key} ${rspec_file} | tr -d '"'`
-            ipendpoint_id_key=".[${i}].ipendpoint_id"
-            ipendpoint_id=`jq ${ipendpoint_id_key} ${rspec_file} | tr -d '"'`
-            sr_id_key=".[${i}].sr_id"
-            sr_id=`jq ${sr_id_key} ${rspec_file} | tr -d '"'`
-            influxdb_url_key=".[${i}].influxdb_url"
-            influxdb_url=`jq ${influxdb_url_key} ${rspec_file} | tr -d '"'` 
-            database_name_key=".[${i}].database_name"
-            database_name=`jq ${database_name_key} ${rspec_file} | tr -d '"'`  
-
             cmd="/vagrant/scripts/clmc-agent/configure.sh ${location} ${sfc_id} ${sfc_id_instance} ${sf_id} ${sf_id_instance} ${ipendpoint_id} ${sr_id} ${influxdb_url} ${database_name}"
 
             lxc-attach -n ${service_name} -- ${cmd}
 
-            lxc-attach -n ${service_name} -- service telegraf restart    
-        fi 
+            lxc-attach -n ${service_name} -- service telegraf restart
+        fi
     fi
-    let i=i+1
 done
 
 ./conts-stop.sh
diff --git a/clmctest/conts-destroy.sh b/clmctest/conts-destroy.sh
index 779b458..82cc143 100755
--- a/clmctest/conts-destroy.sh
+++ b/clmctest/conts-destroy.sh
@@ -1,19 +1,15 @@
 #!/bin/bash
 
 rspec_file=rspec.json
-service_count=`jq '. | length' ${rspec_file}`
-i=0
-while [  $i -lt ${service_count} ]; do
-    service_name_key=".[${i}].name"
-    service_name=`jq ${service_name_key} ${rspec_file} | tr -d '"'`
 
+service_names=$(jq -r '.[].name' ${rspec_file})
+for service_name in $service_names; do
     if lxc-info -n ${service_name}; then
         echo "Stopping container: ${service_name}"
-        lxc-stop -n ${service_name} 
-        echo "Destroying container: ${service_name}"      
-        lxc-destroy -n ${service_name}    
+        lxc-stop -n ${service_name}
+        echo "Destroying container: ${service_name}"
+        lxc-destroy -n ${service_name}
+        ip=$(jq -r --arg NAME ${service_name} '.[] | select(.name==$NAME | .ip_address')
         sed -i '/${ip}/d' /etc/lxc/dnsmasq.conf
     fi
-    let i=i+1
 done
-     
\ No newline at end of file
diff --git a/clmctest/conts-start.sh b/clmctest/conts-start.sh
index e9f5506..70c1ef8 100755
--- a/clmctest/conts-start.sh
+++ b/clmctest/conts-start.sh
@@ -1,16 +1,11 @@
 #!/bin/bash
 
 rspec_file=rspec.json
-service_count=`jq '. | length' ${rspec_file}`
-i=0
-while [  $i -lt ${service_count} ]; do
-    service_name_key=".[${i}].name"
-    service_name=`jq ${service_name_key} ${rspec_file} | tr -d '"'`
 
+service_names=$(jq -r '.[].name' ${rspec_file})
+for service_name in $service_names; do
     if lxc-info -n ${service_name}; then
         echo "Starting container: ${service_name}"
-        lxc-start -n ${service_name} 
+        lxc-start -n ${service_name}
     fi
-    let i=i+1
 done
-     
\ No newline at end of file
diff --git a/clmctest/conts-stop.sh b/clmctest/conts-stop.sh
index 13e97d2..33b6552 100755
--- a/clmctest/conts-stop.sh
+++ b/clmctest/conts-stop.sh
@@ -1,16 +1,11 @@
 #!/bin/bash
 
 rspec_file=rspec.json
-service_count=`jq '. | length' ${rspec_file}`
-i=0
-while [  $i -lt ${service_count} ]; do
-    service_name_key=".[${i}].name"
-    service_name=`jq ${service_name_key} ${rspec_file} | tr -d '"'`
 
+service_names=$(jq -r '.[].name' ${rspec_file})
+for service_name in $service_names; do
     if lxc-info -n ${service_name}; then
         echo "Stopping container: ${service_name}"
-        lxc-stop -n ${service_name} 
+        lxc-stop -n ${service_name}
     fi
-    let i=i+1
-done
-     
\ No newline at end of file
+done
\ No newline at end of file
-- 
GitLab