diff --git a/gala-ops/server/config.yml.templete b/gala-ops/server/config.yml.templete index 1f329c53f5feb721883005c36d6d9fa357b8a816..a3b174299bedb5bc995b710155eba867c7d77a29 100644 --- a/gala-ops/server/config.yml.templete +++ b/gala-ops/server/config.yml.templete @@ -6,3 +6,9 @@ http: addr: "0.0.0.0:7888" PilotGo: addr: "localhost:8889" +mysql: + host: localhost + port: 3306 + user: '' + password: '' + database: PluginGalaOps \ No newline at end of file diff --git a/gala-ops/server/config/config.go b/gala-ops/server/config/config.go index 380a48e223a6dda47e8a85c855690f3b1b8ff333..bbe0838e7870bb6d933caa4124094eb36c758f2f 100644 --- a/gala-ops/server/config/config.go +++ b/gala-ops/server/config/config.go @@ -22,10 +22,19 @@ type PilotGoConf struct { Addr string `yaml:"addr"` } +type MysqlConf struct { + Host string `yaml:"host"` + Port int `yaml:"port"` + User string `yaml:"user"` + Password string `yaml:"password"` + Database string `yaml:"database"` +} + type ServerConfig struct { Grafana *GrafanaConf `yaml:"grafana"` Http *HttpConf `yaml:"http"` PilotGo *PilotGoConf `yaml:"PilotGo"` + Mysql *MysqlConf `yaml:"mysql"` } const config_file = "./config.yml" diff --git a/gala-ops/server/database/mysql.go b/gala-ops/server/database/mysql.go new file mode 100644 index 0000000000000000000000000000000000000000..7b4f256b05d724ca2fcba7c5407d84274a8295bc --- /dev/null +++ b/gala-ops/server/database/mysql.go @@ -0,0 +1,45 @@ +package database + +import ( + "fmt" + + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/schema" + "openeuler.org/PilotGo/gala-ops-plugin/config" +) + +var globalDB *gorm.DB + +func MysqlInit(conf *config.MysqlConf) error { + url := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8mb4&parseTime=true", + conf.User, + conf.Password, + conf.Host, + conf.Port, + conf.Database) + + gdb, err := gorm.Open(mysql.Open(url), &gorm.Config{ + NamingStrategy: schema.NamingStrategy{ + SingularTable: true, + }, + }) + if err != nil { + return err + } + globalDB = gdb + + db, err := gdb.DB() + if err != nil { + return err + } + + db.SetMaxIdleConns(10) + db.SetMaxOpenConns(100) + + return nil +} + +func DB() *gorm.DB { + return globalDB +} diff --git a/gala-ops/server/main.go b/gala-ops/server/main.go index 59ebc6d69bf3f8df6b76a481988f21926c401309..8e27f588a97339c016385a9cf23907b25682139d 100644 --- a/gala-ops/server/main.go +++ b/gala-ops/server/main.go @@ -2,13 +2,14 @@ package main import ( "fmt" + "os" "github.com/gin-gonic/gin" - "openeuler.org/PilotGo/gala-ops-plugin/httphandler" - "openeuler.org/PilotGo/gala-ops-plugin/client" "openeuler.org/PilotGo/gala-ops-plugin/config" + "openeuler.org/PilotGo/gala-ops-plugin/database" + "openeuler.org/PilotGo/gala-ops-plugin/httphandler" ) func main() { @@ -16,6 +17,11 @@ func main() { config.Init() + if err := database.MysqlInit(config.Config().Mysql); err != nil { + fmt.Println("failed to initialize database") + os.Exit(-1) + } + engine := client.Client().HttpEngine registerHandlers(engine) client.StartClient(config.Config().Http)