MCPcopy Create free account
hub / github.com/cloudbase/garm / handleEntityEvent

Method handleEntityEvent

workers/cache/cache.go:320–356  ·  view source on GitHub ↗
(entityGetter params.EntityGetter, op common.OperationType)

Source from the content-addressed store, hash-verified

318}
319
320func (w *Worker) handleEntityEvent(entityGetter params.EntityGetter, op common.OperationType) {
321 entity, err := entityGetter.GetEntity()
322 if err != nil {
323 slog.DebugContext(w.ctx, "getting entity from event", "error", err)
324 return
325 }
326 switch op {
327 case common.CreateOperation, common.UpdateOperation:
328 old, hasOld := cache.GetEntity(entity.ID)
329 cache.SetEntity(entity)
330 worker, ok := w.toolsWorkes[entity.ID]
331 if !ok {
332 worker = newToolsUpdater(w.ctx, entity, w.store)
333 if err := worker.Start(); err != nil {
334 slog.ErrorContext(w.ctx, "starting tools updater", "error", err)
335 return
336 }
337 w.toolsWorkes[entity.ID] = worker
338 } else if hasOld {
339 // probably an update operation
340 if old.Credentials.GetID() != entity.Credentials.GetID() {
341 worker.Reset()
342 }
343 }
344 case common.DeleteOperation:
345 cache.DeleteEntity(entity.ID)
346 cache.DeleteGithubClient(entity.ID)
347 cache.DeleteGithubToolsCache(entity.ID)
348 worker, ok := w.toolsWorkes[entity.ID]
349 if ok {
350 if err := worker.Stop(); err != nil {
351 slog.ErrorContext(w.ctx, "stopping tools updater", "error", err)
352 }
353 delete(w.toolsWorkes, entity.ID)
354 }
355 }
356}
357
358func (w *Worker) handleRepositoryEvent(event common.ChangePayload) {
359 repo, ok := event.Payload.(params.Repository)

Callers 3

handleRepositoryEventMethod · 0.95
handleOrgEventMethod · 0.95
handleEnterpriseEventMethod · 0.95

Calls 11

GetEntityFunction · 0.92
SetEntityFunction · 0.92
DeleteEntityFunction · 0.92
DeleteGithubClientFunction · 0.92
DeleteGithubToolsCacheFunction · 0.92
newToolsUpdaterFunction · 0.85
GetEntityMethod · 0.65
StartMethod · 0.65
GetIDMethod · 0.65
ResetMethod · 0.65
StopMethod · 0.65

Tested by

no test coverage detected