package main

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

import (
	"cicv-data-closedloop/amd64/kubernetes-scheduler/package/entity"
	"cicv-data-closedloop/amd64/kubernetes-scheduler/package/handler"
	"cicv-data-closedloop/common/config/c_log"
	"cicv-data-closedloop/common/config/c_nacos"
	"cicv-data-closedloop/common/config/c_oss"
	commonHandler "cicv-data-closedloop/common/gin/handler"
	"cicv-data-closedloop/common/util"
	"encoding/json"
	"fmt"
	"github.com/gin-gonic/gin"
	"os"
)

const (
	configDataId = "kubernetes-scheduler-prod.yaml"
	configGroup  = "DEFAULT_GROUP"
)

var (
	KubernetesSchedulerConfig = new(entity.KubernetesSchedulerConfigStruct)
)

func init() {
	c_nacos.InitConfig(false, configDataId, configGroup)
	// 使用 json.Unmarshal 解析 JSON 字符串到结构体
	err := json.Unmarshal([]byte(c_nacos.Config), &KubernetesSchedulerConfig)
	if err != nil {
		fmt.Println("解析 JSON 时出错:", err)
		return
	}
	c_log.InitLog(KubernetesSchedulerConfig.Service.Name)
	c_oss.InitOss(false)
	c_nacos.InitService(false, KubernetesSchedulerConfig.Service.Name, KubernetesSchedulerConfig.Service.Port, map[string]string{
		"开发者":  "孟令鑫",
		"内网IP": "10.14.85.228",
		"外网IP": "36.110.106.156",
	})

}

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)
	}
}