#!/bin/bash
set -o nounset
set -o errexit
set -o pipefail
# set -o xtrace

BASE=$(cd `dirname $0`; cd ../; pwd)
MIN_CPUs=4
MIN_RAM=8388608
MIN_DISKs=100

source $BASE/utils/logger
source $BASE/utils/env


function check_basic_rs() {
    cpus=`cat /proc/cpuinfo| (grep "processor" || true)| sort| uniq| wc -l`
    ram=`cat /proc/meminfo  | (grep -m 1 MemTotal) | awk '{print $2}'`
    root_disk=`df -BG / | (grep -m 1 "\/") | awk '{print $2}' | sed 's/G//g'`
    if [[ $cpus -lt $MIN_CPUs ]]; then
        logger error "Current CPUs: $cpus, must be large than $MIN_CPUs"
        exit 1
    fi
    logger info "Current CPUs: $cpus."
    if [[ $ram -lt $MIN_RAM ]]; then
        logger error "Current RAM: $ram,  must be large than $MIN_RAM KB"
        exit 1
    fi
    logger info "Current RAM: $ram KB"
    if [[ $root_disk -lt $MIN_DISKs ]]; then
        logger error "Current root disk(/): $root_disk,  must be large than $MIN_DISKs GB"
        exit 1
    fi
    logger info "Current root disk size(/): $root_disk GB."
}

function check_python3_env(){
    rs=`(which python3 || true)`
    if [[ "$rs" = ""  ]]; then
        logger error "python3 not installed, please make sure to install it."
        exit 1
    fi
    logger info "Python3 env: $rs"
}

logger info "Check cpu/ram/root disk resource for node"
check_basic_rs

logger info "Check OS for node"
os=`check_os`
logger info "Current OS: $os"
if [[ "$os" != "centos7" && "$os" != "ubuntu20.04" && "$os" != "ubuntu22.04" &&  "$os" != "openeuler-22.03" ]]; then
    logger error "OS only support 'centos7|ubuntu20.04|ubuntu22.04|openeuler-22.03'"
    exit 1
fi

logger info "Check python3 env for node"
check_python3_env
