Fix the Doc lint, shellcheck and doc links Errors
[kuberef.git] / functions.sh
index 67edf7d..3ca3e09 100755 (executable)
@@ -4,6 +4,8 @@
 #
 # SPDX-License-Identifier: Apache-2.0
 
+OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
+
 info() {
     _print_msg "INFO" "$1"
 }
@@ -62,6 +64,90 @@ check_prerequisites() {
     #-------------------------------------------------------------------------------
     sudo sed -i "s/^Defaults.*env_reset/#&/" /etc/sudoers
 
+    #-------------------------------------------------------------------------------
+    # Installing prerequisites
+    #-------------------------------------------------------------------------------
+    if [ "$OS_ID" == "ubuntu" ]; then
+
+        sudo apt update -y
+        ansible --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo apt-add-repository --yes --update ppa:ansible/ansible
+            sudo apt-get install -y ansible
+        fi
+
+        yq --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo wget https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_amd64 -O /usr/bin/yq
+            sudo chmod +x /usr/bin/yq
+        fi
+
+        virsh --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo apt-get install -y virsh
+        fi
+
+        jq --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo apt-get install -y jq
+        fi
+
+        virtualenv --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo apt-get install -y virtualenv
+        fi
+
+        pip --version
+        if [ $RESULT -ne 0 ]; then
+            sudo apt-get install -y pip
+        fi
+
+    elif [ "$OS_ID" == "centos" ]; then
+
+        sudo yum update -y
+        ansible --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo dnf install epel-release
+            sudo dnf install ansible
+        fi
+
+        yq --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo wget https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_amd64 -O /usr/bin/yq
+            sudo chmod +x /usr/bin/yq
+        fi
+
+        virsh --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo yum install -y virsh
+        fi
+
+        jq --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo yum install -y jq
+        fi
+
+        virtualenv --version
+        RESULT=$?
+        if [ $RESULT -ne 0 ]; then
+            sudo yum install -y virtualenv
+        fi
+
+        pip --version
+        if [ $RESULT -ne 0 ]; then
+            sudo yum install -y pip
+        fi
+    fi
+
     #-------------------------------------------------------------------------------
     # Check if necessary tools are installed
     #-------------------------------------------------------------------------------
@@ -160,6 +246,11 @@ copy_files_jump() {
 
 # Host Provisioning
 provision_hosts_baremetal() {
+    CMD="./deploy.sh -s ironic -d ${DISTRO} -p file:///${PROJECT_ROOT}/engine/engine/pdf.yaml -i file:///${PROJECT_ROOT}/engine/engine/idf.yaml"
+    if [ "${DEBUG:-false}" == "true" ]; then
+        CMD+=" -v"
+    fi
+
     # shellcheck disable=SC2087
     ssh -o StrictHostKeyChecking=no -tT "$USERNAME"@"$(get_vm_ip)" << EOF
 # Install and run cloud-infra
@@ -170,24 +261,24 @@ fi
 cp "${PROJECT_ROOT}"/"${VENDOR}"/{pdf.yaml,idf.yaml} \
 "${PROJECT_ROOT}"/engine/engine
 cd "${PROJECT_ROOT}"/engine/engine || return
-./deploy.sh -s ironic -d "${DISTRO}" \
--p file:///"${PROJECT_ROOT}"/engine/engine/pdf.yaml \
--i file:///"${PROJECT_ROOT}"/engine/engine/idf.yaml
+${CMD}
 EOF
 }
 
 provision_hosts_vms() {
     # shellcheck disable=SC2087
-# Install and run cloud-infra
-if [ ! -d "$CURRENTPATH/engine" ]; then
-    git clone https://gerrit.nordix.org/infra/engine.git "${CURRENTPATH}"/engine
-fi
-cp "$CURRENTPATH"/hw_config/"$VENDOR"/{pdf.yaml,idf.yaml} \
-"${CURRENTPATH}"/engine/engine
-cd "$CURRENTPATH"/engine/engine || return
-./deploy.sh -s ironic \
--p file:///"${CURRENTPATH}"/engine/engine/pdf.yaml \
--i file:///"${CURRENTPATH}"/engine/engine/idf.yaml
+    # Install and run cloud-infra
+    if [ ! -d "${CURRENTPATH}/engine" ]; then
+        git clone https://gerrit.nordix.org/infra/engine.git "${CURRENTPATH}"/engine
+    fi
+    cp "${CURRENTPATH}"/hw_config/"${VENDOR}"/{pdf.yaml,idf.yaml} "${CURRENTPATH}"/engine/engine
+    cd "${CURRENTPATH}"/engine/engine || return
+    CMD="./deploy.sh -s ironic -p file:///${CURRENTPATH}/engine/engine/pdf.yaml -i file:///${CURRENTPATH}/engine/engine/idf.yaml"
+    if [ "${DEBUG:-false}" == "true" ]; then
+        CMD+=" -v"
+    fi
+
+    ${CMD}
 }
 
 # Setup networking on provisioned hosts (Adapt setup_network.sh according to your network setup)
@@ -256,6 +347,8 @@ cp "${PROJECT_ROOT}"/"${INSTALLER}"/patched_preflight.yml \
     "${PROJECT_ROOT}"/container-experience-kits/playbooks/preflight.yml
 cp "${PROJECT_ROOT}"/"${INSTALLER}"/patched_sriov_cni_install.yml \
     "${PROJECT_ROOT}"/container-experience-kits/roles/sriov_cni_install/tasks/main.yml
+cp "${PROJECT_ROOT}"/"${INSTALLER}"/patched_install_dpdk_meson.yml \
+    "${PROJECT_ROOT}"/container-experience-kits/roles/install_dpdk/tasks/install_dpdk_meson.yml
 
 sudo docker run --rm \
 -e ANSIBLE_CONFIG=/bmra/ansible.cfg \
@@ -291,6 +384,8 @@ cp "${CURRENTPATH}"/sw_config/"${INSTALLER}"/patched_preflight.yml \
     "${CURRENTPATH}"/container-experience-kits/playbooks/preflight.yml
 cp "${CURRENTPATH}"/sw_config/"${INSTALLER}"/patched_sriov_cni_install.yml \
     "${CURRENTPATH}"/container-experience-kits/roles/sriov_cni_install/tasks/main.yml
+cp "${CURRENTPATH}"/sw_config/"${INSTALLER}"/patched_install_dpdk_meson.yml \
+    "${CURRENTPATH}"/container-experience-kits/roles/install_dpdk/tasks/install_dpdk_meson.yml
 
 ansible-playbook -i "$CURRENTPATH"/sw_config/bmra/inventory.ini "$CURRENTPATH"/playbooks/pre-install.yaml
 
@@ -324,9 +419,9 @@ EOF
 # Creates a python virtual environment
 creates_virtualenv() {
     if [  ! -d "$CURRENTPATH/.venv" ]; then
-        virtualenv .venv
+        virtualenv "$CURRENTPATH/.venv"
     fi
-    # shellcheck disable=SC1090
+    # shellcheck disable=SC1090,SC1091
     source "$CURRENTPATH/.venv/bin/activate"
     pip install -r "$CURRENTPATH/requirements.txt"
 }