summaryrefslogtreecommitdiff
path: root/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/go.opentelemetry.io/otel/sdk/resource/auto.go')
-rw-r--r--vendor/go.opentelemetry.io/otel/sdk/resource/auto.go58
1 files changed, 10 insertions, 48 deletions
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go b/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go
index 324dd4baf..c1d220408 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go
@@ -18,7 +18,6 @@ import (
"context"
"errors"
"fmt"
- "strings"
)
var (
@@ -46,65 +45,28 @@ type Detector interface {
// Detect calls all input detectors sequentially and merges each result with the previous one.
// It returns the merged error too.
func Detect(ctx context.Context, detectors ...Detector) (*Resource, error) {
- r := new(Resource)
- return r, detect(ctx, r, detectors)
-}
-
-// detect runs all detectors using ctx and merges the result into res. This
-// assumes res is allocated and not nil, it will panic otherwise.
-func detect(ctx context.Context, res *Resource, detectors []Detector) error {
- var (
- r *Resource
- errs detectErrs
- err error
- )
-
+ var autoDetectedRes *Resource
+ var errInfo []string
for _, detector := range detectors {
if detector == nil {
continue
}
- r, err = detector.Detect(ctx)
+ res, err := detector.Detect(ctx)
if err != nil {
- errs = append(errs, err)
+ errInfo = append(errInfo, err.Error())
if !errors.Is(err, ErrPartialResource) {
continue
}
}
- r, err = Merge(res, r)
+ autoDetectedRes, err = Merge(autoDetectedRes, res)
if err != nil {
- errs = append(errs, err)
+ errInfo = append(errInfo, err.Error())
}
- *res = *r
}
- if len(errs) == 0 {
- return nil
- }
- return errs
-}
-
-type detectErrs []error
-
-func (e detectErrs) Error() string {
- errStr := make([]string, len(e))
- for i, err := range e {
- errStr[i] = fmt.Sprintf("* %s", err)
+ var aggregatedError error
+ if len(errInfo) > 0 {
+ aggregatedError = fmt.Errorf("detecting resources: %s", errInfo)
}
-
- format := "%d errors occurred detecting resource:\n\t%s"
- return fmt.Sprintf(format, len(e), strings.Join(errStr, "\n\t"))
-}
-
-func (e detectErrs) Unwrap() error {
- switch len(e) {
- case 0:
- return nil
- case 1:
- return e[0]
- }
- return e[1:]
-}
-
-func (e detectErrs) Is(target error) bool {
- return len(e) != 0 && errors.Is(e[0], target)
+ return autoDetectedRes, aggregatedError
}