Commit 275fe091 authored by brent's avatar brent

add

parent a2fb3851
No preview for this file type
appname = ai_developer_admin
httpport = 8087
runmode = dev
runmode = test
copyrequestbody = true
sessionon = true
sessiongcmaxlifetime = 127800
......
......@@ -3,6 +3,8 @@ package controllers
import (
"ai_developer_admin/libs/registry"
"ai_developer_admin/models"
"encoding/json"
"github.com/beego/beego/v2/core/logs"
"net/http"
)
......@@ -45,3 +47,71 @@ func (server *MonitorController) Schedules() {
}
server.respond(http.StatusOK, "", data)
}
func (server *MonitorController) NodeManagersByPage() {
body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body))
if appRequest.Size == 0 {
appRequest.Size = 10
}
data, err := registry.NodeManagersByPage(int(appRequest.Size), int(appRequest.Page))
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
server.respond(http.StatusOK, "", data)
}
func (server *MonitorController) GatewaysByPage() {
body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body))
if appRequest.Size == 0 {
appRequest.Size = 10
}
data, err := registry.GatewaysByPage(int(appRequest.Size), int(appRequest.Page))
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
server.respond(http.StatusOK, "", data)
}
func (server *MonitorController) WorkersByPage() {
body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body))
if appRequest.Size == 0 {
appRequest.Size = 10
}
data, err := registry.WorkersByPage(int(appRequest.Size), int(appRequest.Page))
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
server.respond(http.StatusOK, "", data)
}
func (server *MonitorController) SchedulesByPage() {
body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body))
if appRequest.Size == 0 {
appRequest.Size = 10
}
data, err := registry.SchedulesByPage(int(appRequest.Size), int(appRequest.Page))
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
server.respond(http.StatusOK, "", data)
}
......@@ -1270,6 +1270,10 @@ func (server *TaskController) AddTasktype() {
server.respond(models.MissingParameter, "模型类型 不能为空")
return
}
if appRequest.TaskTypeIn.ResultFileExpires == 0 {
server.respond(models.MissingParameter, "结果存储时长必须 大于0")
return
}
//if &appRequest.Type.Version == nil {
// server.respond(models.MissingParameter, "版本 不能为空")
// return
......@@ -1329,6 +1333,7 @@ func (server *TaskController) AddTasktype() {
ImageId: appRequest.TaskTypeIn.ImageId,
ImageUrl: appRequest.TaskTypeIn.ImageUrl,
Cmd: string(cmd),
ResultFileExpires: appRequest.TaskTypeIn.ResultFileExpires,
Workload: appRequest.TaskTypeIn.Workload,
ApiPath: appRequest.TaskTypeIn.ApiPath,
ImageName: appRequest.TaskTypeIn.ImageName,
......@@ -1336,6 +1341,8 @@ func (server *TaskController) AddTasktype() {
Username: appRequest.TaskTypeIn.Username,
Password: appRequest.TaskTypeIn.Password,
Category: appRequest.TaskTypeIn.Category,
PublishStatus: appRequest.TaskTypeIn.PublishStatus,
AccessStatus: appRequest.TaskTypeIn.AccessStatus,
CreatedTime: timestamp,
UpdatedTime: timestamp,
}
......@@ -1367,6 +1374,7 @@ func (server *TaskController) AddTasktype() {
HardwareRequire: appRequest.TaskTypeIn.HardwareRequire,
Count: int64(0),
Kind: dbType.Kind,
FileExpiresTime: strconv.Itoa(dbType.ResultFileExpires),
}
response = append(response, retask)
data, err := json.Marshal(response)
......@@ -1429,6 +1437,10 @@ func (server *TaskController) UpdateTaskType() {
server.respond(models.MissingParameter, "模型类型 不能为空")
return
}
if appRequest.TaskTypeIn.ResultFileExpires == 0 {
server.respond(models.MissingParameter, "结果存储时长必须 大于0")
return
}
if &appRequest.TaskTypeIn.BaseModel == nil {
server.respond(models.MissingParameter, "模型名称 不能为空")
return
......@@ -1457,6 +1469,13 @@ func (server *TaskController) UpdateTaskType() {
// return
//}
checkType := &models.TaskType{Id: appRequest.TaskTypeIn.Id}
err = mysql.GetMysqlInstace().Ormer.Read(checkType)
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
timestamp := time.Now()
hardwareRequire, err := json.Marshal(appRequest.TaskTypeIn.HardwareRequire)
......@@ -1493,11 +1512,37 @@ func (server *TaskController) UpdateTaskType() {
Username: appRequest.TaskTypeIn.Username,
Password: appRequest.TaskTypeIn.Password,
Category: appRequest.TaskTypeIn.Category,
CreatedTime: timestamp,
ResultFileExpires: appRequest.TaskTypeIn.ResultFileExpires,
PublishStatus: appRequest.TaskTypeIn.PublishStatus,
AccessStatus: appRequest.TaskTypeIn.AccessStatus,
UpdatedTime: timestamp,
}
_, err = ormer.Update(&dbType)
_, err = ormer.Update(&dbType, "name",
"base_model",
"model",
"version",
"desc",
"price",
"public_key",
"complexity",
"hardware_require",
"image_id",
"image_url",
"type",
"kind",
"cmd",
"workload",
"api_path",
"image_name",
"sign_url",
"username",
"password",
"category",
"result_file_expires",
"updated_time",
"publish_status",
"access_status")
if err != nil {
//ormer.Rollback()
server.respond(models.BusinessFailed, "更新 task type 失败")
......@@ -1512,6 +1557,15 @@ func (server *TaskController) UpdateTaskType() {
if err != nil {
logs.Debug("GetDataToString Unmarshal err")
}
var output interface{}
if checkType.Form != "" {
//var form interface{}
err = json.Unmarshal([]byte(checkType.Form), &output)
if err != nil {
logs.Debug("Form Unmarshal err")
}
}
for _, task := range response {
if task.TaskId == dbType.Id {
task.User = dbType.Username
......@@ -1522,6 +1576,8 @@ func (server *TaskController) UpdateTaskType() {
task.ImageId = dbType.ImageId
task.HardwareRequire = appRequest.TaskTypeIn.HardwareRequire
task.Kind = dbType.Kind
task.FileExpiresTime = strconv.Itoa(dbType.ResultFileExpires)
task.OutPutJson = output
}
}
data, err := json.Marshal(response)
......@@ -1900,7 +1956,7 @@ func (server *TaskController) Examples() {
var types []*models.Model
sql := fmt.Sprintf("SELECT count(*) FROM task_type WHERE deleted = 0 %s;", where)
sql := fmt.Sprintf("SELECT count(*) FROM task_type WHERE deleted = 0 and publish_status = 1 %s;", where)
var total int64
mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRow(&total)
logs.Debug("total = %d", total)
......@@ -1916,10 +1972,13 @@ func (server *TaskController) Examples() {
return
}
sql = fmt.Sprintf("SELECT id, `name` AS tit,type,`desc` AS content, tags ,examples,codes,base_model,model,api_path,version,category FROM task_type WHERE deleted = 0 %s LIMIT %d,%d;", where, offset, size)
sql = fmt.Sprintf("SELECT id, `name` AS tit,type,`desc` AS content, tags ,examples,codes,base_model,model,api_path,version,category,form,access_status FROM task_type WHERE deleted = 0 and publish_status = 1 %s LIMIT %d,%d;", where, offset, size)
mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRows(&types)
var remodels []*models.ResonseModel
for _, data := range types {
//if data.Id == 19 {
// logs.Debug("")
//}
var examples interface{}
eer := json.Unmarshal([]byte(data.Examples), &examples)
if eer != nil {
......@@ -1934,6 +1993,11 @@ func (server *TaskController) Examples() {
eer = json.Unmarshal([]byte(data.Tags), &tags)
if eer != nil {
}
var form interface{}
eer = json.Unmarshal([]byte(data.Form), &form)
if eer != nil {
}
remodel := models.ResonseModel{
Id: data.Id,
......@@ -1950,6 +2014,8 @@ func (server *TaskController) Examples() {
Codes: codes,
Tags: tags,
Category: data.Category,
Form: form,
ResultFileExpires: data.ResultFileExpires,
}
remodels = append(remodels, &remodel)
}
......@@ -2029,6 +2095,26 @@ func (server *TaskController) Enumeration() {
types = append(types, &typeData)
}
var publishStatusEnumS []*models.EnumType
for _, value := range [...]models.PublishStatusEnum{models.Publish, models.UnPublish} {
typeData := models.EnumType{
Id: int(value),
Desc: value.String(),
EnDesc: "",
}
publishStatusEnumS = append(publishStatusEnumS, &typeData)
}
var accessStatusEnums []*models.EnumType
for _, value := range [...]models.AccessStatusEnum{models.Public, models.Private} {
typeData := models.EnumType{
Id: int(value),
Desc: value.String(),
EnDesc: "",
}
accessStatusEnums = append(accessStatusEnums, &typeData)
}
var kinds []*models.EnumType
for _, value := range [...]models.TaskKind{models.SystemTask, models.ComputeTask, models.CustomTask, models.StandardTask} {
typeData := models.EnumType{
......@@ -2053,11 +2139,15 @@ func (server *TaskController) Enumeration() {
Types []*models.EnumType `json:"types,omitempty"`
Kinds []*models.EnumType `json:"kinds,omitempty"`
FeeConditions []*models.EnumType `json:"fee_conditions,omitempty"`
AccessStatus []*models.EnumType `json:"access_status,omitempty"`
PublishStatus []*models.EnumType `json:"publish_status,omitempty"`
}{
Categorys: categorys,
Types: types,
Kinds: kinds,
FeeConditions: feeConditionEnums,
AccessStatus: accessStatusEnums,
PublishStatus: publishStatusEnumS,
}
server.respond(http.StatusOK, "", responseData)
}
......@@ -2085,6 +2175,13 @@ func initTypeInRedis() []models.TaskHeat {
eer := json.Unmarshal([]byte(dbType.HardwareRequire), &hardwareRequire)
if eer != nil {
}
var output interface{}
if dbType.Form != "" {
err := json.Unmarshal([]byte(dbType.Form), &output)
if err != nil {
logs.Debug("Form Unmarshal err")
}
}
retask := models.TaskHeat{
TaskId: dbType.Id,
......@@ -2097,6 +2194,8 @@ func initTypeInRedis() []models.TaskHeat {
HardwareRequire: hardwareRequire,
Count: int64(0),
Kind: dbType.Kind,
FileExpiresTime: strconv.Itoa(dbType.ResultFileExpires),
OutPutJson: output,
}
response = append(response, retask)
}
......
package controllers
import (
"ai_developer_admin/models"
"fmt"
"github.com/beego/beego/v2/core/logs"
"net/http"
"os"
)
type FileController struct {
MainController
}
func (server *FileController) Upload() {
info, err := server.Check()
if err != nil {
server.respond(http.StatusUnauthorized, err.Error())
return
}
if !(info.Role == 1 || info.Role == 2) {
server.respond(http.StatusUnauthorized, "只有管理员才可执行此操作")
return
}
dir := "uploads"
if _, err = os.Stat(dir); err != nil {
if os.IsNotExist(err) {
logs.Debug("Upload 目录不存在")
} else {
logs.Debug("Upload", err.Error())
}
}
_, header, err := server.GetFile("file")
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
path := dir + "/" + header.Filename
err = server.SaveToFile("file", path)
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
responseData := struct {
Url string `json:"url"`
}{
Url: path,
}
server.respond(http.StatusOK, "文件上传成功", responseData)
}
func checkDIR(dir string) (bool, error) {
if _, err := os.Stat("mydir"); err != nil {
if os.IsNotExist(err) {
fmt.Println("目录不存在")
return false, nil
} else {
fmt.Println(err)
return false, err
}
}
return true, nil
}
{"/Users/brent/Documents/wubanWork/ai_developer_admin/controllers":1709633018662460210}
\ No newline at end of file
{"/Users/brent/Documents/wubanWork/ai_developer_admin/controllers":1709866940530918747}
\ No newline at end of file
......@@ -43,6 +43,22 @@ func Schedules() ([]string, error) {
return querier.Select(common.SERVICE_SCHEDULER).List()
}
func NodeManagersByPage(pageSize int, pageNum int) ([]string, error) {
return querier.Select(common.SERVICE_NODE_MANAGER).ListByPage(pageSize, pageNum)
}
func GatewaysByPage(pageSize int, pageNum int) ([]string, error) {
return querier.Select(common.SERVICE_API_GATEWAY).ListByPage(pageSize, pageNum)
}
func WorkersByPage(pageSize int, pageNum int) ([]string, error) {
return querier.Select(common.SERVICE_WORKER).ListByPage(pageSize, pageNum)
}
func SchedulesByPage(pageSize int, pageNum int) ([]string, error) {
return querier.Select(common.SERVICE_SCHEDULER).ListByPage(pageSize, pageNum)
}
func (d backendService) ServiceType() common.ServiceType {
return common.SERVICE_BACKEND
}
......
......@@ -20,6 +20,7 @@ func init() {
ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type", "X-Xsrf-Token", "Authorization"},
AllowCredentials: true,
}))
beego.SetStaticPath("/uploads", "uploads")
}
func main() {
......
......@@ -83,6 +83,10 @@ type TaskType struct {
Codes string `json:"codes";orm:"column(codes)"`
Tags string `json:"tags";orm:"column(tags)"`
Category int `json:"category";orm:"column(category)"`
Form string `json:"form";orm:"column(form)"`
ResultFileExpires int `json:"result_file_expires";orm:"column(result_file_expires)"`
AccessStatus int `json:"access_status,omitempty"`
PublishStatus int `json:"publish_status,omitempty"`
CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"`
UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"`
Deleted int `json:"deleted";orm:"column(deleted);size(1)"`
......@@ -118,6 +122,10 @@ type NewTaskType struct {
Codes interface{} `json:"codes,omitempty";orm:"column(codes)"`
Tags []string `json:"tags,omitempty";orm:"column(tags)"`
Category int `json:"category";orm:"column(category)"`
Form string `json:"form";orm:"column(form)"`
ResultFileExpires int `json:"result_file_expires";orm:"column(result_file_expires)"`
AccessStatus int `json:"access_status,omitempty"`
PublishStatus int `json:"publish_status,omitempty"`
CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"`
UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"`
Deleted int `json:"deleted";orm:"column(deleted);size(1)"`
......@@ -137,7 +145,10 @@ type Model struct {
ApiDocContent string `json:"api_doc_content";orm:"column(api_doc_content)"`
Codes string `json:"codes";orm:"column(codes)"`
Tags string `json:"tags";orm:"column(tags)"`
Form string `json:"form";orm:"column(form)"`
Category int `json:"category";orm:"column(category)"`
ResultFileExpires int `json:"result_file_expires";orm:"column(result_file_expires)"`
AccessStatus int `json:"access_status,omitempty"`
}
type ResonseModel struct {
......@@ -155,6 +166,9 @@ type ResonseModel struct {
Codes interface{} `json:"codes";orm:"column(codes)"`
Tags interface{} `json:"tags";orm:"column(tags)"`
Category int `json:"category";orm:"column(category)"`
Form interface{} `json:"form";orm:"column(form)"`
ResultFileExpires int `json:"result_file_expires";orm:"column(result_file_expires)"`
AccessStatus int `json:"access_status,omitempty"`
}
type Bills struct {
......@@ -214,6 +228,8 @@ type TaskHeat struct {
Pwd string `json:"pwd,omitempty"`
TaskId int `json:"task_id,omitempty"`
Kind int `json:"kind";orm:"column(kind)"`
FileExpiresTime string `json:"file_expires_time";orm:"column(file_expires_time)"`
OutPutJson interface{} `json:"out_put_json";orm:"column(out_put_json)"`
}
type AddTaskType struct {
......@@ -332,3 +348,61 @@ func (m FeeConditionEnum) EnString() string {
return "unknown"
}
}
type PublishStatusEnum int
const (
Publish PublishStatusEnum = iota + 1
UnPublish
)
func (m PublishStatusEnum) String() string {
switch m {
case Publish:
return "发布"
case UnPublish:
return "取消发布"
default:
return "未知类型"
}
}
func (m PublishStatusEnum) EnString() string {
switch m {
case Publish:
return "UnPublish"
case UnPublish:
return "UnPublish"
default:
return "unknown"
}
}
type AccessStatusEnum int
const (
Public AccessStatusEnum = iota + 1
Private
)
func (m AccessStatusEnum) String() string {
switch m {
case Public:
return "公开"
case Private:
return "私有"
default:
return "未知"
}
}
func (m AccessStatusEnum) EnString() string {
switch m {
case Public:
return "Public"
case Private:
return "Private"
default:
return "unknown"
}
}
......@@ -14,4 +14,5 @@ func init() {
beego.AutoPrefix("api", &controllers.TaskController{})
beego.AutoPrefix("api", &controllers.MonitorController{})
beego.AutoPrefix("api", &controllers.WhitelistController{})
beego.AutoPrefix("api", &controllers.FileController{})
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment