Source File
auto.go
Belonging Package
go.opentelemetry.io/otel/sdk/resource
// Copyright The OpenTelemetry Authors// SPDX-License-Identifier: Apache-2.0package resource // import "go.opentelemetry.io/otel/sdk/resource"import ()// ErrPartialResource is returned by a detector when complete source// information for a Resource is unavailable or the source information// contains invalid values that are omitted from the returned Resource.var ErrPartialResource = errors.New("partial resource")// Detector detects OpenTelemetry resource information.type Detector interface {// DO NOT CHANGE: any modification will not be backwards compatible and// must never be done outside of a new major release.// Detect returns an initialized Resource based on gathered information.// If the source information to construct a Resource contains invalid// values, a Resource is returned with the valid parts of the source// information used for initialization along with an appropriately// wrapped ErrPartialResource error.Detect(ctx context.Context) (*Resource, error)// DO NOT CHANGE: any modification will not be backwards compatible and// must never be done outside of a new major release.}// Detect returns a new [Resource] merged from all the Resources each of the// detectors produces. Each of the detectors are called sequentially, in the// order they are passed, merging the produced resource into the previous.//// This may return a partial Resource along with an error containing// [ErrPartialResource] if that error is returned from a detector. It may also// return a merge-conflicting Resource along with an error containing// [ErrSchemaURLConflict] if merging Resources from different detectors results// in a schema URL conflict. It is up to the caller to determine if this// returned Resource should be used or not.//// If one of the detectors returns an error that is not [ErrPartialResource],// the resource produced by the detector will not be merged and the returned// error will wrap that detector's error.func ( context.Context, ...Detector) (*Resource, error) {:= new(Resource)return , detect(, , )}// detect runs all detectors using ctx and merges the result into res. This// assumes res is allocated and not nil, it will panic otherwise.//// If the detectors or merging resources produces any errors (i.e.// [ErrPartialResource] [ErrSchemaURLConflict]), a single error wrapping all of// these errors will be returned. Otherwise, nil is returned.func detect( context.Context, *Resource, []Detector) error {var (*Resourceerrorerror)for , := range {if == nil {continue}, = .Detect()if != nil {= errors.Join(, )if !errors.Is(, ErrPartialResource) {continue}}, = Merge(, )if != nil {= errors.Join(, )}* = *}if != nil {if errors.Is(, ErrSchemaURLConflict) {// If there has been a merge conflict, ensure the resource has no// schema URL..schemaURL = ""}= fmt.Errorf("error detecting resource: %w", )}return}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |