@@ -38,6 +38,7 @@ type Server interface {
38
38
DeleteServer (name string , parentType string , parentName string , transactionID string , version int64 ) error
39
39
CreateServer (parentType string , parentName string , data * models.Server , transactionID string , version int64 ) error
40
40
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
41
42
GetServerSwitchingRules (backend string , transactionID string ) (int64 , models.ServerSwitchingRules , error )
42
43
GetServerSwitchingRule (id int64 , backend string , transactionID string ) (int64 , * models.ServerSwitchingRule , error )
43
44
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
163
164
return c .SaveData (p , t , transactionID == "" )
164
165
}
165
166
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
+
166
194
func ParseServers (parentType string , parentName string , p parser.Parser ) (models.Servers , error ) {
167
195
var servers models.Servers
168
196
0 commit comments