JCC-CSScheduler/schedulerMiddleware/internal/cmdline/serve.go

91 lines
2.4 KiB
Go

package cmdline
import (
"fmt"
pcmHubClient "gitlink.org.cn/JointCloud/pcm-hub/client"
pcmHubConfig "gitlink.org.cn/JointCloud/pcm-hub/config"
"gitlink.org.cn/cloudream/common/pkgs/logger"
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
"gitlink.org.cn/cloudream/scheduler/common/pkgs/db"
"gitlink.org.cn/cloudream/scheduler/common/pkgs/prescheduler2"
"gitlink.org.cn/cloudream/scheduler/schedulerMiddleware/internal/config"
"gitlink.org.cn/cloudream/scheduler/schedulerMiddleware/internal/http"
"gitlink.org.cn/cloudream/scheduler/schedulerMiddleware/internal/manager/jobmgr"
"gitlink.org.cn/cloudream/scheduler/schedulerMiddleware/internal/services"
"os"
)
var _ = MustAddCmd(func(ctx CommandContext, args []string) error {
listenAddr := ":7891"
if len(args) > 0 {
listenAddr = args[0]
}
httpSvr, err := http.NewServer(listenAddr, ctx.Cmdline.Svc)
if err != nil {
return fmt.Errorf("new http server: %w", err)
}
err = httpSvr.Serve()
if err != nil {
return fmt.Errorf("serving http: %w", err)
}
return nil
}, "serve", "http")
func serve(configPath string, address string) {
err := config.Init(configPath)
if err != nil {
fmt.Printf("init config failed, err: %s", err.Error())
os.Exit(1)
}
err = logger.Init(&config.Cfg().Logger)
if err != nil {
fmt.Printf("init logger failed, err: %s", err.Error())
os.Exit(1)
}
schglb.InitPCMSchePool(&config.Cfg().PCMScheduler)
schglb.InitUploaderPool(&config.Cfg().Uploader)
schglb.InitBlockChainPool(&config.Cfg().BlockChain)
schglb.InitCloudreamStoragePool(&config.Cfg().CloudreamStorage)
dbSvc, err := db.NewDB(&config.Cfg().DB)
if err != nil {
logger.Fatalf("new db2 failed, err: %s", err.Error())
}
preSchr := prescheduler2.NewDefaultPreScheduler()
nodeSvc := jobmgr.NewNodeService()
jobMgr, err := jobmgr.NewManager(dbSvc, nodeSvc)
if err != nil {
logger.Fatalf("new job manager failed, err: %s", err.Error())
}
hubConfig := &pcmHubConfig.Config{
Platforms: config.Cfg().PCMHub,
}
hubClient, err := pcmHubClient.NewClient(hubConfig)
if err != nil {
logger.Fatalf("new pcm hub client failed, err: %s", err.Error())
}
svc, err := services.NewService(preSchr, jobMgr, dbSvc, hubClient)
if err != nil {
logger.Fatalf("new service failed, err: %s", err.Error())
}
httpSvr, err := http.NewServer(address, svc)
if err != nil {
logger.Errorf(err.Error())
os.Exit(1)
}
err = httpSvr.Serve()
if err != nil {
logger.Errorf(err.Error())
os.Exit(1)
}
}