改爲手動添加服務器

This commit is contained in:
2023-05-29 13:48:09 +08:00
parent 9fac5e5b05
commit c832e0f4e9
3 changed files with 71 additions and 45 deletions

View File

@@ -3,7 +3,6 @@ package models
import (
"encoding/json"
"fmt"
"log"
"main/configs"
"net/http"
"time"
@@ -23,52 +22,47 @@ type Server struct {
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}
func (server *Server) CheckStatus() (err error) {
// 不用類型的模型有不同的狀態檢查方式
if server.Type == "train" {
}
func (server *Server) CheckStatus() error {
switch server.Type {
case "訓練":
resp, err := http.Get(fmt.Sprintf("http://%s:%d/dreambooth/status", server.IP, server.Port))
if err != nil {
server.Status = "異常"
return err
}
defer resp.Body.Close()
resp, err := http.Get(fmt.Sprintf("http://%s:%d/status", server.IP, server.Port))
if err != nil {
log.Println("服務器狀態異常", err)
// 解碼JSON
var data map[string]interface{}
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
return err
}
// 解碼JSON
var current_state map[string]interface{}
if err := json.Unmarshal([]byte(data["current_state"].(string)), &current_state); err != nil {
return err
}
//log.Println("current_state:", current_state)
// 檢查服務器是否正常
if !current_state["active"].(bool) {
server.Status = "異常"
return fmt.Errorf("服務器狀態異常: active=false")
}
server.Status = "正常"
case "推理":
server.Status = "異常"
default:
server.Status = "異常"
return
}
defer resp.Body.Close()
// 解碼json
var data map[string]interface{}
if err = json.NewDecoder(resp.Body).Decode(&data); err != nil {
return
}
log.Println("data:", data)
// 檢查服務器是否正常
if data["status"] != "ok" {
log.Println("服務器狀態異常", err)
server.Status = "異常"
return
}
configs.ORMDB().Save(&server)
// 檢查服務器是否正常
return
return nil
}
func init() {
configs.ORMDB().AutoMigrate(&Server{})
// 添加一個預設的訓練機
configs.ORMDB().Create(&Server{
Name: "GPU T4",
Type: "train",
IP: "106.15.192.42",
Port: 7860,
Status: "閒置",
})
// 檢查所有服務器的狀態, 無效的服務器設置為異常
var servers []Server
configs.ORMDB().Find(&servers)