fix: shell-init.sh — correct START_EPOCH, full osvauco-startup style, auth+ADC check
This commit is contained in:
parent
fa429fcd29
commit
9f5a78ab2c
|
|
@ -8,72 +8,118 @@
|
||||||
OSVAUCO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")/.." && pwd)"
|
OSVAUCO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")/.." && pwd)"
|
||||||
ENV_FILE="${OSVAUCO_DIR}/.env"
|
ENV_FILE="${OSVAUCO_DIR}/.env"
|
||||||
|
|
||||||
# Last inn .env hvis den finnes
|
GREEN="$(tput setaf 2 2>/dev/null || true)"
|
||||||
|
RED="$(tput setaf 1 2>/dev/null || true)"
|
||||||
|
YELLOW="$(tput setaf 3 2>/dev/null || true)"
|
||||||
|
CYAN="$(tput setaf 6 2>/dev/null || true)"
|
||||||
|
BOLD="$(tput bold 2>/dev/null || true)"
|
||||||
|
DIM="\033[2m"
|
||||||
|
NC="$(tput sgr0 2>/dev/null || true)"
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
cat << 'BANNER'
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
/ _ \ / __| \ / / _ \ | | | |/ __/ _ \
|
||||||
|
| (_) | \__ \ \ /'\V //_/ | |_| | (_| (_) |
|
||||||
|
\___/ |___/ \_/ /_/ |___/ \___\___/
|
||||||
|
|
||||||
|
OPAX Operator Platform // propane-will-491900-m5
|
||||||
|
BOOT 2026-05-13 -- us-central1
|
||||||
|
============================================================
|
||||||
|
BANNER
|
||||||
|
|
||||||
|
# ── Auth-sjekk ────────────────────────────────────────────────────────────
|
||||||
|
printf " | AUTH |\n"
|
||||||
|
|
||||||
|
GCLOUD_OK=0
|
||||||
|
ADC_OK=0
|
||||||
|
ENV_OK=0
|
||||||
|
|
||||||
|
if gcloud auth print-access-token >/dev/null 2>&1; then
|
||||||
|
GCLOUD_OK=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if gcloud auth application-default print-access-token >/dev/null 2>&1; then
|
||||||
|
ADC_OK=1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -f "$ENV_FILE" ]]; then
|
if [[ -f "$ENV_FILE" ]]; then
|
||||||
|
ENV_OK=1
|
||||||
set -o allexport
|
set -o allexport
|
||||||
|
# shellcheck disable=SC1090
|
||||||
source "$ENV_FILE"
|
source "$ENV_FILE"
|
||||||
set +o allexport
|
set +o allexport
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Bare kjør hvis PROJECT_ID er satt
|
if [[ $GCLOUD_OK -eq 1 ]]; then
|
||||||
if [[ -z "${PROJECT_ID:-}" ]]; then
|
ACCOUNT=$(gcloud auth list --filter=status:ACTIVE --format="value(account)" 2>/dev/null || echo "ukjent")
|
||||||
return 0
|
printf " | ${GREEN}[OK]${NC} gcloud \xe2\x86\x92 %s\n" "$ACCOUNT"
|
||||||
|
else
|
||||||
|
printf " | ${RED}[XX]${NC} gcloud IKKE autentisert\n"
|
||||||
|
printf " | Kj\xc3\xb8r: gcloud auth login --no-launch-browser\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --- Kostnadsvisning ---
|
if [[ $ADC_OK -eq 1 ]]; then
|
||||||
YELLOW='\033[1;33m'
|
printf " | ${GREEN}[OK]${NC} ADC (Application Default Credentials)\n"
|
||||||
GREEN='\033[0;32m'
|
else
|
||||||
RED='\033[0;31m'
|
printf " | ${YELLOW}[!!]${NC} ADC mangler Run: gcloud auth application-default login\n"
|
||||||
CYAN='\033[0;36m'
|
fi
|
||||||
DIM='\033[2m'
|
|
||||||
BOLD='\033[1m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
# Kalkuler akkumulert kost siden prosjektstart
|
if [[ $ENV_OK -eq 1 ]]; then
|
||||||
START_EPOCH=1747144800 # 2026-05-13T14:00:00Z
|
printf " | ${GREEN}[OK]${NC} .env lastet (PROJECT_ID=%s)\n" "${PROJECT_ID:-?}"
|
||||||
|
else
|
||||||
|
printf " | ${RED}[XX]${NC} .env MISSING Run: cp .env.example .env\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " |\n"
|
||||||
|
|
||||||
|
# Sett gcloud-prosjekt stille
|
||||||
|
if [[ $GCLOUD_OK -eq 1 && -n "${PROJECT_ID:-}" ]]; then
|
||||||
|
gcloud config set project "${PROJECT_ID}" >/dev/null 2>&1 || true
|
||||||
|
gcloud config set compute/region "${REGION:-us-central1}" >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ── Kostnadsmåler ─────────────────────────────────────────────────────────
|
||||||
|
START_EPOCH=1778680800 # 2026-05-13T14:00:00Z (verifisert: date -d "2026-05-13 14:00:00 UTC" +%s)
|
||||||
NOW_EPOCH=$(date +%s)
|
NOW_EPOCH=$(date +%s)
|
||||||
ELAPSED_SEC=$(( NOW_EPOCH - START_EPOCH ))
|
ELAPSED_SEC=$(( NOW_EPOCH - START_EPOCH ))
|
||||||
ELAPSED_DAYS_INT=$(( ELAPSED_SEC / 86400 ))
|
if [[ $ELAPSED_SEC -lt 0 ]]; then ELAPSED_SEC=0; fi
|
||||||
|
|
||||||
|
ELAPSED_DAYS=$(( ELAPSED_SEC / 86400 ))
|
||||||
ELAPSED_HRS=$(( (ELAPSED_SEC % 86400) / 3600 ))
|
ELAPSED_HRS=$(( (ELAPSED_SEC % 86400) / 3600 ))
|
||||||
ELAPSED_MIN=$(( (ELAPSED_SEC % 3600) / 60 ))
|
ELAPSED_MIN=$(( (ELAPSED_SEC % 3600) / 60 ))
|
||||||
|
|
||||||
# Kost-estimat (bash bruker integer, skalert x100000)
|
# ~$0.03/dag -> skalert x100000 for integer-matte
|
||||||
# USD_PER_DAY = 0.03 -> 3000 (x100000)
|
USD_SCALED=$(( ELAPSED_SEC * 3000 / 86400 ))
|
||||||
USD_SCALED=$(( ELAPSED_SEC * 3000 / 86400 )) # i enheter av 0.00001 USD
|
NOK_SCALED=$(( USD_SCALED * 1062 / 100 ))
|
||||||
NOK_SCALED=$(( USD_SCALED * 1062 / 100 )) # * 10.62 -> i enheter av 0.00001 NOK
|
|
||||||
|
|
||||||
# Formater til lesbar tekst
|
|
||||||
USD_INT=$(( USD_SCALED / 100000 ))
|
USD_INT=$(( USD_SCALED / 100000 ))
|
||||||
USD_DEC=$(( USD_SCALED % 100000 ))
|
USD_DEC=$(printf "%05d" $(( USD_SCALED % 100000 )))
|
||||||
NOK_INT=$(( NOK_SCALED / 100000 ))
|
NOK_INT=$(( NOK_SCALED / 100000 ))
|
||||||
NOK_DEC=$(( NOK_SCALED % 100000 ))
|
NOK_DEC=$(printf "%05d" $(( NOK_SCALED % 100000 )))
|
||||||
|
|
||||||
printf "\n"
|
printf " | COST |\n"
|
||||||
printf "${CYAN}${BOLD} ╔══════════════════════════════════════╗${NC}\n"
|
printf " | ${YELLOW}${BOLD}NOK: kr %d.%s${NC}\n" "$NOK_INT" "$NOK_DEC"
|
||||||
printf "${CYAN}${BOLD} ║ OSVauco · GCP Kostnadsmåler ║${NC}\n"
|
printf " | ${GREEN}USD: \$%d.%s${NC}\n" "$USD_INT" "$USD_DEC"
|
||||||
printf "${CYAN}${BOLD} ╠══════════════════════════════════════╣${NC}\n"
|
printf " | ${DIM}Tid: %dd %02dh %02dm (fra 2026-05-13)${NC}\n" "$ELAPSED_DAYS" "$ELAPSED_HRS" "$ELAPSED_MIN"
|
||||||
printf " ║ ${DIM}Fra: 2026-05-13 | Prosjekt: ${PROJECT_ID:0:16}${NC}${CYAN}${BOLD} ║${NC}\n"
|
printf " |\n"
|
||||||
printf "${CYAN}${BOLD} ╠══════════════════════════════════════╣${NC}\n"
|
|
||||||
printf " ║ ${YELLOW}${BOLD}NOK: kr %d.%05d${NC}%*s${CYAN}${BOLD} ║${NC}\n" \
|
|
||||||
"$NOK_INT" "$NOK_DEC" "$(( 12 - ${#NOK_INT} - 6 ))" ""
|
|
||||||
printf " ║ ${GREEN}USD: \$%d.%05d${NC}%*s${CYAN}${BOLD} ║${NC}\n" \
|
|
||||||
"$USD_INT" "$USD_DEC" "$(( 13 - ${#USD_INT} - 6 ))" ""
|
|
||||||
printf " ║ ${DIM}Tid: %dd %02dh %02dm${NC}%*s${CYAN}${BOLD} ║${NC}\n" \
|
|
||||||
"$ELAPSED_DAYS_INT" "$ELAPSED_HRS" "$ELAPSED_MIN" "$(( 10 ))" ""
|
|
||||||
printf "${CYAN}${BOLD} ╠══════════════════════════════════════╣${NC}\n"
|
|
||||||
|
|
||||||
# Hurtigsjekk: VMs og SQL (stille, bare vis hvis noe finnes)
|
# Rask idle-ressurs-sjekk
|
||||||
VM_COUNT=$(gcloud compute instances list --project="${PROJECT_ID}" \
|
if [[ $GCLOUD_OK -eq 1 && -n "${PROJECT_ID:-}" ]]; then
|
||||||
|
VM_COUNT=$(gcloud compute instances list --project="${PROJECT_ID}" \
|
||||||
--format='value(name)' --filter='status=RUNNING' 2>/dev/null | wc -l | tr -d ' ')
|
--format='value(name)' --filter='status=RUNNING' 2>/dev/null | wc -l | tr -d ' ')
|
||||||
SQL_COUNT=$(gcloud sql instances list --project="${PROJECT_ID}" \
|
SQL_COUNT=$(gcloud sql instances list --project="${PROJECT_ID}" \
|
||||||
--format='value(name)' --filter='state=RUNNABLE' 2>/dev/null | wc -l | tr -d ' ')
|
--format='value(name)' --filter='state=RUNNABLE' 2>/dev/null | wc -l | tr -d ' ')
|
||||||
|
if [[ "$VM_COUNT" -gt 0 || "$SQL_COUNT" -gt 0 ]]; then
|
||||||
if [[ "$VM_COUNT" -gt 0 || "$SQL_COUNT" -gt 0 ]]; then
|
printf " | ${RED}${BOLD}[!!] VM: %s SQL: %s — IDLE-KOST DETEKTERT!${NC}\n" "$VM_COUNT" "$SQL_COUNT"
|
||||||
printf " ║ ${RED}${BOLD}⚠ VM: %s SQL: %s — kjører!${NC}%*s${CYAN}${BOLD} ║${NC}\n" \
|
else
|
||||||
"$VM_COUNT" "$SQL_COUNT" "0" ""
|
printf " | ${GREEN}[OK]${NC} Ingen VM/SQL idle-kost\n"
|
||||||
else
|
fi
|
||||||
printf " ║ ${GREEN}✓ Ingen VM/SQL idle-kost${NC}%*s${CYAN}${BOLD} ║${NC}\n" "10" ""
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "${CYAN}${BOLD} ╚══════════════════════════════════════╝${NC}\n"
|
printf " ----------------------------------------------------\n"
|
||||||
printf " ${DIM}Full audit: bash scripts/cost-audit.sh${NC}\n\n"
|
printf " ${DIM}Full audit : bash scripts/cost-audit.sh${NC}\n"
|
||||||
|
printf " ${DIM}Gemini TUI : gemini${NC}\n"
|
||||||
|
printf "\n"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user