mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-03-09 17:09:29 +00:00
Several packages are only used while running the e2e suite. These packages are less important to update, as the they can not influence the final executable that is part of the Ceph-CSI container-image. By moving these dependencies out of the main Ceph-CSI go.mod, it is easier to identify if a reported CVE affects Ceph-CSI, or only the testing (like most of the Kubernetes CVEs). Signed-off-by: Niels de Vos <ndevos@ibm.com>
90 lines
2.5 KiB
Go
90 lines
2.5 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package resource // import "go.opentelemetry.io/otel/sdk/resource"
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"go.opentelemetry.io/otel/attribute"
|
|
semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
|
|
)
|
|
|
|
type osDescriptionProvider func() (string, error)
|
|
|
|
var defaultOSDescriptionProvider osDescriptionProvider = platformOSDescription
|
|
|
|
var osDescription = defaultOSDescriptionProvider
|
|
|
|
func setDefaultOSDescriptionProvider() {
|
|
setOSDescriptionProvider(defaultOSDescriptionProvider)
|
|
}
|
|
|
|
func setOSDescriptionProvider(osDescriptionProvider osDescriptionProvider) {
|
|
osDescription = osDescriptionProvider
|
|
}
|
|
|
|
type (
|
|
osTypeDetector struct{}
|
|
osDescriptionDetector struct{}
|
|
)
|
|
|
|
// Detect returns a *Resource that describes the operating system type the
|
|
// service is running on.
|
|
func (osTypeDetector) Detect(ctx context.Context) (*Resource, error) {
|
|
osType := runtimeOS()
|
|
|
|
osTypeAttribute := mapRuntimeOSToSemconvOSType(osType)
|
|
|
|
return NewWithAttributes(
|
|
semconv.SchemaURL,
|
|
osTypeAttribute,
|
|
), nil
|
|
}
|
|
|
|
// Detect returns a *Resource that describes the operating system the
|
|
// service is running on.
|
|
func (osDescriptionDetector) Detect(ctx context.Context) (*Resource, error) {
|
|
description, err := osDescription()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return NewWithAttributes(
|
|
semconv.SchemaURL,
|
|
semconv.OSDescription(description),
|
|
), nil
|
|
}
|
|
|
|
// mapRuntimeOSToSemconvOSType translates the OS name as provided by the Go runtime
|
|
// into an OS type attribute with the corresponding value defined by the semantic
|
|
// conventions. In case the provided OS name isn't mapped, it's transformed to lowercase
|
|
// and used as the value for the returned OS type attribute.
|
|
func mapRuntimeOSToSemconvOSType(osType string) attribute.KeyValue {
|
|
// the elements in this map are the intersection between
|
|
// available GOOS values and defined semconv OS types
|
|
osTypeAttributeMap := map[string]attribute.KeyValue{
|
|
"aix": semconv.OSTypeAIX,
|
|
"darwin": semconv.OSTypeDarwin,
|
|
"dragonfly": semconv.OSTypeDragonflyBSD,
|
|
"freebsd": semconv.OSTypeFreeBSD,
|
|
"linux": semconv.OSTypeLinux,
|
|
"netbsd": semconv.OSTypeNetBSD,
|
|
"openbsd": semconv.OSTypeOpenBSD,
|
|
"solaris": semconv.OSTypeSolaris,
|
|
"windows": semconv.OSTypeWindows,
|
|
"zos": semconv.OSTypeZOS,
|
|
}
|
|
|
|
var osTypeAttribute attribute.KeyValue
|
|
|
|
if attr, ok := osTypeAttributeMap[osType]; ok {
|
|
osTypeAttribute = attr
|
|
} else {
|
|
osTypeAttribute = semconv.OSTypeKey.String(strings.ToLower(osType))
|
|
}
|
|
|
|
return osTypeAttribute
|
|
}
|