Files
MarioandGitHub e0354d1bed Update Prometheus to v0.307.2, OTel collector contrib to v0.138.0, OTel to v1.44.0 (#5810)
* Update Prometheus to v0.307.2

* Update otel collector

* Update OTel collector
2025-10-28 11:30:17 +01:00

383 lines
9.7 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package otelconf // import "go.opentelemetry.io/contrib/otelconf/v0.3.0"
import (
"encoding/json"
"errors"
"fmt"
"reflect"
)
// MarshalJSON implements json.Marshaler.
func (j *AttributeNameValueType) MarshalJSON() ([]byte, error) {
return json.Marshal(j.Value)
}
var enumValuesAttributeNameValueType = []any{
nil,
"string",
"bool",
"int",
"double",
"string_array",
"bool_array",
"int_array",
"double_array",
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *AttributeNameValueType) UnmarshalJSON(b []byte) error {
var v struct {
Value any
}
if err := json.Unmarshal(b, &v.Value); err != nil {
return err
}
var ok bool
for _, expected := range enumValuesAttributeNameValueType {
if reflect.DeepEqual(v.Value, expected) {
ok = true
break
}
}
if !ok {
return fmt.Errorf("invalid value (expected one of %#v): %#v", enumValuesAttributeNameValueType, v.Value)
}
*j = AttributeNameValueType(v)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *BatchLogRecordProcessor) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["exporter"]; raw != nil && !ok {
return errors.New("field exporter in BatchLogRecordProcessor: required")
}
type Plain BatchLogRecordProcessor
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = BatchLogRecordProcessor(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *BatchSpanProcessor) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["exporter"]; raw != nil && !ok {
return errors.New("field exporter in BatchSpanProcessor: required")
}
type Plain BatchSpanProcessor
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = BatchSpanProcessor(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *GeneralInstrumentationPeerServiceMappingElem) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["peer"]; raw != nil && !ok {
return errors.New("field peer in GeneralInstrumentationPeerServiceMappingElem: required")
}
if _, ok := raw["service"]; raw != nil && !ok {
return errors.New("field service in GeneralInstrumentationPeerServiceMappingElem: required")
}
type Plain GeneralInstrumentationPeerServiceMappingElem
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = GeneralInstrumentationPeerServiceMappingElem(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *NameStringValuePair) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["name"]; !ok {
return errors.New("json: cannot unmarshal field name in NameStringValuePair required")
}
if _, ok := raw["value"]; !ok {
return errors.New("json: cannot unmarshal field value in NameStringValuePair required")
}
var name, value string
var ok bool
if name, ok = raw["name"].(string); !ok {
return errors.New("yaml: cannot unmarshal field name in NameStringValuePair must be string")
}
if value, ok = raw["value"].(string); !ok {
return errors.New("yaml: cannot unmarshal field value in NameStringValuePair must be string")
}
*j = NameStringValuePair{
Name: name,
Value: &value,
}
return nil
}
var enumValuesOTLPMetricDefaultHistogramAggregation = []any{
"explicit_bucket_histogram",
"base2_exponential_bucket_histogram",
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *OTLPMetricDefaultHistogramAggregation) UnmarshalJSON(b []byte) error {
var v string
if err := json.Unmarshal(b, &v); err != nil {
return err
}
var ok bool
for _, expected := range enumValuesOTLPMetricDefaultHistogramAggregation {
if reflect.DeepEqual(v, expected) {
ok = true
break
}
}
if !ok {
return fmt.Errorf("invalid value (expected one of %#v): %#v", enumValuesOTLPMetricDefaultHistogramAggregation, v)
}
*j = OTLPMetricDefaultHistogramAggregation(v)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *OTLPMetric) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["endpoint"]; raw != nil && !ok {
return errors.New("field endpoint in OTLPMetric: required")
}
if _, ok := raw["protocol"]; raw != nil && !ok {
return errors.New("field protocol in OTLPMetric: required")
}
type Plain OTLPMetric
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = OTLPMetric(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *OTLP) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["endpoint"]; raw != nil && !ok {
return errors.New("field endpoint in OTLP: required")
}
if _, ok := raw["protocol"]; raw != nil && !ok {
return errors.New("field protocol in OTLP: required")
}
type Plain OTLP
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = OTLP(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *OpenTelemetryConfiguration) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["file_format"]; raw != nil && !ok {
return errors.New("field file_format in OpenTelemetryConfiguration: required")
}
type Plain OpenTelemetryConfiguration
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = OpenTelemetryConfiguration(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *PeriodicMetricReader) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["exporter"]; raw != nil && !ok {
return errors.New("field exporter in PeriodicMetricReader: required")
}
type Plain PeriodicMetricReader
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = PeriodicMetricReader(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *PullMetricReader) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["exporter"]; raw != nil && !ok {
return errors.New("field exporter in PullMetricReader: required")
}
type Plain PullMetricReader
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = PullMetricReader(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *SimpleLogRecordProcessor) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["exporter"]; raw != nil && !ok {
return errors.New("field exporter in SimpleLogRecordProcessor: required")
}
type Plain SimpleLogRecordProcessor
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = SimpleLogRecordProcessor(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *SimpleSpanProcessor) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["exporter"]; raw != nil && !ok {
return errors.New("field exporter in SimpleSpanProcessor: required")
}
type Plain SimpleSpanProcessor
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = SimpleSpanProcessor(plain)
return nil
}
var enumValuesViewSelectorInstrumentType = []any{
"counter",
"histogram",
"observable_counter",
"observable_gauge",
"observable_up_down_counter",
"up_down_counter",
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *ViewSelectorInstrumentType) UnmarshalJSON(b []byte) error {
var v string
if err := json.Unmarshal(b, &v); err != nil {
return err
}
var ok bool
for _, expected := range enumValuesViewSelectorInstrumentType {
if reflect.DeepEqual(v, expected) {
ok = true
break
}
}
if !ok {
return fmt.Errorf("invalid value (expected one of %#v): %#v", enumValuesViewSelectorInstrumentType, v)
}
*j = ViewSelectorInstrumentType(v)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *Zipkin) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["endpoint"]; raw != nil && !ok {
return errors.New("field endpoint in Zipkin: required")
}
type Plain Zipkin
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
*j = Zipkin(plain)
return nil
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *AttributeNameValue) UnmarshalJSON(b []byte) error {
var raw map[string]any
if err := json.Unmarshal(b, &raw); err != nil {
return err
}
if _, ok := raw["name"]; raw != nil && !ok {
return errors.New("field name in AttributeNameValue: required")
}
if _, ok := raw["value"]; raw != nil && !ok {
return errors.New("field value in AttributeNameValue: required")
}
type Plain AttributeNameValue
var plain Plain
if err := json.Unmarshal(b, &plain); err != nil {
return err
}
if plain.Type != nil && plain.Type.Value == "int" {
val, ok := plain.Value.(float64)
if ok {
plain.Value = int(val)
}
}
if plain.Type != nil && plain.Type.Value == "int_array" {
m, ok := plain.Value.([]any)
if ok {
var vals []any
for _, v := range m {
val, ok := v.(float64)
if ok {
vals = append(vals, int(val))
} else {
vals = append(vals, val)
}
}
plain.Value = vals
}
}
*j = AttributeNameValue(plain)
return nil
}