#!/bin/bash
set  -e
#2、离线安装nvidia-container-runtime
if [[ ! -f /usr/bin/curl ]];then
  if [[ `cat /etc/os-release` =~ CentOS ]];then
    logger info "正在安装curl"
    yum install curl -y
  else
    logger info "正在安装curl"
    apt --fix-broken install -y
    apt-get install curl -y
  fi
fi

if [[ -f /usr/bin/nvidia-container-runtime ]];then
  echo -e "\n######nvidia-container-runtime已安装!######\n"
else
  echo -e "\n######下载nvidia-container-runtime离线包######\n"
  if [[ `cat /etc/os-release` =~ CentOS ]];then
    if [[ -f /opt/nvidia-container-runtime-rpm.tar.gz ]];then
      echo -e "\n######nvidia-container-runtime离线包已下载######\n"
    else
      curl -C- -O --retry 3 MINIO_URL/ai-deployer/nvidia-container-runtime-rpm.tar.gz
    fi
  elif [[ `cat /etc/os-release` =~ openEuler ]];then
    if [[ -f /opt/nvidia-container-runtime-rpm.tar.gz ]];then
      echo -e "\n######nvidia-container-runtime离线包已下载######\n"
    else
      curl -C- -O --retry 3 MINIO_URL/ai-deployer/nvidia-container-runtime-rpm.tar.gz
    fi
  elif [[ `cat /etc/os-release` =~ "Kylin Linux Advanced Server" ]];then
    if [[ -f /opt/nvidia-container-runtime-rpm.tar.gz ]];then
      echo -e "\n######nvidia-container-runtime离线包已下载######\n"
    else
      curl -C- -O --retry 3 MINIO_URL/ai-deployer/nvidia-container-runtime-rpm.tar.gz
    fi
  elif [[ `cat /etc/os-release` =~ Rocky ||`cat /etc/os-release` =~ AlmaLinux ]];then
    if [[ -f /opt/nvidia-container-runtime-rpm.tar.gz ]];then
      echo -e "\n######nvidia-container-runtime离线包已下载######\n"
    else
      curl -C- -O --retry 3 MINIO_URL/ai-deployer/nvidia-container-runtime-rpm.tar.gz
    fi
  elif [[ `cat /etc/os-release` =~ Ubuntu ]];then
     UBUNTU_VERSION=$(grep -E 'VERSION_ID' /etc/os-release | sed "s/'//g;s/\"//g" | cut -d'=' -f2)
     if [[ -f /opt/nvidia-container-runtime-deb-$UBUNTU_VERSION.tar.gz ]];then
      echo -e "\n######nvidia-container-runtime离线包已下载######\n"
    else
      curl -C- -O --retry 3 MINIO_URL/ai-deployer/nvidia-container-runtime-deb-$UBUNTU_VERSION.tar.gz
    fi
  fi

  if [[ `cat /etc/os-release` =~ CentOS ]];then
    tar xvf nvidia-container-runtime-rpm.tar.gz
    echo -e "\n######安装nvidia-container-runtime######\n"
    rpm -Uvh --force --nodeps ./nvidia-container-runtime-rpm/*.rpm
  elif [[ `cat /etc/os-release` =~ openEuler ]];then
    tar xvf nvidia-container-runtime-rpm.tar.gz
    echo -e "\n######安装nvidia-container-runtime######\n"
    rpm -Uvh --force --nodeps ./nvidia-container-runtime-rpm/*.rpm
  elif [[ `cat /etc/os-release` =~ Ubuntu ]];then
    UBUNTU_VERSION=$(grep -E 'VERSION_ID' /etc/os-release | sed "s/'//g;s/\"//g" | cut -d'=' -f2)
    tar xvf nvidia-container-runtime-deb-$UBUNTU_VERSION.tar.gz
    echo -e "\n######安装nvidia-container-runtime######\n"
    dpkg -i ./nvidia-container-runtime-deb/*.deb
  elif [[ `cat /etc/os-release` =~ "Kylin Linux Advanced Server" ]];then
    tar xvf nvidia-container-runtime-rpm.tar.gz
    echo -e "\n######安装nvidia-container-runtime######\n"
    rpm -Uvh --force --nodeps ./nvidia-container-runtime-rpm/*.rpm
  elif [[ `cat /etc/os-release` =~ Rocky ||`cat /etc/os-release` =~ AlmaLinux ]];then
    tar xvf nvidia-container-runtime-rpm.tar.gz
    echo -e "\n######安装nvidia-container-runtime######\n"
    rpm -Uvh --force --nodeps ./nvidia-container-runtime-rpm/*.rpm
  fi

  echo -e "\n######配置docker nvidia-runtime######\n"
  /bin/cp /etc/docker/daemon.json /etc/docker/daemon.json.backup
  sed -i '2 i\
  "default-runtime": "nvidia",\
  "runtimes": { \
    "nvidia": {\
      "path": "/usr/bin/nvidia-container-runtime",\
      "runtimeArgs": []\
    }\
  },
  ' /etc/docker/daemon.json
  echo -e "\n######重启docker服务######\n"
  systemctl daemon-reload && systemctl restart docker
fi
