package main

/*
1. 算法清理可以用仿真云平台的调度系统
*/

import (
	"cicv-data-closedloop/amd64/dispatch_server/package/entity"
	"cicv-data-closedloop/amd64/dispatch_server/package/handler"
	"cicv-data-closedloop/common/config/c_log"
	"cicv-data-closedloop/common/config/c_oss"
	commonHandler "cicv-data-closedloop/common/gin/handler"
	"cicv-data-closedloop/common/util"
	_ "embed"
	"github.com/gin-gonic/gin"
	"os"
)

type ApplicationYamlStruct struct {
	ApplicationName string    `yaml:"application"`
	Web             WebStruct `yaml:"web"`
	GpuNodeList     []GpuNode `yaml:"gpu_node_list"`
}

type WebStruct struct {
	Port        string   `yaml:"port"`
	RoutePrefix string   `yaml:"route-prefix"`
	Token       string   `yaml:"token"`
	WhiteList   []string `yaml:"white-list"`
}

type GpuNode struct {
	Hostname    string `yaml:"hostname"`
	Ip          string `yaml:"ip"`
	Parallelism string `yaml:"parallelism"`
}

type RedisStruct struct {
}

var (
	//go:embed application.yaml
	applicationYamlBytes      []byte
	ApplicationYaml           ApplicationYamlStruct
	KubernetesSchedulerConfig = new(entity.KubernetesSchedulerConfigStruct)
)

func init() {
	c_log.InitLog("./log/", KubernetesSchedulerConfig.Service.Name)
	c_oss.InitOss(false)

}

func main() {
	router := gin.Default()
	router.Use(commonHandler.ValidateHeaders())
	api := router.Group(KubernetesSchedulerConfig.Service.RouterPrefix)
	api.POST("/start-project", handler.StartProject)
	err := router.Run(":12345")
	if err != nil {
		c_log.GlobalLogger.Error("程序崩溃,监听端口 " + util.ToString(KubernetesSchedulerConfig.Service.Port) + " 失败。")
		os.Exit(-1)
	}
}