MCPcopy Create free account
hub / github.com/eth-easl/dirigent / genericRevise

Method genericRevise

internal/data_plane/haproxy/manager.go:263–338  ·  view source on GitHub ↗
(backend string, addressesToKeep []string)

Source from the content-addressed store, hash-verified

261}
262
263func (api *API) genericRevise(backend string, addressesToKeep []string) (success bool, anyChanges bool) {
264 errorIn := ""
265
266 switch backend {
267 case DataplaneBackend:
268 errorIn = "data planes"
269 case RegistrationServerBackend:
270 errorIn = "registration servers"
271 default:
272 logrus.Fatalf("Invalid backend name for HAProxy backend revision function.")
273 }
274
275 version, err := api.client.Configuration.GetVersion("")
276 if err != nil {
277 logrus.Errorf("Failed to revise %s. Error obtaining configuration version - %v", errorIn, err)
278 return false, false
279 }
280
281 transaction, err := api.client.Configuration.StartTransaction(version)
282 if err != nil {
283 logrus.Errorf("Failed to revise %s. Error starting HAProxy transaction - %v", errorIn, err)
284 return false, false
285 }
286
287 version, servers, err := api.client.Configuration.GetServers(backend, transaction.ID)
288 if err != nil {
289 logrus.Errorf("Failed to revise %s. Error obtaining list of existing servers - %v", errorIn, err)
290 return false, false
291 }
292
293 var existingURLs []string
294 existingAddresses := make(map[string]string)
295 for _, server := range servers {
296 url := fmt.Sprintf("%s:%d", server.Address, *server.Port)
297
298 existingURLs = append(existingURLs, url)
299 existingAddresses[url] = server.Name
300 }
301
302 toAdd := _map.Difference(addressesToKeep, existingURLs)
303 toRemove := _map.Difference(existingURLs, addressesToKeep)
304 anyChanges = (len(toAdd) != 0) || (len(toRemove) != 0)
305
306 // REMOVAL
307 switch backend {
308 case DataplaneBackend:
309 for _, server := range toRemove {
310 ipAddress, port := grpc_helpers.SplitAddress(server)
311 api.removeServerByName(ipAddress, port, transaction.ID, 0)
312 }
313 case RegistrationServerBackend:
314 api.removeRegistrationServers(transaction.ID)
315 }
316
317 // ADDITION
318 switch backend {
319 case DataplaneBackend:
320 for _, address := range toAdd {

Callers 2

ReviseDataplanesMethod · 0.95

Calls 5

removeServerByNameMethod · 0.95
addServerMethod · 0.95
addRegistrationServerMethod · 0.95
SplitAddressFunction · 0.92

Tested by

no test coverage detected