Skip to content

Commit a2eea59

Browse files
committed
MINOR: add CreateOrEditServer function
1 parent af970e9 commit a2eea59

File tree

2 files changed

+946
-0
lines changed

2 files changed

+946
-0
lines changed

configuration/server.go

+28
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type Server interface {
3838
DeleteServer(name string, parentType string, parentName string, transactionID string, version int64) error
3939
CreateServer(parentType string, parentName string, data *models.Server, transactionID string, version int64) error
4040
EditServer(name string, parentType string, parentName string, data *models.Server, transactionID string, version int64) error
41+
CreateOrEditServer(parentType string, parentName string, data *models.Server, transactionID string, version int64) error
4142
GetServerSwitchingRules(backend string, transactionID string) (int64, models.ServerSwitchingRules, error)
4243
GetServerSwitchingRule(id int64, backend string, transactionID string) (int64, *models.ServerSwitchingRule, error)
4344
DeleteServerSwitchingRule(id int64, backend string, transactionID string, version int64) error
@@ -163,6 +164,33 @@ func (c *client) EditServer(name string, parentType string, parentName string, d
163164
return c.SaveData(p, t, transactionID == "")
164165
}
165166

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

0 commit comments

Comments
 (0)