MCPcopy
hub / github.com/grafana/tempo / processLegacyExtensions

Function processLegacyExtensions

modules/overrides/extension.go:205–249  ·  view source on GitHub ↗

processLegacyExtensions converts registered extension flat keys in l.Extensions to typed Extension instances, giving LegacyOverrides.Extensions the same semantics as Overrides.Extensions after processExtensions: typed instances keyed by their nested Key(). For each registered extension whose Legacy

(l *LegacyOverrides)

Source from the content-addressed store, hash-verified

203//
204// Any unregistered flat keys are rejected.
205func processLegacyExtensions(l *LegacyOverrides) error {
206 if len(l.Extensions) == 0 {
207 return nil
208 }
209
210 extensionRegistry.RLock()
211 defer extensionRegistry.RUnlock()
212
213 for _, entry := range extensionRegistry.entries {
214 hasFlatKey := false
215 for _, fk := range entry.legacyKeys {
216 if _, ok := l.Extensions[fk]; ok {
217 hasFlatKey = true
218 break
219 }
220 }
221 if !hasFlatKey {
222 continue
223 }
224
225 instance := entry.newInstance()
226 instance.RegisterFlagsAndApplyDefaults("", flag.NewFlagSet("", flag.ContinueOnError)) // extension configs have no CLI prefix
227
228 err := instance.FromLegacy(l.Extensions)
229 if err != nil {
230 return fmt.Errorf("extension %q: from legacy: %w", entry.key, err)
231 }
232 if err := instance.Validate(); err != nil {
233 return fmt.Errorf("extension %q: %w", entry.key, err)
234 }
235
236 for _, fk := range entry.legacyKeys {
237 delete(l.Extensions, fk)
238 }
239 l.Extensions[entry.key] = instance
240 }
241
242 // Reject any remaining / unregistered flat keys
243 for k, v := range l.Extensions {
244 if _, typed := v.(Extension); !typed {
245 return fmt.Errorf("unknown legacy extension key %q: must be registered via RegisterExtension and declared in LegacyKeys() before use", k)
246 }
247 }
248 return nil
249}
250
251// flattenExtensionEntries returns a new map where typed Extension values are replaced by their
252// flat legacy key-value pairs (via ToLegacy).

Callers 3

UnmarshalJSONMethod · 0.85
UnmarshalYAMLMethod · 0.85
UnmarshalYAMLMethod · 0.85

Calls 4

newInstanceMethod · 0.80
FromLegacyMethod · 0.65
ValidateMethod · 0.65

Tested by

no test coverage detected