in manager.go [235:273]
func (m *Manager) applyResource(ctx context.Context, resource Resource) *ApplyResult {
current, err := resource.Get(ctx, m)
if err != nil {
return &ApplyResult{
action: ActionUnknown,
resource: resource,
err: err,
}
}
if !current.Found(ctx) {
err := resource.Create(ctx, m)
return &ApplyResult{
action: ActionCreate,
resource: resource,
err: err,
}
}
needsUpdate, err := current.NeedsUpdate(ctx, resource)
if err != nil {
return &ApplyResult{
action: ActionUnknown,
resource: resource,
err: err,
}
}
if needsUpdate {
err := resource.Update(ctx, m)
return &ApplyResult{
action: ActionUpdate,
resource: resource,
err: err,
}
}
// No action applied to this resource.
return nil
}