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>
95 lines
2.8 KiB
Go
95 lines
2.8 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package sdk
|
|
|
|
import (
|
|
"log/slog"
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
// maxSpan are the span limits resolved during startup.
|
|
var maxSpan = newSpanLimits()
|
|
|
|
type spanLimits struct {
|
|
// Attrs is the number of allowed attributes for a span.
|
|
//
|
|
// This is resolved from the environment variable value for the
|
|
// OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT key if it exists. Otherwise, the
|
|
// environment variable value for OTEL_ATTRIBUTE_COUNT_LIMIT, or 128 if
|
|
// that is not set, is used.
|
|
Attrs int
|
|
// AttrValueLen is the maximum attribute value length allowed for a span.
|
|
//
|
|
// This is resolved from the environment variable value for the
|
|
// OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT key if it exists. Otherwise, the
|
|
// environment variable value for OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT, or -1
|
|
// if that is not set, is used.
|
|
AttrValueLen int
|
|
// Events is the number of allowed events for a span.
|
|
//
|
|
// This is resolved from the environment variable value for the
|
|
// OTEL_SPAN_EVENT_COUNT_LIMIT key, or 128 is used if that is not set.
|
|
Events int
|
|
// EventAttrs is the number of allowed attributes for a span event.
|
|
//
|
|
// The is resolved from the environment variable value for the
|
|
// OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT key, or 128 is used if that is not set.
|
|
EventAttrs int
|
|
// Links is the number of allowed Links for a span.
|
|
//
|
|
// This is resolved from the environment variable value for the
|
|
// OTEL_SPAN_LINK_COUNT_LIMIT, or 128 is used if that is not set.
|
|
Links int
|
|
// LinkAttrs is the number of allowed attributes for a span link.
|
|
//
|
|
// This is resolved from the environment variable value for the
|
|
// OTEL_LINK_ATTRIBUTE_COUNT_LIMIT, or 128 is used if that is not set.
|
|
LinkAttrs int
|
|
}
|
|
|
|
func newSpanLimits() spanLimits {
|
|
return spanLimits{
|
|
Attrs: firstEnv(
|
|
128,
|
|
"OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT",
|
|
"OTEL_ATTRIBUTE_COUNT_LIMIT",
|
|
),
|
|
AttrValueLen: firstEnv(
|
|
-1, // Unlimited.
|
|
"OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT",
|
|
"OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT",
|
|
),
|
|
Events: firstEnv(128, "OTEL_SPAN_EVENT_COUNT_LIMIT"),
|
|
EventAttrs: firstEnv(128, "OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT"),
|
|
Links: firstEnv(128, "OTEL_SPAN_LINK_COUNT_LIMIT"),
|
|
LinkAttrs: firstEnv(128, "OTEL_LINK_ATTRIBUTE_COUNT_LIMIT"),
|
|
}
|
|
}
|
|
|
|
// firstEnv returns the parsed integer value of the first matching environment
|
|
// variable from keys. The defaultVal is returned if the value is not an
|
|
// integer or no match is found.
|
|
func firstEnv(defaultVal int, keys ...string) int {
|
|
for _, key := range keys {
|
|
strV := os.Getenv(key)
|
|
if strV == "" {
|
|
continue
|
|
}
|
|
|
|
v, err := strconv.Atoi(strV)
|
|
if err == nil {
|
|
return v
|
|
}
|
|
slog.Warn(
|
|
"invalid limit environment variable",
|
|
"error", err,
|
|
"key", key,
|
|
"value", strV,
|
|
)
|
|
}
|
|
|
|
return defaultVal
|
|
}
|