Skip to content

Commit d8f73ba

Browse files
committed
MINOR: add CreateOrEditServer function
1 parent 00af720 commit d8f73ba

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

configuration/server.go

+28
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ type Server interface {
3737
DeleteServer(name string, parentType string, parentName string, transactionID string, version int64) error
3838
CreateServer(parentType string, parentName string, data *models.Server, transactionID string, version int64) error
3939
EditServer(name string, parentType string, parentName string, data *models.Server, transactionID string, version int64) error
40+
CreateOrEditServer(parentType string, parentName string, data *models.Server, transactionID string, version int64) error
4041
GetServerSwitchingRules(backend string, transactionID string) (int64, models.ServerSwitchingRules, error)
4142
GetServerSwitchingRule(id int64, backend string, transactionID string) (int64, *models.ServerSwitchingRule, error)
4243
DeleteServerSwitchingRule(id int64, backend string, transactionID string, version int64) error
@@ -161,6 +162,33 @@ func (c *client) EditServer(name string, parentType string, parentName string, d
161162
return c.SaveData(p, t, transactionID == "")
162163
}
163164

165+
func (c *client) CreateOrEditServer(parentType string, parentName string, data *models.Server, transactionID string, version int64) error {
166+
if c.UseModelsValidation {
167+
validationErr := data.Validate(strfmt.Default)
168+
if validationErr != nil {
169+
return NewConfError(ErrValidationError, validationErr.Error())
170+
}
171+
}
172+
p, t, err := c.loadDataForChange(transactionID, version)
173+
if err != nil {
174+
return err
175+
}
176+
177+
server, i := GetServerByName(data.Name, parentType, parentName, p)
178+
// Edition func by default
179+
f := p.Set
180+
if server == nil {
181+
i = -1
182+
// If server does not exist then Create func
183+
f = p.Insert
184+
}
185+
if err := f(sectionType(parentType), parentName, "server", SerializeServer(*data), i); err != nil {
186+
return c.HandleError(data.Name, parentType, parentName, t, transactionID == "", err)
187+
}
188+
189+
return c.SaveData(p, t, transactionID == "")
190+
}
191+
164192
func ParseServers(parentType string, parentName string, p parser.Parser) (models.Servers, error) {
165193
servers := models.Servers{}
166194

0 commit comments

Comments
 (0)