服務器狀態
This commit is contained in:
		@@ -22,7 +22,7 @@ func (list ImageList) Value() (driver.Value, error) {
 | 
			
		||||
	return json.Marshal(list)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 數據集
 | 
			
		||||
// 數據集模型
 | 
			
		||||
type Dataset struct {
 | 
			
		||||
	ID        int       `json:"id" gorm:"primary_key"`
 | 
			
		||||
	Name      string    `json:"name"`
 | 
			
		||||
@@ -129,6 +129,7 @@ func DatasetsItemPatch(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 刪除數據集
 | 
			
		||||
func DatasetsItemDelete(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	models.AccountRead(w, r, func(account *models.Account) {
 | 
			
		||||
		// 獲取數據集
 | 
			
		||||
 
 | 
			
		||||
@@ -77,9 +77,6 @@ func ImagesItemPatch(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
		log.Println(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//image.ID = utils.ParamInt(mux.Vars(r)["id"], 0)
 | 
			
		||||
	//image.Update()
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
			
		||||
	w.Write(utils.ToJSON(image))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -54,6 +54,9 @@ func ModelsPost(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
			log.Println(err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		// 直接提交訓練任務
 | 
			
		||||
		go model.Train()
 | 
			
		||||
		// 返回創建的模型
 | 
			
		||||
		w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
			
		||||
		w.Write(utils.ToJSON(model))
 | 
			
		||||
	})
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,15 @@
 | 
			
		||||
package routers
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"main/configs"
 | 
			
		||||
	"main/models"
 | 
			
		||||
	"main/utils"
 | 
			
		||||
	"net/http"
 | 
			
		||||
 | 
			
		||||
	"github.com/google/uuid"
 | 
			
		||||
	"github.com/gorilla/mux"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -17,6 +21,13 @@ func ServersGet(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	db := configs.ORMDB()
 | 
			
		||||
	db.Offset((listview.Page - 1) * listview.PageSize).Limit(listview.PageSize).Find(&server_list)
 | 
			
		||||
	for _, server := range server_list {
 | 
			
		||||
		// 驗證服務器狀態
 | 
			
		||||
		resp, err := http.Get(fmt.Sprintf("http://%s:%d/docs", server.IP, server.Port))
 | 
			
		||||
		if err != nil || resp.StatusCode != http.StatusOK {
 | 
			
		||||
			server.Status = "異常"
 | 
			
		||||
		} else {
 | 
			
		||||
			server.Status = "正常"
 | 
			
		||||
		}
 | 
			
		||||
		listview.List = append(listview.List, server)
 | 
			
		||||
	}
 | 
			
		||||
	listview.Next = listview.Page*listview.PageSize < int(listview.Total)
 | 
			
		||||
@@ -25,6 +36,41 @@ func ServersGet(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
 | 
			
		||||
func ServersPost(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	var server models.Server
 | 
			
		||||
 | 
			
		||||
	// 獲取參數
 | 
			
		||||
	body, _ := ioutil.ReadAll(r.Body)
 | 
			
		||||
	defer r.Body.Close()
 | 
			
		||||
	if err := json.Unmarshal(body, &server); err != nil {
 | 
			
		||||
		w.WriteHeader(http.StatusBadRequest)
 | 
			
		||||
		w.Write([]byte(err.Error()))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 如果不指定類型,禁止創建服務器, 必須指定類型:訓練|推理
 | 
			
		||||
	if server.Type != "訓練" && server.Type != "推理" {
 | 
			
		||||
		w.WriteHeader(http.StatusBadRequest)
 | 
			
		||||
		w.Write([]byte("必須指定類型:訓練|推理"))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 如果不指定名稱,則使用uuid生成隨機名稱
 | 
			
		||||
	if server.Name == "" {
 | 
			
		||||
		server.Name = uuid.New().String()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 如果不指定 port,則使用默認 port
 | 
			
		||||
	if server.Port == 0 {
 | 
			
		||||
		server.Port = 7860
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 如果不指定IP,則自動創建新服務器
 | 
			
		||||
	if server.IP == "" {
 | 
			
		||||
		// TODO: 創建新服務器
 | 
			
		||||
		w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
			
		||||
		w.Write(utils.ToJSON(server))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	configs.ORMDB().Create(&server)
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
			
		||||
	w.Write(utils.ToJSON(server))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user