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

Method handleEntityUpdate

runner/pool/watcher.go:53–98  ·  view source on GitHub ↗
(entity params.ForgeEntity, operation common.OperationType)

Source from the content-addressed store, hash-verified

51}
52
53func (r *basePoolManager) handleEntityUpdate(entity params.ForgeEntity, operation common.OperationType) {
54 slog.DebugContext(r.ctx, "received entity operation", "entity", entity.ID, "operation", operation)
55 if r.entity.ID != entity.ID {
56 slog.WarnContext(r.ctx, "entity ID mismatch; stale event? refusing to update", "entity", entity.ID)
57 return
58 }
59
60 if operation == common.DeleteOperation {
61 slog.InfoContext(r.ctx, "entity deleted; closing db consumer", "entity", entity.ID)
62 r.consumer.Close()
63 return
64 }
65
66 if operation != common.UpdateOperation {
67 slog.DebugContext(r.ctx, "operation not update; ignoring", "entity", entity.ID, "operation", operation)
68 return
69 }
70
71 credentialsUpdate := r.entity.Credentials.GetID() != entity.Credentials.GetID()
72 defer func() {
73 slog.DebugContext(r.ctx, "deferred tools update", "credentials_update", credentialsUpdate)
74 if !credentialsUpdate {
75 return
76 }
77 slog.DebugContext(r.ctx, "updating tools", "entity", entity.ID)
78 if err := r.updateTools(); err != nil {
79 slog.ErrorContext(r.ctx, "failed to update tools", "error", err)
80 }
81 }()
82
83 slog.DebugContext(r.ctx, "updating entity", "entity", entity.ID)
84 r.mux.Lock()
85 slog.DebugContext(r.ctx, "lock acquired", "entity", entity.ID)
86
87 r.entity = entity
88 if credentialsUpdate {
89 if r.consumer != nil {
90 filters := composeWatcherFilters(r.entity)
91 r.consumer.SetFilters(filters)
92 }
93 slog.DebugContext(r.ctx, "credentials update", "entity", entity.ID)
94 r.ghcli = r.getClientOrStub()
95 }
96 r.mux.Unlock()
97 slog.DebugContext(r.ctx, "lock released", "entity", entity.ID)
98}
99
100func (r *basePoolManager) handleCredentialsUpdate(credentials params.ForgeCredentials) {
101 // when we switch credentials on an entity (like from one app to another or from an app

Callers 1

handleWatcherEventMethod · 0.95

Calls 8

updateToolsMethod · 0.95
getClientOrStubMethod · 0.95
composeWatcherFiltersFunction · 0.85
CloseMethod · 0.65
GetIDMethod · 0.65
LockMethod · 0.65
SetFiltersMethod · 0.65
UnlockMethod · 0.65

Tested by

no test coverage detected