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