1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package config // import "go.opentelemetry.io/contrib/config"
import (
"fmt"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/sdk/resource"
)
func keyVal(k string, v any) attribute.KeyValue {
switch val := v.(type) {
case bool:
return attribute.Bool(k, val)
case int64:
return attribute.Int64(k, val)
case uint64:
return attribute.String(k, fmt.Sprintf("%d", val))
case float64:
return attribute.Float64(k, val)
case int8:
return attribute.Int64(k, int64(val))
case uint8:
return attribute.Int64(k, int64(val))
case int16:
return attribute.Int64(k, int64(val))
case uint16:
return attribute.Int64(k, int64(val))
case int32:
return attribute.Int64(k, int64(val))
case uint32:
return attribute.Int64(k, int64(val))
case float32:
return attribute.Float64(k, float64(val))
case int:
return attribute.Int(k, val)
case uint:
return attribute.String(k, fmt.Sprintf("%d", val))
case string:
return attribute.String(k, val)
default:
return attribute.String(k, fmt.Sprint(v))
}
}
func newResource(res *Resource) (*resource.Resource, error) {
if res == nil || res.Attributes == nil {
return resource.Default(), nil
}
var attrs []attribute.KeyValue
for _, v := range res.Attributes {
attrs = append(attrs, keyVal(v.Name, v.Value))
}
return resource.Merge(resource.Default(),
resource.NewWithAttributes(*res.SchemaUrl,
attrs...,
))
}
|