diff --git a/upgrade.sh b/upgrade.sh index b5fe134..076aa51 100644 --- a/upgrade.sh +++ b/upgrade.sh @@ -1,388 +1,477 @@ #!/bin/bash set -e - - -function upgrade_docker_container () { - #echo "$1" - if [[ "$1" == "core" ]]; then - cd /DNIF - rm -r /DNIF/common - if [[ "$3" == "v9.0.3" ]]; then - file="/DNIF/CO/redis/data/dump.rdb" - if [ -f "$file" ]; then - mv /DNIF/CO/redis/data/dump.rdb /DNIF/CO/redis/data/dump.rdb_backup +function jdk_upgrade () { + # Get current OpenJDK version + source /etc/profile + current_version=$(java --version | grep -oP 'openjdk \K[0-9]+(\.[0-9]+\.[0-9]+)?') + echo -e "\n[-] Current OpenJDK version found $current_version\n" + if [[ "$current_version" == "20.0.2" ]]; then + echo -e "[-] OpenJDK already installed with required version 20.0.2\n" + else + echo -e "[-] Starting OpenJDK update...!\n" + # Checking OS to backup OLD OpenJDK 14 + if [[ "$os" == "centos" || "$os" == "rhel" ]]; then + if [ -d "/usr/lib/jvm/java-14-openjdk-amd64" ]; then + mv /usr/lib/jvm/java-14-openjdk-amd64 /usr/lib/jvm/bkp_java-14-openjdk-amd64 fi - fi - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/docker-compose.yaml - docker-compose up -d - docker-compose logs -f| while read LREAD - do - if [[ `echo $LREAD | grep -o "Server is now running"` ]]; then - ((count=count+1)) - echo -e "\nBooting up container\n" - if [[ "$count" == "2" ]]; then - id="$(pidof docker-compose)" - kill -9 $id - exit 0 - fi + if [ -d "/usr/lib/jdk-14" ]; then + mv /usr/lib/jdk-14 /usr/lib/bkp_jdk-14 fi - done - docker ps - elif [[ "$1" == "console" ]]; then - cd /DNIF/LC - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/LC/docker-compose.yaml - docker-compose up -d - docker ps - elif [[ "$1" == "datanode" ]]; then - cd /DNIF/DL - file="/DNIF/DL/docker-compose.yaml" - if [ -f "$file" ]; then - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/DL/docker-compose.yaml - docker-compose up -d - docker ps - fi - elif [[ "$1" == "adapter" ]]; then - cd /DNIF/AD - file=/DNIF/AD/docker-compose.yaml - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/AD/docker-compose.yaml - if ! grep -q "tmfs" $file ; then - sed -i '/volumes:/i\ tmpfs: /DNIF \' docker-compose.yaml - fi - docker-compose up -d - docker ps - elif [[ "$1" == "pico" ]]; then - cd /DNIF/PICO - file="/DNIF/PICO/docker-compose.yaml" - if [ -f "$file" ]; then - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/PICO/docker-compose.yaml - docker-compose up -d - docker ps - fi - fi -} - - -function upgrade_podman_container () { - - #echo "$1" - if [[ "$1" == "core" ]]; then - cd /DNIF - rm -r /DNIF/common - if [[ "$3" == "v9.0.3" ]]; then - file="/DNIF/CO/redis/data/dump.rdb" - if [ -f "$file" ]; then - mv /DNIF/CO/redis/data/dump.rdb /DNIF/CO/redis/data/dump.rdb_backup + elif [ "$os" = "ubuntu" ]; then + if [ -d "/usr/lib/jvm/java-14-openjdk-amd64" ]; then + mv /usr/lib/jvm/java-14-openjdk-amd64 /usr/lib/jvm/bkp_java-14-openjdk-amd64 fi - fi - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/podman-compose.yaml - podman-compose up -d - podman-compose logs -f| while read LREAD - do - if [[ `echo $LREAD | grep -o "Server is now running"` ]]; then - echo -e "\nBooting up container\n" - id="$(pgrep podman-compose)" - kill -9 $id - break + if [ -d "/usr/lib/jvm/jdk-14" ]; then + mv /usr/lib/jvm/jdk-14 /usr/lib/jvm/bkp_jdk-14 fi - done - podman ps - elif [[ "$1" == "console" ]]; then - cd /DNIF/LC - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/LC/podman-compose.yaml - podman-compose up -d - podman ps - elif [[ "$1" == "datanode" ]]; then - cd /DNIF/DL - file="/DNIF/DL/podman-compose.yaml" - if [ -f "$file" ]; then - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/DL/podman-compose.yaml - podman-compose up -d - podman ps fi - elif [[ "$1" == "adapter" ]]; then - cd /DNIF/AD - file=/DNIF/AD/podman-compose.yaml - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/AD/podman-compose.yaml - if ! grep -q "tmfs" $file ; then - sed -i '/volumes:/i\ tmpfs: /DNIF \' podman-compose.yaml + # Define the JDK download URL and target file + jdk_url="https://download.java.net/java/GA/jdk20.0.2/6e380f22cbe7469fa75fb448bd903d8e/9/GPL/openjdk-20.0.2_linux-x64_bin.tar.gz" + jdk_tarball="/var/tmp/openjdk-20.0.2_linux-x64_bin.tar.gz" + # Check if the tarball already exists + if [[ -f "$jdk_tarball" ]]; then + echo -e "[-] JDK tarball already exists at $jdk_tarball. Skipping download.\n" + else + echo -e "[-] Downloading OpenJDK tarball...\n" + wget "$jdk_url" -O "$jdk_tarball" + if [[ $? -ne 0 ]]; then + echo -e "[-] Download failed. Exiting.\n" + exit 1 + fi fi - podman-compose up -d - podman ps - elif [[ "$1" == "pico" ]]; then - cd /DNIF/PICO - file="/DNIF/PICO/podman-compose.yaml" - if [ -f "$file" ]; then - echo -e "\n[-] Pulling docker Image for $1\n" - sed -i s/"$2"/"$3"/g /DNIF/PICO/podman-compose.yaml - podman-compose up -d - podman ps + echo -e "[-] Installing OpenJDK 20.0.2\n" + tar -xvf /var/tmp/openjdk-20.0.2_linux-x64_bin.tar.gz -C /usr/lib/jvm/ >> /DNIF/upgrade.log + # Set environment variables for OpenJDK 20.0.2 + echo "export JAVA_HOME=/usr/lib/jvm/jdk-20.0.2" > /etc/profile.d/jdk.sh + echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile.d/jdk.sh + mkdir -p /usr/lib/jvm/java-20.0.2-openjdk-amd64 + cp -r /usr/lib/jvm/jdk-20.0.2/* /usr/lib/jvm/java-20.0.2-openjdk-amd64/ + echo "export JAVA_HOME=/usr/lib/jvm/java-20.0.2-openjdk-amd64" >> /etc/profile + # Reload the profile scripts to apply changes + source /etc/profile.d/jdk.sh + source /etc/profile + # Check the installed version + latest_version=$(java --version | grep -oP 'openjdk \K[0-9]+(\.[0-9]+\.[0-9]+)?') + # Validate the installation + if [[ "$latest_version" == "20.0.2" ]]; then + echo -e "[-] OpenJDK version successfully upgraded from $current_version to $latest_version.\n" + else + echo -e "[-] There was an issue installing OpenJDK. Current version: $latest_version.\n" fi fi - } - - - - - - - - - - - - - - - - - +# Get current OS if [ -r /etc/os-release ]; then os="$(. /etc/os-release && echo "$ID")" fi +# DNIF Version Tag +tag='v9.4.1' case "${os}" in - ubuntu) - container_list=("core" "console" "adapter" "datanode" "pico" ) - echo -e "[-] Finding docker Image" + ubuntu|centos) + container_list=( "core-v9" "console-v9" "datanode-v9" "eventbus-v9" "adapter-v9" "pico-v9" ) for container_name in "${container_list[@]}" do - if [ "$(docker images|grep $container_name|awk 'NR==1 {print $1; exit}'|cut -d "/" -f2)" ]; then - echo -e "[-] Checking for current running version" - sleep 3 - current_ver="$(docker images|grep $container_name|awk 'NR==1 {print $2; exit}')" - echo -e "[-] Found $container_name current version $current_ver" - image="$(docker images|grep $container_name|awk 'NR==1 {print $1; exit}'|cut -d "/" -f2)" - echo -e "[-] Fetching Tags from docker hub" - filtered_tag=() - tag_list="$(curl -L -s 'https://registry.hub.docker.com/v2/repositories/dnif/'$image'/tags' | grep -oh 'v9.\w*.\w*'|sort -V)" - END=100 - for ((i=1;i<=END;i++)); do - tag="$(echo $tag_list|cut -d " " -f $i)" - if [[ $tag =~ ^[v9]+\.[0-9]+\.[0-9]+$ ]]; then - filtered_tag+=($tag) + if [ -e /DNIF/docker-compose.yaml ]; then + dc_container_name=$(cat /DNIF/docker-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/docker-compose.yaml | grep 'image' | grep 'core' | awk '{print $2}' | cut -d':' -f2) + dcversion2=$(cat /DNIF/docker-compose.yaml | grep 'image' | grep 'datanode' | awk '{print $2}' | cut -d':' -f2) + fi + fi + if [ -e /DNIF/LC/docker-compose.yaml ]; then + dc_container_name=$(cat /DNIF/LC/docker-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/LC/docker-compose.yaml | grep 'image' | grep 'console' | awk '{print $2}' | cut -d':' -f2) + fi + fi + if [ -e /DNIF/DL/docker-compose.yaml ]; then + if [ ! -e /DNIF/docker-compose.yaml ]; then + dc_container_name=$(cat /DNIF/DL/docker-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/DL/docker-compose.yaml | grep 'image' | grep 'datanode' | awk '{print $2}' | cut -d':' -f2) fi - done - len=${#filtered_tag[@]} - for (( i=0; i<$len; i++ )); do - latest_ver="${filtered_tag[i]}" - if [ "$latest_ver" == "$current_ver" ]; then - ((a=i+2)) - #latest_tag="$(echo $filtered_tag|cut -d " " -f $a)" - latest_tag=${filtered_tag[$a]} - if [ "$latest_tag" ]; then - if [ "$latest_tag" == "v9.0.6" ]; then - latest_tag="v9.0.7" - upgrade_docker_container $container_name $current_ver $latest_tag - break - else - upgrade_docker_container $container_name $current_ver $latest_tag - break - fi - else - ((b=i+1)) - #latest_tag="$(echo $filtered_tag|cut -d " " -f $b)" - latest_tag=${filtered_tag[$b]} - if [ "$latest_tag" ]; then - if [ "$latest_tag" == "v9.0.6" ]; then - upgrade_docker_container $container_name $current_ver $latest_tag - break - else - upgrade_docker_container $container_name $current_ver $latest_tag - fi - else - container_name="${container_name}-v9" - - if [ "$(docker ps -q -f status=running -f name=^/$container_name)" ]; then - running_ver="$(docker ps -f status=running -f name=^/$container_name|awk 'NR > 1 {print $2; exit}'|cut -d ":" -f2)" - if [ "$running_ver" == "$latest_ver" ]; then - echo -e "[-] Up-to-date" - else - echo -e "[-] First stop $container_name container ... \e[0;31m[ERROR] \e[0m\n" - exit 0 - fi - else - #echo "[-] Current version is $current_ver need to overwrite $latest_ver in compose" - if [ "$container_name" == "core-v9" ]; then - file="/DNIF/docker-compose.yaml" - if [ -f $file ]; then - old_ver="$(cat $file |grep "image" |cut -d ":" -f3)" - old_ver="$(echo $old_ver|cut -d " " -f1)" - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g $file - fi - cd /DNIF - docker-compose up -d - fi - elif [ "$container_name" == "console-v9" ]; then - - old_ver="$(cat /DNIF/LC/docker-compose.yaml |grep "image" |cut -d ":" -f3)" - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g /DNIF/LC/docker-compose.yaml - fi - cd /DNIF/LC - docker-compose up -d - elif [ "$container_name" == "datanode-v9" ]; then - file="/DNIF/DL/docker-compose.yaml" - if [ -f $file ]; then - old_ver="$(cat $file |grep "image" |cut -d ":" -f3)" - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g $file - fi - cd /DNIF/DL - docker-compose up -d - fi - elif [ "$container_name" == "adapter-v9" ]; then - old_ver="$(cat /DNIF/AD/docker-compose.yaml |grep "image" |cut -d ":" -f3)" - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g /DNIF/AD/docker-compose.yaml - fi - cd /DNIF/AD - docker-compose up -d - elif [ "$container_name" == "pico-v9" ]; then - old_ver="$(cat /DNIF/PICO/docker-compose.yaml |grep "image" |cut -d ":" -f3)" - - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g /DNIF/PICO/docker-compose.yaml - fi - cd /DNIF/PICO - docker-compose up -d - fi - #sed -i s/"$current_ver"/"$latest_ver"/g /DNIF/docker-compose.yaml + fi + fi + if [ -e /DNIF/AD/docker-compose.yaml ]; then + dc_container_name=$(cat /DNIF/AD/docker-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/AD/docker-compose.yaml | grep 'image' | grep 'adapter' | awk '{print $2}' | cut -d':' -f2) + fi + fi + if [ -e /DNIF/PICO/docker-compose.yaml ]; then + dc_container_name=$(cat /DNIF/PICO/docker-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/PICO/docker-compose.yaml | grep 'image' | grep 'pico' | awk '{print $2}' | cut -d':' -f2) + fi + fi + if [ -e /DNIF/EB/docker-compose.yaml ]; then + dc_container_name=$(cat /DNIF/EB/docker-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/EB/docker-compose.yaml | grep 'image' | grep 'eventbus' | awk '{print $2}' | cut -d':' -f2 | tr -d '"') + fi + fi + if [ "$dcfound" == "$container_name" ]; then + echo -e "\n[-] Checking for current running container and version from docker-compose\n" + echo -e "[-] Found $dcfound with current version $dcversion\n" + + int_tag=$(echo ${tag#v} | tr -d '.') + int_dcversion=$(echo ${dcversion#v} | tr -d '.') + if [[ "$int_dcversion" =~ ^[0-9]{4}$ ]]; then + # Remove the last digit + int_dcversion=${int_dcversion:0:-1} + fi - fi - fi + if (( $int_tag == $int_dcversion )); then + echo -e "[-] Version Up-to-date\n" + elif (( $int_tag < $int_dcversion )); then + echo -e "[-] Version Downgrade not allowed!\n" + echo -e "[-] The curent version - $dcversion is greater than the upgrading tag version - $tag\n" + elif (( $int_tag > $int_dcversion )); then + echo -e "[-] The curent version - $dcversion is lower than the upgrading tag version - $tag\n" + echo -e "[-] Starting Version upgrade!\n" + if [ "$container_name" == "core-v9" ]; then + #Updating OpenJDK version + jdk_upgrade + echo -e "[-] Updating docker-compose..\n" + file="/DNIF/docker-compose.yaml" + # Adding UI_IP in docker-compose file + ui_exist=$(echo "$(cat /DNIF/docker-compose.yaml | grep 'UI_IP')") + if [ -n "$ui_exist" ]; then + echo -e "[-] UI_IP already exist in docker-compose file" + echo -e "$ui_exist" + else + UI_IP="" + while [[ ! $UI_IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; do + echo -e "ENTER CONSOLE IP: \c" + read -r UI_IP + done + sed -i "/CORE_IP/a\ - 'UI_IP=$UI_IP'" $file + fi + # Updating DNIF version tag in docker-compose file + if [ -e /DNIF/DL/docker-compose.yaml ]; then + file2="/DNIF/DL/docker-compose.yaml" + dcversion2=$(cat /DNIF/DL/docker-compose.yaml | grep 'image' | grep 'datanode' | awk '{print $2}' | cut -d':' -f2) + sed -i s/"$dcversion2"/"$tag"/g $file2 + fi + sed -i s/"$dcversion"/"$tag"/g $file + sed -i s/"$dcversion2"/"$tag"/g $file + echo -e "\n[-] Starting docker container\n" + cd /DNIF + docker-compose up -d + if [ -e /DNIF/DL/docker-compose.yaml ]; then + cd /DNIF/DL + docker-compose up -d + fi + docker ps -a + elif [ "$container_name" == "console-v9" ]; then + echo -e "[-] Updating docker-compose..\n" + file="/DNIF/LC/docker-compose.yaml" + # Adding UI_IP in docker-compose file + ui_exist=$(echo "$(cat /DNIF/LC/docker-compose.yaml | grep 'UI_IP')") + if [ -n "$ui_exist" ]; then + echo -e "[-] UI_IP already exist in docker-compose file" + echo -e "$ui_exist" + else + UI_IP="" + while [[ ! $UI_IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; do + echo -e "ENTER CONSOLE IP: \c" + read -r UI_IP + done + sed -i "/restart/a\ environment:" $file + sed -i "/environment:/a\ - 'UI_IP=$UI_IP'" $file + fi + # Updating DNIF version tag in docker-compose file + sed -i s/"$dcversion"/"$tag"/g $file + echo -e "\n[-] Starting docker container\n" + cd /DNIF/LC + docker-compose up -d + docker ps -a + elif [ "$container_name" == "datanode-v9" ]; then + #Updating OpenJDK version + jdk_upgrade + echo -e "[-] Updating docker-compose..\n" + file="/DNIF/DL/docker-compose.yaml" + sed -i s/"$dcversion"/"$tag"/g $file + echo -e "\n[-] Starting docker container\n" + cd /DNIF/DL + docker-compose up -d + docker ps -a + elif [ "$container_name" == "adapter-v9" ]; then + echo -e "[-] Updating docker-compose..\n" + file="/DNIF/AD/docker-compose.yaml" + # Adding HOST_IP in docker-compose file + hi_exist=$(echo "$(cat /DNIF/AD/docker-compose.yaml | grep 'HOST_IP')") + if [ -n "$hi_exist" ]; then + echo -e "[-] HOST_IP already exist in docker-compose file" + echo -e "$hi_exist" + else + HOST_IP="" + while [[ ! $HOST_IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; do + echo -e "ENTER ADAPTER IP: \c" + read -r HOST_IP + done + sed -i "/CORE_IP/a\ - 'HOST_IP=$HOST_IP'" $file fi - break + sed -i s/"$dcversion"/"$tag"/g $file + echo -e "\n[-] Starting docker container\n" + cd /DNIF/AD + docker-compose up -d + docker ps -a + elif [ "$container_name" == "pico-v9" ]; then + echo -e "[-] Updating docker-compose..\n" + file="/DNIF/PICO/docker-compose.yaml" + sed -i s/"$dcversion"/"$tag"/g $file + echo -e "\n[-] Starting docker container\n" + cd /DNIF/PICO + docker-compose up -d + docker ps -a + elif [ "$container_name" == "eventbus-v9" ]; then + echo -e "[-] Updating eventbus docker-compose..\n" + file="/DNIF/EB/docker-compose.yaml" + sed -i 0,/"$dcversion"/s/"$dcversion"/"$tag"/ $file + echo -e "\n[-] Starting docker container\n" + cd /DNIF/EB + docker-compose up -d + docker ps -a + + mad_file="/DNIF/active_microad_path_upgradepre" + # Loop through each line in the file + for path in $(cat "$mad_file"); do + echo -e "\n[-] Updating micro adapter $path/docker-compose...\n" + mad_dcversion=$(cat $path/docker-compose.yaml | grep 'image' | grep 'adapter' | awk '{print $2}' | cut -d':' -f2) + int_dcversion=$(echo ${mad_dcversion#v} | tr -d '.') + if [[ "$int_dcversion" =~ ^[0-9]{4}$ ]]; then + # Remove the last digit + int_dcversion=${int_dcversion:0:-1} + fi + if (( $int_tag == $int_dcversion )); then + echo -e "[-] Version Up-to-date\n" + elif (( $int_tag < $int_dcversion )); then + echo -e "[-] Version Downgrade not allowed!\n" + echo -e "[-] The curent version - $mad_dcversion is greater than the upgrading tag version - $tag\n" + elif (( $int_tag > $int_dcversion )); then + echo -e "[-] The curent version - $mad_dcversion is lower than the upgrading tag version - $tag\n" + echo -e "\n[-] Updating micro adapter $path/docker-compose...\n" + sed -i s/"$mad_dcversion"/"$tag"/g $path/docker-compose.yaml + echo -e "\n[-] Starting docker container\n" + cd $path + docker-compose up -d + docker ps -a + fi + done fi - done + fi fi done - + echo -e "\n[-] Upgrade completed...!\n" ;; rhel) - - container_list=("core" "datanode" "console" "adapter" "pico" ) - echo -e "[-] Finding docker Image" + container_list=( "core-v9" "console-v9" "datanode-v9" "eventbus-v9" "adapter-v9" "pico-v9" ) for container_name in "${container_list[@]}" do - if [ "$(podman images|grep $container_name|awk 'NR==1 {print $1; exit}'|cut -d "/" -f3)" ]; then - echo -e "[-] Checking for current running version" - sleep 3 - current_ver="$(podman images|grep $container_name|awk 'NR==1 {print $2; exit}')" - echo -e "[-] Found $container_name current version $current_ver" - image="$(podman images|grep $container_name|awk 'NR==1 {print $1; exit}'|cut -d "/" -f3)" - echo -e "[-] Fetching Tags from docker hub" - tag_list="$(curl -L -s 'https://registry.hub.docker.com/v2/repositories/dnif/'$image'/tags' | grep -oh 'v9.\w*.\w*'|sort -V)" - - filtered_tag=() - END=100 - for ((i=1;i<=END;i++)); do - tag="$(echo $tag_list|cut -d " " -f $i)" - if [[ $tag =~ ^[v9]+\.[0-9]+\.[0-9]+$ ]]; then - filtered_tag+=($tag) + if [ -e /DNIF/podman-compose.yaml ]; then + dc_container_name=$(cat /DNIF/podman-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/podman-compose.yaml | grep 'image' | grep 'core' | awk '{print $2}' | cut -d':' -f2) + if [ -e /DNIF/DL/podman-compose.yaml ]; then + dcversion2=$(cat /DNIF/DL/podman-compose.yaml | grep 'image' | grep 'datanode' | awk '{print $2}' | cut -d':' -f2) fi - done - len=${#filtered_tag[@]} - - for (( i=0; i<$len; i++ )); do + fi + fi + if [ -e /DNIF/LC/podman-compose.yaml ]; then + dc_container_name=$(cat /DNIF/LC/podman-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/LC/podman-compose.yaml | grep 'image' | grep 'console' | awk '{print $2}' | cut -d':' -f2) + fi + fi + if [ -e /DNIF/DL/podman-compose.yaml ]; then + if [ ! -e /DNIF/podman-compose.yaml ]; then + dc_container_name=$(cat /DNIF/DL/podman-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/DL/podman-compose.yaml | grep 'image' | grep 'datanode' | awk '{print $2}' | cut -d':' -f2) + fi + fi + fi + if [ -e /DNIF/AD/podman-compose.yaml ]; then + dc_container_name=$(cat /DNIF/AD/podman-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/AD/podman-compose.yaml | grep 'image' | grep 'adapter' | awk '{print $2}' | cut -d':' -f2) + fi + fi + if [ -e /DNIF/PICO/podman-compose.yaml ]; then + dc_container_name=$(cat /DNIF/PICO/podman-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/PICO/podman-compose.yaml | grep 'image' | grep 'pico' | awk '{print $2}' | cut -d':' -f2) + fi + fi + if [ -e /DNIF/EB/podman-compose.yaml ]; then + dc_container_name=$(cat /DNIF/EB/podman-compose.yaml | grep "$container_name" | awk '{print $2}') + if [ "$dc_container_name" == "$container_name" ]; then + dcfound=$dc_container_name + dcversion=$(cat /DNIF/EB/podman-compose.yaml | grep 'image' | grep 'eventbus' | awk '{print $2}' | cut -d':' -f2 | tr -d '"') + fi + fi + if [ "$dcfound" == "$container_name" ]; then + echo -e "\n[-] Checking for current running container and version from podman-compose\n" + echo -e "[-] Found $dcfound with current version $dcversion\n" + + int_tag=$(echo ${tag#v} | tr -d '.') + int_dcversion=$(echo ${dcversion#v} | tr -d '.') + if [[ "$int_dcversion" =~ ^[0-9]{4}$ ]]; then + # Remove the last digit + int_dcversion=${int_dcversion:0:-1} + fi - latest_ver="${filtered_tag[i]}" - if [ "$latest_ver" == "$current_ver" ]; then - ((a=i+2)) - latest_tag=${filtered_tag[$a]} - if [ "$latest_tag" ]; then - if [ "$latest_tag" == "v9.0.6" ]; then - latest_tag="v9.0.7" - upgrade_podman_container $container_name $current_ver $latest_tag - break - else - upgrade_podman_container $container_name $current_ver $latest_tag - break - fi + if (( $int_tag == $int_dcversion )); then + echo -e "[-] Version Up-to-date\n" + elif (( $int_tag < $int_dcversion )); then + echo -e "[-] Version Downgrade not allowed!\n" + echo -e "[-] The curent version - $dcversion is greater than the upgrading tag version - $tag\n" + elif (( $int_tag > $int_dcversion )); then + echo -e "[-] The curent version - $dcversion is lower than the upgrading tag version - $tag\n" + echo -e "[-] Starting Version upgrade!\n" + if [ "$container_name" == "core-v9" ]; then + #Updating OpenJDK version + jdk_upgrade + echo -e "[-] Updating podman-compose..\n" + file1="/DNIF/podman-compose.yaml" + file2="/DNIF/DL/podman-compose.yaml" + # Adding UI_IP in podman-compose file + ui_exist=$(echo "$(cat /DNIF/podman-compose.yaml | grep 'UI_IP')") + if [ -n "$ui_exist" ]; then + echo -e "[-] UI_IP already exist in podman-compose file" + echo -e "$ui_exist" else - ((b=i+1)) - latest_tag=${filtered_tag[$b]} - if [ "$latest_tag" ]; then - if [ "$latest_tag" == "v9.0.6" ]; then - upgrade_podman_container $container_name $current_ver $latest_tag - break - else - upgrade_podman_container $container_name $current_ver $latest_tag - fi - else - container_name="${container_name}-v9" - - if [ "$(podman ps -q -f status=running -f name=$container_name)" ]; then - running_ver="$(podman ps -f status=running -f name=$container_name|awk 'NR > 1 {print $2; exit}'|cut -d ":" -f2)" - if [ "$running_ver" == "$latest_ver" ]; then - echo -e "[-] Up-to-date" - else - echo -e "[-] First stop $container_name container ... \e[0;31m[ERROR] \e[0m\n" - exit 0 - fi - else - #echo "current version is $current_ver need to overwrite $latest_ver in compose" - if [ "$container_name" == "core-v9" ]; then - old_ver="$(cat /DNIF/podman-compose.yaml |grep "image" |cut -d ":" -f3)" - - #old_ver="$(echo $old_ver|cut -d " " -f1)" - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g /DNIF/podman-compose.yaml - fi - cd /DNIF - podman-compose up -d - elif [ "$container_name" == "console-v9" ]; then - old_ver="$(cat /DNIF/LC/podman-compose.yaml |grep "image" |cut -d ":" -f3)" - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g /DNIF/LC/podman-compose.yaml - fi - cd /DNIF/LC - podman-compose up -d - elif [ "$container_name" == "datanode-v9" ]; then - old_ver="$(cat /DNIF/DL/podman-compose.yaml |grep "image" |cut -d ":" -f3)" - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g /DNIF/DL/podman-compose.yaml - fi - cd /DNIF/DL - podman-compose up -d - elif [ "$container_name" == "adapter-v9" ]; then - old_ver="$(cat /DNIF/AD/podman-compose.yaml |grep "image" |cut -d ":" -f3)" - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g /DNIF/AD/podman-compose.yaml - fi - cd /DNIF/AD - podman-compose up -d - elif [ "$container_name" == "pico-v9" ]; then - old_ver="$(cat /DNIF/PICO/podman-compose.yaml |grep "image" |cut -d ":" -f3)" - if [ "$old_ver" != "$latest_ver" ]; then - sed -i s/"$old_ver"/"$latest_ver"/g /DNIF/PICO/podman-compose.yaml - fi - cd /DNIF/PICO - podman-compose up -d - fi - #sed -i s/"$current_ver"/"$latest_ver"/g /DNIF/docker-compose.yaml - - fi - fi + UI_IP="" + while [[ ! $UI_IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; do + echo -e "ENTER CONSOLE IP: \c" + read -r UI_IP + done + sed -i "/CORE_IP/a\ - 'UI_IP=$UI_IP'" $file1 + fi + # Updating DNIF version tag in podman-compose file + sed -i s/"$dcversion"/"$tag"/g $file1 + sed -i s/"$dcversion2"/"$tag"/g $file2 + echo -e "\n[-] Starting podman container\n" + cd /DNIF + podman-compose up -d + cd /DNIF/DL + podman-compose up -d + podman ps -a + elif [ "$container_name" == "console-v9" ]; then + echo -e "[-] Updating podman-compose..\n" + file="/DNIF/LC/podman-compose.yaml" + # Adding UI_IP in podman-compose file + ui_exist=$(echo "$(cat /DNIF/LC/podman-compose.yaml | grep 'UI_IP')") + if [ -n "$ui_exist" ]; then + echo -e "[-] UI_IP already exist in podman-compose file" + echo -e "$ui_exist" + else + UI_IP="" + while [[ ! $UI_IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; do + echo -e "ENTER CONSOLE IP: \c" + read -r UI_IP + done + sed -i "/restart/a\ environment:" $file + sed -i "/environment:/a\ - 'UI_IP=$UI_IP'" $file + fi + # Updating DNIF version tag in podman-compose file + sed -i s/"$dcversion"/"$tag"/g $file + echo -e "\n[-] Starting podman container\n" + cd /DNIF/LC + podman-compose up -d + podman ps -a + elif [ "$container_name" == "datanode-v9" ]; then + #Updating OpenJDK version + jdk_upgrade + echo -e "[-] Updating podman-compose..\n" + file="/DNIF/DL/podman-compose.yaml" + sed -i s/"$dcversion"/"$tag"/g $file + echo -e "\n[-] Starting podman container\n" + cd /DNIF/DL + podman-compose up -d + podman ps -a + elif [ "$container_name" == "adapter-v9" ]; then + echo -e "[-] Updating podman-compose..\n" + file="/DNIF/AD/podman-compose.yaml" + # Adding HOST_IP in podman-compose file + hi_exist=$(echo "$(cat /DNIF/AD/podman-compose.yaml | grep 'HOST_IP')") + if [ -n "$hi_exist" ]; then + echo -e "[-] HOST_IP already exist in podman-compose file" + echo -e "$hi_exist" + else + HOST_IP="" + while [[ ! $HOST_IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; do + echo -e "ENTER ADAPTER IP: \c" + read -r HOST_IP + done + sed -i "/CORE_IP/a\ - 'HOST_IP=$HOST_IP'" $file fi - break + sed -i s/"$dcversion"/"$tag"/g $file + echo -e "\n[-] Starting podman container\n" + cd /DNIF/AD + podman-compose up -d + podman ps -a + elif [ "$container_name" == "pico-v9" ]; then + echo -e "[-] Updating podman-compose..\n" + file="/DNIF/PICO/podman-compose.yaml" + sed -i s/"$dcversion"/"$tag"/g $file + echo -e "\n[-] Starting podman container\n" + cd /DNIF/PICO + podman-compose up -d + podman ps -a + elif [ "$container_name" == "eventbus-v9" ]; then + echo -e "[-] Updating eventbus podman-compose..\n" + file="/DNIF/EB/podman-compose.yaml" + sed -i 0,/"$dcversion"/s/"$dcversion"/"$tag"/ $file + echo -e "\n[-] Starting podman container\n" + cd /DNIF/EB + podman-compose up -d + podman ps -a + + mad_file="/DNIF/active_microad_path_upgradepre" + # Loop through each line in the file + for path in $(cat "$mad_file"); do + echo -e "\n[-] Updating micro adapter $path/podman-compose...\n" + mad_dcversion=$(cat $path/podman-compose.yaml | grep 'image' | grep 'adapter' | awk '{print $2}' | cut -d':' -f2) + int_dcversion=$(echo ${mad_dcversion#v} | tr -d '.') + if [[ "$int_dcversion" =~ ^[0-9]{4}$ ]]; then + # Remove the last digit + int_dcversion=${int_dcversion:0:-1} + fi + if (( $int_tag == $int_dcversion )); then + echo -e "[-] Version Up-to-date\n" + elif (( $int_tag < $int_dcversion )); then + echo -e "[-] Version Downgrade not allowed!\n" + echo -e "[-] The curent version - $mad_dcversion is greater than the upgrading tag version - $tag\n" + elif (( $int_tag > $int_dcversion )); then + echo -e "[-] The curent version - $mad_dcversion is lower than the upgrading tag version - $tag\n" + echo -e "\n[-] Updating micro adapter $path/podman-compose...\n" + sed -i s/"$mad_dcversion"/"$tag"/g $path/podman-compose.yaml + echo -e "\n[-] Starting podman container\n" + cd $path + podman-compose up -d + podman ps -a + fi + done fi - done + fi fi done - - ;; - + echo -e "\n[-] Upgrade completed...!\n" + ;; esac