diff --git a/configmanage/server/global/plugin_configmanage.go b/configmanage/server/global/plugin_configmanage.go index 830944c6023dd3147f47090ea3c8c5ba98e5db66..1bd9a9c9e85c50aeb6a4f29f388ddbc280f3e09c 100644 --- a/configmanage/server/global/plugin_configmanage.go +++ b/configmanage/server/global/plugin_configmanage.go @@ -19,3 +19,11 @@ func Init(plugin *config.ConfigPlugin) *client.PluginInfo { } return &PluginInfo } + +const ( + Repo = "repo" + Host = "host" + SSH = "ssh" + SSHD = "sshd" + Sysctl = "sysctl" +) diff --git a/configmanage/server/internal/configfile.go b/configmanage/server/internal/configfile.go index a46f86a2ed467a70318d0e0a608fc3e6a3089c9d..8b868b683ed8f5fc335adcb244aa7feb9370fb2f 100644 --- a/configmanage/server/internal/configfile.go +++ b/configmanage/server/internal/configfile.go @@ -7,15 +7,15 @@ import ( ) type ConfigFile struct { - ID int `gorm:"primary_key;AUTO_INCREMENT"` - ConfigMessage ConfigMessage `gorm:"Foreignkey:ConfigMessageUUID"` - ConfigMessageUUID string - Name string `json:"name"` - File string `gorm:"type:text" json:"file"` - CreatedAt time.Time + ID int `gorm:"primary_key;AUTO_INCREMENT"` + ConfigInfo ConfigInfo `gorm:"Foreignkey:ConfigInfoUUID"` + ConfigInfoUUID string + Name string `json:"name"` + File string `gorm:"type:text" json:"file"` + CreatedAt time.Time } -func (cf *ConfigFile) AddConfigFile() error { +func (cf *ConfigFile) Add() error { return db.MySQL().Save(&cf).Error } diff --git a/configmanage/server/internal/configmessage.go b/configmanage/server/internal/configinfo.go similarity index 49% rename from configmanage/server/internal/configmessage.go rename to configmanage/server/internal/configinfo.go index e58bccf9bd42bd752088c5642fa3536b29af15ed..ed52ccd3ed7a3f52eef5e71ef496d64bd2869f8e 100644 --- a/configmanage/server/internal/configmessage.go +++ b/configmanage/server/internal/configinfo.go @@ -2,19 +2,19 @@ package internal import "openeuler.org/PilotGo/configmanage-plugin/db" -type ConfigMessage struct { - ID int `gorm:"primary_key;AUTO_INCREMENT"` - UUID string `json:"uuid"` +type ConfigInfo struct { + ID int `gorm:"AUTO_INCREMENT"` + UUID string `gorm:"primary_key;type:varchar(50)" json:"uuid"` Type string `json:"type"` Description string `json:"description"` } -func (cm *ConfigMessage) AddConfigMessage() error { +func (cm *ConfigInfo) Add() error { return db.MySQL().Save(&cm).Error } -func GetConfigMessage() ([]ConfigMessage, error) { - var cm []ConfigMessage +func GetConfigMessage() ([]ConfigInfo, error) { + var cm []ConfigInfo err := db.MySQL().Find(&cm).Error return cm, err } diff --git a/configmanage/server/internal/confignode.go b/configmanage/server/internal/confignode.go index 03e3ac084fddf3cc5e7d88089710e27bbf56670f..335335d0b89df9eab678dd5ce933f07eaea22a17 100644 --- a/configmanage/server/internal/confignode.go +++ b/configmanage/server/internal/confignode.go @@ -3,17 +3,17 @@ package internal import "openeuler.org/PilotGo/configmanage-plugin/db" type ConfigNode struct { - ID int `gorm:"primary_key;AUTO_INCREMENT"` - ConfigMessage ConfigMessage `gorm:"Foreignkey:ConfigMessageUUID"` - ConfigMessageUUID string - NodeId string + ID int `gorm:"primary_key;AUTO_INCREMENT"` + ConfigInfo ConfigInfo `gorm:"Foreignkey:ConfigInfoUUID"` + ConfigInfoUUID string + NodeId string } -func (cn *ConfigNode) AddConfigNode() error { +func (cn *ConfigNode) Add() error { return db.MySQL().Save(&cn).Error } -func GetConfigDodesByUUID(uuid string) ([]ConfigNode, error) { +func GetConfigNodesByUUID(uuid string) ([]ConfigNode, error) { var nodes []ConfigNode err := db.MySQL().Where("config_message_uuid=?", uuid).Find(&nodes).Error return nodes, err diff --git a/configmanage/server/main.go b/configmanage/server/main.go index 835d07fbd3f469a7fe2f2d09c982516cf88c5c3d..d3738a9e2c1daf684d64b8d5dd518567d09c63c3 100644 --- a/configmanage/server/main.go +++ b/configmanage/server/main.go @@ -31,7 +31,7 @@ func main() { fmt.Printf("logger init failed, please check the config file: %s", err) os.Exit(-1) } - logger.Info("Thanks to choose PilotGo!") + logger.Info("Thanks to choose plugin-config!") // mysql db初始化 if err := db.MysqldbInit(config.Config().Mysql); err != nil { @@ -39,7 +39,7 @@ func main() { os.Exit(-1) } - db.MySQL().AutoMigrate(&service.ConfigMessage{}) + db.MySQL().AutoMigrate(&service.ConfigInfo{}) db.MySQL().AutoMigrate(&service.ConfigFile{}) db.MySQL().AutoMigrate(&service.ConfigNode{}) server := router.InitRouter() diff --git a/configmanage/server/service/configinstance.go b/configmanage/server/service/configinstance.go index f51c1a8d5e3cfe07d2fad7ffd50cc9b02dc6ec4d..cf0267886ae93d0b7e5e9aa24a617c46d263e18c 100644 --- a/configmanage/server/service/configinstance.go +++ b/configmanage/server/service/configinstance.go @@ -9,65 +9,75 @@ import ( ) type ConfigInstance struct { - Type string `json:"type"` - BatchIds []uint `json:"batchids"` - DepartIds []int `json:"departids"` - UUIDS []string `json:"uuids"` - Config *Config + Type string `json:"type"` + Description string `json:"description"` + BatchIds []uint `json:"batchids"` + DepartIds []int `json:"departids"` + UUIDS []string `json:"uuids"` + + Config *Config +} + +type Config interface { + + // 配置存储 + Record() error + // 配置加载 + Load() error + + // 依据agent uuid进行配置下发 + Apply(string) error } -type ConfigMessage = internal.ConfigMessage +type ConfigInfo = internal.ConfigInfo type ConfigFile = internal.ConfigFile type ConfigNode = internal.ConfigNode -func (ci *ConfigInstance) AddConfigType() error { - cm := ConfigMessage{ +func (ci *ConfigInstance) Record() (string, error) { + cm := ConfigInfo{ UUID: uuid.New().String(), Type: ci.Type, - Description: "", + Description: ci.Description, } - err := cm.AddConfigMessage() + err := cm.Add() if err != nil { - return err + return cm.UUID, err } + for _, v := range ci.BatchIds { cn := ConfigNode{ - ConfigMessageUUID: cm.UUID, - NodeId: "b" + strconv.Itoa(int(v)), + ConfigInfoUUID: cm.UUID, + NodeId: "b" + strconv.Itoa(int(v)), } - err := cn.AddConfigNode() + err := cn.Add() if err != nil { logger.Error("save config-batch failed: %s", err.Error()) continue } } + for _, v := range ci.DepartIds { cn := ConfigNode{ - ConfigMessageUUID: cm.UUID, - NodeId: "d" + strconv.Itoa(v), + ConfigInfoUUID: cm.UUID, + NodeId: "d" + strconv.Itoa(v), } - err := cn.AddConfigNode() + err := cn.Add() if err != nil { logger.Error("save config-depart failed: %s", err.Error()) continue } } + for _, v := range ci.UUIDS { cn := ConfigNode{ - ConfigMessageUUID: cm.UUID, - NodeId: "n" + v, + ConfigInfoUUID: cm.UUID, + NodeId: "n" + v, } - err := cn.AddConfigNode() + err := cn.Add() if err != nil { logger.Error("save config-node failed: %s", err.Error()) continue } } - cf := ConfigFile{ - ConfigMessageUUID: cm.UUID, - Name: "", - File: "", - } - err = cf.AddConfigFile() - return err + return cm.UUID, err } diff --git a/configmanage/server/service/repo.go b/configmanage/server/service/repo.go new file mode 100644 index 0000000000000000000000000000000000000000..87f02c5a051361dce5860a787e15eb74b0e20269 --- /dev/null +++ b/configmanage/server/service/repo.go @@ -0,0 +1,35 @@ +package service + +import ( + "openeuler.org/PilotGo/configmanage-plugin/global" +) + +type RepoConfig struct { + ConfigInstance ConfigInstance + Name string + File string +} + +func (c *RepoConfig) Record() error { + c.ConfigInstance.Type = global.Repo + uuid, err := c.ConfigInstance.Record() + if err != nil { + return err + } + cf := ConfigFile{ + ConfigInfoUUID: uuid, + Name: c.Name, + File: c.File, + } + err = cf.Add() + return err +} + +func (c *RepoConfig) Load() error { + return nil +} + +func (c *RepoConfig) Apply(uuid string) error { + + return nil +}