fix regex expression to find IPV4 address
[samplevnf.git] / VNFs / DPPD-PROX / helper-scripts / rapid / check_prox_system_setup.sh
index 84e2f70..3cf1113 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 ##
-## Copyright (c) 2010-2020 Intel Corporation
+## Copyright (c) 2010-2021 Intel Corporation
 ##
 ## Licensed under the Apache License, Version 2.0 (the "License");
 ## you may not use this file except in compliance with the License.
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ##
+## This script should run after booting: see check-prox-system-setup.service
+
 NCPUS="$(lscpu | egrep '^CPU\(s\):' | awk '{ print $2 }')"
 MAXCOREID="$((NCPUS-1))"
 
-filename="/etc/tuned/realtime-virtual-guest-variables.conf"
-logfile="/opt/rapid/prox_system_setup.log"
-if [ -f "$filename" ]
+tuned_config="/etc/tuned/realtime-virtual-guest-variables.conf"
+log_file="/opt/rapid/prox_system_setup.log"
+system_ready="/opt/rapid/system_ready_for_rapid"
+tuned_done="/opt/rapid/tuned_done"
+after_boot_file="/opt/rapid/after_boot.sh"
+
+tuned_and_reboot () {
+  echo "Applying tuned profile">>$log_file
+  tuned-adm profile realtime-virtual-guest
+  touch "$tuned_done"
+  echo "Rebooting...">>$log_file
+  reboot
+  exit 0
+}
+
+if [ -f "$tuned_config" ]
 then
     while read -r line
     do
         case $line in
             isolated_cores=1-$MAXCOREID*)
-                echo "Isolated CPU(s) OK, no reboot: $line">>$logfile
-                FILE=/opt/rapid/after_boot.sh
-                if test -f "$FILE"; then
-                  ("$FILE")
-                  echo "Executing: $FILE">>$logfile
+                if test ! -f "$tuned_done"; then
+                  tuned_and_reboot
                 fi
-                touch /opt/rapid/system_ready_for_rapid
+                if test -f "$after_boot_file"; then
+                  echo "Executing: $after_boot_file">>$log_file
+                  ("$after_boot_file")
+                fi
+                echo "Isolated CPU(s) OK, no reboot: $line">>$log_file
+                ## rapid scripts will wait for the system_ready file to exist
+                ## Only then, they will be able to connect to the PROX instance
+                ## and start the testing
+                touch "$system_ready"
+                ## On some systems, we still need to use the igb_uio driver.
+                ## Example: good performance on AWS with the ENA interface.
+                ## Make sure that you change devbind.sh to use the preferred
+                ## driver. vfio is the default.
+                modprobe uio
+                insmod /opt/rapid/dpdk/build/kmod/igb_uio.ko wc_activate=1
                 exit 0
             ;;
             isolated_cores=*)
-                echo "Isolated CPU(s) NOK, change the config and reboot: $line">>$logfile
-                sed -i "/^isolated_cores=.*/c\isolated_cores=1-$MAXCOREID" $filename
-                tuned-adm profile realtime-virtual-guest
-                reboot
-                exit 0
+                echo "Isolated CPU(s) NOK: $line">>$log_file
+                sed -i "/^isolated_cores=.*/c\isolated_cores=1-$MAXCOREID" $tuned_config
+                tuned_and_reboot
             ;;
             *)
                 echo "$line"
             ;;
         esac
-    done < "$filename"
-    echo "isolated_cores=1-$MAXCOREID" >> $filename
-    echo "No Isolated CPU(s) defined in config, line added: $line">>$logfile
-    tuned-adm profile realtime-virtual-guest
-    reboot
+    done < "$tuned_config"
+    echo "isolated_cores=1-$MAXCOREID" >> $tuned_config
+    echo "No Isolated CPU(s) defined in config, line added: isolated_cores=1-$MAXCOREID">>$log_file
+    tuned_and_reboot
 else
-    echo "$filename not found.">>$logfile
+    echo "$tuned_config not found.">>$log_file
 fi
-