diff --git a/configmanage/server/internal/confignode.go b/configmanage/server/internal/confignode.go index 5fb589946197e476544abe7cccc6232b5a0de3cb..1ae70715a01131615cb369543a0d313ccbc96dad 100644 --- a/configmanage/server/internal/confignode.go +++ b/configmanage/server/internal/confignode.go @@ -1,6 +1,8 @@ package internal -import "openeuler.org/PilotGo/configmanage-plugin/db" +import ( + "openeuler.org/PilotGo/configmanage-plugin/db" +) type ConfigNode struct { ID int `gorm:"primary_key;AUTO_INCREMENT"` @@ -10,7 +12,7 @@ type ConfigNode struct { } func (cn *ConfigNode) Add() error { - return db.MySQL().Save(&cn).Error + return db.MySQL().Create(&cn).Error } func GetConfigNodesByUUID(uuid string) ([]string, error) { @@ -25,6 +27,11 @@ func GetConfigNodesByNode(uuid string) ([]ConfigNode, error) { return cns, err } +func DelConfigNodeByUUID(uuid string) error { + err := db.MySQL().Model(&ConfigNode{}).Where("config_info_uuid=?", uuid).Delete(&ConfigNode{}).Error + return err +} + type ConfigBatch struct { ID int `gorm:"primary_key;AUTO_INCREMENT"` ConfigInfo ConfigInfo `gorm:"Foreignkey:ConfigInfoUUID"` @@ -33,7 +40,7 @@ type ConfigBatch struct { } func (cb *ConfigBatch) Add() error { - return db.MySQL().Save(&cb).Error + return db.MySQL().Create(&cb).Error } func GetConfigBatchByUUID(uuid string) ([]int, error) { @@ -42,6 +49,11 @@ func GetConfigBatchByUUID(uuid string) ([]int, error) { return nodes, err } +func DelConfigBatchByUUID(uuid string) error { + err := db.MySQL().Where("config_info_uuid=?", uuid).Delete(&ConfigBatch{}).Error + return err +} + type ConfigDepart struct { ID int `gorm:"primary_key;AUTO_INCREMENT"` ConfigInfo ConfigInfo `gorm:"Foreignkey:ConfigInfoUUID"` @@ -50,7 +62,7 @@ type ConfigDepart struct { } func (cd *ConfigDepart) Add() error { - return db.MySQL().Save(&cd).Error + return db.MySQL().Create(&cd).Error } func GetConfigDepartByUUID(uuid string) ([]int, error) { @@ -58,3 +70,8 @@ func GetConfigDepartByUUID(uuid string) ([]int, error) { err := db.MySQL().Model(&ConfigDepart{}).Where("config_info_uuid=?", uuid).Select("depart_id").Find(&nodes).Error return nodes, err } + +func DelConfigDepartByUUID(uuid string) error { + err := db.MySQL().Where("config_info_uuid=?", uuid).Delete(&ConfigDepart{}).Error + return err +} diff --git a/configmanage/server/service/configinstance.go b/configmanage/server/service/configinstance.go index f610a5e77912a97f8c55f0ca61f3fd640c48ad80..8ebc5c34b3ae4454c5ef8c0f557f05290f3e3688 100644 --- a/configmanage/server/service/configinstance.go +++ b/configmanage/server/service/configinstance.go @@ -88,6 +88,20 @@ func (ci *ConfigInstance) Add() error { return err } + // 删除配置和机器关联信息,重新添加,删除的时候忽略记录不存在错误 + err = internal.DelConfigNodeByUUID(ci.UUID) + if err != nil { + return err + } + err = internal.DelConfigBatchByUUID(ci.UUID) + if err != nil { + return err + } + err = internal.DelConfigDepartByUUID(ci.UUID) + if err != nil { + return err + } + for _, v := range ci.Nodes { cn := ConfigNode{ ConfigInfoUUID: ci.UUID, diff --git a/configmanage/server/service/configinstance_test.go b/configmanage/server/service/configinstance_test.go index b15b30223bcfc14981533b9606f04a4c9cab6dfa..ed1af634001760415cad292c2f8db9ca7b026f24 100644 --- a/configmanage/server/service/configinstance_test.go +++ b/configmanage/server/service/configinstance_test.go @@ -135,3 +135,19 @@ func TestConfigInstanceTypeSysctl_Add(t *testing.T) { os.Exit(-1) } } + +func TestUpdate(t *testing.T) { + ci := &ConfigInstance{ + UUID: "9c3f8e3d-5f8e-42df-b2d0-49bf55cfeb56", + Type: global.Repo, + Description: "test-repo", + BatchIds: []int{6}, + DepartIds: []int{60}, + Nodes: []string{"qqqqqqqq-aac8-44c1-8c21-7de4ef03c04b"}, + } + err := ci.Add() + if err != nil { + fmt.Printf("Add() error = %v, want nil", err) + os.Exit(-1) + } +}