* Copyright (c) KylinSoft Co., Ltd. 2024.All rights reserved.
* PilotGo-plugin licensed under the Mulan Permissive Software License, Version 2.
* See LICENSE file for more details.
* Author: wubijie <wubijie@kylinos.cn>
* Date: Wed Nov 15 15:28:38 2023 +0800
*/
package main
import (
"flag"
"fmt"
"os"
"os/signal"
"syscall"
"gitee.com/openeuler/PilotGo/sdk/go-micro/registry"
"gitee.com/openeuler/PilotGo/sdk/logger"
"gitee.com/openeuler/PilotGo/sdk/plugin/client"
"openeuler.org/PilotGo/configmanage-plugin/config"
"openeuler.org/PilotGo/configmanage-plugin/db"
"openeuler.org/PilotGo/configmanage-plugin/global"
"openeuler.org/PilotGo/configmanage-plugin/router"
"openeuler.org/PilotGo/configmanage-plugin/service"
)
var config_file string
func main() {
fmt.Println("hello plugin-config")
flag.StringVar(&config_file, "conf", "./config.yaml", "plugin-config configuration file")
flag.Parse()
err := config.Init(config_file)
if err != nil {
logger.Error("failed to load configure: %s", err)
os.Exit(-1)
}
if err := logger.Init(config.Config().Logopts); err != nil {
logger.Error("logger init failed, please check the config file: %s", err)
os.Exit(-1)
}
if err := db.MysqldbInit(config.Config().Mysql); err != nil {
logger.Error("mysql db init failed, please check again: %s", err)
os.Exit(-1)
}
err = service.Init()
if err != nil {
logger.Error("init db table error: %s", err)
os.Exit(-1)
}
sr, err := registry.NewServiceRegistrar(®istry.Options{
Endpoints: config.Config().Etcd.Endpoints,
ServiceAddr: config.Config().HttpServer.Addr,
ServiceName: config.Config().Etcd.ServiceName,
Version: config.Config().Etcd.Version,
MenuName: config.Config().Etcd.MenuName,
Icon: config.Config().Etcd.Icon,
DialTimeout: config.Config().Etcd.DialTimeout,
Extentions: service.GetExtentions(),
Permissions: service.GetPermission(),
})
if err != nil {
logger.Error("failed to initialize registry: %s", err)
os.Exit(-1)
}
client, err := client.NewClient(config.Config().Etcd.ServiceName, sr.Registry)
if err != nil {
logger.Error("failed to create plugin client: %s", err)
os.Exit(-1)
}
global.GlobalClient = client
service.GetTags()
server := router.InitRouter()
go router.RegisterAPIs(server)
if err := server.Run(config.Config().HttpServer.Addr); err != nil {
logger.Error("failed to run server: %s", err)
os.Exit(-1)
}
c := make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
for {
s := <-c
switch s {
case syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT:
logger.Info("signal interrupted: %s", s.String())
fmt.Println("Thanks to choose plugin-config!")
return
default:
logger.Info("unknown signal: %s", s.String())
}
}
}