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>
196 lines
6.1 KiB
Go
196 lines
6.1 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package resource // import "go.opentelemetry.io/otel/sdk/resource"
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.opentelemetry.io/otel/attribute"
|
|
)
|
|
|
|
// config contains configuration for Resource creation.
|
|
type config struct {
|
|
// detectors that will be evaluated.
|
|
detectors []Detector
|
|
// SchemaURL to associate with the Resource.
|
|
schemaURL string
|
|
}
|
|
|
|
// Option is the interface that applies a configuration option.
|
|
type Option interface {
|
|
// apply sets the Option value of a config.
|
|
apply(config) config
|
|
}
|
|
|
|
// WithAttributes adds attributes to the configured Resource.
|
|
func WithAttributes(attributes ...attribute.KeyValue) Option {
|
|
return WithDetectors(detectAttributes{attributes})
|
|
}
|
|
|
|
type detectAttributes struct {
|
|
attributes []attribute.KeyValue
|
|
}
|
|
|
|
func (d detectAttributes) Detect(context.Context) (*Resource, error) {
|
|
return NewSchemaless(d.attributes...), nil
|
|
}
|
|
|
|
// WithDetectors adds detectors to be evaluated for the configured resource.
|
|
func WithDetectors(detectors ...Detector) Option {
|
|
return detectorsOption{detectors: detectors}
|
|
}
|
|
|
|
type detectorsOption struct {
|
|
detectors []Detector
|
|
}
|
|
|
|
func (o detectorsOption) apply(cfg config) config {
|
|
cfg.detectors = append(cfg.detectors, o.detectors...)
|
|
return cfg
|
|
}
|
|
|
|
// WithFromEnv adds attributes from environment variables to the configured resource.
|
|
func WithFromEnv() Option {
|
|
return WithDetectors(fromEnv{})
|
|
}
|
|
|
|
// WithHost adds attributes from the host to the configured resource.
|
|
func WithHost() Option {
|
|
return WithDetectors(host{})
|
|
}
|
|
|
|
// WithHostID adds host ID information to the configured resource.
|
|
func WithHostID() Option {
|
|
return WithDetectors(hostIDDetector{})
|
|
}
|
|
|
|
// WithTelemetrySDK adds TelemetrySDK version info to the configured resource.
|
|
func WithTelemetrySDK() Option {
|
|
return WithDetectors(telemetrySDK{})
|
|
}
|
|
|
|
// WithSchemaURL sets the schema URL for the configured resource.
|
|
func WithSchemaURL(schemaURL string) Option {
|
|
return schemaURLOption(schemaURL)
|
|
}
|
|
|
|
type schemaURLOption string
|
|
|
|
func (o schemaURLOption) apply(cfg config) config {
|
|
cfg.schemaURL = string(o)
|
|
return cfg
|
|
}
|
|
|
|
// WithOS adds all the OS attributes to the configured Resource.
|
|
// See individual WithOS* functions to configure specific attributes.
|
|
func WithOS() Option {
|
|
return WithDetectors(
|
|
osTypeDetector{},
|
|
osDescriptionDetector{},
|
|
)
|
|
}
|
|
|
|
// WithOSType adds an attribute with the operating system type to the configured Resource.
|
|
func WithOSType() Option {
|
|
return WithDetectors(osTypeDetector{})
|
|
}
|
|
|
|
// WithOSDescription adds an attribute with the operating system description to the
|
|
// configured Resource. The formatted string is equivalent to the output of the
|
|
// `uname -snrvm` command.
|
|
func WithOSDescription() Option {
|
|
return WithDetectors(osDescriptionDetector{})
|
|
}
|
|
|
|
// WithProcess adds all the Process attributes to the configured Resource.
|
|
//
|
|
// Warning! This option will include process command line arguments. If these
|
|
// contain sensitive information it will be included in the exported resource.
|
|
//
|
|
// This option is equivalent to calling WithProcessPID,
|
|
// WithProcessExecutableName, WithProcessExecutablePath,
|
|
// WithProcessCommandArgs, WithProcessOwner, WithProcessRuntimeName,
|
|
// WithProcessRuntimeVersion, and WithProcessRuntimeDescription. See each
|
|
// option function for information about what resource attributes each
|
|
// includes.
|
|
func WithProcess() Option {
|
|
return WithDetectors(
|
|
processPIDDetector{},
|
|
processExecutableNameDetector{},
|
|
processExecutablePathDetector{},
|
|
processCommandArgsDetector{},
|
|
processOwnerDetector{},
|
|
processRuntimeNameDetector{},
|
|
processRuntimeVersionDetector{},
|
|
processRuntimeDescriptionDetector{},
|
|
)
|
|
}
|
|
|
|
// WithProcessPID adds an attribute with the process identifier (PID) to the
|
|
// configured Resource.
|
|
func WithProcessPID() Option {
|
|
return WithDetectors(processPIDDetector{})
|
|
}
|
|
|
|
// WithProcessExecutableName adds an attribute with the name of the process
|
|
// executable to the configured Resource.
|
|
func WithProcessExecutableName() Option {
|
|
return WithDetectors(processExecutableNameDetector{})
|
|
}
|
|
|
|
// WithProcessExecutablePath adds an attribute with the full path to the process
|
|
// executable to the configured Resource.
|
|
func WithProcessExecutablePath() Option {
|
|
return WithDetectors(processExecutablePathDetector{})
|
|
}
|
|
|
|
// WithProcessCommandArgs adds an attribute with all the command arguments (including
|
|
// the command/executable itself) as received by the process to the configured
|
|
// Resource.
|
|
//
|
|
// Warning! This option will include process command line arguments. If these
|
|
// contain sensitive information it will be included in the exported resource.
|
|
func WithProcessCommandArgs() Option {
|
|
return WithDetectors(processCommandArgsDetector{})
|
|
}
|
|
|
|
// WithProcessOwner adds an attribute with the username of the user that owns the process
|
|
// to the configured Resource.
|
|
func WithProcessOwner() Option {
|
|
return WithDetectors(processOwnerDetector{})
|
|
}
|
|
|
|
// WithProcessRuntimeName adds an attribute with the name of the runtime of this
|
|
// process to the configured Resource.
|
|
func WithProcessRuntimeName() Option {
|
|
return WithDetectors(processRuntimeNameDetector{})
|
|
}
|
|
|
|
// WithProcessRuntimeVersion adds an attribute with the version of the runtime of
|
|
// this process to the configured Resource.
|
|
func WithProcessRuntimeVersion() Option {
|
|
return WithDetectors(processRuntimeVersionDetector{})
|
|
}
|
|
|
|
// WithProcessRuntimeDescription adds an attribute with an additional description
|
|
// about the runtime of the process to the configured Resource.
|
|
func WithProcessRuntimeDescription() Option {
|
|
return WithDetectors(processRuntimeDescriptionDetector{})
|
|
}
|
|
|
|
// WithContainer adds all the Container attributes to the configured Resource.
|
|
// See individual WithContainer* functions to configure specific attributes.
|
|
func WithContainer() Option {
|
|
return WithDetectors(
|
|
cgroupContainerIDDetector{},
|
|
)
|
|
}
|
|
|
|
// WithContainerID adds an attribute with the id of the container to the configured Resource.
|
|
// Note: WithContainerID will not extract the correct container ID in an ECS environment.
|
|
// Please use the ECS resource detector instead (https://pkg.go.dev/go.opentelemetry.io/contrib/detectors/aws/ecs).
|
|
func WithContainerID() Option {
|
|
return WithDetectors(cgroupContainerIDDetector{})
|
|
}
|