diff --git a/Dockerfile.rhel b/Dockerfile.rhel
index f164cb187..529f2975a 100644
--- a/Dockerfile.rhel
+++ b/Dockerfile.rhel
@@ -1,15 +1,19 @@
FROM registry.ci.openshift.org/ocp/builder:rhel-9-golang-1.24-openshift-4.22 AS builder
WORKDIR /go/src/github.com/openshift/cluster-capi-operator
COPY . .
-RUN make clean build
+RUN make clean build && \
+ gzip bin/cluster-capi-operator-ext
FROM registry.ci.openshift.org/ocp/4.22:base-rhel9
COPY --from=builder /go/src/github.com/openshift/cluster-capi-operator/bin/capi-operator .
COPY --from=builder /go/src/github.com/openshift/cluster-capi-operator/bin/capi-controllers .
COPY --from=builder /go/src/github.com/openshift/cluster-capi-operator/bin/machine-api-migration .
COPY --from=builder /go/src/github.com/openshift/cluster-capi-operator/bin/crd-compatibility-checker .
+COPY --from=builder /go/src/github.com/openshift/cluster-capi-operator/bin/cluster-capi-operator-ext.gz .
COPY ./manifests /manifests
COPY ./capi-operator-manifests /capi-operator-manifests
-LABEL io.openshift.release.operator true
+LABEL io.k8s.display-name="OpenShift Cluster CAPI Operator" \
+ io.openshift.release.operator=true \
+ io.openshift.tags="openshift,tests,e2e,e2e-extension"
diff --git a/Makefile b/Makefile
index 644a32bd9..fcdb844bb 100644
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,7 @@ ifeq ($(HOME), /)
HOME = /tmp/kubebuilder-testing
endif
-.PHONY: help all verify test build operator migration manifests-gen ocp-manifests unit e2e run fmt vet lint vendor image push aws-cluster azure-cluster gcp-cluster powervs-cluster vsphere-cluster
+.PHONY: help all verify test build operator migration manifests-gen ocp-manifests tests-ext unit e2e run fmt vet lint vendor image push aws-cluster azure-cluster gcp-cluster powervs-cluster vsphere-cluster
.DEFAULT_GOAL := build
help: ## Display this help message
@@ -29,7 +29,7 @@ verify: fmt lint verify-ocp-manifests ## Run formatting and linting checks
test: verify unit ## Run verification and unit tests
-build: bin/capi-operator bin/capi-controllers bin/machine-api-migration bin/crd-compatibility-checker manifests-gen ## Build all binaries
+build: bin/capi-operator bin/capi-controllers bin/machine-api-migration bin/crd-compatibility-checker manifests-gen tests-ext ## Build all binaries
clean:
rm -rf bin/*
@@ -60,6 +60,9 @@ ocp-manifests: manifests-gen ## Generate admission policy profiles for image emb
bin/%: | bin/ FORCE
go build -o "$@" "./cmd/$*"
+tests-ext: | bin/ ## Build tests extension binary
+ cd openshift-tests-extension && go build -o ../bin/cluster-capi-operator-ext ./cmd
+
.PHONY: localtestenv
localtestenv: .localtestenv
@@ -69,7 +72,7 @@ localtestenv: .localtestenv
TEST_DIRS ?= ./pkg/... ./manifests-gen/...
unit: .localtestenv ## Run unit tests
- ./hack/test.sh "$(TEST_DIRS)" 20m
+ ./hack/test.sh "$(TEST_DIRS)" 30m
.PHONY: e2e
e2e: ## Run e2e tests against active kubeconfig
diff --git a/e2e/aws_test.go b/e2e/aws.go
similarity index 94%
rename from e2e/aws_test.go
rename to e2e/aws.go
index 973c3a489..a5c4fcdfb 100644
--- a/e2e/aws_test.go
+++ b/e2e/aws.go
@@ -27,7 +27,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"
)
-var _ = Describe("Cluster API AWS MachineSet", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][Feature:ClusterAPI][platform:aws][Disruptive] Cluster API AWS MachineSet", Ordered, Label("Conformance"), Label("Serial"), func() {
var (
awsMachineTemplate *awsv1.AWSMachineTemplate
machineSet *clusterv1.MachineSet
@@ -37,6 +37,7 @@ var _ = Describe("Cluster API AWS MachineSet", Ordered, func() {
)
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.AWSPlatformType {
Skip("Skipping AWS E2E tests")
}
diff --git a/e2e/azure_test.go b/e2e/azure.go
similarity index 96%
rename from e2e/azure_test.go
rename to e2e/azure.go
index 283239238..ebf4747cc 100644
--- a/e2e/azure_test.go
+++ b/e2e/azure.go
@@ -39,12 +39,13 @@ const (
capzManagerBootstrapCredentials = "capz-manager-bootstrap-credentials"
)
-var _ = Describe("Cluster API Azure MachineSet", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][Feature:ClusterAPI][platform:azure][Disruptive] Cluster API Azure MachineSet", Ordered, Label("Conformance"), Label("Serial"), func() {
var azureMachineTemplate *azurev1.AzureMachineTemplate
var machineSet *clusterv1.MachineSet
var mapiMachineSpec *mapiv1beta1.AzureMachineProviderSpec
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.AzurePlatformType {
Skip("Skipping Azure E2E tests")
}
@@ -114,7 +115,7 @@ func createAzureMachineTemplate(ctx context.Context, cl client.Client, mapiProvi
if mi := mapiProviderSpec.ManagedIdentity; mi != "" {
providerID := mi
if !strings.HasPrefix(mi, "/subscriptions/") {
- providerID = fmt.Sprintf("azure:///subscriptions/%s/resourcegroups/%s/providers/Microsoft.ManagedIdentity/userAssignedIdentities/%s", subscriptionID, mapiProviderSpec.ResourceGroup, mi)
+ providerID = fmt.Sprintf("azure:///subscriptions/%s/resourcegroups/%s/providers/Microsoft.ManagedIdentity/userAssignedIdentities/%s", string(subscriptionID), mapiProviderSpec.ResourceGroup, mi)
}
userAssignedIdentities = []azurev1.UserAssignedIdentity{{ProviderID: providerID}}
diff --git a/e2e/baremetal_test.go b/e2e/baremetal.go
similarity index 95%
rename from e2e/baremetal_test.go
rename to e2e/baremetal.go
index f0fb024a8..26839f95a 100644
--- a/e2e/baremetal_test.go
+++ b/e2e/baremetal.go
@@ -35,12 +35,13 @@ const (
baremetalMachineTemplateName = "baremetal-machine-template"
)
-var _ = Describe("Cluster API Baremetal MachineSet", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][Feature:ClusterAPI][platform:baremetal][Disruptive] Cluster API Baremetal MachineSet", Ordered, Label("Conformance"), Label("Serial"), func() {
var baremetalMachineTemplate *metal3v1.Metal3MachineTemplate
var machineSet *clusterv1.MachineSet
var mapiMachineSpec *bmv1alpha1.BareMetalMachineProviderSpec
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.BareMetalPlatformType {
Skip("Skipping Baremetal E2E tests")
}
diff --git a/e2e/gcp_test.go b/e2e/gcp.go
similarity index 96%
rename from e2e/gcp_test.go
rename to e2e/gcp.go
index 3e72ab58f..75ab7b590 100644
--- a/e2e/gcp_test.go
+++ b/e2e/gcp.go
@@ -35,12 +35,13 @@ const (
gcpMachineTemplateName = "gcp-machine-template"
)
-var _ = Describe("Cluster API GCP MachineSet", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][Feature:ClusterAPI][platform:gcp][Disruptive] Cluster API GCP MachineSet", Ordered, Label("Conformance"), Label("Serial"), func() {
var gcpMachineTemplate *gcpv1.GCPMachineTemplate
var machineSet *clusterv1.MachineSet
var mapiMachineSpec *mapiv1beta1.GCPMachineProviderSpec
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.GCPPlatformType {
Skip("Skipping GCP E2E tests")
}
diff --git a/e2e/go.mod b/e2e/go.mod
index ff79b2757..b8eeb6e7f 100644
--- a/e2e/go.mod
+++ b/e2e/go.mod
@@ -24,7 +24,7 @@ require (
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
sigs.k8s.io/cluster-api v1.11.3
sigs.k8s.io/cluster-api-provider-aws/v2 v2.10.0
- sigs.k8s.io/cluster-api-provider-azure v0.0.0-20251202084521-c2e0e38d1e0e
+ sigs.k8s.io/cluster-api-provider-azure v1.20.2
sigs.k8s.io/cluster-api-provider-gcp v1.11.0-beta.0
sigs.k8s.io/cluster-api-provider-ibmcloud v0.12.0
sigs.k8s.io/cluster-api-provider-openstack v0.13.1
diff --git a/e2e/machine_migration_capi_authoritative_test.go b/e2e/machine_migration_capi_authoritative.go
similarity index 98%
rename from e2e/machine_migration_capi_authoritative_test.go
rename to e2e/machine_migration_capi_authoritative.go
index bfd22d139..9dfc5b074 100644
--- a/e2e/machine_migration_capi_authoritative_test.go
+++ b/e2e/machine_migration_capi_authoritative.go
@@ -29,8 +29,9 @@ import (
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
)
-var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration] Machine Migration CAPI Authoritative Tests", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration][platform:aws][Disruptive] Machine Migration CAPI Authoritative Tests", Ordered, Label("Conformance"), Label("Serial"), func() {
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.AWSPlatformType {
Skip(fmt.Sprintf("Skipping tests on %s, this is only supported on AWS", platform))
}
@@ -90,7 +91,7 @@ var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration] Ma
cleanupMachineResources(
ctx,
cl,
- []*clusterv1.Machine{},
+ []*clusterv1.Machine{newCapiMachine},
[]*mapiv1beta1.Machine{newMapiMachine},
)
})
diff --git a/e2e/machine_migration_mapi_authoritative_test.go b/e2e/machine_migration_mapi_authoritative.go
similarity index 98%
rename from e2e/machine_migration_mapi_authoritative_test.go
rename to e2e/machine_migration_mapi_authoritative.go
index 0339947d9..885cdd1ae 100644
--- a/e2e/machine_migration_mapi_authoritative_test.go
+++ b/e2e/machine_migration_mapi_authoritative.go
@@ -29,8 +29,9 @@ import (
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
)
-var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration] Machine Migration MAPI Authoritative Tests", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration][platform:aws][Disruptive] Machine Migration MAPI Authoritative Tests", Ordered, Label("Conformance"), Label("Serial"), func() {
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.AWSPlatformType {
Skip(fmt.Sprintf("Skipping tests on %s, this is only supported on AWS", platform))
}
diff --git a/e2e/machineset_migration_capi_authoritative_test.go b/e2e/machineset_migration_capi_authoritative.go
similarity index 98%
rename from e2e/machineset_migration_capi_authoritative_test.go
rename to e2e/machineset_migration_capi_authoritative.go
index 813b86df8..48fbcf69d 100644
--- a/e2e/machineset_migration_capi_authoritative_test.go
+++ b/e2e/machineset_migration_capi_authoritative.go
@@ -28,8 +28,9 @@ import (
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
)
-var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration] MachineSet Migration CAPI Authoritative Tests", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration][platform:aws][Disruptive] MachineSet Migration CAPI Authoritative Tests", Ordered, Label("Conformance"), Label("Serial"), func() {
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.AWSPlatformType {
Skip(fmt.Sprintf("Skipping tests on %s, this is only supported on AWS", platform))
}
diff --git a/e2e/machineset_migration_mapi_authoritative_test.go b/e2e/machineset_migration_mapi_authoritative.go
similarity index 98%
rename from e2e/machineset_migration_mapi_authoritative_test.go
rename to e2e/machineset_migration_mapi_authoritative.go
index a5836151d..a786c8717 100644
--- a/e2e/machineset_migration_mapi_authoritative_test.go
+++ b/e2e/machineset_migration_mapi_authoritative.go
@@ -29,10 +29,11 @@ import (
"sigs.k8s.io/controller-runtime/pkg/envtest/komega"
)
-var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration] MachineSet Migration MAPI Authoritative Tests", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration][platform:aws][Disruptive] MachineSet Migration MAPI Authoritative Tests", Ordered, Label("Conformance"), Label("Serial"), func() {
var k komega.Komega
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.AWSPlatformType {
Skip(fmt.Sprintf("Skipping tests on %s, this is only supported on AWS", platform))
}
@@ -89,7 +90,7 @@ var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration] Ma
cleanupMachineSetTestResources(
ctx,
cl,
- []*clusterv1.MachineSet{},
+ []*clusterv1.MachineSet{capiMachineSet},
[]*awsv1.AWSMachineTemplate{awsMachineTemplate},
[]*mapiv1beta1.MachineSet{mapiMachineSet},
)
@@ -331,7 +332,7 @@ var _ = Describe("[sig-cluster-lifecycle][OCPFeatureGate:MachineAPIMigration] Ma
By("Verifying new InfraTemplate has the updated InstanceType")
var err error
newAWSMachineTemplate, err = getAWSMachineTemplateByPrefix(mapiMSAuthMAPIName, capiframework.CAPINamespace)
- Expect(err).ToNot(HaveOccurred(), "Failed to get new awsMachineTemplate %s", newAWSMachineTemplate)
+ Expect(err).ToNot(HaveOccurred(), "Failed to get new awsMachineTemplate %s", newAWSMachineTemplate)
Expect(newAWSMachineTemplate.Spec.Template.Spec.InstanceType).To(Equal(newInstanceType))
By("Verifying the old InfraTemplate is deleted")
diff --git a/e2e/powervs_test.go b/e2e/powervs.go
similarity index 96%
rename from e2e/powervs_test.go
rename to e2e/powervs.go
index 1279c6cfb..f80b0dbec 100644
--- a/e2e/powervs_test.go
+++ b/e2e/powervs.go
@@ -35,12 +35,13 @@ const (
powerVSMachineTemplateName = "powervs-machine-template"
)
-var _ = Describe("Cluster API IBMPowerVS MachineSet", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][Feature:ClusterAPI][platform:powervs][Disruptive] Cluster API IBMPowerVS MachineSet", Ordered, Label("Conformance"), Label("Serial"), func() {
var powerVSMachineTemplate *ibmpowervsv1.IBMPowerVSMachineTemplate
var machineSet *clusterv1.MachineSet
var mapiMachineSpec *mapiv1.PowerVSMachineProviderConfig
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.PowerVSPlatformType {
Skip("Skipping PowerVS E2E tests")
}
diff --git a/e2e/vsphere_test.go b/e2e/vsphere.go
similarity index 96%
rename from e2e/vsphere_test.go
rename to e2e/vsphere.go
index b7f251d08..11c145bd4 100644
--- a/e2e/vsphere_test.go
+++ b/e2e/vsphere.go
@@ -39,12 +39,13 @@ const (
vSphereCredentialsName = "vsphere-creds"
)
-var _ = Describe("Cluster API vSphere MachineSet", Ordered, func() {
+var _ = Describe("[sig-cluster-lifecycle][Feature:ClusterAPI][platform:vsphere][Disruptive] Cluster API vSphere MachineSet", Ordered, Label("Conformance"), Label("Serial"), func() {
var vSphereMachineTemplate *vspherev1.VSphereMachineTemplate
var machineSet *clusterv1.MachineSet
var mapiMachineSpec *mapiv1beta1.VSphereMachineProviderSpec
BeforeAll(func() {
+ InitCommonVariables()
if platform != configv1.VSpherePlatformType {
Skip("Skipping vSphere E2E tests")
}
@@ -170,7 +171,7 @@ func createVSphereMachineTemplate(cl client.Client, mapiProviderSpec *mapiv1beta
}
if err := cl.Create(ctx, vSphereMachineTemplate); err != nil && !apierrors.IsAlreadyExists(err) {
- Expect(err).ToNot(HaveOccurred(), "should not error creating the VSphere Cluster object")
+ Expect(err).ToNot(HaveOccurred(), "should not error creating the VSphereMachineTemplate object")
}
return vSphereMachineTemplate
diff --git a/go.mod b/go.mod
index 7879954ca..3145dab71 100644
--- a/go.mod
+++ b/go.mod
@@ -61,7 +61,7 @@ require (
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
sigs.k8s.io/cluster-api v1.11.3
sigs.k8s.io/cluster-api-provider-aws/v2 v2.10.0
- sigs.k8s.io/cluster-api-provider-azure v0.0.0-20251202084521-c2e0e38d1e0e
+ sigs.k8s.io/cluster-api-provider-azure v1.20.2
sigs.k8s.io/cluster-api-provider-gcp v1.11.0-beta.0
sigs.k8s.io/cluster-api-provider-ibmcloud v0.12.0
sigs.k8s.io/cluster-api-provider-openstack v0.13.1
@@ -344,9 +344,10 @@ require (
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
+ gotest.tools/v3 v3.4.0 // indirect
honnef.co/go/tools v0.6.1 // indirect
k8s.io/component-helpers v0.34.1 // indirect
- k8s.io/controller-manager v0.32.1 // indirect
+ k8s.io/controller-manager v0.32.2 // indirect
k8s.io/kube-aggregator v0.34.1 // indirect
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
k8s.io/kubelet v0.34.1 // indirect
diff --git a/go.sum b/go.sum
index 8466fd734..3794fbcb7 100644
--- a/go.sum
+++ b/go.sum
@@ -285,6 +285,7 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
@@ -778,6 +779,7 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -829,6 +831,7 @@ golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc
golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=
golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
@@ -880,8 +883,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
-gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
+gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
+gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI=
honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4=
k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
diff --git a/go.work b/go.work
index eb429a15f..81ab34b8d 100644
--- a/go.work
+++ b/go.work
@@ -5,6 +5,7 @@ use (
./e2e
./hack/tools
./manifests-gen
+ ./openshift-tests-extension
)
replace (
diff --git a/go.work.sum b/go.work.sum
index 810270228..fbca06014 100644
--- a/go.work.sum
+++ b/go.work.sum
@@ -1,4 +1,5 @@
al.essio.dev/pkg/shellescape v1.5.1/go.mod h1:6sIqp7X2P6mThCQ7twERpZTuigpr6KbZWtls1U8I890=
+buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.4-20250130201111-63bb56e20495.1/go.mod h1:novQBstnxcGpfKf8qGRATqn1anQKwMJIbH5Q581jibU=
cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg=
cel.dev/expr v0.16.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg=
cel.dev/expr v0.16.1/go.mod h1:AsGA5zb3WruAEQeQng1RZdGEXmBj0jvMWh6l5SnNuC8=
@@ -29,30 +30,30 @@ cloud.google.com/go v0.112.2/go.mod h1:iEqjp//KquGIJV/m+Pk3xecgKNhV+ry+vVTsy4TbD
cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U=
cloud.google.com/go v0.118.3/go.mod h1:Lhs3YLnBlwJ4KA6nuObNMZ/fCbOQBPuWKPoE0Wa/9Vc=
cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit64Q=
-cloud.google.com/go v0.120.1/go.mod h1:56Vs7sf/i2jYM6ZL9NYlC82r04PThNcPS5YgFmb0rp8=
-cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw=
+cloud.google.com/go v0.121.6/go.mod h1:coChdst4Ea5vUpiALcYKXEpR1S9ZgXbhEzzMcMR66vI=
cloud.google.com/go/accessapproval v1.8.6/go.mod h1:FfmTs7Emex5UvfnnpMkhuNkRCP85URnBFt5ClLxhZaQ=
cloud.google.com/go/accesscontextmanager v1.9.6/go.mod h1:884XHwy1AQpCX5Cj2VqYse77gfLaq9f8emE2bYriilk=
-cloud.google.com/go/ai v0.8.0/go.mod h1:t3Dfk4cM61sytiggo2UyGsDVW3RF1qGZaUKDrZFyqkE=
-cloud.google.com/go/aiplatform v1.85.0/go.mod h1:S4DIKz3TFLSt7ooF2aCRdAqsUR4v/YDXUoHqn5P0EFc=
-cloud.google.com/go/analytics v0.28.0/go.mod h1:hNT09bdzGB3HsL7DBhZkoPi4t5yzZPZROoFv+JzGR7I=
+cloud.google.com/go/aiplatform v1.89.0/go.mod h1:TzZtegPkinfXTtXVvZZpxx7noINFMVDrLkE7cEWhYEk=
+cloud.google.com/go/analytics v0.28.1/go.mod h1:iPaIVr5iXPB3JzkKPW1JddswksACRFl3NSHgVHsuYC4=
cloud.google.com/go/apigateway v1.7.6/go.mod h1:SiBx36VPjShaOCk8Emf63M2t2c1yF+I7mYZaId7OHiA=
cloud.google.com/go/apigeeconnect v1.7.6/go.mod h1:zqDhHY99YSn2li6OeEjFpAlhXYnXKl6DFb/fGu0ye2w=
cloud.google.com/go/apigeeregistry v0.9.6/go.mod h1:AFEepJBKPtGDfgabG2HWaLH453VVWWFFs3P4W00jbPs=
cloud.google.com/go/appengine v1.9.6/go.mod h1:jPp9T7Opvzl97qytaRGPwoH7pFI3GAcLDaui1K8PNjY=
cloud.google.com/go/area120 v0.9.6/go.mod h1:qKSokqe0iTmwBDA3tbLWonMEnh0pMAH4YxiceiHUed4=
cloud.google.com/go/artifactregistry v1.17.1/go.mod h1:06gLv5QwQPWtaudI2fWO37gfwwRUHwxm3gA8Fe568Hc=
-cloud.google.com/go/asset v1.21.0/go.mod h1:0lMJ0STdyImZDSCB8B3i/+lzIquLBpJ9KZ4pyRvzccM=
+cloud.google.com/go/asset v1.21.1/go.mod h1:7AzY1GCC+s1O73yzLM1IpHFLHz3ws2OigmCpOQHwebk=
cloud.google.com/go/assuredworkloads v1.12.6/go.mod h1:QyZHd7nH08fmZ+G4ElihV1zoZ7H0FQCpgS0YWtwjCKo=
cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w=
cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q=
-cloud.google.com/go/auth v0.14.0/go.mod h1:CYsoRL1PdiDuqeQpZE0bP2pnPrGqFcOkI0nldEQis+A=
cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8=
cloud.google.com/go/auth v0.16.0/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI=
cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI=
+cloud.google.com/go/auth v0.16.3/go.mod h1:NucRGjaXfzP1ltpcQ7On/VTZ0H4kWB5Jy+Y9Dnm76fA=
+cloud.google.com/go/auth v0.16.4/go.mod h1:j10ncYwjX/g3cdX7GpEzsdM+d+ZNsXAbb6qXA7p1Y5M=
+cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ=
+cloud.google.com/go/auth v0.17.0/go.mod h1:6wv/t5/6rOPAX4fJiRjKkJCvswLwdet7G8+UGXt7nCQ=
cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8=
-cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc=
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
cloud.google.com/go/automl v1.14.7/go.mod h1:8a4XbIH5pdvrReOU72oB+H3pOw2JBxo9XTk39oljObE=
cloud.google.com/go/baremetalsolution v1.3.6/go.mod h1:7/CS0LzpLccRGO0HL3q2Rofxas2JwjREKut414sE9iM=
@@ -64,7 +65,7 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/bigquery v1.67.0/go.mod h1:HQeP1AHFuAz0Y55heDSb0cjZIhnEkuwFRBGo6EEKHug=
+cloud.google.com/go/bigquery v1.69.0/go.mod h1:TdGLquA3h/mGg+McX+GsqG9afAzTAcldMjqhdjHTLew=
cloud.google.com/go/bigtable v1.37.0/go.mod h1:HXqddP6hduwzrtiTCqZPpj9ij4hGZb4Zy1WF/dT+yaU=
cloud.google.com/go/billing v1.20.4/go.mod h1:hBm7iUmGKGCnBm6Wp439YgEdt+OnefEq/Ib9SlJYxIU=
cloud.google.com/go/binaryauthorization v1.9.5/go.mod h1:CV5GkS2eiY461Bzv+OH3r5/AsuB6zny+MruRju3ccB8=
@@ -73,29 +74,33 @@ cloud.google.com/go/channel v1.19.5/go.mod h1:vevu+LK8Oy1Yuf7lcpDbkQQQm5I7oiY5fF
cloud.google.com/go/cloudbuild v1.22.2/go.mod h1:rPyXfINSgMqMZvuTk1DbZcbKYtvbYF/i9IXQ7eeEMIM=
cloud.google.com/go/clouddms v1.8.7/go.mod h1:DhWLd3nzHP8GoHkA6hOhso0R9Iou+IGggNqlVaq/KZ4=
cloud.google.com/go/cloudtasks v1.13.6/go.mod h1:/IDaQqGKMixD+ayM43CfsvWF2k36GeomEuy9gL4gLmU=
-cloud.google.com/go/compute v1.37.0/go.mod h1:AsK4VqrSyXBo4SMbRtfAO1VfaMjUEjEwv1UB/AwVp5Q=
-cloud.google.com/go/compute v1.39.0/go.mod h1:YhfR75WOZ7VbNPn9qWR95JKuDiJ2/yujYDpZqTnFHSo=
+cloud.google.com/go/compute v1.38.0/go.mod h1:oAFNIuXOmXbK/ssXm3z4nZB8ckPdjltJ7xhHCdbWFZM=
+cloud.google.com/go/compute v1.48.0/go.mod h1:1uoZvP8Avyfhe3Y4he7sMOR16ZiAm2Q+Rc2P5rrJM28=
cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
+cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg=
cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo=
+cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw=
+cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/contactcenterinsights v1.17.3/go.mod h1:7Uu2CpxS3f6XxhRdlEzYAkrChpR5P5QfcdGAFEdHOG8=
-cloud.google.com/go/container v1.42.4/go.mod h1:wf9lKc3ayWVbbV/IxKIDzT7E+1KQgzkzdxEJpj1pebE=
+cloud.google.com/go/container v1.43.0/go.mod h1:ETU9WZ1KM9ikEKLzrhRVao7KHtalDQu6aPqM34zDr/U=
+cloud.google.com/go/container v1.44.1/go.mod h1:eB6jUfJLjne9VsTDGcH7mnj6JyZK+KOUIA6KZnYE/ds=
cloud.google.com/go/containeranalysis v0.14.1/go.mod h1:28e+tlZgauWGHmEbnI5UfIsjMmrkoR1tFN0K2i71jBI=
cloud.google.com/go/datacatalog v1.26.0/go.mod h1:bLN2HLBAwB3kLTFT5ZKLHVPj/weNz6bR0c7nYp0LE14=
-cloud.google.com/go/dataflow v0.10.6/go.mod h1:Vi0pTYCVGPnM2hWOQRyErovqTu2xt2sr8Rp4ECACwUI=
-cloud.google.com/go/dataform v0.11.2/go.mod h1:IMmueJPEKpptT2ZLWlvIYjw6P/mYHHxA7/SUBiXqZUY=
+cloud.google.com/go/dataflow v0.11.0/go.mod h1:gNHC9fUjlV9miu0hd4oQaXibIuVYTQvZhMdPievKsPk=
+cloud.google.com/go/dataform v0.12.0/go.mod h1:PuDIEY0lSVuPrZqcFji1fmr5RRvz3DGz4YP/cONc8g4=
cloud.google.com/go/datafusion v1.8.6/go.mod h1:fCyKJF2zUKC+O3hc2F9ja5EUCAbT4zcH692z8HiFZFw=
cloud.google.com/go/datalabeling v0.9.6/go.mod h1:n7o4x0vtPensZOoFwFa4UfZgkSZm8Qs0Pg/T3kQjXSM=
-cloud.google.com/go/dataplex v1.25.2/go.mod h1:AH2/a7eCYvFP58scJGR7YlSY9qEhM8jq5IeOA/32IZ0=
+cloud.google.com/go/dataplex v1.25.3/go.mod h1:wOJXnOg6bem0tyslu4hZBTncfqcPNDpYGKzed3+bd+E=
cloud.google.com/go/dataproc/v2 v2.11.2/go.mod h1:xwukBjtfiO4vMEa1VdqyFLqJmcv7t3lo+PbLDcTEw+g=
-cloud.google.com/go/dataqna v0.9.6/go.mod h1:rjnNwjh8l3ZsvrANy6pWseBJL2/tJpCcBwJV8XCx4kU=
+cloud.google.com/go/dataqna v0.9.7/go.mod h1:4ac3r7zm7Wqm8NAc8sDIDM0v7Dz7d1e/1Ka1yMFanUM=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/datastore v1.20.0/go.mod h1:uFo3e+aEpRfHgtp5pp0+6M0o147KoPaYNaPAKpfh8Ew=
cloud.google.com/go/datastream v1.14.1/go.mod h1:JqMKXq/e0OMkEgfYe0nP+lDye5G2IhIlmencWxmesMo=
-cloud.google.com/go/deploy v1.27.1/go.mod h1:il2gxiMgV3AMlySoQYe54/xpgVDoEh185nj4XjJ+GRk=
+cloud.google.com/go/deploy v1.27.2/go.mod h1:4NHWE7ENry2A4O1i/4iAPfXHnJCZ01xckAKpZQwhg1M=
cloud.google.com/go/dialogflow v1.68.2/go.mod h1:E0Ocrhf5/nANZzBju8RX8rONf0PuIvz2fVj3XkbAhiY=
-cloud.google.com/go/dlp v1.22.1/go.mod h1:Gc7tGo1UJJTBRt4OvNQhm8XEQ0i9VidAiGXBVtsftjM=
+cloud.google.com/go/dlp v1.23.0/go.mod h1:vVT4RlyPMEMcVHexdPT6iMVac3seq3l6b8UPdYpgFrg=
cloud.google.com/go/documentai v1.37.0/go.mod h1:qAf3ewuIUJgvSHQmmUWvM3Ogsr5A16U2WPHmiJldvLA=
cloud.google.com/go/domains v0.10.6/go.mod h1:3xzG+hASKsVBA8dOPc4cIaoV3OdBHl1qgUpAvXK7pGY=
cloud.google.com/go/edgecontainer v1.4.3/go.mod h1:q9Ojw2ox0uhAvFisnfPRAXFTB1nfRIOIXVWzdXMZLcE=
@@ -105,32 +110,30 @@ cloud.google.com/go/eventarc v1.15.5/go.mod h1:vDCqGqyY7SRiickhEGt1Zhuj81Ya4F/Nt
cloud.google.com/go/filestore v1.10.2/go.mod h1:w0Pr8uQeSRQfCPRsL0sYKW6NKyooRgixCkV9yyLykR4=
cloud.google.com/go/firestore v1.18.0/go.mod h1:5ye0v48PhseZBdcl0qbl3uttu7FIEwEYVaWm0UIEOEU=
cloud.google.com/go/functions v1.19.6/go.mod h1:0G0RnIlbM4MJEycfbPZlCzSf2lPOjL7toLDwl+r0ZBw=
-cloud.google.com/go/gkebackup v1.7.0/go.mod h1:oPHXUc6X6tg6Zf/7QmKOfXOFaVzBEgMWpLDb4LqngWA=
+cloud.google.com/go/gkebackup v1.8.0/go.mod h1:FjsjNldDilC9MWKEHExnK3kKJyTDaSdO1vF0QeWSOPU=
cloud.google.com/go/gkeconnect v0.12.4/go.mod h1:bvpU9EbBpZnXGo3nqJ1pzbHWIfA9fYqgBMJ1VjxaZdk=
cloud.google.com/go/gkehub v0.15.6/go.mod h1:sRT0cOPAgI1jUJrS3gzwdYCJ1NEzVVwmnMKEwrS2QaM=
cloud.google.com/go/gkemulticloud v1.5.3/go.mod h1:KPFf+/RcfvmuScqwS9/2MF5exZAmXSuoSLPuaQ98Xlk=
cloud.google.com/go/gsuiteaddons v1.7.7/go.mod h1:zTGmmKG/GEBCONsvMOY2ckDiEsq3FN+lzWGUiXccF9o=
cloud.google.com/go/iam v1.2.2/go.mod h1:0Ys8ccaZHdI1dEUilwzqng/6ps2YB6vRsjIe00/+6JY=
cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE=
-cloud.google.com/go/iap v1.11.1/go.mod h1:qFipMJ4nOIv4yDHZxn31PiS8QxJJH2FlxgH9aFauejw=
+cloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=
+cloud.google.com/go/iap v1.11.2/go.mod h1:Bh99DMUpP5CitL9lK0BC8MYgjjYO4b3FbyhgW1VHJvg=
cloud.google.com/go/ids v1.5.6/go.mod h1:y3SGLmEf9KiwKsH7OHvYYVNIJAtXybqsD2z8gppsziQ=
cloud.google.com/go/iot v1.8.6/go.mod h1:MThnkiihNkMysWNeNje2Hp0GSOpEq2Wkb/DkBCVYa0U=
-cloud.google.com/go/kms v1.21.2/go.mod h1:8wkMtHV/9Z8mLXEXr1GK7xPSBdi6knuLXIhqjuWcI6w=
+cloud.google.com/go/kms v1.22.0/go.mod h1:U7mf8Sva5jpOb4bxYZdtw/9zsbIjrklYwPcvMk34AL8=
cloud.google.com/go/language v1.14.5/go.mod h1:nl2cyAVjcBct1Hk73tzxuKebk0t2eULFCaruhetdZIA=
cloud.google.com/go/lifesciences v0.10.6/go.mod h1:1nnZwaZcBThDujs9wXzECnd1S5d+UiDkPuJWAmhRi7Q=
cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA=
cloud.google.com/go/longrunning v0.5.6/go.mod h1:vUaDrWYOMKRuhiv6JBnn49YxCPz2Ayn9GqyjaBT8/mA=
-cloud.google.com/go/longrunning v0.6.4/go.mod h1:ttZpLCe6e7EXvn9OxpBRx7kZEB0efv8yBO6YnVMfhJs=
cloud.google.com/go/longrunning v0.6.6/go.mod h1:hyeGJUrPHcx0u2Uu1UFSoYZLn4lkMrccJig0t4FI7yw=
cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY=
cloud.google.com/go/managedidentities v1.7.6/go.mod h1:pYCWPaI1AvR8Q027Vtp+SFSM/VOVgbjBF4rxp1/z5p4=
-cloud.google.com/go/maps v1.20.4/go.mod h1:Act0Ws4HffrECH+pL8YYy1scdSLegov7+0c6gvKqRzI=
+cloud.google.com/go/maps v1.21.0/go.mod h1:cqzZ7+DWUKKbPTgqE+KuNQtiCRyg/o7WZF9zDQk+HQs=
cloud.google.com/go/mediatranslation v0.9.6/go.mod h1:WS3QmObhRtr2Xu5laJBQSsjnWFPPthsyetlOyT9fJvE=
cloud.google.com/go/memcache v1.11.6/go.mod h1:ZM6xr1mw3F8TWO+In7eq9rKlJc3jlX2MDt4+4H+/+cc=
-cloud.google.com/go/metastore v1.14.6/go.mod h1:iDbuGwlDr552EkWA5E1Y/4hHme3cLv3ZxArKHXjS2OU=
+cloud.google.com/go/metastore v1.14.7/go.mod h1:0dka99KQofeUgdfu+K/Jk1KeT9veWZlxuZdJpZPtuYU=
cloud.google.com/go/monitoring v1.21.2/go.mod h1:hS3pXvaG8KgWTSz+dAdyzPrGUYmi2Q+WFX8g2hqVEZU=
-cloud.google.com/go/monitoring v1.22.1/go.mod h1:AuZZXAoN0WWWfsSvET1Cpc4/1D8LXq8KRDU87fMS6XY=
-cloud.google.com/go/monitoring v1.24.0/go.mod h1:Bd1PRK5bmQBQNnuGwHBfUamAV1ys9049oEPHnn4pcsc=
cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U=
cloud.google.com/go/networkconnectivity v1.17.1/go.mod h1:DTZCq8POTkHgAlOAAEDQF3cMEr/B9k1ZbpklqvHEBtg=
cloud.google.com/go/networkmanagement v1.19.1/go.mod h1:icgk265dNnilxQzpr6rO9WuAuuCmUOqq9H6WBeM2Af4=
@@ -139,7 +142,7 @@ cloud.google.com/go/notebooks v1.12.6/go.mod h1:3Z4TMEqAKP3pu6DI/U+aEXrNJw9hGZIV
cloud.google.com/go/optimization v1.7.6/go.mod h1:4MeQslrSJGv+FY4rg0hnZBR/tBX2awJ1gXYp6jZpsYY=
cloud.google.com/go/orchestration v1.11.9/go.mod h1:KKXK67ROQaPt7AxUS1V/iK0Gs8yabn3bzJ1cLHw4XBg=
cloud.google.com/go/orgpolicy v1.15.0/go.mod h1:NTQLwgS8N5cJtdfK55tAnMGtvPSsy95JJhESwYHaJVs=
-cloud.google.com/go/osconfig v1.14.5/go.mod h1:XH+NjBVat41I/+xgQzKOJEhuC4xI7lX2INE5SWnVr9U=
+cloud.google.com/go/osconfig v1.14.6/go.mod h1:LS39HDBH0IJDFgOUkhSZUHFQzmcWaCpYXLrc3A4CVzI=
cloud.google.com/go/oslogin v1.14.6/go.mod h1:xEvcRZTkMXHfNSKdZ8adxD6wvRzeyAq3cQX3F3kbMRw=
cloud.google.com/go/phishingprotection v0.9.6/go.mod h1:VmuGg03DCI0wRp/FLSvNyjFj+J8V7+uITgHjCD/x4RQ=
cloud.google.com/go/policytroubleshooter v1.11.6/go.mod h1:jdjYGIveoYolk38Dm2JjS5mPkn8IjVqPsDHccTMu3mY=
@@ -155,16 +158,17 @@ cloud.google.com/go/recommendationengine v0.9.6/go.mod h1:nZnjKJu1vvoxbmuRvLB5Nw
cloud.google.com/go/recommender v1.13.5/go.mod h1:v7x/fzk38oC62TsN5Qkdpn0eoMBh610UgArJtDIgH/E=
cloud.google.com/go/redis v1.18.2/go.mod h1:q6mPRhLiR2uLf584Lcl4tsiRn0xiFlu6fnJLwCORMtY=
cloud.google.com/go/resourcemanager v1.10.6/go.mod h1:VqMoDQ03W4yZmxzLPrB+RuAoVkHDS5tFUUQUhOtnRTg=
+cloud.google.com/go/resourcemanager v1.10.7/go.mod h1:rScGkr6j2eFwxAjctvOP/8sqnEpDbQ9r5CKwKfomqjs=
cloud.google.com/go/resourcesettings v1.8.3/go.mod h1:BzgfXFHIWOOmHe6ZV9+r3OWfpHJgnqXy8jqwx4zTMLw=
-cloud.google.com/go/retail v1.20.0/go.mod h1:1CXWDZDJTOsK6lPjkv67gValP9+h1TMadTC9NpFFr9s=
-cloud.google.com/go/run v1.9.3/go.mod h1:Si9yDIkUGr5vsXE2QVSWFmAjJkv/O8s3tJ1eTxw3p1o=
+cloud.google.com/go/retail v1.21.0/go.mod h1:LuG+QvBdLfKfO+7nnF3eA3l1j4TQw3Sg+UqlUorquRc=
+cloud.google.com/go/run v1.10.0/go.mod h1:z7/ZidaHOCjdn5dV0eojRbD+p8RczMk3A7Qi2L+koHg=
cloud.google.com/go/scheduler v1.11.7/go.mod h1:gqYs8ndLx2M5D0oMJh48aGS630YYvC432tHCnVWN13s=
cloud.google.com/go/secretmanager v1.14.7/go.mod h1:uRuB4F6NTFbg0vLQ6HsT7PSsfbY7FqHbtJP1J94qxGc=
cloud.google.com/go/security v1.18.5/go.mod h1:D1wuUkDwGqTKD0Nv7d4Fn2Dc53POJSmO4tlg1K1iS7s=
cloud.google.com/go/securitycenter v1.36.2/go.mod h1:80ocoXS4SNWxmpqeEPhttYrmlQzCPVGaPzL3wVcoJvE=
cloud.google.com/go/servicedirectory v1.12.6/go.mod h1:OojC1KhOMDYC45oyTn3Mup08FY/S0Kj7I58dxUMMTpg=
cloud.google.com/go/shell v1.8.6/go.mod h1:GNbTWf1QA/eEtYa+kWSr+ef/XTCDkUzRpV3JPw0LqSk=
-cloud.google.com/go/spanner v1.80.0/go.mod h1:XQWUqx9r8Giw6gNh0Gu8xYfz7O+dAKouAkFCxG/mZC8=
+cloud.google.com/go/spanner v1.82.0/go.mod h1:BzybQHFQ/NqGxvE/M+/iU29xgutJf7Q85/4U9RWMto0=
cloud.google.com/go/speech v1.27.1/go.mod h1:efCfklHFL4Flxcdt9gpEMEJh9MupaBzw3QiSOVeJ6ck=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
@@ -173,17 +177,16 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
cloud.google.com/go/storage v1.49.0/go.mod h1:k1eHhhpLvrPjVGfo0mOUPEJ4Y2+a/Hv5PiwehZI9qGU=
-cloud.google.com/go/storage v1.50.0/go.mod h1:l7XeiD//vx5lfqE3RavfmU9yvk5Pp0Zhcv482poyafY=
-cloud.google.com/go/storage v1.53.0/go.mod h1:7/eO2a/srr9ImZW9k5uufcNahT2+fPb8w5it1i5boaA=
-cloud.google.com/go/storagetransfer v1.12.4/go.mod h1:p1xLKvpt78aQFRJ8lZGYArgFuL4wljFzitPZoYjl/8A=
+cloud.google.com/go/storage v1.56.0/go.mod h1:Tpuj6t4NweCLzlNbw9Z9iwxEkrSem20AetIeH/shgVU=
+cloud.google.com/go/storage v1.57.0/go.mod h1:329cwlpzALLgJuu8beyJ/uvQznDHpa2U5lGjWednkzg=
+cloud.google.com/go/storagetransfer v1.13.0/go.mod h1:+aov7guRxXBYgR3WCqedkyibbTICdQOiXOdpPcJCKl8=
cloud.google.com/go/talent v1.8.3/go.mod h1:oD3/BilJpJX8/ad8ZUAxlXHCslTg2YBbafFH3ciZSLQ=
-cloud.google.com/go/texttospeech v1.12.1/go.mod h1:f8vrD3OXAKTRr4eL0TPjZgYQhiN6ti/tKM3i1Uub5X0=
+cloud.google.com/go/texttospeech v1.13.0/go.mod h1:g/tW/m0VJnulGncDrAoad6WdELMTes8eb77Idz+4HCo=
cloud.google.com/go/tpu v1.8.3/go.mod h1:Do6Gq+/Jx6Xs3LcY2WhHyGwKDKVw++9jIJp+X+0rxRE=
-cloud.google.com/go/trace v1.11.3/go.mod h1:pt7zCYiDSQjC9Y2oqCsh9jF4GStB/hmjrYLsxRR27q8=
cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI=
cloud.google.com/go/translate v1.10.3/go.mod h1:GW0vC1qvPtd3pgtypCv4k4U8B7EdgK9/QEF2aJEUovs=
cloud.google.com/go/translate v1.12.5/go.mod h1:o/v+QG/bdtBV1d1edmtau0PwTfActvxPk/gtqdSDBi4=
-cloud.google.com/go/video v1.23.5/go.mod h1:ZSpGFCpfTOTmb1IkmHNGC/9yI3TjIa/vkkOKBDo0Vpo=
+cloud.google.com/go/video v1.24.0/go.mod h1:h6Bw4yUbGNEa9dH4qMtUMnj6cEf+OyOv/f2tb70G6Fk=
cloud.google.com/go/videointelligence v1.12.6/go.mod h1:/l34WMndN5/bt04lHodxiYchLVuWPQjCU6SaiTswrIw=
cloud.google.com/go/vision/v2 v2.9.5/go.mod h1:1SiNZPpypqZDbOzU052ZYRiyKjwOcyqgGgqQCI/nlx8=
cloud.google.com/go/vmmigration v1.8.6/go.mod h1:uZ6/KXmekwK3JmC8PzBM/cKQmq404TTfWtThF6bbf0U=
@@ -192,81 +195,79 @@ cloud.google.com/go/vpcaccess v1.8.6/go.mod h1:61yymNplV1hAbo8+kBOFO7Vs+4ZHYI244
cloud.google.com/go/webrisk v1.11.1/go.mod h1:+9SaepGg2lcp1p0pXuHyz3R2Yi2fHKKb4c1Q9y0qbtA=
cloud.google.com/go/websecurityscanner v1.7.6/go.mod h1:ucaaTO5JESFn5f2pjdX01wGbQ8D6h79KHrmO2uGZeiY=
cloud.google.com/go/workflows v1.14.2/go.mod h1:5nqKjMD+MsJs41sJhdVrETgvD5cOK3hUcAs8ygqYvXQ=
+cyphar.com/go-pathrs v0.2.1/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc=
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4=
github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk=
-github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0/go.mod h1:XCW7KnZet0Opnr7HccfUw1PLc4CjHqpcaxW8DHklNkQ=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.1/go.mod h1:zGqV2R4Cr/k8Uye5w+dgQ06WJtEcbQG/8J7BB6hnCr4=
+github.com/AlecAivazis/survey/v2 v2.2.15/go.mod h1:TH2kPCDU3Kqq7pLbnCWwZXDBjnhZtmsCle5EiYDJ2fg=
+github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2/go.mod h1:SqINnQ9lVVdRlyC8cd1lCI0SdX4n2paeABd2K8ggfnE=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.0/go.mod h1:J7MUC/wtRpfGVbQ5sIItY5/FuVWmvzlY21WAOfQnq/I=
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.0/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/authorization/armauthorization/v2 v2.2.0/go.mod h1:/pz8dyNQe+Ey3yBp/XuYz7oqX8YDNWVpPB0hH3XWfbc=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v6 v6.3.0/go.mod h1:CHo9QYhWEvrKVeXsEMJSl2bpmYYNu6aG12JsSaFBXlY=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerregistry/armcontainerregistry v1.2.0/go.mod h1:E7ltexgRDmeJ0fJWv0D/HLwY2xbDdN+uv+X2uZtOx3w=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 v4.8.0/go.mod h1:gYq8wyDgv6JLhGbAU6gg8amCPgQWRE+aCvrV2gyzdfs=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v6 v6.4.0/go.mod h1:jEpP2jjzNDVWS0Aay8nyoyVIK/MQBSX2NQv6r9FcVMk=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservicefleet/armcontainerservicefleet v1.2.0/go.mod h1:cRpu2cTog53IQ4d/KUwZxDnwoxcwxcSO+jllIiUdLkA=
-github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0/go.mod h1:fSvRkb8d26z9dbL40Uf/OO6Vo9iExtZK3D0ulRV+8M0=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 v3.1.0/go.mod h1:AW8VEadnhw9xox+VaVd9sP7NjzOAnaZBLRH6Tq3cJ38=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/keyvault/armkeyvault v1.5.0/go.mod h1:4YIVtzMFVsPwBvitCDX7J9sqthSj43QD1sP6fYc1egc=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/kubernetesconfiguration/armkubernetesconfiguration v1.1.1/go.mod h1:NLG7km6cZfoAnpkUypZQjAIIRADzps6vIusTTUE8rrE=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.11.0/go.mod h1:jj6P8ybImR+5topJ+eH6fgcemSFBmU6/6bFF8KkwuDI=
-github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/msi/armmsi v1.2.0/go.mod h1:rko9SzMxcMk0NJsNAxALEGaTYyy79bNRwxgJfrH0Spw=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/msi/armmsi v1.3.0/go.mod h1:Ms6gYEy0+A2knfKrwdatsggTXYA2+ICKug8w7STorFw=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0/go.mod h1:Y/HgrePTmGy9HjdSGTqZNa+apUpTVIEVKXJyARP2lrk=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6 v6.2.0/go.mod h1:ulHyBFJOI0ONiRL4vcJTmS7rx18jQQlEPmAgo80cRdM=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.3.0/go.mod h1:GE4m0rnnfwLGX0Y9A9A25Zx5N/90jneT5ABevqzhuFQ=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcehealth/armresourcehealth v1.3.0/go.mod h1:AN7AudLmrOvJlt7ormR1M5splG0TkZ4xyAqEIMIwTB0=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.7.0/go.mod h1:kJn8QL2DCyKnbDFMdi4SZiK0OOetns2eeKv+cJql0Yw=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1/go.mod h1:Ng3urmn6dYe8gnbCMoHHVl5APYz2txho3koEkV2o2HA=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.1/go.mod h1:hPv41DbqMmnxcGralanA/kVlfdH5jv3T4LxGku2E1BY=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1/go.mod h1:Vih/3yc6yac2JzU4hzpaDupBJP0Flaia9rXXrU8xyww=
-github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0/go.mod h1:cTvi54pg19DoT07ekoeMgE/taAwNtCShVeZqA+Iv2xI=
+github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.2/go.mod h1:vv5Ad0RrIoT1lJFdWBZwt4mB1+j+V8DUroixmKDTCdk=
github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel v0.4.0/go.mod h1:k4MMjrPHIEK+umaMGk1GNLgjEybJZ9mHSRDZ+sDFv3Y=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
-github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest/autorest v0.11.30/go.mod h1:t1kpPIOpIVX7annvothKvb0stsrXa37i7b+xpmBW8Fs=
-github.com/Azure/go-autorest/autorest/adal v0.9.24/go.mod h1:7T1+g0PYFmACYW5LlG2fcoPiPlFHjClyRGL7dRlP5c8=
-github.com/Azure/go-autorest/autorest/azure/auth v0.5.13/go.mod h1:5BAVfWLWXihP47vYrPuBKKf4cS0bXI+KM9Qx6ETDJYo=
-github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0=
-github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
-github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
-github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/Azure/msi-dataplane v0.4.3/go.mod h1:yAfxdJyvcnvSDfSyOFV9qm4fReEQDl+nZLGeH2ZWSmw=
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/GoogleCloudPlatform/k8s-cloud-provider v1.34.0/go.mod h1:Zl1a9zE67QrQpwIib8BlF7mv7FAVXQwJDKD6rAQk/jw=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM=
-github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0/go.mod h1:2bIszWvQRlJVmJLiuLhukLImRjKPcYdzzsx6darK02A=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk=
-github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0/go.mod h1:BnBReJLvVYx2CS/UHOgVz2BXKXD9wsQPxZug20nZhd0=
-github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0/go.mod h1:ZPpqegjbE99EPKsu3iUWV22A04wzGPcAY/ziSIQEEgs=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0/go.mod h1:jUZ5LYlw40WMd07qxcQJD5M40aUxrfwqQX1g7zxYnrQ=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE=
-github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0=
-github.com/IBM-Cloud/power-go-client v1.11.0/go.mod h1:UDyXeIKEp6r7yWUXYu3r0ZnFSlNZ2YeQTHwM2Tmlgv0=
-github.com/IBM/ibm-cos-sdk-go v1.12.2/go.mod h1:ODYcmrmdpjo5hVguq9RbD6xmC8xb1XZMG7NefUbJNcc=
-github.com/IBM/networking-go-sdk v0.51.4/go.mod h1:gjCFEp+UVP7FUlcq2C1RaoZAXFcD39CQdlUk7uVKko4=
-github.com/IBM/platform-services-go-sdk v0.81.0/go.mod h1:XOowH+JnIih3FA7uilLVM/9VH7XgCmJ4T/i6eZi7gkw=
+github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0/go.mod h1:cSgYe11MCNYunTnRXrKiR/tHc0eoKjICUuWpNZoVCOo=
+github.com/IBM-Cloud/power-go-client v1.12.0/go.mod h1:SpTK1ttW8bfMNUVQS8qOEuWn2KOkzaCLyzfze8MG1JE=
+github.com/IBM/go-sdk-core/v5 v5.20.1/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw=
+github.com/IBM/ibm-cos-sdk-go v1.12.3/go.mod h1:dt13UIqJRgfGIlSNlnf17JmAXlBXhfTgXLKV3as8ABk=
+github.com/IBM/networking-go-sdk v0.51.11/go.mod h1:TAXWyBUk3C3R7aS1m84EfKdnDcBMZMAClwLfDj/SYZc=
+github.com/IBM/platform-services-go-sdk v0.86.1/go.mod h1:aGD045m6I8pfcB77wft8w2cHqWOJjcM3YSSV55BX0Js=
github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA=
-github.com/Khan/genqlient v0.7.0/go.mod h1:HNyy3wZvuYwmW3Y7mkoQLZsa/R5n5yIRajS1kPBvSFM=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
+github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
+github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
+github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0=
github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Microsoft/hnslib v0.1.1/go.mod h1:DRQR4IjLae6WHYVhW7uqe44hmFUiNhmaWA+jwMbz5tM=
+github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc=
+github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g=
+github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/RangelReale/osincli v0.0.0-20160924135400-fababb0555f2/go.mod h1:XyjUkMA8GN+tOOPXvnbi3XuRxWFvTJntqvTFnjmhzbk=
-github.com/Venafi/vcert/v5 v5.8.0/go.mod h1:m6SvhAmCq/j9/4RKa6uD70Wcbjdsg2kcBKjx7TsZuiM=
-github.com/ahmetb/gen-crd-api-reference-docs v0.3.0/go.mod h1:TdjdkYhlOifCQWPs1UdTma97kQQMozf5h26hTuG70u8=
+github.com/a8m/tree v0.0.0-20240104212747-2c8764a5f17e/go.mod h1:j5astEcUkZQX8lK+KKlQ3NRQ50f4EE8ZjyZpCz3mrH4=
+github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ=
github.com/ajeddeloh/go-json v0.0.0-20160803184958-73d058cf8437/go.mod h1:otnto4/Icqn88WCcM4bhIJNSgsh9VLBuspyyCfvof9c=
github.com/ajeddeloh/go-json v0.0.0-20200220154158-5ae607161559/go.mod h1:otnto4/Icqn88WCcM4bhIJNSgsh9VLBuspyyCfvof9c=
-github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2/go.mod h1:QlXr/TrICfQ/ANa76sLeQyhAJyNR9sEcfNuZBkY9jgY=
github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
@@ -277,23 +278,23 @@ github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15/go.mod h1:OMCwj8V
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
github.com/alessio/shellescape v1.4.2/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
+github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM=
+github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM=
github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
-github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
github.com/aws/amazon-vpc-cni-k8s v1.15.5/go.mod h1:jV4wNtmgT2Ra1/oZU99DPOFsCUKnf0mYfIyzDyAUVAY=
github.com/aws/aws-lambda-go v1.41.0/go.mod h1:jwFe2KmMsHmffA1X2R09hH6lFzJQxzI8qK17ewzbQMM=
github.com/aws/aws-sdk-go v1.8.39/go.mod h1:ZRmQr0FajVIyZ4ZzBYKG5P3ZqPz9IHG41ZoMu1ADI3k=
-github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
-github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.0/go.mod h1:/mXlTIVG9jbxkqDnr5UQNQxW1HRYxeGklkM9vAFeabg=
-github.com/aws/aws-sdk-go-v2/config v1.31.0/go.mod h1:VeV3K72nXnhbe4EuxxhzsDc/ByrCSlZwUnWH52Nde/I=
-github.com/aws/aws-sdk-go-v2/credentials v1.18.4/go.mod h1:nwg78FjH2qvsRM1EVZlX9WuGUJOL5od+0qvm0adEzHk=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3/go.mod h1:R7BIi6WNC5mc1kfRM7XM/VHC3uRWkjc396sfabq4iOo=
-github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.18.4/go.mod h1:JAet9FsBHjfdI+TnMBX4ModNNaQHAd3dc/Bk+cNsxeM=
+github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1/go.mod h1:ddqbooRZYNoJ2dsTwOty16rM+/Aqmk/GOXrK8cg7V00=
+github.com/aws/aws-sdk-go-v2/config v1.31.12/go.mod h1:/MM0dyD7KSDPR+39p9ZNVKaHDLb9qnfDurvVS2KAhN8=
+github.com/aws/aws-sdk-go-v2/credentials v1.18.16/go.mod h1:qQMtGx9OSw7ty1yLclzLxXCRbrkjWAM7JnObZjmCB7I=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9/go.mod h1:IKlKfRppK2a1y0gy1yH6zD+yX5uplJ6UuPlgd48dJiQ=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.12/go.mod h1:f5pL4iLDfbcxj1SZcdRdIokBB5eHbuYPS/Fs9DwUPRQ=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
-github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.3/go.mod h1:b9F9tk2HdHpbf3xbN7rUZcfmJI26N6NcJu/8OsBFI/0=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.9/go.mod h1:LGEP6EK4nj+bwWNdrvX/FnDTFowdBNwcSPuZu/ouFys=
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.52.4/go.mod h1:CDqMoc3KRdZJ8qziW96J35lKH01Wq3B2aihtHj2JbRs=
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.50.0/go.mod h1:/v2KYdCW4BaHKayenaWEXOOdxItIwEA3oU0XzuQY3F0=
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.52.0/go.mod h1:TSIIBxkIwUawJ9JyiymBksYZYsvIv8GIF2DkrlcTc5o=
@@ -304,44 +305,37 @@ github.com/aws/aws-sdk-go-v2/service/eks v1.64.0/go.mod h1:v1xXy6ea0PHtWkjFUvAUh
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.29.6/go.mod h1:N4fs285CsnBHlAkzBpQapefR/noggTyF09fWs72EzB4=
github.com/aws/aws-sdk-go-v2/service/eventbridge v1.39.3/go.mod h1:sIrUII6Z+hAVAgcpmsc2e9HvEr++m/v8aBPT7s4ZYUk=
github.com/aws/aws-sdk-go-v2/service/iam v1.32.0/go.mod h1:aXWImQV0uTW35LM0A/T4wEg6R1/ReXUu4SM6/lUHYK0=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44=
-github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.3/go.mod h1:7ryVb78GLCnjq7cw45N6oUb9REl7/vNUwjvIqC5UgdY=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3/go.mod h1:O5ROz8jHiOAKAwx179v+7sHMhfobFVi6nZt8DEyiYoM=
-github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.3/go.mod h1:zkpvBTsR020VVr8TOrwK2TrUW9pOir28sH5ECHpnAfo=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8=
+github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.0/go.mod h1:IWjQYlqw4EX9jw2g3qnEPPWvCE6bS8fKzhMed1OK7c8=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9/go.mod h1:dB12CEbNWPbzO2uC6QSWHteqOg4JfBVJOojbAoAUb5I=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9/go.mod h1:/G58M2fGszCrOzvJUkDdY8O9kycodunH4VdT5oBAqls=
github.com/aws/aws-sdk-go-v2/service/organizations v1.27.3/go.mod h1:hUHSXe9HFEmLfHrXndAX5e69rv0nBsg22VuNQYl0JLM=
github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.26.6/go.mod h1:Z4xLt5mXspLKjBV92i165wAJ/3T6TIv4n7RtIS8pWV0=
-github.com/aws/aws-sdk-go-v2/service/route53 v1.44.0/go.mod h1:l2ABSKg3AibEJeR/l60cfeGU54UqF3VTgd51pq+vYhU=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.87.0/go.mod h1:t9MDi29H+HDbkolTSQtbI0HP9DemAWQzUjmWC7LGMnE=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.88.4/go.mod h1:6v8ukAxc7z4x4oBjGUsLnH7KGLY9Uhcgij19UJNkiMg=
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.28.6/go.mod h1:3Ba++UwWd154xtP4FRX5pUK3Gt4up5sDHCve6kVfE+g=
github.com/aws/aws-sdk-go-v2/service/servicequotas v1.21.4/go.mod h1:plXue/Zg49kU3uU6WwfCWgRR5SRINNiJf03Y/UhYOhU=
github.com/aws/aws-sdk-go-v2/service/sqs v1.38.8/go.mod h1:IzNt/udsXlETCdvBOL0nmyMe2t9cGmXmZgsdoZGYYhI=
github.com/aws/aws-sdk-go-v2/service/ssm v1.59.1/go.mod h1:PUWUl5MDiYNQkUHN9Pyd9kgtA/YhbxnSnHP+yQqzrM8=
-github.com/aws/aws-sdk-go-v2/service/sso v1.28.0/go.mod h1:iS5OmxEcN4QIPXARGhavH7S8kETNL11kym6jhoS7IUQ=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0/go.mod h1:59qHWaY5B+Rs7HGTuVGaC32m0rdpQ68N8QCN3khYiqs=
-github.com/aws/aws-sdk-go-v2/service/sts v1.37.0/go.mod h1:JdeBDPgpJfuS6rU/hNglmOigKhyEZtBmbraLE4GK1J8=
+github.com/aws/aws-sdk-go-v2/service/sso v1.29.6/go.mod h1:5PfYspyCU5Vw1wNPsxi15LZovOnULudOQuVxphSflQA=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1/go.mod h1:xBEjWD13h+6nq+z4AkqSfSvqRKFgDIQeaMguAJndOWo=
+github.com/aws/aws-sdk-go-v2/service/sts v1.38.6/go.mod h1:WtKK+ppze5yKPkZ0XwqIVWD4beCwv056ZbPQNoeHqM8=
github.com/awslabs/goformation/v4 v4.19.5/go.mod h1:JoNpnVCBOUtEz9bFxc9sjy8uBUCLF5c4D1L7RhRTVM8=
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
-github.com/beevik/etree v1.5.0/go.mod h1:gPNJNaBGVZ9AwsidazFZyygnd+0pAU38N4D+WemwKNs=
+github.com/beevik/etree v1.6.0/go.mod h1:bh4zJxiIr62SOf9pRzN7UUYaEDa9HEKafK25+sLc0Gc=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/briandowns/spinner v1.11.1/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ=
+github.com/bufbuild/protovalidate-go v0.9.1/go.mod h1:5jptBxfvlY51RhX32zR6875JfPBRXUsQjyZjm/NqkLQ=
+github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
+github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA=
-github.com/checkpoint-restore/go-criu/v6 v6.3.0/go.mod h1:rrRTN/uSwY2X+BPRl/gkulo9gsKOSAeVp9/K2tv7xZI=
-github.com/chrischdi/cluster-api-actuator-pkg v0.0.0-20251203131133-74d90ddd23c9 h1:19ehFcHnoVhq4hjK4tb08iWcKcHPvWYHHqzySGA9rFg=
-github.com/chrischdi/cluster-api-actuator-pkg v0.0.0-20251203131133-74d90ddd23c9/go.mod h1:D4Au/NRxORRuJa+/4W6O0WpvPyT+U/2aMOWeMsNZAnE=
-github.com/chrischdi/cluster-api-actuator-pkg v0.0.0-20251211141525-c707612472dc h1:h7uwUlnI+v5yciU5r21oYAo1Z6Hv6spqmjJ+6Iy6zxo=
-github.com/chrischdi/cluster-api-actuator-pkg v0.0.0-20251211141525-c707612472dc/go.mod h1:D4Au/NRxORRuJa+/4W6O0WpvPyT+U/2aMOWeMsNZAnE=
-github.com/chrischdi/cluster-api-actuator-pkg/testutils v0.0.0-20251203131133-74d90ddd23c9 h1:2SfsbUF1HKHukGIX+qdA2hLfq7AA9vBYMchCu7lYzLU=
-github.com/chrischdi/cluster-api-actuator-pkg/testutils v0.0.0-20251203131133-74d90ddd23c9/go.mod h1:Ahm3XvgKKIyKKYCG3oX2w7bE7twCT2kG71ykwwxUh18=
-github.com/chrischdi/cluster-api-actuator-pkg/testutils v0.0.0-20251211141525-c707612472dc h1:Y9FjRm7lYrFpo2tZ8+IoD71anCZPumyF/M/xogxtGo8=
-github.com/chrischdi/cluster-api-actuator-pkg/testutils v0.0.0-20251211141525-c707612472dc/go.mod h1:Ahm3XvgKKIyKKYCG3oX2w7bE7twCT2kG71ykwwxUh18=
github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs=
github.com/chromedp/chromedp v0.9.2/go.mod h1:LkSXJKONWTCHAfQasKFUZI+mxqS4tZqhmtGzzhLsnLs=
github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww=
@@ -351,16 +345,18 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P
github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
-github.com/cilium/ebpf v0.16.0/go.mod h1:L7u2Blt2jMM/vLAVgjxluxtBKlz3/GWjB0dMOEngfwE=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
+github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
+github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
-github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
+github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
+github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
github.com/container-storage-interface/spec v1.9.0/go.mod h1:ZfDu+3ZRyeVqxZM0Ds19MVLkN2d1XJ5MAfi1L3VjlT0=
-github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
github.com/containerd/containerd/api v1.8.0/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc=
github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
@@ -369,43 +365,43 @@ github.com/containerd/ttrpc v1.2.6/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQ
github.com/containerd/typeurl/v2 v2.2.2/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=
github.com/containers/libhvee v0.10.0/go.mod h1:at0h8lRcK5jCKfQgU/e6Io0Mw12F36zRLjXVOXRoDTM=
github.com/coredns/caddy v1.1.1/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4=
-github.com/coredns/corefile-migration v1.0.26/go.mod h1:56DPqONc3njpVPsdilEnfijCwNGC3/kTJLl7i7SPavY=
+github.com/coredns/corefile-migration v1.0.29/go.mod h1:56DPqONc3njpVPsdilEnfijCwNGC3/kTJLl7i7SPavY=
github.com/coreos/go-json v0.0.0-20230131223807-18775e0fb4fb/go.mod h1:rcFZM3uxVvdyNmsAV2jopgPD1cs5SPWJWU5dOz2LUnw=
github.com/coreos/go-oidc v2.3.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
github.com/coreos/go-semver v0.1.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd v0.0.0-20181031085051-9002847aa142/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU=
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/coreos/ignition v0.35.0/go.mod h1:WJQapxzEn9DE0ryxsGvm8QnBajm/XsS/PkrDqSpz+bA=
-github.com/coreos/ignition/v2 v2.16.2/go.mod h1:Y1BKC60VSNgA5oWNoLIHXigpFX1FFn4CVeimmsI+Bhg=
-github.com/coreos/ignition/v2 v2.21.0/go.mod h1:axhFZ3jEgXBjKtKp0rSMv2li0Rt43rasp5hS9uyYjco=
+github.com/coreos/ignition/v2 v2.22.0/go.mod h1:renvkPY1eRngVQvDFjQai+/EHPXEVb4VO3v5tcERfZ8=
+github.com/coreos/ignition/v2 v2.24.0/go.mod h1:HelGgFZ1WZ4ZPOIDS0a06A2JTdbbdAine5r3AkSYz5s=
github.com/coreos/vcontext v0.0.0-20230201181013-d72178a18687/go.mod h1:Salmysdw7DAVuobBW/LwsKKgpyCPHUhjyJoMJD+ZJiI=
-github.com/cpu/goacmedns v0.1.1/go.mod h1:MuaouqEhPAHxsbqjgnck5zeghuwBP1dLnPoobeGqugQ=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
+github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ=
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
+github.com/cyphar/filepath-securejoin v0.6.0/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc=
github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec=
-github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
-github.com/digitalocean/godo v1.125.0/go.mod h1:PU8JB6I1XYkQIdHFop8lLAY9ojp6M0XcU0TWaQSxbrc=
-github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
+github.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8=
github.com/distribution/distribution/v3 v3.0.0-20230511163743-f7717b7855ca/go.mod h1:t1IxPNGdTGez+YGKyJyQrtSSqisfMIm1hnFhvMPlxtE=
-github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
-github.com/docker/docker v28.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v27.1.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/dougm/pretty v0.0.0-20160325215624-add1dbc86daf/go.mod h1:7NQ3kWOx2cZOSjtcveTa5nqupVr2s6/83sG+rTlI7uA=
github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
-github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
@@ -421,10 +417,15 @@ github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZ
github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4=
github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU=
github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw=
+github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ=
+github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc=
github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
+github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
+github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=
github.com/felixge/fgprof v0.9.4/go.mod h1:yKl+ERSa++RYOs32d8K6WEXCB4uXdLls4ZaZPpayhMM=
github.com/flatcar/container-linux-config-transpiler v0.9.4/go.mod h1:LxanhPvXkWgHG9PrkT4rX/p7YhUPdDGGsUdkNpV3L5U=
@@ -432,45 +433,43 @@ github.com/flatcar/ignition v0.36.2/go.mod h1:uk1tpzLFRXus4RrvzgMI+IqmmB8a/RGFSB
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-asn1-ber/asn1-ber v1.5.4/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
-github.com/go-asn1-ber/asn1-ber v1.5.6/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
+github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a/go.mod h1:I79BieaU4fxrw4LMXby6q5OS9XnoR9UIKLOzDFjUmuw=
github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
-github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc=
github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA=
+github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA=
+github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
-github.com/go-ldap/ldap/v3 v3.4.3/go.mod h1:7LdHfVt6iIOESVEe3Bs4Jp2sHEKgDeduAhgM1/f9qmo=
-github.com/go-ldap/ldap/v3 v3.4.8/go.mod h1:qS3Sjlu76eHfHGpUdWkAXQTw4beih+cHsco2jXlIXrk=
+github.com/go-ldap/ldap/v3 v3.4.11/go.mod h1:bY7t0FLK8OAVpp/vV6sSlpz3EQDGcQwc8pF0ujLgKvM=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
-github.com/go-openapi/analysis v0.21.5/go.mod h1:25YcZosX9Lwz2wBsrFrrsL8bmjjXdlyP6zsr2AMy29M=
+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo=
+github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE=
github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
+github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/jsonreference v0.20.3/go.mod h1:FviDZ46i9ivh810gqzFLl5NttD5q3tSlMLqLr6okedM=
-github.com/go-openapi/loads v0.21.3/go.mod h1:Y3aMR24iHbKHppOj91nQ/SHc0cuPbAr4ndY4a02xydc=
-github.com/go-openapi/runtime v0.26.2/go.mod h1:O034jyRZ557uJKzngbMDJXkcKJVzXJiymdSfgejrcRw=
-github.com/go-openapi/spec v0.20.12/go.mod h1:iSCgnBcwbMW9SfzJb8iYynXvcY6C/QFrI7otzF7xGM4=
+github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs=
+github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc=
+github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk=
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
-github.com/go-openapi/validate v0.22.4/go.mod h1:qm6O8ZIcPVdSY5219468Jv7kBdGvkiZLPOmqnqTUZ2A=
-github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
+github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
+github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
@@ -479,12 +478,11 @@ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
+github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
+github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
-github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
-github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -497,6 +495,7 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
+github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -515,7 +514,6 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golangci/modinfo v0.3.4/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM=
github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc=
github.com/gonum/floats v0.0.0-20181209220543-c233463c7e82/go.mod h1:PxC8OnwL11+aosOB5+iEPoV3picfs8tUpkVd0pDo+Kg=
github.com/gonum/graph v0.0.0-20170401004347-50b27dea7ebb/go.mod h1:ye018NnX1zrbOLqwBvs2HqyyTouQgnL8C+qzYk1snPY=
@@ -524,21 +522,22 @@ github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9/go.mod h1:XA3DeT6rxh2
github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9/go.mod h1:0EXg4mc1CNP0HCqCz+K4ts155PXIlUywf0wqN+GfPZw=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
github.com/google/cadvisor v0.52.1/go.mod h1:OAhPcx1nOm5YwMh/JhpUOMKyv1YKLRtS9KgzWPndHmA=
+github.com/google/cel-go v0.17.8/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY=
github.com/google/cel-go v0.22.0/go.mod h1:BuznPXXfQDpXKWQ9sPW3TzlAJN5zzFe+i9tIs0yC4s8=
-github.com/google/generative-ai-go v0.19.0/go.mod h1:JYolL13VG7j79kM5BtHz4qwONHkeJQzOCkKXnpqtS/E=
-github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ=
+github.com/google/cel-go v0.23.0/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx1J5Wwo=
github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
-github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao=
github.com/google/go-pkcs11 v0.3.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY=
+github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/goexpect v0.0.0-20210430020637-ab937bf7fd6f/go.mod h1:n1ej5+FqyEytMt/mugVDZLIiqTMO+vsrgY+kM6ohzN0=
github.com/google/goterm v0.0.0-20190703233501-fc88cf888a3f/go.mod h1:nOFQdrUlIlx6M6ODdSpBj1NVA+VgLC6kmw60mkw34H4=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
@@ -557,14 +556,16 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
+github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo=
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo=
+github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/renameio/v2 v2.0.0/go.mod h1:BtmJXm5YlszgC+TD4HOEEUFgkJP3nLxehU6hfe7jRt4=
github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
-github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2/go.mod h1:Tv1PlzqC9t8wNnpPdctvtSUOPUUg4SHeE6vR1Ir2hmg=
+github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -577,36 +578,29 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m
github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA=
github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w=
+github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc=
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
-github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w=
-github.com/gophercloud/utils/v2 v2.0.0-20241209100706-e3a3b7c07d26/go.mod h1:7SHUbtoiSYINNKgAVxse+PMhIio05IK7shHy8DVRaN0=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk=
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
-github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
+github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
-github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
-github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
-github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0=
-github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=
-github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=
-github.com/hashicorp/vault/api v1.15.0/go.mod h1:+5YTO09JGn0u+b6ySD/LLVf8WkJCPLAL2Vkmrn2+CM8=
-github.com/hashicorp/vault/sdk v0.14.0/go.mod h1:3hnGK5yjx3CW2hFyk+Dw1jDgKxdBvUvjyxMHhq0oUFc=
+github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
@@ -615,20 +609,56 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:
github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
+github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
+github.com/itchyny/gojq v0.12.9/go.mod h1:T4Ip7AETUXeGpD+436m+UEl3m3tokRgajd5pRfsR5oE=
+github.com/itchyny/timefmt-go v0.1.4/go.mod h1:nEP7L+2YmAbT2kZ2HfSs1d8Xtw9LY8D2stDBckWakZ8=
+github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
+github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
+github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
+github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA=
+github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE=
+github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s=
+github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o=
+github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY=
+github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI=
+github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM=
+github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
+github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
+github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c=
+github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
+github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
+github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA=
+github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg=
+github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
+github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
+github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
-github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA=
-github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
+github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
+github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
+github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
+github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
+github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM=
+github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
+github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
+github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
+github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
+github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs=
+github.com/jackc/pgx/v4 v4.18.3/go.mod h1:Ey4Oru5tH5sB6tV7hDmfWFahwF15Eb7DNXlRKx2CkVw=
+github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jessevdk/go-flags v1.6.1/go.mod h1:Mk8T1hIAWpOiJiHa9rJASDK2UGWji0EuPGBnNLMooyc=
-github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0=
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
-github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
+github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
@@ -638,29 +668,40 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/k-orc/openstack-resource-controller v1.0.2/go.mod h1:b/OqZ55qhUAgD70zIaRcYzX1HtTspVFBKNz6dpKM3IA=
github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk=
+github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k=
+github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA=
+github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs=
-github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc=
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
-github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM=
-github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk=
-github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
-github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
+github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
@@ -668,19 +709,19 @@ github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfr
github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA=
github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE=
github.com/metal3-io/baremetal-operator v0.5.1 h1:vdMML8rm4bYcUmDijzB+ZtQFa9nXg9I4M//LuFzzmoQ=
-github.com/metal3-io/baremetal-operator v0.5.1/go.mod h1:fpapkmTjJIgPIweLnFj6IorXbOudCZmkrO7Lda9JMac=
-github.com/mgechev/dots v0.0.0-20210922191527-e955255bf517/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg=
-github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
-github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ=
+github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
+github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
+github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
-github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
+github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs=
github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4=
-github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=
+github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko=
+github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=
github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28=
github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
@@ -689,8 +730,6 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwd
github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
-github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s=
-github.com/mrunalp/fileutils v0.5.1/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
@@ -700,46 +739,48 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E=
-github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To=
-github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.12.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY=
github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0=
+github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc=
github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
+github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
-github.com/opencontainers/cgroups v0.0.1/go.mod h1:s8lktyhlGUqM7OSRL5P7eAW6Wb+kWPNvt4qvVfzA5vs=
+github.com/opencontainers/cgroups v0.0.3/go.mod h1:s8lktyhlGUqM7OSRL5P7eAW6Wb+kWPNvt4qvVfzA5vs=
github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
-github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
-github.com/opencontainers/runc v1.1.13/go.mod h1:R016aXacfp/gwQBYw2FDGa9m+n6atbLWrYY8hNMT/sA=
github.com/opencontainers/runc v1.2.5/go.mod h1:dOQeFo29xZKBNeRBI0B19mJtfHv68YgCTh1X+YphA+4=
github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
-github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
-github.com/openshift-eng/openshift-tests-extension v0.0.0-20250711173707-dc2a20e5a5f8/go.mod h1:6gkP5f2HL0meusT0Aim8icAspcD1cG055xxBZ9yC68M=
-github.com/openshift-online/ocm-common v0.0.29/go.mod h1:VEkuZp9aqbXtetZ5ycND6QpvhykvTuBF3oPsVM1X3vI=
-github.com/openshift-online/ocm-sdk-go v0.1.465/go.mod h1:EOkylgH0bafd+SlU9YvMrIIxHJw0Hk1EnC7W1VZeW8I=
-github.com/openshift/api v0.0.0-20250710004639-926605d3338b/go.mod h1:SPLf21TYPipzCO67BURkCfK6dcIIxx0oNRVWaOyRcXM=
-github.com/openshift/api v0.0.0-20250722054545-bc3bc4882520/go.mod h1:SPLf21TYPipzCO67BURkCfK6dcIIxx0oNRVWaOyRcXM=
+github.com/opencontainers/selinux v1.13.0/go.mod h1:XxWTed+A/s5NNq4GmYScVy+9jzXhGBVEOAyucdRUY8s=
+github.com/openshift-eng/openshift-tests-extension v0.0.0-20251105193959-75a0be5d9bd7/go.mod h1:6gkP5f2HL0meusT0Aim8icAspcD1cG055xxBZ9yC68M=
+github.com/openshift-online/ocm-api-model/clientapi v0.0.431/go.mod h1:fZwy5HY2URG9nrExvQeXrDU/08TGqZ16f8oymVEN5lo=
+github.com/openshift-online/ocm-api-model/model v0.0.431/go.mod h1:PQIoq6P8Vlb7goOdRMLK8nJY+B7HH0RTqYAa4kyidTE=
+github.com/openshift-online/ocm-common v0.0.31/go.mod h1:VEkuZp9aqbXtetZ5ycND6QpvhykvTuBF3oPsVM1X3vI=
+github.com/openshift-online/ocm-sdk-go v0.1.476/go.mod h1:ds+aOAlQbiK0ubZP3CwXkzd7m48v6fMQ1ef9UCrjzBY=
+github.com/openshift/api v0.0.0-20251111013132-5c461e21bdb7/go.mod h1:d5uzF0YN2nQQFA0jIEWzzOZ+edmo6wzlGLvx5Fhz4uY=
+github.com/openshift/api v0.0.0-20251111193948-50e2ece149d7/go.mod h1:d5uzF0YN2nQQFA0jIEWzzOZ+edmo6wzlGLvx5Fhz4uY=
+github.com/openshift/api v0.0.0-20251205114208-5eb46a7b4ce8/go.mod h1:d5uzF0YN2nQQFA0jIEWzzOZ+edmo6wzlGLvx5Fhz4uY=
+github.com/openshift/api v0.0.0-20260107103503-6d35063ca179/go.mod h1:d5uzF0YN2nQQFA0jIEWzzOZ+edmo6wzlGLvx5Fhz4uY=
github.com/openshift/build-machinery-go v0.0.0-20250530140348-dc5b2804eeee/go.mod h1:8jcm8UPtg2mCAsxfqKil1xrmRMI3a+XU2TZ9fF8A7TE=
+github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235/go.mod h1:L49W6pfrZkfOE5iC1PqEkuLkXG4W0BX4w8b+L2Bv7fM=
+github.com/openshift/client-go v0.0.0-20251202151200-fb4471581cf8/go.mod h1:WVJnsrbSO1J8x8KceOmv1d5CpoN34Uzsaz1O4MIOKJI=
github.com/openshift/cluster-api-actuator-pkg v0.0.0-20251212150432-4a60119d9691 h1:NhnevkE4bMj/yVtJlYgzevBDRKqx41EgiDXC7chHofg=
github.com/openshift/cluster-api-actuator-pkg v0.0.0-20251212150432-4a60119d9691/go.mod h1:D4Au/NRxORRuJa+/4W6O0WpvPyT+U/2aMOWeMsNZAnE=
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20251212150432-4a60119d9691 h1:wOotiCFi/qg+0VV7KDNopHDpZOq3UFKq0Mnssfu8ytU=
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20251212150432-4a60119d9691/go.mod h1:Ahm3XvgKKIyKKYCG3oX2w7bE7twCT2kG71ykwwxUh18=
-github.com/openshift/cluster-control-plane-machine-set-operator v0.0.0-20250424110138-1dbf0c7a5d51/go.mod h1:cp9GawS6eRLeQFvnAu0NVuh3grPSaVS5vRGdydle2HQ=
-github.com/openshift/rosa v1.2.55/go.mod h1:EE0yTEjbwxfnH/9YbQZaUXUVbIzfPa9KCRNw19QdLsw=
-github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
+github.com/openshift/cluster-control-plane-machine-set-operator v0.0.0-20251029084908-344babe6a957/go.mod h1:TBlORAAtNZ/Tl86pO7GjNXKsH/g0QAW5GnvYstdOhYI=
+github.com/openshift/library-go v0.0.0-20251107090138-0de9712313a5/go.mod h1:OlFFws1AO51uzfc48MsStGE4SFMWlMZD0+f5a/zCtKI=
+github.com/openshift/library-go v0.0.0-20251112091634-ab97ebb73f0f/go.mod h1:ErDfiIrPHH+menTP/B4LKd0nxFDdvCbTamAc6SWMIh8=
+github.com/openshift/machine-api-operator v0.2.1-0.20251121134325-1d78f2ebcae5/go.mod h1:OStLZl5CE/RQyGzPBA8Cro+Kmck2G2n4c1rw6TpYT5w=
+github.com/openshift/rosa v1.2.57/go.mod h1:kb6iV145TXhUWBONqlflNIYNbrcYGLk/SFZD6vNx4wM=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0=
-github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
-github.com/pavlo-v-chernykh/keystore-go/v4 v4.5.0/go.mod h1:lAVhWwbNaveeJmxrxuSTxMgKpF6DjnuVpn6T8WiBwYQ=
github.com/pborman/uuid v0.0.0-20170612153648-e790cca94e6c/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw=
-github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pin/tftp v2.1.0+incompatible/go.mod h1:xVpZOMCXTy+A5QMjEVN0Glwa1sUvaJhFXbr/aAxuxGY=
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -749,9 +790,8 @@ github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDj
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
github.com/pkg/sftp v1.13.7/go.mod h1:KMKI0t3T6hfA+lTR/ssZdunHo+uwq7ghoN09/FSu3DY=
-github.com/pkg/sftp v1.13.9/go.mod h1:OBN7bVXdstkFFN/gdnHPUb5TE8eb8G1Rp9wCItqjkkA=
+github.com/pkg/sftp v1.13.10/go.mod h1:bJ1a7uDhrX/4OII+agvy28lzRvQrmIQuaHrcI1HbeGA=
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
-github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/ppc64le-cloud/powervs-utils v0.0.0-20250403153021-219b161805db/go.mod h1:yfr6HHPYyJzVgnivMsobLMbHQqUHrzcIqWM4Nav4kc8=
github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
@@ -761,43 +801,55 @@ github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP
github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
+github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
+github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
+github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
+github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
+github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
-github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50=
-github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
+github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
+github.com/rasky/go-xdr v0.0.0-20170124162913-1a41d1a06c93/go.mod h1:Nfe4efndBz4TibWycNE+lqyJZiMX4ycx+QKV8Ta0f/o=
github.com/rivo/uniseg v0.4.2/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
+github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
+github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
+github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
+github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=
-github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
-github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
github.com/sanathkr/go-yaml v0.0.0-20170819195128-ed9d249f429b/go.mod h1:8458kAagoME2+LN5//WxE71ysZ3B7r22fdgb7qVmXSY=
github.com/sanathkr/yaml v0.0.0-20170819201035-0056894fa522/go.mod h1:tQTYKOQgxoH3v6dEmdHiz4JG+nbxWwM5fgPQUpSZqVQ=
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
-github.com/seccomp/libseccomp-golang v0.10.0/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=
-github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=
-github.com/shirou/gopsutil/v4 v4.25.2/go.mod h1:34gBYJzyqCDT11b6bMHP0XCvWeU3J61XRT7a2EmCRTA=
+github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
+github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
+github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
+github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
+github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
github.com/sigma/bdoor v0.0.0-20160202064022-babf2a4017b0/go.mod h1:WBu7REWbxC/s/J06jsk//d+9DOz9BbsmcIrimuGRFbs=
github.com/sigma/vmw-guestinfo v0.0.0-20160204083807-95dd4126d6e8/go.mod h1:JrRFFC0veyh0cibh0DAhriSY7/gV3kDdNaVUOmfx01U=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
+github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
@@ -805,38 +857,30 @@ github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM=
-github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg=
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ=
-github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM=
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
-github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g=
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
-github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
-github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
-github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA=
-github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY=
-github.com/valyala/quicktemplate v1.8.0/go.mod h1:qIqW8/igXt8fdrUln5kOSb+KWMaJ4Y8QUsfd1k6L2jM=
-github.com/vektah/gqlparser/v2 v2.5.15/go.mod h1:WQQjFc+I1YIzoPvZBhUQX7waZgg3pMLi0r8KymvAE2w=
github.com/vincent-petithory/dataurl v1.0.0/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U=
-github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
-github.com/vishvananda/netlink v1.2.1-beta.2/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho=
-github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=
-github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
-github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
github.com/vmware-tanzu/net-operator-api v0.0.0-20240326163340-1f32d6bf7f9d/go.mod h1:JbFOh22iDsT5BowJe0GgpMI5e2/S7cWaJlv9LdURVQM=
github.com/vmware-tanzu/nsx-operator/pkg/apis v0.0.0-20241112044858-9da8637c1b0d/go.mod h1:Q4JzNkNMvjo7pXtlB5/R3oME4Nhah7fAObWgghVmtxk=
github.com/vmware-tanzu/vm-operator/api v1.8.6/go.mod h1:HHA2SNI9B5Yqtyp5t+Gt9WTWBi/fIkM6+MukDDSf11A=
github.com/vmware-tanzu/vm-operator/external/ncp v0.0.0-20240404200847-de75746a9505/go.mod h1:5rqRJ9zGR+KnKbkGx373WgN8xJpvAj99kHnfoDYRO5I=
-github.com/vmware/govmomi v0.49.0/go.mod h1:+oZ0tYJw/pXKoeWHLR9Egq5KENVr2hLePRzisFhEWpA=
+github.com/vmware/govmomi v0.51.0/go.mod h1:3ywivawGRfMP2SDCeyKqxTl2xNIHTXF0ilvp72dot5A=
+github.com/vmware/govmomi v0.52.0/go.mod h1:Yuc9xjznU3BH0rr6g7MNS1QGvxnJlE1vOvTJ7Lx7dqI=
github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk=
github.com/vmware/vmw-guestinfo v0.0.0-20220317130741-510905f0efa3/go.mod h1:CSBTxrhePCm0cmXNKDGeu+6bOQzpaEklfCqEpn89JWk=
github.com/vmware/vmw-ovflib v0.0.0-20170608004843-1f217b9dc714/go.mod h1:jiPk45kn7klhByRvUq5i2vo1RtHKBHj+iWGFpxbXuuI=
@@ -847,25 +891,19 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v0.0.0-20181112162635-ac52e6811b56/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs=
github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU=
-github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
-github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
github.com/zalando/go-keyring v0.2.3/go.mod h1:HL4k+OXQfJUWaMnqyuSOc0drfGPX2b51Du6K+MRgZMk=
github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4=
+github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
github.com/zgalor/weberr v0.8.2/go.mod h1:cqK89mj84q3PRgqQXQFWJDzCorOd8xOtov/ulOnqDwc=
github.com/ziutek/telnet v0.0.0-20180329124119-c3b780dc415b/go.mod h1:IZpXDfkJ6tWD3PhBK5YzgQT+xJWh7OsdwiG8hA2MkO4=
gitlab.com/c0b/go-ordered-json v0.0.0-20201030195603-febf46534d5a/go.mod h1:NREvu3a57BaK0R1+ztrEzHWiZAihohNLQ6trPxlIqZI=
-go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I=
-go.etcd.io/etcd/api/v3 v3.5.20/go.mod h1:QqKGViq4KTgOG43dr/uH0vmGWIaoJY3ggFi6ZH0TH/U=
-go.etcd.io/etcd/api/v3 v3.5.21/go.mod h1:c3aH5wcvXv/9dqIw2Y810LDXJfhSYdHQ0vxmP3CCHVY=
-go.etcd.io/etcd/client/pkg/v3 v3.5.20/go.mod h1:qaOi1k4ZA9lVLejXNvyPABrVEe7VymMF2433yyRQ7O0=
-go.etcd.io/etcd/client/pkg/v3 v3.5.21/go.mod h1:BgqT/IXPjK9NkeSDjbzwsHySX3yIle2+ndz28nVsjUs=
-go.etcd.io/etcd/client/v2 v2.305.21/go.mod h1:OKkn4hlYNf43hpjEM3Ke3aRdUkhSl8xjKjSf8eCq2J8=
-go.etcd.io/etcd/client/v3 v3.5.20/go.mod h1:J5lbzYRMUR20YolS5UjlqqMcu3/wdEvG5VNBhzyo3m0=
-go.etcd.io/etcd/client/v3 v3.5.21/go.mod h1:mFYy67IOqmbRf/kRUvsHixzo3iG+1OF2W2+jVIQRAnU=
-go.etcd.io/etcd/pkg/v3 v3.5.21/go.mod h1:wpZx8Egv1g4y+N7JAsqi2zoUiBIUWznLjqJbylDjWgU=
-go.etcd.io/etcd/raft/v3 v3.5.21/go.mod h1:fmcuY5R2SNkklU4+fKVBQi2biVp5vafMrWUEj4TJ4Cs=
-go.etcd.io/etcd/server/v3 v3.5.21/go.mod h1:G1mOzdwuzKT1VRL7SqRchli/qcFrtLBTAQ4lV20sXXo=
+go.etcd.io/etcd/api/v3 v3.5.16/go.mod h1:1P4SlIP/VwkDmGo3OlOD7faPeP8KDIFhqvciH5EfN28=
+go.etcd.io/etcd/api/v3 v3.5.22/go.mod h1:/mQQOEMyP7nAjMKZTJSCtMmlOoNAG5s7IjKZGvMN9Yc=
+go.etcd.io/etcd/client/pkg/v3 v3.5.16/go.mod h1:V8acl8pcEK0Y2g19YlOV9m9ssUe6MgiDSobSoaBAM0E=
+go.etcd.io/etcd/client/pkg/v3 v3.5.22/go.mod h1:cSURbmmXBOqyX839SdTbuO2zYtUjcZvKeQ7DEiYVOmU=
+go.etcd.io/etcd/client/v3 v3.5.16/go.mod h1:X+rExSGkyqxvu276cr2OwPLBaeqFu1cIl4vmRjAD/50=
+go.etcd.io/etcd/client/v3 v3.5.22/go.mod h1:p4ROLdCiv8gwQtnozOILXkqIjjSI0MR6Ly5F9qpFg+8=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -874,88 +912,117 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
go.opentelemetry.io/contrib/detectors/gcp v1.29.0/go.mod h1:GW2aWZNwR2ZxDLdv8OyC2G8zkRoQBuURgV7RPQgcPoU=
-go.opentelemetry.io/contrib/detectors/gcp v1.32.0/go.mod h1:TVqo0Sda4Cv8gCIixd7LuLwW4EylumVWfhjZJjDD4DU=
-go.opentelemetry.io/contrib/detectors/gcp v1.34.0/go.mod h1:cV4BMFcscUR/ckqLkbfQmF0PRsq8w/lMGzdbCSveBHo=
-go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA=
-go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.42.0/go.mod h1:XiglO+8SPMqM3Mqh5/rtxR1VHc63o8tb38QrU6tm4mU=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM=
+go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k=
+go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.44.0/go.mod h1:uq8DrRaen3suIWTpdR/JNHCGpurSvMv9D5Nr5CU5TXc=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ=
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
+go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8=
-go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc=
-go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
+go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I=
go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y=
+go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0/go.mod h1:MOiCmryaYtc+V0Ei+Tx9o5S1ZjA7kzLucuVuyzBZloQ=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0/go.mod h1:57gTHJSE5S1tqg+EKsLPlTWhpHMsWlVmer+LA926XiA=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0/go.mod h1:hYwym2nDEeZfG/motx0p7L7J1N1vyzIThemQsb4g2qY=
-go.opentelemetry.io/otel/exporters/prometheus v0.58.0/go.mod h1:7qo/4CLI+zYSNbv0GMNquzuss2FVZo3OYrGh96n4HNc=
-go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0=
+go.opentelemetry.io/otel/exporters/prometheus v0.60.0/go.mod h1:hkd1EekxNo69PTV4OWFGZcKQiIqg0RfuWExcPKFvepk=
+go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw=
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
+go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s=
go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8=
-go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M=
go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
+go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs=
+go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E=
+go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg=
go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok=
-go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM=
go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg=
+go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY=
+go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg=
go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ=
-go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
-go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ=
-go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
-go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
+go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4=
+go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps=
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
+go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI=
go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ=
-go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
+go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck=
go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
+go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8=
go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY=
-go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds=
+go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4=
+go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
+go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
+go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo=
go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
+go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
+go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
+go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
+go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI=
go4.org v0.0.0-20160314031811-03efcb870d84/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
go4.org v0.0.0-20201209231011-d4a079459e60/go.mod h1:CIiUVy99QCPfoE13bO4EZaz5GZMZXMSBGhxRdsvzbkg=
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
+golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
+golang.org/x/crypto v0.11.1-0.20230711161743-2e82bdd1719d/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
+golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
+golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
+golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
+golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
-golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
+golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
+golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
+golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
+golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8=
+golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
+golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -966,10 +1033,12 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
+golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
+golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
+golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -993,9 +1062,13 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
+golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
+golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI=
+golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1010,6 +1083,7 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1032,17 +1106,27 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
+golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
+golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
+golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
+golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
+golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
+golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
+golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
+golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1053,38 +1137,45 @@ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
-golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
-golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
+golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
+golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
+golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1094,10 +1185,10 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1107,43 +1198,62 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
+golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0=
+golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ=
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
+golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
-golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
+golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
+golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk=
+golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
+golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0=
+golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
+golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -1152,16 +1262,25 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
+golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
+golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
+golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
+golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
+golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
+golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
+golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
@@ -1169,20 +1288,25 @@ golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
@@ -1208,15 +1332,22 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8=
golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
+golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
+golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
+golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
+golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w=
+golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
+golang.org/x/tools/go/expect v0.1.0-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
+golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -1238,12 +1369,12 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q
google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
google.golang.org/api v0.177.0/go.mod h1:srbhue4MLjkjbkux5p3dw/ocYOSZTaIEvf7bCOnFQDw=
google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY=
-google.golang.org/api v0.216.0/go.mod h1:K9wzQMvWi47Z9IU7OgdOofvZuw75Ge3PPITImZR/UyI=
-google.golang.org/api v0.224.0/go.mod h1:3V39my2xAGkodXy0vEqcEtkqgw2GtrFL5WuBZlCTCOQ=
google.golang.org/api v0.229.0/go.mod h1:wyDfmq5g1wYJWn29O22FDWN48P7Xcz0xz+LBpptYvB0=
-google.golang.org/api v0.230.0/go.mod h1:aqvtoMk7YkiXx+6U12arQFExiRV9D/ekvMCwCd/TksQ=
-google.golang.org/api v0.232.0/go.mod h1:p9QCfBWZk1IJETUdbTKloR5ToFdKbYh2fkjsUL6vNoY=
-google.golang.org/api v0.235.0/go.mod h1:QpeJkemzkFKe5VCE/PMv7GsUfn9ZF+u+q1Q7w6ckxTg=
+google.golang.org/api v0.234.0/go.mod h1:QpeJkemzkFKe5VCE/PMv7GsUfn9ZF+u+q1Q7w6ckxTg=
+google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50=
+google.golang.org/api v0.246.0/go.mod h1:dMVhVcylamkirHdzEBAIQWUCgqY885ivNeZYd7VAVr8=
+google.golang.org/api v0.247.0/go.mod h1:r1qZOPmxXffXg6xS5uhx16Fa/UFY8QU/K4bfKrnvovM=
+google.golang.org/api v0.252.0/go.mod h1:dnHOv81x5RAmumZ7BWLShB/u7JZNeyalImxHmtTHxqw=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1273,10 +1404,8 @@ google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfG
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
@@ -1290,45 +1419,49 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc=
-google.golang.org/genproto v0.0.0-20250106144421-5f5ef82da422/go.mod h1:1NPAxoesyw/SgLPqaUp9u1f9PWCLAk/jVmhx7gJZStg=
google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE=
google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk=
+google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s=
google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk=
google.golang.org/genproto/googleapis/api v0.0.0-20240429193739-8cf5692501f6/go.mod h1:10yRODfgim2/T8csjQsMPgZOMvtytXKTDRzH6HRGzRw=
+google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU=
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo=
google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY=
google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08=
google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422/go.mod h1:b6h1vNKhxaSoEI+5jc3PJUCustfli/mRab7295pY7rw=
-google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU=
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg=
google.golang.org/genproto/googleapis/api v0.0.0-20250414145226-207652e42e2e/go.mod h1:085qFyf2+XaZlRdCgKNCIZ3afY2p4HHZdoIRpId8F4A=
-google.golang.org/genproto/googleapis/api v0.0.0-20250425173222-7b384671a197/go.mod h1:Cd8IzgPo5Akum2c9R6FsXNaZbH3Jpa2gpHlW89FqlyQ=
-google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI=
google.golang.org/genproto/googleapis/api v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:pKLAc5OolXC3ViWGI62vvC0n10CpwAtRcTNCFwTKBEw=
-google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto=
-google.golang.org/genproto/googleapis/bytestream v0.0.0-20250512202823-5a2f75b736a9/go.mod h1:h6yxum/C2qRb4txaZRLDHK8RyS0H/o2oEDeKY4onY/Y=
+google.golang.org/genproto/googleapis/api v0.0.0-20250512202823-5a2f75b736a9/go.mod h1:W3S/3np0/dPWsWLi1h/UymYctGXaGBM2StwzD0y140U=
+google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc=
+google.golang.org/genproto/googleapis/api v0.0.0-20250721164621-a45f3dfb1074/go.mod h1:vYFwMYFbmA8vl6Z/krj/h7+U/AqpHknwJX4Uqgfyc7I=
+google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs=
+google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:oDOGiMSXHL4sDTJvFvIB9nRQCGdLP1o/iVaqQK8zB+M=
+google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c/go.mod h1:ea2MjsO70ssTfCjiwHgI0ZFqcw45Ksuk2ckf9G468GA=
+google.golang.org/genproto/googleapis/bytestream v0.0.0-20251002232023-7c0ddcbb5797/go.mod h1:YUQUKndxDbAanQC0ln4pZ3Sis3N5sqgDte2XQqufkJc=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250414145226-207652e42e2e/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250512202823-5a2f75b736a9/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250811230008-5f3141c8851a/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -1342,23 +1475,27 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
+google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s=
google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw=
-google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
google.golang.org/grpc v1.71.1/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
-google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
+google.golang.org/grpc v1.71.3/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
-google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
+google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
+google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
+google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM=
+google.golang.org/grpc v1.74.3/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM=
+google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
+google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -1371,33 +1508,34 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
-google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
+google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
+google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
gopkg.in/go-jose/go-jose.v2 v2.6.3/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
-gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
+gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -1405,51 +1543,38 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k=
-k8s.io/api v0.33.2/go.mod h1:fhrbphQJSM2cXzCWgqU29xLDuks4mu7ti9vveEnpSXs=
-k8s.io/apiextensions-apiserver v0.32.3/go.mod h1:8YwcvVRMVzw0r1Stc7XfGAzB/SIVLunqApySV5V7Dss=
-k8s.io/apiextensions-apiserver v0.33.2/go.mod h1:IvVanieYsEHJImTKXGP6XCOjTwv2LUMos0YWc9O+QP8=
-k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo=
-k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
-k8s.io/apimachinery v0.33.2/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
-k8s.io/apiserver v0.32.3/go.mod h1:q1x9B8E/WzShF49wh3ADOh6muSfpmFL0I2t+TG0Zdgc=
-k8s.io/apiserver v0.33.2/go.mod h1:9qday04wEAMLPWWo9AwqCZSiIn3OYSZacDyu/AcoM/M=
+k8s.io/cli-runtime v0.30.3/go.mod h1:hwrrRdd9P84CXSKzhHxrOivAR9BRnkMt0OeP5mj7X30=
k8s.io/cli-runtime v0.32.3/go.mod h1:vZT6dZq7mZAca53rwUfdFSZjdtLyfF61mkf/8q+Xjak=
-k8s.io/cli-runtime v0.33.3/go.mod h1:yklhLklD4vLS8HNGgC9wGiuHWze4g7x6XQZ+8edsKEo=
-k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY=
-k8s.io/client-go v0.33.2/go.mod h1:9mCgT4wROvL948w6f6ArJNb7yQd7QsvqavDeZHvNmHo=
+k8s.io/cli-runtime v0.33.4/go.mod h1:V+ilyokfqjT5OI+XE+O515K7jihtr0/uncwoyVqXaIU=
+k8s.io/cli-runtime v0.34.1/go.mod h1:aVA65c+f0MZiMUPbseU/M9l1Wo2byeaGwUuQEQVVveE=
+k8s.io/cloud-provider v0.32.0/go.mod h1:cz3gVodkhgwi2ugj/JUPglIruLSdDaThxawuDyCHfr8=
k8s.io/cloud-provider v0.32.2/go.mod h1:2s8TeAXhVezp5VISaTxM6vW3yDonOZXoN4Aryz1p1PQ=
k8s.io/cloud-provider-vsphere v1.32.2/go.mod h1:v+shTeZ4WM232SEePcD+svnV+atFeEAc07Y0EIWn36M=
-k8s.io/code-generator v0.33.3/go.mod h1:6Y02+HQJYgNphv9z3wJB5w+sjYDIEBQW7sh62PkufvA=
-k8s.io/component-base v0.32.3/go.mod h1:LWi9cR+yPAv7cu2X9rZanTiFKB2kHA+JjmhkKjCZRpI=
-k8s.io/component-base v0.33.2/go.mod h1:/41uw9wKzuelhN+u+/C59ixxf4tYQKW7p32ddkYNe2k=
-k8s.io/component-helpers v0.33.3/go.mod h1:7iwv+Y9Guw6X4RrnNQOyQlXcvJrVjPveHVqUA5dm31c=
-k8s.io/controller-manager v0.32.1/go.mod h1:dVA1UZPbqHH4hEhrrnLvQ4d5qVQCklNB8GEzYV59v/4=
-k8s.io/cri-api v0.33.3/go.mod h1:OLQvT45OpIA+tv91ZrpuFIGY+Y2Ho23poS7n115Aocs=
-k8s.io/cri-client v0.33.3/go.mod h1:r1p300+uHBQ5VLvycKb73KI/XdQzECkLsNM/0Ly6oXE=
-k8s.io/csi-translation-lib v0.33.3/go.mod h1:GUIFfrXyiHE1U2OvWidQ2qD45rant3FTfB1Og+6IZFM=
-k8s.io/dynamic-resource-allocation v0.33.3/go.mod h1:YU6axYSVf1vC2OnPB8PjG5KipqoxyAKUGXB7HvRxvTk=
-k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
-k8s.io/gengo/v2 v2.0.0-20240826214909-a7b603a56eb7/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU=
-k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU=
-k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
-k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
-k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kms v0.33.2/go.mod h1:C1I8mjFFBNzfUZXYt9FZVJ8MJl7ynFbGgZFbBzkBJ3E=
-k8s.io/kms v0.33.3/go.mod h1:C1I8mjFFBNzfUZXYt9FZVJ8MJl7ynFbGgZFbBzkBJ3E=
+k8s.io/cluster-bootstrap v0.33.3/go.mod h1:p970f8u8jf273zyQ5raD8WUu2XyAl0SAWOY82o7i/ds=
+k8s.io/code-generator v0.34.1/go.mod h1:DeWjekbDnJWRwpw3s0Jat87c+e0TgkxoR4ar608yqvg=
+k8s.io/component-helpers v0.32.2/go.mod h1:fvQAoiiOP7jUEUBc9qR0PXiBPuB0I56WTxTkkpcI8g8=
+k8s.io/component-helpers v0.32.3/go.mod h1:utTBXk8lhkJewBKNuNf32Xl3KT/0VV19DmiXU/SV4Ao=
+k8s.io/cri-api v0.34.1/go.mod h1:4qVUjidMg7/Z9YGZpqIDygbkPWkg3mkS1PvOx/kpHTE=
+k8s.io/cri-client v0.34.1/go.mod h1:Dq6mKWV2ugO5tMv4xqVgcQ8vD7csP//e4KkzcFi2Pio=
+k8s.io/csi-translation-lib v0.34.1/go.mod h1:QXytPJ1KzYQaiMgVm82ANG+RGAUf276m8l9gFT+R6Xg=
+k8s.io/dynamic-resource-allocation v0.34.1/go.mod h1:Zlpqyh6EKhTVoQDe5BS31/8oMXGfG6c12ydj3ChXyuw=
+k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU=
+k8s.io/kms v0.32.2/go.mod h1:Bk2evz/Yvk0oVrvm4MvZbgq8BD34Ksxs2SRHn4/UiOM=
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4=
k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas=
-k8s.io/kube-scheduler v0.33.3/go.mod h1:8PYkDZE7SFRdfGGjyEREpSoJgh6sCRZ9Rx45HKCcsZ8=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/kube-scheduler v0.34.1/go.mod h1:UiOkod/w+HKoGut9mz9ie4s4KcI82vmLFdq1iIgsmRs=
k8s.io/kubectl v0.32.3/go.mod h1:6Euv2aso5GKzo/UVMacV6C7miuyevpfI91SvBvV9Zdg=
-k8s.io/kubectl v0.33.3/go.mod h1:euj2bG56L6kUGOE/ckZbCoudPwuj4Kud7BR0GzyNiT0=
-k8s.io/kubelet v0.33.3/go.mod h1:Q1Cfr6VQq1m9v9XsE/mDmhTxPdN6NPU6Ug0e6mAqi58=
-k8s.io/kubernetes v1.33.3/go.mod h1:nrt8sldmckKz2fCZhgRX3SKfS2e+CzXATPv6ITNkU00=
-k8s.io/metrics v0.33.3/go.mod h1:Aw+cdg4AYHw0HvUY+lCyq40FOO84awrqvJRTw0cmXDs=
-k8s.io/mount-utils v0.33.3/go.mod h1:1JR4rKymg8B8bCPo618hpSAdrpO6XLh0Acqok/xVwPE=
+k8s.io/kubectl v0.33.4/go.mod h1:Xe7P9X4DfILvKmlBsVqUtzktkI56lEj22SJW7cFy6nE=
+k8s.io/kubectl v0.34.1/go.mod h1:JRYlhJpGPyk3dEmJ+BuBiOB9/dAvnrALJEiY/C5qa6A=
+k8s.io/metrics v0.34.1/go.mod h1:Drf5kPfk2NJrlpcNdSiAAHn/7Y9KqxpRNagByM7Ei80=
+k8s.io/mount-utils v0.34.1/go.mod h1:MIjjYlqJ0ziYQg0MO09kc9S96GIcMkhF/ay9MncF0GA=
k8s.io/pod-security-admission v0.32.2/go.mod h1:yxMPB3i1pGMLfxbe4BiWMuowMD7cdHR32y4nCj4wH+s=
-k8s.io/sample-apiserver v0.33.3/go.mod h1:2A8Kv24Rkpzepr7Y6/VL4lGyAZTySl1cvdWzZ2OB3DA=
+k8s.io/sample-apiserver v0.34.1/go.mod h1:xPfTeaMTkuyCo8eSpbeuLenm2eFH+Kc784ukUe96zhY=
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
@@ -1459,20 +1584,19 @@ sigs.k8s.io/aws-iam-authenticator v0.6.13/go.mod h1:CnvFyzR/xeLHmUY/BD0qW6q0wp6K
sigs.k8s.io/cloud-provider-azure v1.32.3/go.mod h1:z9f+x7/hAwIbyMthEfF+RB0EU726zoaGaThcTxC6DIw=
sigs.k8s.io/cloud-provider-azure/pkg/azclient v0.5.9/go.mod h1:wlb5KMXferSuS9asjIlqjU7yHnCUEtAGnwjYdDtqdmk=
sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader v0.4.1/go.mod h1:rEQnoF3pmD1kmAFQCwA/SqHiiftLFeMwdQt0gsuKWbM=
-sigs.k8s.io/cluster-api v1.10.2/go.mod h1:/b9Un5Imprib6S7ZOcJitC2ep/5wN72b0pXpMQFfbTw=
-sigs.k8s.io/cluster-api-provider-aws/v2 v2.8.4/go.mod h1:ubZXYyieYt+I4jQFJ47J9Hq4W3zPernTWXlIfIZnB3Y=
-sigs.k8s.io/cluster-api/test v1.10.2/go.mod h1:KLeRjNtQS8k5jIPvQF0QxOti/ATu5euwSusb6iFBga8=
-sigs.k8s.io/cluster-api/test v1.10.4/go.mod h1:n2LsLQxc4RSLDjUXhgzquSTagZTJpUcY7uwtQtCRmaY=
-sigs.k8s.io/controller-tools v0.16.3/go.mod h1:AEj6k+w1kYpLZv2einOH3mj52ips4W/6FUjnB5tkJGs=
+sigs.k8s.io/cluster-api/test v1.11.0/go.mod h1:2f489Lp5TKPGVhNL6V3huq8fp6eb23APlY2cLbhuDBU=
+sigs.k8s.io/cluster-api/test v1.11.1/go.mod h1:COviHWIKTcip0VADeIh8Rm5bjqzyZ1LuzKBW1EqjJRc=
+sigs.k8s.io/cluster-api/test v1.11.4-0.20251201193228-889987e8d46a/go.mod h1:7Zfdj42bJUrgZC5cuE6Q3zer18XoZLfH+8Sv3Yf7kO0=
+sigs.k8s.io/controller-runtime v0.21.0/go.mod h1:OSg14+F65eWqIu4DceX7k/+QRAbTTvxeQSNSOQpukWM=
+sigs.k8s.io/controller-runtime v0.22.3/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
+sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20240923090159-236e448db12c/go.mod h1:IaDsO8xSPRxRG1/rm9CP7+jPmj0nMNAuNi/yiHnLX8k=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
-sigs.k8s.io/kind v0.27.0/go.mod h1:RZVFmy6qcwlSWwp6xeIUv7kXCPF3i8MXsEXxW/J+gJY=
sigs.k8s.io/kind v0.29.0/go.mod h1:ldWQisw2NYyM6k64o/tkZng/1qQW7OlzcN5a8geJX3o=
-sigs.k8s.io/kustomize/api v0.19.0 h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ=
-sigs.k8s.io/kustomize/api v0.19.0/go.mod h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o=
-sigs.k8s.io/kustomize/kustomize/v5 v5.6.0/go.mod h1:XuuZiQF7WdcvZzEYyNww9A0p3LazCKeJmCjeycN8e1I=
-sigs.k8s.io/kustomize/kyaml v0.19.0 h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA=
-sigs.k8s.io/kustomize/kyaml v0.19.0/go.mod h1:FeKD5jEOH+FbZPpqUghBP8mrLjJ3+zD3/rf9NNu1cwY=
+sigs.k8s.io/kind v0.30.0/go.mod h1:FSqriGaoTPruiXWfRnUXNykF8r2t+fHtK0P0m1AbGF8=
+sigs.k8s.io/kustomize/api v0.18.0/go.mod h1:f8isXnX+8b+SGLHQ6yO4JG1rdkZlvhaCf/uZbLVMb0U=
+sigs.k8s.io/kustomize/kyaml v0.18.1/go.mod h1:C3L2BFVU1jgcddNBE1TxuVLgS46TjObMwW5FT9FcjYo=
sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4=
-sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
-software.sslmate.com/src/go-pkcs12 v0.5.0/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI=
+sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps=
+sigs.k8s.io/structured-merge-diff/v6 v6.2.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4=
diff --git a/hack/test.sh b/hack/test.sh
index 72ffc6511..c9f051d13 100755
--- a/hack/test.sh
+++ b/hack/test.sh
@@ -45,7 +45,7 @@ fi
# Print the command we are going to run as Make would.
echo ${GINKGO} ${GINKGO_ARGS} ${SHARD_ARGS} ${GINKGO_EXTRA_ARGS} ${TEST_DIRS}
-eval "${GINKGO} ${GINKGO_ARGS} ${SHARD_ARGS} ${GINKGO_EXTRA_ARGS} ${TEST_DIRS}"
+GOGC=50 eval "${GINKGO} ${GINKGO_ARGS} ${SHARD_ARGS} ${GINKGO_EXTRA_ARGS} ${TEST_DIRS}"
# Capture the test result to exit on error after coverage.
TEST_RESULT=$?
diff --git a/hack/vendor.sh b/hack/vendor.sh
index eb25c1672..8a253cbf7 100755
--- a/hack/vendor.sh
+++ b/hack/vendor.sh
@@ -7,7 +7,7 @@ echo "Updating dependencies for Cluster CAPI Operator workspace"
# Tidy all modules in the workspace
echo "Running go mod tidy for all modules..."
go work use -r .
-for module in . e2e manifests-gen hack/tools; do
+for module in . e2e manifests-gen hack/tools openshift-tests-extension; do
if [ -f "$module/go.mod" ]; then
echo "Tidying $module"
(cd "$module" && go mod tidy)
@@ -16,7 +16,7 @@ done
# Verify all modules
echo "Verifying all modules..."
-for module in . e2e manifests-gen hack/tools; do
+for module in . e2e manifests-gen hack/tools openshift-tests-extension; do
if [ -f "$module/go.mod" ]; then
echo "Verifying $module"
(cd "$module" && go mod verify)
diff --git a/manifests-gen/go.sum b/manifests-gen/go.sum
index d92dde235..5eee1578f 100644
--- a/manifests-gen/go.sum
+++ b/manifests-gen/go.sum
@@ -92,8 +92,6 @@ github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJw
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
github.com/openshift/api v0.0.0-20260228183123-9b2ee997d297 h1:QoHTB3QS859LUGE6NUTg98XiMz6Kzm3svQmo4tmgmlg=
github.com/openshift/api v0.0.0-20260228183123-9b2ee997d297/go.mod h1:ZYAxo9t1AALeEotN07tNzIvqqqWSxcZIqMUKnY/xCeQ=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
-github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -198,8 +196,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
-gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
+gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
+gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
diff --git a/openshift-tests-extension/cmd/main.go b/openshift-tests-extension/cmd/main.go
new file mode 100644
index 000000000..6f1f139cf
--- /dev/null
+++ b/openshift-tests-extension/cmd/main.go
@@ -0,0 +1,74 @@
+package main
+
+import (
+ "fmt"
+ "os"
+ "regexp"
+ "strings"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/cmd"
+ e "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
+ g "github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo"
+ "github.com/spf13/cobra"
+
+ // If using ginkgo, import your tests here.
+ _ "github.com/openshift/cluster-capi-operator/e2e"
+)
+
+func main() {
+ extensionRegistry := e.NewRegistry()
+ capiExtension := e.NewExtension("openshift", "payload", "cluster-capi-operator")
+
+ capiExtension.AddSuite(e.Suite{
+ Name: "capio/conformance/parallel",
+ Qualifiers: []string{`!labels.exists(l, l == "Serial") && labels.exists(l, l == "Conformance")`},
+ })
+
+ capiExtension.AddSuite(e.Suite{
+ Name: "capio/conformance/serial",
+ Qualifiers: []string{`labels.exists(l, l == "Serial") && labels.exists(l, l == "Conformance")`},
+ })
+
+ capiExtension.AddSuite(e.Suite{
+ Name: "capio/e2e",
+ Qualifiers: []string{`name.contains("[Feature:ClusterAPI]") || name.contains("[OCPFeatureGate:MachineAPIMigration]")`},
+ })
+
+ specs, err := g.BuildExtensionTestSpecsFromOpenShiftGinkgoSuite()
+ if err != nil {
+ panic(fmt.Sprintf("couldn't build extension test specs from ginkgo: %+v", err.Error()))
+ }
+
+ // Let's scan for tests with a platform label and create the rule for them such as [platform:vsphere]
+ foundPlatforms := make(map[string]string)
+
+ for _, test := range specs.Select(extensiontests.NameContains("[platform:")).Names() {
+ re := regexp.MustCompile(`\[platform:[a-z]*]`)
+
+ match := re.FindStringSubmatch(test)
+ for _, platformDef := range match {
+ if _, ok := foundPlatforms[platformDef]; !ok {
+ platform := platformDef[strings.Index(platformDef, ":")+1 : len(platformDef)-1]
+ foundPlatforms[platformDef] = platform
+ specs.Select(extensiontests.NameContains(platformDef)).
+ Include(extensiontests.PlatformEquals(platform))
+ }
+ }
+ }
+
+ capiExtension.AddSpecs(specs)
+ extensionRegistry.Register(capiExtension)
+
+ root := &cobra.Command{
+ Long: "Cluster CAPI Operator tests extension for OpenShift",
+ }
+
+ root.AddCommand(cmd.DefaultExtensionCommands(extensionRegistry)...)
+
+ if err := func() error {
+ return root.Execute()
+ }(); err != nil {
+ os.Exit(1)
+ }
+}
diff --git a/openshift-tests-extension/go.mod b/openshift-tests-extension/go.mod
new file mode 100644
index 000000000..f47be5bad
--- /dev/null
+++ b/openshift-tests-extension/go.mod
@@ -0,0 +1,136 @@
+module github.com/openshift/cluster-capi-operator/openshift-tests-extension
+
+go 1.24.0
+
+require (
+ github.com/openshift-eng/openshift-tests-extension v0.0.0-20251125140340-13f4631a80b0
+ github.com/openshift/cluster-capi-operator/e2e v0.0.0-20251121101530-509ccfd2960c
+ github.com/spf13/cobra v1.10.1
+)
+
+require (
+ cel.dev/expr v0.22.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 // indirect
+ github.com/IBM/go-sdk-core/v5 v5.19.1 // indirect
+ github.com/IBM/vpc-go-sdk v0.68.0 // indirect
+ github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
+ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
+ github.com/asaskevich/govalidator/v11 v11.0.2-0.20250122183457-e11347878e23 // indirect
+ github.com/aws/aws-sdk-go v1.55.7 // indirect
+ github.com/aws/aws-sdk-go-v2 v1.38.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ec2 v1.233.0 // indirect
+ github.com/aws/smithy-go v1.22.5 // indirect
+ github.com/beorn7/perks v1.0.1 // indirect
+ github.com/blang/semver/v4 v4.0.0 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
+ github.com/emicklei/go-restful/v3 v3.12.2 // indirect
+ github.com/evanphx/json-patch/v5 v5.9.11 // indirect
+ github.com/fsnotify/fsnotify v1.8.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.7.0 // indirect
+ github.com/gabriel-vasile/mimetype v1.4.8 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
+ github.com/go-openapi/errors v0.22.1 // indirect
+ github.com/go-openapi/jsonpointer v0.21.1 // indirect
+ github.com/go-openapi/jsonreference v0.21.0 // indirect
+ github.com/go-openapi/strfmt v0.23.0 // indirect
+ github.com/go-openapi/swag v0.23.1 // indirect
+ github.com/go-playground/locales v0.14.1 // indirect
+ github.com/go-playground/universal-translator v0.18.1 // indirect
+ github.com/go-playground/validator/v10 v10.26.0 // indirect
+ github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
+ github.com/gobuffalo/flect v1.0.3 // indirect
+ github.com/gogo/protobuf v1.3.2 // indirect
+ github.com/google/btree v1.1.3 // indirect
+ github.com/google/cel-go v0.23.2 // indirect
+ github.com/google/gnostic-models v0.6.9 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
+ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect
+ github.com/google/uuid v1.6.0 // indirect
+ github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
+ github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
+ github.com/inconshreveable/mousetrap v1.1.0 // indirect
+ github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect
+ github.com/josharian/intern v1.0.0 // indirect
+ github.com/json-iterator/go v1.1.12 // indirect
+ github.com/leodido/go-urn v1.4.0 // indirect
+ github.com/mailru/easyjson v0.9.0 // indirect
+ github.com/metal3-io/baremetal-operator/apis v0.5.1 // indirect
+ github.com/metal3-io/baremetal-operator/pkg/hardwareutils v0.5.1 // indirect
+ github.com/metal3-io/cluster-api-provider-metal3/api v1.10.1 // indirect
+ github.com/metal3-io/ip-address-manager/api v1.10.1 // indirect
+ github.com/mitchellh/mapstructure v1.5.0 // indirect
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+ github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
+ github.com/oklog/ulid v1.3.1 // indirect
+ github.com/onsi/ginkgo/v2 v2.23.4 // indirect
+ github.com/onsi/gomega v1.38.0 // indirect
+ github.com/openshift/api v0.0.0-20250731015415-ed654edbd7c6 // indirect
+ github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee // indirect
+ github.com/openshift/cluster-api-actuator-pkg v0.0.0-20250729202911-167220318f40 // indirect
+ github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20250821122144-fd0936342469 // indirect
+ github.com/openshift/cluster-autoscaler-operator v0.0.1-0.20250702183526-4eb64d553940 // indirect
+ github.com/openshift/library-go v0.0.0-20250729191057-91376e1b394e // indirect
+ github.com/openshift/machine-api-operator v0.2.1-0.20250721183005-388c07321caf // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/prometheus/client_golang v1.22.0 // indirect
+ github.com/prometheus/client_model v0.6.2 // indirect
+ github.com/prometheus/common v0.64.0 // indirect
+ github.com/prometheus/procfs v0.16.1 // indirect
+ github.com/spf13/pflag v1.0.9 // indirect
+ github.com/stoewer/go-strcase v1.3.0 // indirect
+ github.com/tidwall/gjson v1.18.0 // indirect
+ github.com/tidwall/match v1.1.1 // indirect
+ github.com/tidwall/pretty v1.2.1 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
+ go.mongodb.org/mongo-driver v1.17.2 // indirect
+ go.opentelemetry.io/otel v1.36.0 // indirect
+ go.opentelemetry.io/otel/trace v1.36.0 // indirect
+ golang.org/x/crypto v0.39.0 // indirect
+ golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect
+ golang.org/x/mod v0.25.0 // indirect
+ golang.org/x/net v0.41.0 // indirect
+ golang.org/x/oauth2 v0.30.0 // indirect
+ golang.org/x/sync v0.15.0 // indirect
+ golang.org/x/sys v0.33.0 // indirect
+ golang.org/x/term v0.32.0 // indirect
+ golang.org/x/text v0.26.0 // indirect
+ golang.org/x/time v0.11.0 // indirect
+ golang.org/x/tools v0.33.0 // indirect
+ gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect
+ google.golang.org/protobuf v1.36.6 // indirect
+ gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
+ gopkg.in/inf.v0 v0.9.1 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
+ k8s.io/api v0.33.3 // indirect
+ k8s.io/apiextensions-apiserver v0.33.3 // indirect
+ k8s.io/apimachinery v0.33.3 // indirect
+ k8s.io/client-go v0.33.3 // indirect
+ k8s.io/component-base v0.33.3 // indirect
+ k8s.io/klog v1.0.0 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
+ k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e // indirect
+ sigs.k8s.io/cluster-api v1.10.4 // indirect
+ sigs.k8s.io/cluster-api-provider-aws/v2 v2.9.0 // indirect
+ sigs.k8s.io/cluster-api-provider-azure v1.20.2 // indirect
+ sigs.k8s.io/cluster-api-provider-gcp v1.10.0 // indirect
+ sigs.k8s.io/cluster-api-provider-ibmcloud v0.11.0 // indirect
+ sigs.k8s.io/cluster-api-provider-vsphere v1.13.0 // indirect
+ sigs.k8s.io/controller-runtime v0.20.4 // indirect
+ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+ sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 // indirect
+ sigs.k8s.io/randfill v1.0.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect
+ sigs.k8s.io/yaml v1.4.0 // indirect
+)
+
+replace (
+ github.com/onsi/ginkgo/v2 => github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20241205171354-8006f302fd12
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc => go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0
+)
diff --git a/openshift-tests-extension/go.sum b/openshift-tests-extension/go.sum
new file mode 100644
index 000000000..cbe5e031a
--- /dev/null
+++ b/openshift-tests-extension/go.sum
@@ -0,0 +1,380 @@
+cel.dev/expr v0.22.1 h1:xoFEsNh972Yzey8N9TCPx2nDvMN7TMhQEzxLuj/iRrI=
+cel.dev/expr v0.22.1/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.0 h1:j8BorDEigD8UFOSZQiSqAMOOleyQOOQPnUAwV+Ls1gA=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.0/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0 h1:Dd+RhdJn0OTtVGaeDLZpcumkIVCtA/3/Fo42+eoYvVM=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0/go.mod h1:5kakwfW5CjC9KK+Q4wjXAg+ShuIm2mBMua0ZFj2C8PE=
+github.com/Azure/azure-service-operator/v2 v2.13.0 h1:24xDkuGOjSDKKkthECRo/I76slmlt3u0buYQ4rvX3pQ=
+github.com/Azure/azure-service-operator/v2 v2.13.0/go.mod h1:3xfZMZm4yjdcjr3lh1kWqP2dtvZS/nCy7wpNERYDatg=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
+github.com/IBM/go-sdk-core/v5 v5.19.1 h1:sleVks1O4XjgF4YEGvyDh6PZbP6iZhlTPeDkQc8nWDs=
+github.com/IBM/go-sdk-core/v5 v5.19.1/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw=
+github.com/IBM/vpc-go-sdk v0.68.0 h1:Zs65PWeWBG5IwafAJV0RdPVsi3hCjIkhFZkqr1sLt5g=
+github.com/IBM/vpc-go-sdk v0.68.0/go.mod h1:VL7sy61ybg6tvA60SepoQx7TFe20m7JyNUt+se2tHP4=
+github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=
+github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
+github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
+github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
+github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
+github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
+github.com/asaskevich/govalidator/v11 v11.0.2-0.20250122183457-e11347878e23 h1:I+Cy77zrFmVWIHOZaxiNV4L7w9xuVux9LMqAblGzvdE=
+github.com/asaskevich/govalidator/v11 v11.0.2-0.20250122183457-e11347878e23/go.mod h1:S7DsXubvw3xBC8rSI+qmzcTNw7xEND0ojHPqglh/whY=
+github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE=
+github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
+github.com/aws/aws-sdk-go-v2 v1.38.0 h1:UCRQ5mlqcFk9HJDIqENSLR3wiG1VTWlyUfLDEvY7RxU=
+github.com/aws/aws-sdk-go-v2 v1.38.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3 h1:o9RnO+YZ4X+kt5Z7Nvcishlz0nksIt2PIzDglLMP0vA=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3/go.mod h1:+6aLJzOG1fvMOyzIySYjOFjcguGvVRL68R+uoRencN4=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3 h1:joyyUFhiTQQmVK6ImzNU9TQSNRNeD9kOklqTzyk5v6s=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3/go.mod h1:+vNIyZQP3b3B1tSLI0lxvrU9cfM7gpdRXMFfm67ZcPc=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.233.0 h1:VxmOsv7MswuKQcSEIurxe4RK9tC6zYnosw9vBvv74lA=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.233.0/go.mod h1:35jGWx7ECvCwTsApqicFYzZ7JFEnBc6oHUuOQ3xIS54=
+github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.45.2 h1:vX70Z4lNSr7XsioU0uJq5yvxgI50sB66MvD+V/3buS4=
+github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.45.2/go.mod h1:xnCC3vFBfOKpU6PcsCKL2ktgBTZfOwTGxj6V8/X3IS4=
+github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw=
+github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
+github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
+github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
+github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
+github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
+github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
+github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
+github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
+github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
+github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
+github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM=
+github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8=
+github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
+github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
+github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
+github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
+github.com/go-openapi/errors v0.22.1 h1:kslMRRnK7NCb/CvR1q1VWuEQCEIsBGn5GgKD9e+HYhU=
+github.com/go-openapi/errors v0.22.1/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0=
+github.com/go-openapi/jsonpointer v0.21.1 h1:whnzv/pNXtK2FbX/W9yJfRmE2gsmkfahjMKB0fZvcic=
+github.com/go-openapi/jsonpointer v0.21.1/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk=
+github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
+github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
+github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c=
+github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4=
+github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
+github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
+github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
+github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
+github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
+github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.26.0 h1:SP05Nqhjcvz81uJaRfEV0YBSSSGMc/iMaVtFbr3Sw2k=
+github.com/go-playground/validator/v10 v10.26.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo=
+github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
+github.com/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4=
+github.com/gobuffalo/flect v1.0.3/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
+github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
+github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U=
+github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs=
+github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
+github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
+github.com/google/cel-go v0.23.2 h1:UdEe3CvQh3Nv+E/j9r1Y//WO0K0cSyD7/y0bzyLIMI4=
+github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx1J5Wwo=
+github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw=
+github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
+github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
+github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
+github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
+github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
+github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
+github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
+github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
+github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/jellydator/ttlcache/v3 v3.3.0 h1:BdoC9cE81qXfrxeb9eoJi9dWrdhSuwXMAnHTbnBm4Wc=
+github.com/jellydator/ttlcache/v3 v3.3.0/go.mod h1:bj2/e0l4jRnQdrnSTaGTsh4GSXvMjQcy41i7th0GVGw=
+github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 h1:liMMTbpW34dhU4az1GN0pTPADwNmvoRSeoZ6PItiqnY=
+github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
+github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
+github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
+github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
+github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
+github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
+github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
+github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/metal3-io/baremetal-operator/apis v0.5.1 h1:l6VCuM2nSYMsdir3mocXvF80F7HnTXVZ7NNIoMEYbio=
+github.com/metal3-io/baremetal-operator/apis v0.5.1/go.mod h1:Q3MHes59mRabjHM6ARoHfgd2uXUjJIytl3/uflzhyew=
+github.com/metal3-io/baremetal-operator/pkg/hardwareutils v0.5.1 h1:X0+MWsJ+Gj/TAkmhGybvesvxk6zQKu3NQXzvC6l0iJs=
+github.com/metal3-io/baremetal-operator/pkg/hardwareutils v0.5.1/go.mod h1:399nvdaqoU9rTI25UdFw2EWcVjmJPpeZPIhfDAIx/XU=
+github.com/metal3-io/cluster-api-provider-metal3/api v1.10.1 h1:jS1pAqF1AqXjPsOI+JQvQ96QD0h64oAh1I3xgUMsPp8=
+github.com/metal3-io/cluster-api-provider-metal3/api v1.10.1/go.mod h1:xa8OLhHAQPqAo8E6xo3YdJ2Mfe1aLn36lcKjVUI3vaE=
+github.com/metal3-io/ip-address-manager/api v1.10.1 h1:Sz2CX/yf2dSJdMtqbmmLYp+qt45rN8ej3qMYpqGM+r4=
+github.com/metal3-io/ip-address-manager/api v1.10.1/go.mod h1:Hyeq34VlcxylZf3l7WGyFY7KwaEMcbFdFC6BmxRc1DA=
+github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
+github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
+github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
+github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
+github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
+github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
+github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
+github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
+github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY=
+github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o=
+github.com/openshift-eng/openshift-tests-extension v0.0.0-20251125140340-13f4631a80b0 h1:d27Tezkhb3zGSuweEeNXYnMK3aJLYgOzVu32cVTfhDE=
+github.com/openshift-eng/openshift-tests-extension v0.0.0-20251125140340-13f4631a80b0/go.mod h1:6gkP5f2HL0meusT0Aim8icAspcD1cG055xxBZ9yC68M=
+github.com/openshift/api v0.0.0-20250731015415-ed654edbd7c6 h1:Tgb04NUifdOs+6m/OOe0a1FcoIFMScI3tMJ8grnfb90=
+github.com/openshift/api v0.0.0-20250731015415-ed654edbd7c6/go.mod h1:SPLf21TYPipzCO67BURkCfK6dcIIxx0oNRVWaOyRcXM=
+github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee h1:tOtrrxfDEW8hK3eEsHqxsXurq/D6LcINGfprkQC3hqY=
+github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee/go.mod h1:zhRiYyNMk89llof2qEuGPWPD+joQPhCRUc2IK0SB510=
+github.com/openshift/cluster-api-actuator-pkg v0.0.0-20250729202911-167220318f40 h1:aliDKARnERRhPBvZBdzmOM/Ktz6pLpBTqcQsjtUDmrM=
+github.com/openshift/cluster-api-actuator-pkg v0.0.0-20250729202911-167220318f40/go.mod h1:gYQH3j+az83vG5IuZZohskiBmqLDw7dzhmn1x5Zq5pg=
+github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20250821122144-fd0936342469 h1:2Nb7w9xhgZg/ahmvrG4Y/+6Tp/Gfj7KGZZKAupKah8g=
+github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20250821122144-fd0936342469/go.mod h1:9+FWWWLkVrnBo1eYhA/0Ehlq5JMgIAHtcB0IF+qV1AA=
+github.com/openshift/cluster-api-provider-baremetal v0.0.0-20250619124612-fb678fec5f7e h1:kW+b46Js8hn2oZwsuaYzdX7KAH/Aa9Wy3v1iHGJ3l4o=
+github.com/openshift/cluster-api-provider-baremetal v0.0.0-20250619124612-fb678fec5f7e/go.mod h1:xMvpaHoSmJ48WvX970zF82PPD9Wj8cMuZBFH6UxnvbE=
+github.com/openshift/cluster-autoscaler-operator v0.0.1-0.20250702183526-4eb64d553940 h1:NCCRJ7JfGLpRu4IQSV7Qw9VoAdIgF1BiwospisP06a8=
+github.com/openshift/cluster-autoscaler-operator v0.0.1-0.20250702183526-4eb64d553940/go.mod h1:zCklcJwbnaNx46KvR38Rh86uZdow5gvub4ATcNDopTM=
+github.com/openshift/cluster-capi-operator/e2e v0.0.0-20251121101530-509ccfd2960c h1:Vc9ivynAwTDkB+vc4PGbT2+Puy7HpbgIlxb8VuI+5/k=
+github.com/openshift/cluster-capi-operator/e2e v0.0.0-20251121101530-509ccfd2960c/go.mod h1:IzppBN4FqzdncUkc4QBRQzk39h+ccICoYGuZ+rDkHik=
+github.com/openshift/library-go v0.0.0-20250729191057-91376e1b394e h1:xYT+P++PSc9G+Y47pIcU9fm8IDV/tg6tMi3i+0m23pU=
+github.com/openshift/library-go v0.0.0-20250729191057-91376e1b394e/go.mod h1:tptKNust9MdRI0p90DoBSPHIrBa9oh+Rok59tF0vT8c=
+github.com/openshift/machine-api-operator v0.2.1-0.20250721183005-388c07321caf h1:KhtN61d6XNZsfZusHcItrwMqIoT3Ck4lFk/bRUiMxqo=
+github.com/openshift/machine-api-operator v0.2.1-0.20250721183005-388c07321caf/go.mod h1:IUXR/fHzKALjJ2M7IAAWS76UEVMig3qYATD6omexi10=
+github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20241205171354-8006f302fd12 h1:AKx/w1qpS8We43bsRgf8Nll3CGlDHpr/WAXvuedTNZI=
+github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20241205171354-8006f302fd12/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
+github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
+github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
+github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
+github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
+github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
+github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4=
+github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
+github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
+github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
+github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
+github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
+github.com/rotisserie/eris v0.5.4 h1:Il6IvLdAapsMhvuOahHWiBnl1G++Q0/L5UIkI5mARSk=
+github.com/rotisserie/eris v0.5.4/go.mod h1:Z/kgYTJiJtocxCbFfvRmO+QejApzG6zpyky9G1A4g9s=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew=
+github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o=
+github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s=
+github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0=
+github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=
+github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
+github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
+github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
+github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
+github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
+github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
+github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM=
+go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
+go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg=
+go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E=
+go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w=
+go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
+go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
+golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
+golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
+golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
+golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
+golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
+golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
+golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
+golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
+golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
+golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
+golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
+golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
+golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc=
+golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0=
+gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
+google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ=
+google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
+google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
+google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
+gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
+gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
+gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+k8s.io/api v0.33.3 h1:SRd5t//hhkI1buzxb288fy2xvjubstenEKL9K51KBI8=
+k8s.io/api v0.33.3/go.mod h1:01Y/iLUjNBM3TAvypct7DIj0M0NIZc+PzAHCIo0CYGE=
+k8s.io/apiextensions-apiserver v0.33.3 h1:qmOcAHN6DjfD0v9kxL5udB27SRP6SG/MTopmge3MwEs=
+k8s.io/apiextensions-apiserver v0.33.3/go.mod h1:oROuctgo27mUsyp9+Obahos6CWcMISSAPzQ77CAQGz8=
+k8s.io/apimachinery v0.33.3 h1:4ZSrmNa0c/ZpZJhAgRdcsFcZOw1PQU1bALVQ0B3I5LA=
+k8s.io/apimachinery v0.33.3/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
+k8s.io/apiserver v0.33.3 h1:Wv0hGc+QFdMJB4ZSiHrCgN3zL3QRatu56+rpccKC3J4=
+k8s.io/apiserver v0.33.3/go.mod h1:05632ifFEe6TxwjdAIrwINHWE2hLwyADFk5mBsQa15E=
+k8s.io/client-go v0.33.3 h1:M5AfDnKfYmVJif92ngN532gFqakcGi6RvaOF16efrpA=
+k8s.io/client-go v0.33.3/go.mod h1:luqKBQggEf3shbxHY4uVENAxrDISLOarxpTKMiUuujg=
+k8s.io/component-base v0.33.3 h1:mlAuyJqyPlKZM7FyaoM/LcunZaaY353RXiOd2+B5tGA=
+k8s.io/component-base v0.33.3/go.mod h1:ktBVsBzkI3imDuxYXmVxZ2zxJnYTZ4HAsVj9iF09qp4=
+k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
+k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4=
+k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
+k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e h1:KqK5c/ghOm8xkHYhlodbp6i6+r+ChV2vuAuVRdFbLro=
+k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/cluster-api v1.10.4 h1:5mdyWLGbbwOowWrjqM/J9N600QnxTohu5J1/1YR6g7c=
+sigs.k8s.io/cluster-api v1.10.4/go.mod h1:68GJs286ZChsncp+TxYNj/vhy2NWokiPtH4+SA0afs0=
+sigs.k8s.io/cluster-api-provider-aws/v2 v2.9.0 h1:oP4GkhI4K/STwtt/Uzt6UdOnn+xMXhk7v3BJfr+dSx4=
+sigs.k8s.io/cluster-api-provider-aws/v2 v2.9.0/go.mod h1:wdqD8SRkgbIAoj0L2geEItos4X4xmCr8yQpEOqIwLp4=
+sigs.k8s.io/cluster-api-provider-azure v1.20.2 h1:+7BUb0zj0ICrI+P6NKw9txVV/iMS+R+4wRx+HvIVLQY=
+sigs.k8s.io/cluster-api-provider-azure v1.20.2/go.mod h1:ZqjFzJm2/7rveKakQtC7h4L0p7sk5u3zylRLW1NmL50=
+sigs.k8s.io/cluster-api-provider-gcp v1.10.0 h1:gngUxo9bz8l+otpdw9v3ULEXwAvijyqiBx2v8HSoRwA=
+sigs.k8s.io/cluster-api-provider-gcp v1.10.0/go.mod h1:VkmOqBgi3Jj+VR+YTZEHAlMMmyjqcKl4lXhpLsYnYok=
+sigs.k8s.io/cluster-api-provider-ibmcloud v0.11.0 h1:aunR3nnDzQ5x1Qj1hJbR3Xq4SCZth4XyTWAyUCN46kE=
+sigs.k8s.io/cluster-api-provider-ibmcloud v0.11.0/go.mod h1:9yPLATyiqLx4crMzbX11YQU+GuR5txjtiCt8z9sxDfM=
+sigs.k8s.io/cluster-api-provider-vsphere v1.13.0 h1:tvJX0p/LfBvOvF1EWNu4+9EJALBTAHU1US7Z1SX/24Q=
+sigs.k8s.io/cluster-api-provider-vsphere v1.13.0/go.mod h1:TgNq4vlGPmUhCmzT2hOptOZuNbyj0JfOXFLufr91tTY=
+sigs.k8s.io/controller-runtime v0.20.4 h1:X3c+Odnxz+iPTRobG4tp092+CvBU9UK0t/bRf+n0DGU=
+sigs.k8s.io/controller-runtime v0.20.4/go.mod h1:xg2XB0K5ShQzAgsoujxuKN4LNXR2LfwwHsPj7Iaw+XY=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 h1:PFWFSkpArPNJxFX4ZKWAk9NSeRoZaXschn+ULa4xVek=
+sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96/go.mod h1:EOBQyBowOUsd7U4CJnMHNE0ri+zCXyouGdLwC/jZU+I=
+sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
+sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/structured-merge-diff/v4 v4.7.0 h1:qPeWmscJcXP0snki5IYF79Z8xrl8ETFxgMd7wez1XkI=
+sigs.k8s.io/structured-merge-diff/v4 v4.7.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps=
+sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
+sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
diff --git a/vendor/github.com/onsi/ginkgo/v2/.gitignore b/vendor/github.com/onsi/ginkgo/v2/.gitignore
index 6faaaf315..18793c248 100644
--- a/vendor/github.com/onsi/ginkgo/v2/.gitignore
+++ b/vendor/github.com/onsi/ginkgo/v2/.gitignore
@@ -4,5 +4,4 @@ tmp/**/*
*.coverprofile
.vscode
.idea/
-*.log
-*.test
\ No newline at end of file
+*.log
\ No newline at end of file
diff --git a/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md b/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md
index 092179411..3011efb57 100644
--- a/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md
+++ b/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md
@@ -1,207 +1,3 @@
-## 2.27.2
-
-### Fixes
-- inline automaxprocs to simplify dependencies; this will be removed when Go 1.26 comes out [a69113a]
-
-### Maintenance
-- Fix syntax errors and typo [a99c6e0]
-- Fix paragraph position error [f993df5]
-
-## 2.27.1
-
-### Fixes
-- Fix Ginkgo Reporter slice-bounds panic [606c1cb]
-- Bug Fix: Add GinkoTBWrapper.Attr() and GinkoTBWrapper.Output() [a6463b3]
-
-## 2.27.0
-
-### Features
-
-#### Transforming Nodes during Tree Construction
-
-This release adds support for `NodeArgsTransformer`s that can be registered with `AddTreeConstructionNodeArgsTransformer`.
-
-These are called during the tree construction phase as nodes are constructed and can modify the node strings and decorators. This enables frameworks built on top of Ginkgo to modify Ginkgo nodes and enforce conventions.
-
-Learn more [here](https://onsi.github.io/ginkgo/#advanced-transforming-node-arguments-during-tree-construction).
-
-#### Spec Prioritization
-
-A new `SpecPriority(int)` decorator has been added. Ginkgo will honor priority when ordering specs, ensuring that higher priority specs start running before lower priority specs
-
-Learn more [here](https://onsi.github.io/ginkgo/#prioritizing-specs).
-
-### Maintenance
-- Bump rexml from 3.4.0 to 3.4.2 in /docs (#1595) [1333dae]
-- Bump github.com/gkampitakis/go-snaps from 0.5.14 to 0.5.15 (#1600) [17ae63e]
-
-## 2.26.0
-
-### Features
-
-Ginkgo can now generate json-formatted reports that are compatible with the `go test` json format. Use `ginkgo --gojson-report=report.go.json`. This is not intended to be a replacement for Ginkgo's native json format which is more information rich and better models Ginkgo's test structure semantics.
-
-## 2.25.3
-
-### Fixes
-
-- emit --github-output group only for progress report itself [f01aed1]
-
-## 2.25.2
-
-### Fixes
-Add github output group for progress report content
-
-### Maintenance
-Bump Gomega
-
-## 2.25.1
-
-### Fixes
-- fix(types): ignore nameless nodes on FullText() [10866d3]
-- chore: fix some CodeQL warnings [2e42cff]
-
-## 2.25.0
-
-### `AroundNode`
-
-This release introduces a new decorator to support more complex spec setup usecases.
-
-`AroundNode` registers a function that runs before each individual node. This is considered a more advanced decorator.
-
-Please read the [docs](https://onsi.github.io/ginkgo/#advanced-around-node) for more information and some examples.
-
-Allowed signatures:
-
-- `AroundNode(func())` - `func` will be called before the node is run.
-- `AroundNode(func(ctx context.Context) context.Context)` - `func` can wrap the passed in context and return a new one which will be passed on to the node.
-- `AroundNode(func(ctx context.Context, body func(ctx context.Context)))` - `ctx` is the context for the node and `body` is a function that must be called to run the node. This gives you complete control over what runs before and after the node.
-
-Multiple `AroundNode` decorators can be applied to a single node and they will run in the order they are applied.
-
-Unlike setup nodes like `BeforeEach` and `DeferCleanup`, `AroundNode` is guaranteed to run in the same goroutine as the decorated node. This is necessary when working with lower-level libraries that must run on a single thread (you can call `runtime.LockOSThread()` in the `AroundNode` to ensure that the node runs on a single thread).
-
-Since `AroundNode` allows you to modify the context you can also use `AroundNode` to implement shared setup that attaches values to the context.
-
-If applied to a container, `AroundNode` will run before every node in the container. Including setup nodes like `BeforeEach` and `DeferCleanup`.
-
-`AroundNode` can also be applied to `RunSpecs` to run before every node in the suite. This opens up new mechanisms for instrumenting individual nodes across an entire suite.
-
-## 2.24.0
-
-### Features
-
-Specs can now be decorated with (e.g.) `SemVerConstraint("2.1.0")` and `ginkgo --sem-ver-filter="2.1.1"` will only run constrained specs that match the requested version. Learn more in the docs [here](https://onsi.github.io/ginkgo/#spec-semantic-version-filtering)! Thanks to @Icarus9913 for the PR.
-
-### Fixes
-
-- remove -o from run command [3f5d379]. fixes [#1582](https://github.com/onsi/ginkgo/issues/1582)
-
-### Maintenance
-
-Numerous dependency bumps and documentation fixes
-
-## 2.23.4
-
-Prior to this release Ginkgo would compute the incorrect number of available CPUs when running with `-p` in a linux container. Thanks to @emirot for the fix!
-
-### Features
-- Add automaxprocs for using CPUQuota [2b9c428]
-
-### Fixes
-- clarify gotchas about -vet flag [1f59d07]
-
-### Maintenance
-- bump dependencies [2d134d5]
-
-## 2.23.3
-
-### Fixes
-
-- allow `-` as a standalone argument [cfcc1a5]
-- Bug Fix: Add GinkoTBWrapper.Chdir() and GinkoTBWrapper.Context() [feaf292]
-- ignore exit code for symbol test on linux [88e2282]
-
-## 2.23.2
-
-🎉🎉🎉
-
-At long last, some long-standing performance gaps between `ginkgo` and `go test` have been resolved!
-
-Ginkgo operates by running `go test -c` to generate test binaries, and then running those binaries. It turns out that the compilation step of `go test -c` is slower than `go test`'s compilation step because `go test` strips out debug symbols (`ldflags=-w`) whereas `go test -c` does not.
-
-Ginkgo now passes the appropriate `ldflags` to `go test -c` when running specs to strip out symbols. This is only done when it is safe to do so and symbols are preferred when profiling is enabled and when `ginkgo build` is called explicitly.
-
-This, coupled, with the [instructions for disabling XProtect on MacOS](https://onsi.github.io/ginkgo/#if-you-are-running-on-macos) yields a much better performance experience with Ginkgo.
-
-## 2.23.1
-
-## 🚨 For users on MacOS 🚨
-
-A long-standing Ginkgo performance issue on MacOS seems to be due to mac's antimalware XProtect. You can follow the instructions [here](https://onsi.github.io/ginkgo/#if-you-are-running-on-macos) to disable it in your terminal. Doing so sped up Ginkgo's own test suite from 1m8s to 47s.
-
-### Fixes
-
-Ginkgo's CLI is now a bit clearer if you pass flags in incorrectly:
-
-- make it clearer that you need to pass a filename to the various profile flags, not an absolute directory [a0e52ff]
-- emit an error and exit if the ginkgo invocation includes flags after positional arguments [b799d8d]
-
-This might cause existing CI builds to fail. If so then it's likely that your CI build was misconfigured and should be corrected. Open an issue if you need help.
-
-## 2.23.0
-
-Ginkgo 2.23.0 adds a handful of methods to `GinkgoT()` to make it compatible with the `testing.TB` interface in Go 1.24. `GinkgoT().Context()`, in particular, is a useful shorthand for generating a new context that will clean itself up in a `DeferCleanup()`. This has subtle behavior differences from the golang implementation but should make sense in a Ginkgo... um... context.
-
-### Features
-- bump to go 1.24.0 - support new testing.TB methods and add a test to cover testing.TB regressions [37a511b]
-
-### Fixes
-- fix edge case where build -o is pointing at an explicit file, not a directory [7556a86]
-- Fix binary paths when precompiling multiple suites. [4df06c6]
-
-### Maintenance
-- Fix: Correct Markdown list rendering in MIGRATING_TO_V2.md [cbcf39a]
-- docs: fix test workflow badge (#1512) [9b261ff]
-- Bump golang.org/x/net in /integration/_fixtures/version_mismatch_fixture (#1516) [00f19c8]
-- Bump golang.org/x/tools from 0.28.0 to 0.30.0 (#1515) [e98a4df]
-- Bump activesupport from 6.0.6.1 to 6.1.7.5 in /docs (#1504) [60cc4e2]
-- Bump github-pages from 231 to 232 in /docs (#1447) [fea6f2d]
-- Bump rexml from 3.2.8 to 3.3.9 in /docs (#1497) [31d7813]
-- Bump webrick from 1.8.1 to 1.9.1 in /docs (#1501) [fc3bbd6]
-- Code linting (#1500) [aee0d56]
-- change interface{} to any (#1502) [809a710]
-
-## 2.22.2
-
-### Maintenance
-- Bump github.com/onsi/gomega from 1.36.1 to 1.36.2 (#1499) [cc553ce]
-- Bump golang.org/x/crypto (#1498) [2170370]
-- Bump golang.org/x/net from 0.32.0 to 0.33.0 (#1496) [a96c44f]
-
-## 2.22.1
-
-### Fixes
-Fix CSV encoding
-- Update tests [aab3da6]
-- Properly encode CSV rows [c09df39]
-- Add test case for proper csv escaping [96a80fc]
-- Add meta-test [43dad69]
-
-### Maintenance
-- ensure *.test files are gitignored so we don't accidentally commit compiled tests again [c88c634]
-- remove golang.org/x/net/context in favour of stdlib context [4df44bf]
-
-## 2.22.0
-
-### Features
-- Add label to serial nodes [0fcaa08]
-
-This allows serial tests to be filtered using the `label-filter`
-
-### Maintenance
-Various doc fixes
-
## 2.21.0
@@ -804,7 +600,7 @@ Ginkgo also uses this progress reporting infrastructure under the hood when hand
### Features
- `BeforeSuite`, `AfterSuite`, `SynchronizedBeforeSuite`, `SynchronizedAfterSuite`, and `ReportAfterSuite` now support (the relevant subset of) decorators. These can be passed in _after_ the callback functions that are usually passed into these nodes.
- As a result the **signature of these methods has changed** and now includes a trailing `args ...any`. For most users simply using the DSL, this change is transparent. However if you were assigning one of these functions to a custom variable (or passing it around) then your code may need to change to reflect the new signature.
+ As a result the **signature of these methods has changed** and now includes a trailing `args ...interface{}`. For most users simply using the DSL, this change is transparent. However if you were assigning one of these functions to a custom variable (or passing it around) then your code may need to change to reflect the new signature.
### Maintenance
- Modernize the invocation of Ginkgo in github actions [0ffde58]
@@ -1216,7 +1012,7 @@ New Features:
- `ginkgo -tags=TAG_LIST` passes a list of tags down to the `go build` command.
- `ginkgo --failFast` aborts the test suite after the first failure.
- `ginkgo generate file_1 file_2` can take multiple file arguments.
-- Ginkgo now summarizes any spec failures that occurred at the end of the test run.
+- Ginkgo now summarizes any spec failures that occurred at the end of the test run.
- `ginkgo --randomizeSuites` will run tests *suites* in random order using the generated/passed-in seed.
Improvements:
@@ -1250,7 +1046,7 @@ Bug Fixes:
Breaking changes:
- `thirdparty/gomocktestreporter` is gone. Use `GinkgoT()` instead
-- Modified the Reporter interface
+- Modified the Reporter interface
- `watch` is now a subcommand, not a flag.
DSL changes:
diff --git a/vendor/github.com/onsi/ginkgo/v2/OWNERS b/vendor/github.com/onsi/ginkgo/v2/OWNERS
new file mode 100644
index 000000000..2d1f6c71e
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/v2/OWNERS
@@ -0,0 +1,4 @@
+reviewers:
+approvers:
+ - bertinatto
+ - stbenjam
diff --git a/vendor/github.com/onsi/ginkgo/v2/README.md b/vendor/github.com/onsi/ginkgo/v2/README.md
index 7b7ab9e39..cb23ffdf6 100644
--- a/vendor/github.com/onsi/ginkgo/v2/README.md
+++ b/vendor/github.com/onsi/ginkgo/v2/README.md
@@ -1,6 +1,6 @@

-[](https://github.com/onsi/ginkgo/actions?query=workflow%3Atest+branch%3Amaster) | [Ginkgo Docs](https://onsi.github.io/ginkgo/)
+[](https://github.com/onsi/ginkgo/actions?query=workflow%3Atest+branch%3Amaster) | [Ginkgo Docs](https://onsi.github.io/ginkgo/)
---
@@ -113,13 +113,3 @@ Ginkgo is MIT-Licensed
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)
-
-## Sponsors
-
-Sponsors commit to a [sponsorship](https://github.com/sponsors/onsi) for a year. If you're an organization that makes use of Ginkgo please consider becoming a sponsor!
-
-
Browser testing via
-
-
-
-
diff --git a/vendor/github.com/onsi/ginkgo/v2/core_dsl.go b/vendor/github.com/onsi/ginkgo/v2/core_dsl.go
index 7e165e473..a3e8237e9 100644
--- a/vendor/github.com/onsi/ginkgo/v2/core_dsl.go
+++ b/vendor/github.com/onsi/ginkgo/v2/core_dsl.go
@@ -83,9 +83,9 @@ func exitIfErrors(errors []error) {
type GinkgoWriterInterface interface {
io.Writer
- Print(a ...any)
- Printf(format string, a ...any)
- Println(a ...any)
+ Print(a ...interface{})
+ Printf(format string, a ...interface{})
+ Println(a ...interface{})
TeeTo(writer io.Writer)
ClearTeeWriters()
@@ -186,20 +186,6 @@ func GinkgoLabelFilter() string {
return suiteConfig.LabelFilter
}
-/*
-GinkgoSemVerFilter() returns the semantic version filter configured for this suite via `--sem-ver-filter`.
-
-You can use this to manually check if a set of semantic version constraints would satisfy the filter via:
-
- if (SemVerConstraint("> 2.6.0", "< 2.8.0").MatchesSemVerFilter(GinkgoSemVerFilter())) {
- //...
- }
-*/
-func GinkgoSemVerFilter() string {
- suiteConfig, _ := GinkgoConfiguration()
- return suiteConfig.SemVerFilter
-}
-
/*
PauseOutputInterception() pauses Ginkgo's output interception. This is only relevant
when running in parallel and output to stdout/stderr is being intercepted. You generally
@@ -257,7 +243,7 @@ for more on how specs are parallelized in Ginkgo.
You can also pass suite-level Label() decorators to RunSpecs. The passed-in labels will apply to all specs in the suite.
*/
-func RunSpecs(t GinkgoTestingT, description string, args ...any) bool {
+func RunSpecs(t GinkgoTestingT, description string, args ...interface{}) bool {
if suiteDidRun {
exitIfErr(types.GinkgoErrors.RerunningSuite())
}
@@ -268,7 +254,7 @@ func RunSpecs(t GinkgoTestingT, description string, args ...any) bool {
}
defer global.PopClone()
- suiteLabels, suiteSemVerConstraints, suiteAroundNodes := extractSuiteConfiguration(args)
+ suiteLabels := extractSuiteConfiguration(args)
var reporter reporters.Reporter
if suiteConfig.ParallelTotal == 1 {
@@ -311,7 +297,7 @@ func RunSpecs(t GinkgoTestingT, description string, args ...any) bool {
suitePath, err = filepath.Abs(suitePath)
exitIfErr(err)
- passed, hasFocusedTests := global.Suite.Run(description, suiteLabels, suiteSemVerConstraints, suiteAroundNodes, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(client), client, internal.RegisterForProgressSignal, suiteConfig)
+ passed, hasFocusedTests := global.Suite.Run(description, suiteLabels, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(client), client, internal.RegisterForProgressSignal, suiteConfig)
outputInterceptor.Shutdown()
flagSet.ValidateDeprecations(deprecationTracker)
@@ -330,10 +316,8 @@ func RunSpecs(t GinkgoTestingT, description string, args ...any) bool {
return passed
}
-func extractSuiteConfiguration(args []any) (Labels, SemVerConstraints, types.AroundNodes) {
+func extractSuiteConfiguration(args []interface{}) Labels {
suiteLabels := Labels{}
- suiteSemVerConstraints := SemVerConstraints{}
- aroundNodes := types.AroundNodes{}
configErrors := []error{}
for _, arg := range args {
switch arg := arg.(type) {
@@ -343,10 +327,6 @@ func extractSuiteConfiguration(args []any) (Labels, SemVerConstraints, types.Aro
reporterConfig = arg
case Labels:
suiteLabels = append(suiteLabels, arg...)
- case SemVerConstraints:
- suiteSemVerConstraints = append(suiteSemVerConstraints, arg...)
- case types.AroundNodeDecorator:
- aroundNodes = append(aroundNodes, arg)
default:
configErrors = append(configErrors, types.GinkgoErrors.UnknownTypePassedToRunSpecs(arg))
}
@@ -362,7 +342,7 @@ func extractSuiteConfiguration(args []any) (Labels, SemVerConstraints, types.Aro
os.Exit(1)
}
- return suiteLabels, suiteSemVerConstraints, aroundNodes
+ return suiteLabels
}
func getwd() (string, error) {
@@ -385,7 +365,7 @@ func PreviewSpecs(description string, args ...any) Report {
}
defer global.PopClone()
- suiteLabels, suiteSemVerConstraints, suiteAroundNodes := extractSuiteConfiguration(args)
+ suiteLabels := extractSuiteConfiguration(args)
priorDryRun, priorParallelTotal, priorParallelProcess := suiteConfig.DryRun, suiteConfig.ParallelTotal, suiteConfig.ParallelProcess
suiteConfig.DryRun, suiteConfig.ParallelTotal, suiteConfig.ParallelProcess = true, 1, 1
defer func() {
@@ -403,7 +383,7 @@ func PreviewSpecs(description string, args ...any) Report {
suitePath, err = filepath.Abs(suitePath)
exitIfErr(err)
- global.Suite.Run(description, suiteLabels, suiteSemVerConstraints, suiteAroundNodes, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(client), client, internal.RegisterForProgressSignal, suiteConfig)
+ global.Suite.Run(description, suiteLabels, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(client), client, internal.RegisterForProgressSignal, suiteConfig)
return global.Suite.GetPreviewReport()
}
@@ -501,38 +481,6 @@ func pushNode(node internal.Node, errors []error) bool {
return true
}
-// NodeArgsTransformer is a hook which is called by the test construction DSL methods
-// before creating the new node. If it returns any error, the test suite
-// prints those errors and exits. The text and arguments can be modified,
-// which includes directly changing the args slice that is passed in.
-// Arguments have been flattened already, i.e. none of the entries in args is another []any.
-// The result may be nested.
-//
-// The node type is provided for information and remains the same.
-//
-// The offset is valid for calling NewLocation directly in the
-// implementation of TransformNodeArgs to find the location where
-// the Ginkgo DSL function is called. An additional offset supplied
-// by the caller via args is already included.
-//
-// A NodeArgsTransformer can be registered with AddTreeConstructionNodeArgsTransformer.
-type NodeArgsTransformer func(nodeType types.NodeType, offset Offset, text string, args []any) (string, []any, []error)
-
-// AddTreeConstructionNodeArgsTransformer registers a NodeArgsTransformer.
-// Only nodes which get created after registering a NodeArgsTransformer
-// are transformed by it. The returned function can be called to
-// unregister the transformer.
-//
-// Both may only be called during the construction phase.
-//
-// If there is more than one registered transformer, then the most
-// recently added ones get called first.
-func AddTreeConstructionNodeArgsTransformer(transformer NodeArgsTransformer) func() {
- // This conversion could be avoided with a type alias, but type aliases make
- // developer documentation less useful.
- return internal.AddTreeConstructionNodeArgsTransformer(internal.NodeArgsTransformer(transformer))
-}
-
/*
Describe nodes are Container nodes that allow you to organize your specs. A Describe node's closure can contain any number of
Setup nodes (e.g. BeforeEach, AfterEach, JustBeforeEach), and Subject nodes (i.e. It).
@@ -543,24 +491,24 @@ to Describe the behavior of an object or function and, within that Describe, out
You can learn more at https://onsi.github.io/ginkgo/#organizing-specs-with-container-nodes
In addition, container nodes can be decorated with a variety of decorators. You can learn more here: https://onsi.github.io/ginkgo/#decorator-reference
*/
-func Describe(text string, args ...any) bool {
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, text, args...)))
+func Describe(text string, args ...interface{}) bool {
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, text, args...))
}
/*
FDescribe focuses specs within the Describe block.
*/
-func FDescribe(text string, args ...any) bool {
+func FDescribe(text string, args ...interface{}) bool {
args = append(args, internal.Focus)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, text, args...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, text, args...))
}
/*
PDescribe marks specs within the Describe block as pending.
*/
-func PDescribe(text string, args ...any) bool {
+func PDescribe(text string, args ...interface{}) bool {
args = append(args, internal.Pending)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, text, args...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, text, args...))
}
/*
@@ -573,21 +521,21 @@ var XDescribe = PDescribe
/* Context is an alias for Describe - it generates the exact same kind of Container node */
var Context, FContext, PContext, XContext = Describe, FDescribe, PDescribe, XDescribe
-/* When is an alias for Describe - it generates the exact same kind of Container node with "when " as prefix for the text. */
-func When(text string, args ...any) bool {
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, "when "+text, args...)))
+/* When is an alias for Describe - it generates the exact same kind of Container node */
+func When(text string, args ...interface{}) bool {
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, "when "+text, args...))
}
-/* When is an alias for Describe - it generates the exact same kind of Container node with "when " as prefix for the text. */
-func FWhen(text string, args ...any) bool {
+/* When is an alias for Describe - it generates the exact same kind of Container node */
+func FWhen(text string, args ...interface{}) bool {
args = append(args, internal.Focus)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, "when "+text, args...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, "when "+text, args...))
}
/* When is an alias for Describe - it generates the exact same kind of Container node */
-func PWhen(text string, args ...any) bool {
+func PWhen(text string, args ...interface{}) bool {
args = append(args, internal.Pending)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, "when "+text, args...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, "when "+text, args...))
}
var XWhen = PWhen
@@ -602,24 +550,24 @@ You can pass It nodes bare functions (func() {}) or functions that receive a Spe
You can learn more at https://onsi.github.io/ginkgo/#spec-subjects-it
In addition, subject nodes can be decorated with a variety of decorators. You can learn more here: https://onsi.github.io/ginkgo/#decorator-reference
*/
-func It(text string, args ...any) bool {
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeIt, text, args...)))
+func It(text string, args ...interface{}) bool {
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeIt, text, args...))
}
/*
FIt allows you to focus an individual It.
*/
-func FIt(text string, args ...any) bool {
+func FIt(text string, args ...interface{}) bool {
args = append(args, internal.Focus)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeIt, text, args...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeIt, text, args...))
}
/*
PIt allows you to mark an individual It as pending.
*/
-func PIt(text string, args ...any) bool {
+func PIt(text string, args ...interface{}) bool {
args = append(args, internal.Pending)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeIt, text, args...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeIt, text, args...))
}
/*
@@ -663,10 +611,10 @@ BeforeSuite can take a func() body, or an interruptible func(SpecContext)/func(c
You cannot nest any other Ginkgo nodes within a BeforeSuite node's closure.
You can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite
*/
-func BeforeSuite(body any, args ...any) bool {
- combinedArgs := []any{body}
+func BeforeSuite(body interface{}, args ...interface{}) bool {
+ combinedArgs := []interface{}{body}
combinedArgs = append(combinedArgs, args...)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeBeforeSuite, "", combinedArgs...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeBeforeSuite, "", combinedArgs...))
}
/*
@@ -682,10 +630,10 @@ AfterSuite can take a func() body, or an interruptible func(SpecContext)/func(co
You cannot nest any other Ginkgo nodes within an AfterSuite node's closure.
You can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite
*/
-func AfterSuite(body any, args ...any) bool {
- combinedArgs := []any{body}
+func AfterSuite(body interface{}, args ...interface{}) bool {
+ combinedArgs := []interface{}{body}
combinedArgs = append(combinedArgs, args...)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeAfterSuite, "", combinedArgs...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeAfterSuite, "", combinedArgs...))
}
/*
@@ -719,11 +667,11 @@ If either function receives a context.Context/SpecContext it is considered inter
You cannot nest any other Ginkgo nodes within an SynchronizedBeforeSuite node's closure.
You can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite
*/
-func SynchronizedBeforeSuite(process1Body any, allProcessBody any, args ...any) bool {
- combinedArgs := []any{process1Body, allProcessBody}
+func SynchronizedBeforeSuite(process1Body interface{}, allProcessBody interface{}, args ...interface{}) bool {
+ combinedArgs := []interface{}{process1Body, allProcessBody}
combinedArgs = append(combinedArgs, args...)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeSynchronizedBeforeSuite, "", combinedArgs...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeSynchronizedBeforeSuite, "", combinedArgs...))
}
/*
@@ -739,11 +687,11 @@ Note that you can also use DeferCleanup() in SynchronizedBeforeSuite to accompli
You cannot nest any other Ginkgo nodes within an SynchronizedAfterSuite node's closure.
You can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite
*/
-func SynchronizedAfterSuite(allProcessBody any, process1Body any, args ...any) bool {
- combinedArgs := []any{allProcessBody, process1Body}
+func SynchronizedAfterSuite(allProcessBody interface{}, process1Body interface{}, args ...interface{}) bool {
+ combinedArgs := []interface{}{allProcessBody, process1Body}
combinedArgs = append(combinedArgs, args...)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeSynchronizedAfterSuite, "", combinedArgs...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeSynchronizedAfterSuite, "", combinedArgs...))
}
/*
@@ -755,8 +703,8 @@ BeforeEach can take a func() body, or an interruptible func(SpecContext)/func(co
You cannot nest any other Ginkgo nodes within a BeforeEach node's closure.
You can learn more here: https://onsi.github.io/ginkgo/#extracting-common-setup-beforeeach
*/
-func BeforeEach(args ...any) bool {
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeBeforeEach, "", args...)))
+func BeforeEach(args ...interface{}) bool {
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeBeforeEach, "", args...))
}
/*
@@ -768,8 +716,8 @@ JustBeforeEach can take a func() body, or an interruptible func(SpecContext)/fun
You cannot nest any other Ginkgo nodes within a JustBeforeEach node's closure.
You can learn more and see some examples here: https://onsi.github.io/ginkgo/#separating-creation-and-configuration-justbeforeeach
*/
-func JustBeforeEach(args ...any) bool {
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeJustBeforeEach, "", args...)))
+func JustBeforeEach(args ...interface{}) bool {
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeJustBeforeEach, "", args...))
}
/*
@@ -783,8 +731,8 @@ AfterEach can take a func() body, or an interruptible func(SpecContext)/func(con
You cannot nest any other Ginkgo nodes within an AfterEach node's closure.
You can learn more here: https://onsi.github.io/ginkgo/#spec-cleanup-aftereach-and-defercleanup
*/
-func AfterEach(args ...any) bool {
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeAfterEach, "", args...)))
+func AfterEach(args ...interface{}) bool {
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeAfterEach, "", args...))
}
/*
@@ -795,8 +743,8 @@ JustAfterEach can take a func() body, or an interruptible func(SpecContext)/func
You cannot nest any other Ginkgo nodes within a JustAfterEach node's closure.
You can learn more and see some examples here: https://onsi.github.io/ginkgo/#separating-diagnostics-collection-and-teardown-justaftereach
*/
-func JustAfterEach(args ...any) bool {
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeJustAfterEach, "", args...)))
+func JustAfterEach(args ...interface{}) bool {
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeJustAfterEach, "", args...))
}
/*
@@ -810,8 +758,8 @@ You cannot nest any other Ginkgo nodes within a BeforeAll node's closure.
You can learn more about Ordered Containers at: https://onsi.github.io/ginkgo/#ordered-containers
And you can learn more about BeforeAll at: https://onsi.github.io/ginkgo/#setup-in-ordered-containers-beforeall-and-afterall
*/
-func BeforeAll(args ...any) bool {
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeBeforeAll, "", args...)))
+func BeforeAll(args ...interface{}) bool {
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeBeforeAll, "", args...))
}
/*
@@ -827,8 +775,8 @@ You cannot nest any other Ginkgo nodes within an AfterAll node's closure.
You can learn more about Ordered Containers at: https://onsi.github.io/ginkgo/#ordered-containers
And you can learn more about AfterAll at: https://onsi.github.io/ginkgo/#setup-in-ordered-containers-beforeall-and-afterall
*/
-func AfterAll(args ...any) bool {
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeAfterAll, "", args...)))
+func AfterAll(args ...interface{}) bool {
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeAfterAll, "", args...))
}
/*
@@ -870,7 +818,7 @@ When DeferCleanup is called in BeforeSuite, SynchronizedBeforeSuite, AfterSuite,
Note that DeferCleanup does not represent a node but rather dynamically generates the appropriate type of cleanup node based on the context in which it is called. As such you must call DeferCleanup within a Setup or Subject node, and not within a Container node.
You can learn more about DeferCleanup here: https://onsi.github.io/ginkgo/#cleaning-up-our-cleanup-code-defercleanup
*/
-func DeferCleanup(args ...any) {
+func DeferCleanup(args ...interface{}) {
fail := func(message string, cl types.CodeLocation) {
global.Failer.Fail(message, cl)
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/core_dsl_patch.go b/vendor/github.com/onsi/ginkgo/v2/core_dsl_patch.go
new file mode 100644
index 000000000..bf60ceb52
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/v2/core_dsl_patch.go
@@ -0,0 +1,33 @@
+package ginkgo
+
+import (
+ "io"
+
+ "github.com/onsi/ginkgo/v2/internal"
+ "github.com/onsi/ginkgo/v2/internal/global"
+ "github.com/onsi/ginkgo/v2/types"
+)
+
+func AppendSpecText(test *internal.Spec, text string) {
+ test.AppendText(text)
+}
+
+func GetSuite() *internal.Suite {
+ return global.Suite
+}
+
+func GetFailer() *internal.Failer {
+ return global.Failer
+}
+
+func NewWriter(w io.Writer) *internal.Writer {
+ return internal.NewWriter(w)
+}
+
+func GetWriter() *internal.Writer {
+ return GinkgoWriter.(*internal.Writer)
+}
+
+func SetReporterConfig(r types.ReporterConfig) {
+ reporterConfig = r
+}
diff --git a/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go b/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go
index e331d7cf8..c65af4ce1 100644
--- a/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go
+++ b/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go
@@ -2,7 +2,6 @@ package ginkgo
import (
"github.com/onsi/ginkgo/v2/internal"
- "github.com/onsi/ginkgo/v2/types"
)
/*
@@ -100,23 +99,6 @@ You can learn more here: https://onsi.github.io/ginkgo/#spec-labels
*/
type Labels = internal.Labels
-/*
-SemVerConstraint decorates specs with SemVerConstraints. Multiple semantic version constraints can be passed to SemVerConstraint and these strings must follow the semantic version constraint rules.
-SemVerConstraints can be applied to container and subject nodes, but not setup nodes. You can provide multiple SemVerConstraints to a given node and a spec's semantic version constraints is the union of all semantic version constraints in its node hierarchy.
-
-You can learn more here: https://onsi.github.io/ginkgo/#spec-semantic-version-filtering
-You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference
-*/
-func SemVerConstraint(semVerConstraints ...string) SemVerConstraints {
- return SemVerConstraints(semVerConstraints)
-}
-
-/*
-SemVerConstraints are the type for spec SemVerConstraint decorators. Use SemVerConstraint(...) to construct SemVerConstraints.
-You can learn more here: https://onsi.github.io/ginkgo/#spec-semantic-version-filtering
-*/
-type SemVerConstraints = internal.SemVerConstraints
-
/*
PollProgressAfter allows you to override the configured value for --poll-progress-after for a particular node.
@@ -154,40 +136,8 @@ Nodes that do not finish within a GracePeriod will be leaked and Ginkgo will pro
*/
type GracePeriod = internal.GracePeriod
-/*
-SpecPriority allows you to assign a priority to a spec or container.
-
-Specs with higher priority will be scheduled to run before specs with lower priority. The default priority is 0 and negative priorities are allowed.
-*/
-type SpecPriority = internal.SpecPriority
-
/*
SuppressProgressReporting is a decorator that allows you to disable progress reporting of a particular node. This is useful if `ginkgo -v -progress` is generating too much noise; particularly
if you have a `ReportAfterEach` node that is running for every skipped spec and is generating lots of progress reports.
*/
const SuppressProgressReporting = internal.SuppressProgressReporting
-
-/*
-AroundNode registers a function that runs before each individual node. This is considered a more advanced decorator.
-
-Please read the [docs](https://onsi.github.io/ginkgo/#advanced-around-node) for more information.
-
-Allowed signatures:
-
-- AroundNode(func()) - func will be called before the node is run.
-- AroundNode(func(ctx context.Context) context.Context) - func can wrap the passed in context and return a new one which will be passed on to the node.
-- AroundNode(func(ctx context.Context, body func(ctx context.Context))) - ctx is the context for the node and body is a function that must be called to run the node. This gives you complete control over what runs before and after the node.
-
-Multiple AroundNode decorators can be applied to a single node and they will run in the order they are applied.
-
-Unlike setup nodes like BeforeEach and DeferCleanup, AroundNode is guaranteed to run in the same goroutine as the decorated node. This is necessary when working with lower-level libraries that must run on a single thread (you can call runtime.LockOSThread() in the AroundNode to ensure that the node runs on a single thread).
-
-Since AroundNode allows you to modify the context you can also use AroundNode to implement shared setup that attaches values to the context. You must return a context that inherits from the passed in context.
-
-If applied to a container, AroundNode will run before every node in the container. Including setup nodes like BeforeEach and DeferCleanup.
-
-AroundNode can also be applied to RunSpecs to run before every node in the suite.
-*/
-func AroundNode[F types.AroundNodeAllowedFuncs](f F) types.AroundNodeDecorator {
- return types.AroundNode(f, types.NewCodeLocation(1))
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go b/vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go
index fd45b8bea..f912bbec6 100644
--- a/vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go
+++ b/vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go
@@ -118,9 +118,9 @@ Use Gomega's gmeasure package instead.
You can learn more here: https://onsi.github.io/ginkgo/#benchmarking-code
*/
type Benchmarker interface {
- Time(name string, body func(), info ...any) (elapsedTime time.Duration)
- RecordValue(name string, value float64, info ...any)
- RecordValueWithPrecision(name string, value float64, units string, precision int, info ...any)
+ Time(name string, body func(), info ...interface{}) (elapsedTime time.Duration)
+ RecordValue(name string, value float64, info ...interface{})
+ RecordValueWithPrecision(name string, value float64, units string, precision int, info ...interface{})
}
/*
@@ -129,7 +129,7 @@ Deprecated: Measure() has been removed from Ginkgo 2.0
Use Gomega's gmeasure package instead.
You can learn more here: https://onsi.github.io/ginkgo/#benchmarking-code
*/
-func Measure(_ ...any) bool {
+func Measure(_ ...interface{}) bool {
deprecationTracker.TrackDeprecation(types.Deprecations.Measure(), types.NewCodeLocation(1))
return true
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go b/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go
index f61356db1..4d5749114 100644
--- a/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go
+++ b/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go
@@ -24,15 +24,15 @@ const (
var SingletonFormatter = New(ColorModeTerminal)
-func F(format string, args ...any) string {
+func F(format string, args ...interface{}) string {
return SingletonFormatter.F(format, args...)
}
-func Fi(indentation uint, format string, args ...any) string {
+func Fi(indentation uint, format string, args ...interface{}) string {
return SingletonFormatter.Fi(indentation, format, args...)
}
-func Fiw(indentation uint, maxWidth uint, format string, args ...any) string {
+func Fiw(indentation uint, maxWidth uint, format string, args ...interface{}) string {
return SingletonFormatter.Fiw(indentation, maxWidth, format, args...)
}
@@ -115,15 +115,15 @@ func New(colorMode ColorMode) Formatter {
return f
}
-func (f Formatter) F(format string, args ...any) string {
+func (f Formatter) F(format string, args ...interface{}) string {
return f.Fi(0, format, args...)
}
-func (f Formatter) Fi(indentation uint, format string, args ...any) string {
+func (f Formatter) Fi(indentation uint, format string, args ...interface{}) string {
return f.Fiw(indentation, 0, format, args...)
}
-func (f Formatter) Fiw(indentation uint, maxWidth uint, format string, args ...any) string {
+func (f Formatter) Fiw(indentation uint, maxWidth uint, format string, args ...interface{}) string {
out := f.style(format)
if len(args) > 0 {
out = fmt.Sprintf(out, args...)
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs.go
deleted file mode 100644
index ee6ac7b5f..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs.go
+++ /dev/null
@@ -1,8 +0,0 @@
-//go:build !go1.25
-// +build !go1.25
-
-package main
-
-import (
- _ "github.com/onsi/ginkgo/v2/ginkgo/automaxprocs"
-)
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/README.md b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/README.md
deleted file mode 100644
index e249ebe8b..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This entire directory is a lightly modified clone of https://github.com/uber-go/automaxprocs
-
-It will be removed when Go 1.26 ships and we no longer need to support Go 1.24 (which does not correctly autodetect maxprocs in containers).
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/automaxprocs.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/automaxprocs.go
deleted file mode 100644
index 8a762b51d..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/automaxprocs.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-// Package maxprocs lets Go programs easily configure runtime.GOMAXPROCS to
-// match the configured Linux CPU quota. Unlike the top-level automaxprocs
-// package, it lets the caller configure logging and handle errors.
-package automaxprocs
-
-import (
- "os"
- "runtime"
-)
-
-func init() {
- Set()
-}
-
-const _maxProcsKey = "GOMAXPROCS"
-
-type config struct {
- procs func(int, func(v float64) int) (int, CPUQuotaStatus, error)
- minGOMAXPROCS int
- roundQuotaFunc func(v float64) int
-}
-
-// Set GOMAXPROCS to match the Linux container CPU quota (if any), returning
-// any error encountered and an undo function.
-//
-// Set is a no-op on non-Linux systems and in Linux environments without a
-// configured CPU quota.
-func Set() error {
- cfg := &config{
- procs: CPUQuotaToGOMAXPROCS,
- roundQuotaFunc: DefaultRoundFunc,
- minGOMAXPROCS: 1,
- }
-
- // Honor the GOMAXPROCS environment variable if present. Otherwise, amend
- // `runtime.GOMAXPROCS()` with the current process' CPU quota if the OS is
- // Linux, and guarantee a minimum value of 1. The minimum guaranteed value
- // can be overridden using `maxprocs.Min()`.
- if _, exists := os.LookupEnv(_maxProcsKey); exists {
- return nil
- }
- maxProcs, status, err := cfg.procs(cfg.minGOMAXPROCS, cfg.roundQuotaFunc)
- if err != nil {
- return err
- }
- if status == CPUQuotaUndefined {
- return nil
- }
- runtime.GOMAXPROCS(maxProcs)
- return nil
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroup.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroup.go
deleted file mode 100644
index a4676933e..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroup.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package automaxprocs
-
-import (
- "bufio"
- "io"
- "os"
- "path/filepath"
- "strconv"
-)
-
-// CGroup represents the data structure for a Linux control group.
-type CGroup struct {
- path string
-}
-
-// NewCGroup returns a new *CGroup from a given path.
-func NewCGroup(path string) *CGroup {
- return &CGroup{path: path}
-}
-
-// Path returns the path of the CGroup*.
-func (cg *CGroup) Path() string {
- return cg.path
-}
-
-// ParamPath returns the path of the given cgroup param under itself.
-func (cg *CGroup) ParamPath(param string) string {
- return filepath.Join(cg.path, param)
-}
-
-// readFirstLine reads the first line from a cgroup param file.
-func (cg *CGroup) readFirstLine(param string) (string, error) {
- paramFile, err := os.Open(cg.ParamPath(param))
- if err != nil {
- return "", err
- }
- defer paramFile.Close()
-
- scanner := bufio.NewScanner(paramFile)
- if scanner.Scan() {
- return scanner.Text(), nil
- }
- if err := scanner.Err(); err != nil {
- return "", err
- }
- return "", io.ErrUnexpectedEOF
-}
-
-// readInt parses the first line from a cgroup param file as int.
-func (cg *CGroup) readInt(param string) (int, error) {
- text, err := cg.readFirstLine(param)
- if err != nil {
- return 0, err
- }
- return strconv.Atoi(text)
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroups.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroups.go
deleted file mode 100644
index ed384891e..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroups.go
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package automaxprocs
-
-const (
- // _cgroupFSType is the Linux CGroup file system type used in
- // `/proc/$PID/mountinfo`.
- _cgroupFSType = "cgroup"
- // _cgroupSubsysCPU is the CPU CGroup subsystem.
- _cgroupSubsysCPU = "cpu"
- // _cgroupSubsysCPUAcct is the CPU accounting CGroup subsystem.
- _cgroupSubsysCPUAcct = "cpuacct"
- // _cgroupSubsysCPUSet is the CPUSet CGroup subsystem.
- _cgroupSubsysCPUSet = "cpuset"
- // _cgroupSubsysMemory is the Memory CGroup subsystem.
- _cgroupSubsysMemory = "memory"
-
- // _cgroupCPUCFSQuotaUsParam is the file name for the CGroup CFS quota
- // parameter.
- _cgroupCPUCFSQuotaUsParam = "cpu.cfs_quota_us"
- // _cgroupCPUCFSPeriodUsParam is the file name for the CGroup CFS period
- // parameter.
- _cgroupCPUCFSPeriodUsParam = "cpu.cfs_period_us"
-)
-
-const (
- _procPathCGroup = "/proc/self/cgroup"
- _procPathMountInfo = "/proc/self/mountinfo"
-)
-
-// CGroups is a map that associates each CGroup with its subsystem name.
-type CGroups map[string]*CGroup
-
-// NewCGroups returns a new *CGroups from given `mountinfo` and `cgroup` files
-// under for some process under `/proc` file system (see also proc(5) for more
-// information).
-func NewCGroups(procPathMountInfo, procPathCGroup string) (CGroups, error) {
- cgroupSubsystems, err := parseCGroupSubsystems(procPathCGroup)
- if err != nil {
- return nil, err
- }
-
- cgroups := make(CGroups)
- newMountPoint := func(mp *MountPoint) error {
- if mp.FSType != _cgroupFSType {
- return nil
- }
-
- for _, opt := range mp.SuperOptions {
- subsys, exists := cgroupSubsystems[opt]
- if !exists {
- continue
- }
-
- cgroupPath, err := mp.Translate(subsys.Name)
- if err != nil {
- return err
- }
- cgroups[opt] = NewCGroup(cgroupPath)
- }
-
- return nil
- }
-
- if err := parseMountInfo(procPathMountInfo, newMountPoint); err != nil {
- return nil, err
- }
- return cgroups, nil
-}
-
-// NewCGroupsForCurrentProcess returns a new *CGroups instance for the current
-// process.
-func NewCGroupsForCurrentProcess() (CGroups, error) {
- return NewCGroups(_procPathMountInfo, _procPathCGroup)
-}
-
-// CPUQuota returns the CPU quota applied with the CPU cgroup controller.
-// It is a result of `cpu.cfs_quota_us / cpu.cfs_period_us`. If the value of
-// `cpu.cfs_quota_us` was not set (-1), the method returns `(-1, nil)`.
-func (cg CGroups) CPUQuota() (float64, bool, error) {
- cpuCGroup, exists := cg[_cgroupSubsysCPU]
- if !exists {
- return -1, false, nil
- }
-
- cfsQuotaUs, err := cpuCGroup.readInt(_cgroupCPUCFSQuotaUsParam)
- if defined := cfsQuotaUs > 0; err != nil || !defined {
- return -1, defined, err
- }
-
- cfsPeriodUs, err := cpuCGroup.readInt(_cgroupCPUCFSPeriodUsParam)
- if defined := cfsPeriodUs > 0; err != nil || !defined {
- return -1, defined, err
- }
-
- return float64(cfsQuotaUs) / float64(cfsPeriodUs), true, nil
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroups2.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroups2.go
deleted file mode 100644
index 69a0be6b7..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cgroups2.go
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright (c) 2022 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package automaxprocs
-
-import (
- "bufio"
- "errors"
- "fmt"
- "io"
- "os"
- "path"
- "strconv"
- "strings"
-)
-
-const (
- // _cgroupv2CPUMax is the file name for the CGroup-V2 CPU max and period
- // parameter.
- _cgroupv2CPUMax = "cpu.max"
- // _cgroupFSType is the Linux CGroup-V2 file system type used in
- // `/proc/$PID/mountinfo`.
- _cgroupv2FSType = "cgroup2"
-
- _cgroupv2MountPoint = "/sys/fs/cgroup"
-
- _cgroupV2CPUMaxDefaultPeriod = 100000
- _cgroupV2CPUMaxQuotaMax = "max"
-)
-
-const (
- _cgroupv2CPUMaxQuotaIndex = iota
- _cgroupv2CPUMaxPeriodIndex
-)
-
-// ErrNotV2 indicates that the system is not using cgroups2.
-var ErrNotV2 = errors.New("not using cgroups2")
-
-// CGroups2 provides access to cgroups data for systems using cgroups2.
-type CGroups2 struct {
- mountPoint string
- groupPath string
- cpuMaxFile string
-}
-
-// NewCGroups2ForCurrentProcess builds a CGroups2 for the current process.
-//
-// This returns ErrNotV2 if the system is not using cgroups2.
-func NewCGroups2ForCurrentProcess() (*CGroups2, error) {
- return newCGroups2From(_procPathMountInfo, _procPathCGroup)
-}
-
-func newCGroups2From(mountInfoPath, procPathCGroup string) (*CGroups2, error) {
- isV2, err := isCGroupV2(mountInfoPath)
- if err != nil {
- return nil, err
- }
-
- if !isV2 {
- return nil, ErrNotV2
- }
-
- subsystems, err := parseCGroupSubsystems(procPathCGroup)
- if err != nil {
- return nil, err
- }
-
- // Find v2 subsystem by looking for the `0` id
- var v2subsys *CGroupSubsys
- for _, subsys := range subsystems {
- if subsys.ID == 0 {
- v2subsys = subsys
- break
- }
- }
-
- if v2subsys == nil {
- return nil, ErrNotV2
- }
-
- return &CGroups2{
- mountPoint: _cgroupv2MountPoint,
- groupPath: v2subsys.Name,
- cpuMaxFile: _cgroupv2CPUMax,
- }, nil
-}
-
-func isCGroupV2(procPathMountInfo string) (bool, error) {
- var (
- isV2 bool
- newMountPoint = func(mp *MountPoint) error {
- isV2 = isV2 || (mp.FSType == _cgroupv2FSType && mp.MountPoint == _cgroupv2MountPoint)
- return nil
- }
- )
-
- if err := parseMountInfo(procPathMountInfo, newMountPoint); err != nil {
- return false, err
- }
-
- return isV2, nil
-}
-
-// CPUQuota returns the CPU quota applied with the CPU cgroup2 controller.
-// It is a result of reading cpu quota and period from cpu.max file.
-// It will return `cpu.max / cpu.period`. If cpu.max is set to max, it returns
-// (-1, false, nil)
-func (cg *CGroups2) CPUQuota() (float64, bool, error) {
- cpuMaxParams, err := os.Open(path.Join(cg.mountPoint, cg.groupPath, cg.cpuMaxFile))
- if err != nil {
- if os.IsNotExist(err) {
- return -1, false, nil
- }
- return -1, false, err
- }
- defer cpuMaxParams.Close()
-
- scanner := bufio.NewScanner(cpuMaxParams)
- if scanner.Scan() {
- fields := strings.Fields(scanner.Text())
- if len(fields) == 0 || len(fields) > 2 {
- return -1, false, fmt.Errorf("invalid format")
- }
-
- if fields[_cgroupv2CPUMaxQuotaIndex] == _cgroupV2CPUMaxQuotaMax {
- return -1, false, nil
- }
-
- max, err := strconv.Atoi(fields[_cgroupv2CPUMaxQuotaIndex])
- if err != nil {
- return -1, false, err
- }
-
- var period int
- if len(fields) == 1 {
- period = _cgroupV2CPUMaxDefaultPeriod
- } else {
- period, err = strconv.Atoi(fields[_cgroupv2CPUMaxPeriodIndex])
- if err != nil {
- return -1, false, err
- }
-
- if period == 0 {
- return -1, false, errors.New("zero value for period is not allowed")
- }
- }
-
- return float64(max) / float64(period), true, nil
- }
-
- if err := scanner.Err(); err != nil {
- return -1, false, err
- }
-
- return 0, false, io.ErrUnexpectedEOF
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cpu_quota_linux.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cpu_quota_linux.go
deleted file mode 100644
index 2d83343bd..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cpu_quota_linux.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package automaxprocs
-
-import (
- "errors"
-)
-
-// CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process
-// to a valid GOMAXPROCS value. The quota is converted from float to int using round.
-// If round == nil, DefaultRoundFunc is used.
-func CPUQuotaToGOMAXPROCS(minValue int, round func(v float64) int) (int, CPUQuotaStatus, error) {
- if round == nil {
- round = DefaultRoundFunc
- }
- cgroups, err := _newQueryer()
- if err != nil {
- return -1, CPUQuotaUndefined, err
- }
-
- quota, defined, err := cgroups.CPUQuota()
- if !defined || err != nil {
- return -1, CPUQuotaUndefined, err
- }
-
- maxProcs := round(quota)
- if minValue > 0 && maxProcs < minValue {
- return minValue, CPUQuotaMinUsed, nil
- }
- return maxProcs, CPUQuotaUsed, nil
-}
-
-type queryer interface {
- CPUQuota() (float64, bool, error)
-}
-
-var (
- _newCgroups2 = NewCGroups2ForCurrentProcess
- _newCgroups = NewCGroupsForCurrentProcess
- _newQueryer = newQueryer
-)
-
-func newQueryer() (queryer, error) {
- cgroups, err := _newCgroups2()
- if err == nil {
- return cgroups, nil
- }
- if errors.Is(err, ErrNotV2) {
- return _newCgroups()
- }
- return nil, err
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cpu_quota_unsupported.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cpu_quota_unsupported.go
deleted file mode 100644
index d2d61e894..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/cpu_quota_unsupported.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build !linux
-// +build !linux
-
-package automaxprocs
-
-// CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process
-// to a valid GOMAXPROCS value. This is Linux-specific and not supported in the
-// current OS.
-func CPUQuotaToGOMAXPROCS(_ int, _ func(v float64) int) (int, CPUQuotaStatus, error) {
- return -1, CPUQuotaUndefined, nil
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/errors.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/errors.go
deleted file mode 100644
index 2e235d7d6..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/errors.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package automaxprocs
-
-import "fmt"
-
-type cgroupSubsysFormatInvalidError struct {
- line string
-}
-
-type mountPointFormatInvalidError struct {
- line string
-}
-
-type pathNotExposedFromMountPointError struct {
- mountPoint string
- root string
- path string
-}
-
-func (err cgroupSubsysFormatInvalidError) Error() string {
- return fmt.Sprintf("invalid format for CGroupSubsys: %q", err.line)
-}
-
-func (err mountPointFormatInvalidError) Error() string {
- return fmt.Sprintf("invalid format for MountPoint: %q", err.line)
-}
-
-func (err pathNotExposedFromMountPointError) Error() string {
- return fmt.Sprintf("path %q is not a descendant of mount point root %q and cannot be exposed from %q", err.path, err.root, err.mountPoint)
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/mountpoint.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/mountpoint.go
deleted file mode 100644
index 7c3fa306e..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/mountpoint.go
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package automaxprocs
-
-import (
- "bufio"
- "os"
- "path/filepath"
- "strconv"
- "strings"
-)
-
-const (
- _mountInfoSep = " "
- _mountInfoOptsSep = ","
- _mountInfoOptionalFieldsSep = "-"
-)
-
-const (
- _miFieldIDMountID = iota
- _miFieldIDParentID
- _miFieldIDDeviceID
- _miFieldIDRoot
- _miFieldIDMountPoint
- _miFieldIDOptions
- _miFieldIDOptionalFields
-
- _miFieldCountFirstHalf
-)
-
-const (
- _miFieldOffsetFSType = iota
- _miFieldOffsetMountSource
- _miFieldOffsetSuperOptions
-
- _miFieldCountSecondHalf
-)
-
-const _miFieldCountMin = _miFieldCountFirstHalf + _miFieldCountSecondHalf
-
-// MountPoint is the data structure for the mount points in
-// `/proc/$PID/mountinfo`. See also proc(5) for more information.
-type MountPoint struct {
- MountID int
- ParentID int
- DeviceID string
- Root string
- MountPoint string
- Options []string
- OptionalFields []string
- FSType string
- MountSource string
- SuperOptions []string
-}
-
-// NewMountPointFromLine parses a line read from `/proc/$PID/mountinfo` and
-// returns a new *MountPoint.
-func NewMountPointFromLine(line string) (*MountPoint, error) {
- fields := strings.Split(line, _mountInfoSep)
-
- if len(fields) < _miFieldCountMin {
- return nil, mountPointFormatInvalidError{line}
- }
-
- mountID, err := strconv.Atoi(fields[_miFieldIDMountID])
- if err != nil {
- return nil, err
- }
-
- parentID, err := strconv.Atoi(fields[_miFieldIDParentID])
- if err != nil {
- return nil, err
- }
-
- for i, field := range fields[_miFieldIDOptionalFields:] {
- if field == _mountInfoOptionalFieldsSep {
- // End of optional fields.
- fsTypeStart := _miFieldIDOptionalFields + i + 1
-
- // Now we know where the optional fields end, split the line again with a
- // limit to avoid issues with spaces in super options as present on WSL.
- fields = strings.SplitN(line, _mountInfoSep, fsTypeStart+_miFieldCountSecondHalf)
- if len(fields) != fsTypeStart+_miFieldCountSecondHalf {
- return nil, mountPointFormatInvalidError{line}
- }
-
- miFieldIDFSType := _miFieldOffsetFSType + fsTypeStart
- miFieldIDMountSource := _miFieldOffsetMountSource + fsTypeStart
- miFieldIDSuperOptions := _miFieldOffsetSuperOptions + fsTypeStart
-
- return &MountPoint{
- MountID: mountID,
- ParentID: parentID,
- DeviceID: fields[_miFieldIDDeviceID],
- Root: fields[_miFieldIDRoot],
- MountPoint: fields[_miFieldIDMountPoint],
- Options: strings.Split(fields[_miFieldIDOptions], _mountInfoOptsSep),
- OptionalFields: fields[_miFieldIDOptionalFields:(fsTypeStart - 1)],
- FSType: fields[miFieldIDFSType],
- MountSource: fields[miFieldIDMountSource],
- SuperOptions: strings.Split(fields[miFieldIDSuperOptions], _mountInfoOptsSep),
- }, nil
- }
- }
-
- return nil, mountPointFormatInvalidError{line}
-}
-
-// Translate converts an absolute path inside the *MountPoint's file system to
-// the host file system path in the mount namespace the *MountPoint belongs to.
-func (mp *MountPoint) Translate(absPath string) (string, error) {
- relPath, err := filepath.Rel(mp.Root, absPath)
-
- if err != nil {
- return "", err
- }
- if relPath == ".." || strings.HasPrefix(relPath, "../") {
- return "", pathNotExposedFromMountPointError{
- mountPoint: mp.MountPoint,
- root: mp.Root,
- path: absPath,
- }
- }
-
- return filepath.Join(mp.MountPoint, relPath), nil
-}
-
-// parseMountInfo parses procPathMountInfo (usually at `/proc/$PID/mountinfo`)
-// and yields parsed *MountPoint into newMountPoint.
-func parseMountInfo(procPathMountInfo string, newMountPoint func(*MountPoint) error) error {
- mountInfoFile, err := os.Open(procPathMountInfo)
- if err != nil {
- return err
- }
- defer mountInfoFile.Close()
-
- scanner := bufio.NewScanner(mountInfoFile)
-
- for scanner.Scan() {
- mountPoint, err := NewMountPointFromLine(scanner.Text())
- if err != nil {
- return err
- }
- if err := newMountPoint(mountPoint); err != nil {
- return err
- }
- }
-
- return scanner.Err()
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/runtime.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/runtime.go
deleted file mode 100644
index b8ec7e502..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/runtime.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-package automaxprocs
-
-import "math"
-
-// CPUQuotaStatus presents the status of how CPU quota is used
-type CPUQuotaStatus int
-
-const (
- // CPUQuotaUndefined is returned when CPU quota is undefined
- CPUQuotaUndefined CPUQuotaStatus = iota
- // CPUQuotaUsed is returned when a valid CPU quota can be used
- CPUQuotaUsed
- // CPUQuotaMinUsed is returned when CPU quota is smaller than the min value
- CPUQuotaMinUsed
-)
-
-// DefaultRoundFunc is the default function to convert CPU quota from float to int. It rounds the value down (floor).
-func DefaultRoundFunc(v float64) int {
- return int(math.Floor(v))
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/subsys.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/subsys.go
deleted file mode 100644
index 881ebd590..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/automaxprocs/subsys.go
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:build linux
-// +build linux
-
-package automaxprocs
-
-import (
- "bufio"
- "os"
- "strconv"
- "strings"
-)
-
-const (
- _cgroupSep = ":"
- _cgroupSubsysSep = ","
-)
-
-const (
- _csFieldIDID = iota
- _csFieldIDSubsystems
- _csFieldIDName
- _csFieldCount
-)
-
-// CGroupSubsys represents the data structure for entities in
-// `/proc/$PID/cgroup`. See also proc(5) for more information.
-type CGroupSubsys struct {
- ID int
- Subsystems []string
- Name string
-}
-
-// NewCGroupSubsysFromLine returns a new *CGroupSubsys by parsing a string in
-// the format of `/proc/$PID/cgroup`
-func NewCGroupSubsysFromLine(line string) (*CGroupSubsys, error) {
- fields := strings.SplitN(line, _cgroupSep, _csFieldCount)
-
- if len(fields) != _csFieldCount {
- return nil, cgroupSubsysFormatInvalidError{line}
- }
-
- id, err := strconv.Atoi(fields[_csFieldIDID])
- if err != nil {
- return nil, err
- }
-
- cgroup := &CGroupSubsys{
- ID: id,
- Subsystems: strings.Split(fields[_csFieldIDSubsystems], _cgroupSubsysSep),
- Name: fields[_csFieldIDName],
- }
-
- return cgroup, nil
-}
-
-// parseCGroupSubsystems parses procPathCGroup (usually at `/proc/$PID/cgroup`)
-// and returns a new map[string]*CGroupSubsys.
-func parseCGroupSubsystems(procPathCGroup string) (map[string]*CGroupSubsys, error) {
- cgroupFile, err := os.Open(procPathCGroup)
- if err != nil {
- return nil, err
- }
- defer cgroupFile.Close()
-
- scanner := bufio.NewScanner(cgroupFile)
- subsystems := make(map[string]*CGroupSubsys)
-
- for scanner.Scan() {
- cgroup, err := NewCGroupSubsysFromLine(scanner.Text())
- if err != nil {
- return nil, err
- }
- for _, subsys := range cgroup.Subsystems {
- subsystems[subsys] = cgroup
- }
- }
-
- if err := scanner.Err(); err != nil {
- return nil, err
- }
-
- return subsystems, nil
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/build/build_command.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/build/build_command.go
index 3021dfec2..fd1726084 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/build/build_command.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/build/build_command.go
@@ -29,6 +29,7 @@ func BuildBuildCommand() command.Command {
var errors []error
cliConfig, goFlagsConfig, errors = types.VetAndInitializeCLIAndGoConfig(cliConfig, goFlagsConfig)
command.AbortIfErrors("Ginkgo detected configuration issues:", errors)
+
buildSpecs(args, cliConfig, goFlagsConfig)
},
}
@@ -43,7 +44,7 @@ func buildSpecs(args []string, cliConfig types.CLIConfig, goFlagsConfig types.Go
internal.VerifyCLIAndFrameworkVersion(suites)
opc := internal.NewOrderedParallelCompiler(cliConfig.ComputedNumCompilers())
- opc.StartCompiling(suites, goFlagsConfig, true)
+ opc.StartCompiling(suites, goFlagsConfig)
for {
suiteIdx, suite := opc.Next()
@@ -54,22 +55,18 @@ func buildSpecs(args []string, cliConfig types.CLIConfig, goFlagsConfig types.Go
if suite.State.Is(internal.TestSuiteStateFailedToCompile) {
fmt.Println(suite.CompilationError.Error())
} else {
- var testBinPath string
- if len(goFlagsConfig.O) != 0 {
+ if len(goFlagsConfig.O) == 0 {
+ goFlagsConfig.O = path.Join(suite.Path, suite.PackageName+".test")
+ } else {
stat, err := os.Stat(goFlagsConfig.O)
if err != nil {
panic(err)
}
if stat.IsDir() {
- testBinPath = goFlagsConfig.O + "/" + suite.PackageName + ".test"
- } else {
- testBinPath = goFlagsConfig.O
+ goFlagsConfig.O += "/" + suite.PackageName + ".test"
}
}
- if len(testBinPath) == 0 {
- testBinPath = path.Join(suite.Path, suite.PackageName+".test")
- }
- fmt.Printf("Compiled %s\n", testBinPath)
+ fmt.Printf("Compiled %s\n", goFlagsConfig.O)
}
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/abort.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/abort.go
index f0e7331f7..2efd28608 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/abort.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/abort.go
@@ -12,7 +12,7 @@ func Abort(details AbortDetails) {
panic(details)
}
-func AbortGracefullyWith(format string, args ...any) {
+func AbortGracefullyWith(format string, args ...interface{}) {
Abort(AbortDetails{
ExitCode: 0,
Error: fmt.Errorf(format, args...),
@@ -20,7 +20,7 @@ func AbortGracefullyWith(format string, args ...any) {
})
}
-func AbortWith(format string, args ...any) {
+func AbortWith(format string, args ...interface{}) {
Abort(AbortDetails{
ExitCode: 1,
Error: fmt.Errorf(format, args...),
@@ -28,7 +28,7 @@ func AbortWith(format string, args ...any) {
})
}
-func AbortWithUsage(format string, args ...any) {
+func AbortWithUsage(format string, args ...interface{}) {
Abort(AbortDetails{
ExitCode: 1,
Error: fmt.Errorf(format, args...),
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/command.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/command.go
index 79b83a3af..12e0e5659 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/command.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/command.go
@@ -24,11 +24,7 @@ func (c Command) Run(args []string, additionalArgs []string) {
if err != nil {
AbortWithUsage(err.Error())
}
- for _, arg := range args {
- if len(arg) > 1 && strings.HasPrefix(arg, "-") {
- AbortWith(types.GinkgoErrors.FlagAfterPositionalParameter().Error())
- }
- }
+
c.Command(args, additionalArgs)
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go
index c3f6d3a11..88dd8d6b0 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go
@@ -68,6 +68,7 @@ func (p Program) RunAndExit(osArgs []string) {
fmt.Fprintln(p.ErrWriter, deprecationTracker.DeprecationsReport())
}
p.Exiter(exitCode)
+ return
}()
args, additionalArgs := []string{}, []string{}
@@ -156,6 +157,7 @@ func (p Program) handleHelpRequestsAndExit(writer io.Writer, args []string) {
p.EmitUsage(writer)
Abort(AbortDetails{ExitCode: 1})
}
+ return
}
func (p Program) EmitUsage(writer io.Writer) {
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go
index 7bbe6be0f..48827cc5e 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go
@@ -11,7 +11,7 @@ import (
"github.com/onsi/ginkgo/v2/types"
)
-func CompileSuite(suite TestSuite, goFlagsConfig types.GoFlagsConfig, preserveSymbols bool) TestSuite {
+func CompileSuite(suite TestSuite, goFlagsConfig types.GoFlagsConfig) TestSuite {
if suite.PathToCompiledTest != "" {
return suite
}
@@ -46,7 +46,7 @@ func CompileSuite(suite TestSuite, goFlagsConfig types.GoFlagsConfig, preserveSy
suite.CompilationError = fmt.Errorf("Failed to get relative path from package to the current working directory:\n%s", err.Error())
return suite
}
- args, err := types.GenerateGoTestCompileArgs(goFlagsConfig, "./", pathToInvocationPath, preserveSymbols)
+ args, err := types.GenerateGoTestCompileArgs(goFlagsConfig, "./", pathToInvocationPath)
if err != nil {
suite.State = TestSuiteStateFailedToCompile
suite.CompilationError = fmt.Errorf("Failed to generate go test compile flags:\n%s", err.Error())
@@ -120,7 +120,7 @@ func NewOrderedParallelCompiler(numCompilers int) *OrderedParallelCompiler {
}
}
-func (opc *OrderedParallelCompiler) StartCompiling(suites TestSuites, goFlagsConfig types.GoFlagsConfig, preserveSymbols bool) {
+func (opc *OrderedParallelCompiler) StartCompiling(suites TestSuites, goFlagsConfig types.GoFlagsConfig) {
opc.stopped = false
opc.idx = 0
opc.numSuites = len(suites)
@@ -135,7 +135,7 @@ func (opc *OrderedParallelCompiler) StartCompiling(suites TestSuites, goFlagsCon
stopped := opc.stopped
opc.mutex.Unlock()
if !stopped {
- suite = CompileSuite(suite, goFlagsConfig, preserveSymbols)
+ suite = CompileSuite(suite, goFlagsConfig)
}
c <- suite
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/gocovmerge.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/gocovmerge.go
index 87cfa1119..3c5079ff4 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/gocovmerge.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/gocovmerge.go
@@ -89,7 +89,7 @@ func mergeProfileBlock(p *cover.Profile, pb cover.ProfileBlock, startIndex int)
}
i := 0
- if !sortFunc(i) {
+ if sortFunc(i) != true {
i = sort.Search(len(p.Blocks)-startIndex, sortFunc)
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/profiles_and_reports.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/profiles_and_reports.go
index f3439a3f0..8e16d2bb0 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/profiles_and_reports.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/profiles_and_reports.go
@@ -90,9 +90,6 @@ func FinalizeProfilesAndReportsForSuites(suites TestSuites, cliConfig types.CLIC
if reporterConfig.JSONReport != "" {
reportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.JSONReport, GenerateFunc: reporters.GenerateJSONReport, MergeFunc: reporters.MergeAndCleanupJSONReports})
}
- if reporterConfig.GoJSONReport != "" {
- reportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.GoJSONReport, GenerateFunc: reporters.GenerateGoTestJSONReport, MergeFunc: reporters.MergeAndCleanupGoTestJSONReports})
- }
if reporterConfig.JUnitReport != "" {
reportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.JUnitReport, GenerateFunc: reporters.GenerateJUnitReport, MergeFunc: reporters.MergeAndCleanupJUnitReports})
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go
index 30d8096cd..41052ea19 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go
@@ -107,9 +107,6 @@ func runSerial(suite TestSuite, ginkgoConfig types.SuiteConfig, reporterConfig t
if reporterConfig.JSONReport != "" {
reporterConfig.JSONReport = AbsPathForGeneratedAsset(reporterConfig.JSONReport, suite, cliConfig, 0)
}
- if reporterConfig.GoJSONReport != "" {
- reporterConfig.GoJSONReport = AbsPathForGeneratedAsset(reporterConfig.GoJSONReport, suite, cliConfig, 0)
- }
if reporterConfig.JUnitReport != "" {
reporterConfig.JUnitReport = AbsPathForGeneratedAsset(reporterConfig.JUnitReport, suite, cliConfig, 0)
}
@@ -182,9 +179,6 @@ func runParallel(suite TestSuite, ginkgoConfig types.SuiteConfig, reporterConfig
if reporterConfig.JSONReport != "" {
reporterConfig.JSONReport = AbsPathForGeneratedAsset(reporterConfig.JSONReport, suite, cliConfig, 0)
}
- if reporterConfig.GoJSONReport != "" {
- reporterConfig.GoJSONReport = AbsPathForGeneratedAsset(reporterConfig.GoJSONReport, suite, cliConfig, 0)
- }
if reporterConfig.JUnitReport != "" {
reporterConfig.JUnitReport = AbsPathForGeneratedAsset(reporterConfig.JUnitReport, suite, cliConfig, 0)
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go
index 419589b48..e9abb27d8 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go
@@ -3,6 +3,7 @@ package main
import (
"fmt"
"os"
+
"github.com/onsi/ginkgo/v2/ginkgo/build"
"github.com/onsi/ginkgo/v2/ginkgo/command"
"github.com/onsi/ginkgo/v2/ginkgo/generators"
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go
index e99d557d1..c2327cda8 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go
@@ -1,13 +1,10 @@
package outline
import (
- "bytes"
- "encoding/csv"
"encoding/json"
"fmt"
"go/ast"
"go/token"
- "strconv"
"strings"
"golang.org/x/tools/go/ast/inspector"
@@ -87,11 +84,9 @@ func (o *outline) String() string {
// StringIndent returns a CSV-formated outline, but every line is indented by
// one 'width' of spaces for every level of nesting.
func (o *outline) StringIndent(width int) string {
- var b bytes.Buffer
+ var b strings.Builder
b.WriteString("Name,Text,Start,End,Spec,Focused,Pending,Labels\n")
- csvWriter := csv.NewWriter(&b)
-
currentIndent := 0
pre := func(n *ginkgoNode) {
b.WriteString(fmt.Sprintf("%*s", currentIndent, ""))
@@ -101,22 +96,8 @@ func (o *outline) StringIndent(width int) string {
} else {
labels = strings.Join(n.Labels, ", ")
}
-
- row := []string{
- n.Name,
- n.Text,
- strconv.Itoa(n.Start),
- strconv.Itoa(n.End),
- strconv.FormatBool(n.Spec),
- strconv.FormatBool(n.Focused),
- strconv.FormatBool(n.Pending),
- labels,
- }
- csvWriter.Write(row)
-
- // Ensure we write to `b' before the next `b.WriteString()', which might be adding indentation
- csvWriter.Flush()
-
+ //enclosing labels in a double quoted comma separate listed so that when inmported into a CSV app the Labels column has comma separate strings
+ b.WriteString(fmt.Sprintf("%s,%s,%d,%d,%t,%t,%t,\"%s\"\n", n.Name, n.Text, n.Start, n.End, n.Spec, n.Focused, n.Pending, labels))
currentIndent += width
}
post := func(n *ginkgoNode) {
@@ -125,6 +106,5 @@ func (o *outline) StringIndent(width int) string {
for _, n := range o.Nodes {
n.Walk(pre, post)
}
-
return b.String()
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/run/run_command.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/run/run_command.go
index 03875b979..aaed4d570 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/run/run_command.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/run/run_command.go
@@ -107,7 +107,7 @@ OUTER_LOOP:
}
opc := internal.NewOrderedParallelCompiler(r.cliConfig.ComputedNumCompilers())
- opc.StartCompiling(suites, r.goFlagsConfig, false)
+ opc.StartCompiling(suites, r.goFlagsConfig)
SUITE_LOOP:
for {
@@ -142,7 +142,7 @@ OUTER_LOOP:
}
if !endTime.IsZero() {
- r.suiteConfig.Timeout = time.Until(endTime)
+ r.suiteConfig.Timeout = endTime.Sub(time.Now())
if r.suiteConfig.Timeout <= 0 {
suites[suiteIdx].State = internal.TestSuiteStateFailedDueToTimeout
opc.StopAndDrain()
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/dependencies.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/dependencies.go
index 75cbdb496..a34d94354 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/dependencies.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/dependencies.go
@@ -2,9 +2,12 @@ package watch
import (
"go/build"
- "strings"
+ "regexp"
)
+var ginkgoAndGomegaFilter = regexp.MustCompile(`github\.com/onsi/ginkgo|github\.com/onsi/gomega`)
+var ginkgoIntegrationTestFilter = regexp.MustCompile(`github\.com/onsi/ginkgo/integration`) //allow us to integration test this thing
+
type Dependencies struct {
deps map[string]int
}
@@ -75,7 +78,7 @@ func (d Dependencies) resolveAndAdd(deps []string, depth int) {
if err != nil {
continue
}
- if !pkg.Goroot && (!matchesGinkgoOrGomega(pkg.Dir) || matchesGinkgoIntegration(pkg.Dir)) {
+ if !pkg.Goroot && (!ginkgoAndGomegaFilter.MatchString(pkg.Dir) || ginkgoIntegrationTestFilter.MatchString(pkg.Dir)) {
d.addDepIfNotPresent(pkg.Dir, depth)
}
}
@@ -87,11 +90,3 @@ func (d Dependencies) addDepIfNotPresent(dep string, depth int) {
d.deps[dep] = depth
}
}
-
-func matchesGinkgoOrGomega(s string) bool {
- return strings.Contains(s, "github.com/onsi/ginkgo") || strings.Contains(s, "github.com/onsi/gomega")
-}
-
-func matchesGinkgoIntegration(s string) bool {
- return strings.Contains(s, "github.com/onsi/ginkgo/integration") // allow us to integration test this thing
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/watch_command.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/watch_command.go
index fe1ca3051..bde4193ce 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/watch_command.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/watch_command.go
@@ -153,7 +153,7 @@ func (w *SpecWatcher) WatchSpecs(args []string, additionalArgs []string) {
}
func (w *SpecWatcher) compileAndRun(suite internal.TestSuite, additionalArgs []string) internal.TestSuite {
- suite = internal.CompileSuite(suite, w.goFlagsConfig, false)
+ suite = internal.CompileSuite(suite, w.goFlagsConfig)
if suite.State.Is(internal.TestSuiteStateFailedToCompile) {
fmt.Println(suite.CompilationError.Error())
return suite
diff --git a/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go b/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go
index 40d1e1ab5..02c6739e5 100644
--- a/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go
+++ b/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go
@@ -1,8 +1,6 @@
package ginkgo
import (
- "context"
- "io"
"testing"
"github.com/onsi/ginkgo/v2/internal/testingtproxy"
@@ -50,8 +48,6 @@ The portion of the interface returned by GinkgoT() that maps onto methods in the
*/
type GinkgoTInterface interface {
Cleanup(func())
- Chdir(dir string)
- Context() context.Context
Setenv(kev, value string)
Error(args ...any)
Errorf(format string, args ...any)
@@ -70,8 +66,6 @@ type GinkgoTInterface interface {
Skipf(format string, args ...any)
Skipped() bool
TempDir() string
- Attr(key, value string)
- Output() io.Writer
}
/*
@@ -133,12 +127,6 @@ type GinkgoTBWrapper struct {
func (g *GinkgoTBWrapper) Cleanup(f func()) {
g.GinkgoT.Cleanup(f)
}
-func (g *GinkgoTBWrapper) Chdir(dir string) {
- g.GinkgoT.Chdir(dir)
-}
-func (g *GinkgoTBWrapper) Context() context.Context {
- return g.GinkgoT.Context()
-}
func (g *GinkgoTBWrapper) Error(args ...any) {
g.GinkgoT.Error(args...)
}
@@ -190,9 +178,3 @@ func (g *GinkgoTBWrapper) Skipped() bool {
func (g *GinkgoTBWrapper) TempDir() string {
return g.GinkgoT.TempDir()
}
-func (g *GinkgoTBWrapper) Attr(key, value string) {
- g.GinkgoT.Attr(key, value)
-}
-func (g *GinkgoTBWrapper) Output() io.Writer {
- return g.GinkgoT.Output()
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/around_node.go b/vendor/github.com/onsi/ginkgo/v2/internal/around_node.go
deleted file mode 100644
index c96571020..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/internal/around_node.go
+++ /dev/null
@@ -1,34 +0,0 @@
-package internal
-
-import (
- "github.com/onsi/ginkgo/v2/types"
-)
-
-func ComputeAroundNodes(specs Specs) Specs {
- out := Specs{}
- for _, spec := range specs {
- nodes := Nodes{}
- currentNestingLevel := 0
- aroundNodes := types.AroundNodes{}
- nestingLevelIndices := []int{}
- for _, node := range spec.Nodes {
- switch node.NodeType {
- case types.NodeTypeContainer:
- currentNestingLevel = node.NestingLevel + 1
- nestingLevelIndices = append(nestingLevelIndices, len(aroundNodes))
- aroundNodes = aroundNodes.Append(node.AroundNodes...)
- nodes = append(nodes, node)
- default:
- if currentNestingLevel > node.NestingLevel {
- currentNestingLevel = node.NestingLevel
- aroundNodes = aroundNodes[:nestingLevelIndices[currentNestingLevel]]
- }
- node.AroundNodes = types.AroundNodes{}.Append(aroundNodes...).Append(node.AroundNodes...)
- nodes = append(nodes, node)
- }
- }
- spec.Nodes = nodes
- out = append(out, spec)
- }
- return out
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/failer.go b/vendor/github.com/onsi/ginkgo/v2/internal/failer.go
index 8c5de9c16..e9bd9565f 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/failer.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/failer.go
@@ -32,7 +32,7 @@ func (f *Failer) GetFailure() types.Failure {
return f.failure
}
-func (f *Failer) Panic(location types.CodeLocation, forwardedPanic any) {
+func (f *Failer) Panic(location types.CodeLocation, forwardedPanic interface{}) {
f.lock.Lock()
defer f.lock.Unlock()
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/focus.go b/vendor/github.com/onsi/ginkgo/v2/internal/focus.go
index a39daf5a6..e3da7d14d 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/focus.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/focus.go
@@ -56,7 +56,7 @@ This function sets the `Skip` property on specs by applying Ginkgo's focus polic
*Note:* specs with pending nodes are Skipped when created by NewSpec.
*/
-func ApplyFocusToSpecs(specs Specs, description string, suiteLabels Labels, suiteSemVerConstraints SemVerConstraints, suiteConfig types.SuiteConfig) (Specs, bool) {
+func ApplyFocusToSpecs(specs Specs, description string, suiteLabels Labels, suiteConfig types.SuiteConfig) (Specs, bool) {
focusString := strings.Join(suiteConfig.FocusStrings, "|")
skipString := strings.Join(suiteConfig.SkipStrings, "|")
@@ -84,13 +84,6 @@ func ApplyFocusToSpecs(specs Specs, description string, suiteLabels Labels, suit
})
}
- if suiteConfig.SemVerFilter != "" {
- semVerFilter, _ := types.ParseSemVerFilter(suiteConfig.SemVerFilter)
- skipChecks = append(skipChecks, func(spec Spec) bool {
- return !semVerFilter(UnionOfSemVerConstraints(suiteSemVerConstraints, spec.Nodes.UnionOfSemVerConstraints()))
- })
- }
-
if len(suiteConfig.FocusFiles) > 0 {
focusFilters, _ := types.ParseFileFilters(suiteConfig.FocusFiles)
skipChecks = append(skipChecks, func(spec Spec) bool { return !focusFilters.Matches(spec.Nodes.CodeLocations()) })
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/group.go b/vendor/github.com/onsi/ginkgo/v2/internal/group.go
index cc794903e..02c9fe4fc 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/group.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/group.go
@@ -110,53 +110,21 @@ func newGroup(suite *Suite) *group {
}
}
-// initialReportForSpec constructs a new SpecReport right before running the spec.
func (g *group) initialReportForSpec(spec Spec) types.SpecReport {
return types.SpecReport{
- ContainerHierarchyTexts: spec.Nodes.WithType(types.NodeTypeContainer).Texts(),
- ContainerHierarchyLocations: spec.Nodes.WithType(types.NodeTypeContainer).CodeLocations(),
- ContainerHierarchyLabels: spec.Nodes.WithType(types.NodeTypeContainer).Labels(),
- ContainerHierarchySemVerConstraints: spec.Nodes.WithType(types.NodeTypeContainer).SemVerConstraints(),
- LeafNodeLocation: spec.FirstNodeWithType(types.NodeTypeIt).CodeLocation,
- LeafNodeType: types.NodeTypeIt,
- LeafNodeText: spec.FirstNodeWithType(types.NodeTypeIt).Text,
- LeafNodeLabels: []string(spec.FirstNodeWithType(types.NodeTypeIt).Labels),
- LeafNodeSemVerConstraints: []string(spec.FirstNodeWithType(types.NodeTypeIt).SemVerConstraints),
- ParallelProcess: g.suite.config.ParallelProcess,
- RunningInParallel: g.suite.isRunningInParallel(),
- IsSerial: spec.Nodes.HasNodeMarkedSerial(),
- IsInOrderedContainer: !spec.Nodes.FirstNodeMarkedOrdered().IsZero(),
- MaxFlakeAttempts: spec.Nodes.GetMaxFlakeAttempts(),
- MaxMustPassRepeatedly: spec.Nodes.GetMaxMustPassRepeatedly(),
- SpecPriority: spec.Nodes.GetSpecPriority(),
- }
-}
-
-// constructionNodeReportForTreeNode constructs a new SpecReport right before invoking the body
-// of a container node during construction of the full tree.
-func constructionNodeReportForTreeNode(node *TreeNode) *types.ConstructionNodeReport {
- var report types.ConstructionNodeReport
- // Walk up the tree and set attributes accordingly.
- addNodeToReportForNode(&report, node)
- return &report
-}
-
-// addNodeToReportForNode is conceptually similar to initialReportForSpec and therefore placed here
-// although it doesn't do anything with a group.
-func addNodeToReportForNode(report *types.ConstructionNodeReport, node *TreeNode) {
- if node.Parent != nil {
- // First add the parent node, then the current one.
- addNodeToReportForNode(report, node.Parent)
- }
- report.ContainerHierarchyTexts = append(report.ContainerHierarchyTexts, node.Node.Text)
- report.ContainerHierarchyLocations = append(report.ContainerHierarchyLocations, node.Node.CodeLocation)
- report.ContainerHierarchyLabels = append(report.ContainerHierarchyLabels, node.Node.Labels)
- report.ContainerHierarchySemVerConstraints = append(report.ContainerHierarchySemVerConstraints, node.Node.SemVerConstraints)
- if node.Node.MarkedSerial {
- report.IsSerial = true
- }
- if node.Node.MarkedOrdered {
- report.IsInOrderedContainer = true
+ ContainerHierarchyTexts: spec.Nodes.WithType(types.NodeTypeContainer).Texts(),
+ ContainerHierarchyLocations: spec.Nodes.WithType(types.NodeTypeContainer).CodeLocations(),
+ ContainerHierarchyLabels: spec.Nodes.WithType(types.NodeTypeContainer).Labels(),
+ LeafNodeLocation: spec.FirstNodeWithType(types.NodeTypeIt).CodeLocation,
+ LeafNodeType: types.NodeTypeIt,
+ LeafNodeText: spec.FirstNodeWithType(types.NodeTypeIt).Text,
+ LeafNodeLabels: []string(spec.FirstNodeWithType(types.NodeTypeIt).Labels),
+ ParallelProcess: g.suite.config.ParallelProcess,
+ RunningInParallel: g.suite.isRunningInParallel(),
+ IsSerial: spec.Nodes.HasNodeMarkedSerial(),
+ IsInOrderedContainer: !spec.Nodes.FirstNodeMarkedOrdered().IsZero(),
+ MaxFlakeAttempts: spec.Nodes.GetMaxFlakeAttempts(),
+ MaxMustPassRepeatedly: spec.Nodes.GetMaxMustPassRepeatedly(),
}
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go b/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go
index 79bfa87db..8ed86111f 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go
@@ -40,7 +40,7 @@ func (ic InterruptCause) String() string {
}
type InterruptStatus struct {
- Channel chan any
+ Channel chan interface{}
Level InterruptLevel
Cause InterruptCause
}
@@ -62,14 +62,14 @@ type InterruptHandlerInterface interface {
}
type InterruptHandler struct {
- c chan any
+ c chan interface{}
lock *sync.Mutex
level InterruptLevel
cause InterruptCause
client parallel_support.Client
- stop chan any
+ stop chan interface{}
signals []os.Signal
- requestAbortCheck chan any
+ requestAbortCheck chan interface{}
}
func NewInterruptHandler(client parallel_support.Client, signals ...os.Signal) *InterruptHandler {
@@ -77,10 +77,10 @@ func NewInterruptHandler(client parallel_support.Client, signals ...os.Signal) *
signals = []os.Signal{os.Interrupt, syscall.SIGTERM}
}
handler := &InterruptHandler{
- c: make(chan any),
+ c: make(chan interface{}),
lock: &sync.Mutex{},
- stop: make(chan any),
- requestAbortCheck: make(chan any),
+ stop: make(chan interface{}),
+ requestAbortCheck: make(chan interface{}),
client: client,
signals: signals,
}
@@ -98,9 +98,9 @@ func (handler *InterruptHandler) registerForInterrupts() {
signal.Notify(signalChannel, handler.signals...)
// cross-process abort handling
- var abortChannel chan any
+ var abortChannel chan interface{}
if handler.client != nil {
- abortChannel = make(chan any)
+ abortChannel = make(chan interface{})
go func() {
pollTicker := time.NewTicker(ABORT_POLLING_INTERVAL)
for {
@@ -125,7 +125,7 @@ func (handler *InterruptHandler) registerForInterrupts() {
}()
}
- go func(abortChannel chan any) {
+ go func(abortChannel chan interface{}) {
var interruptCause InterruptCause
for {
select {
@@ -151,7 +151,7 @@ func (handler *InterruptHandler) registerForInterrupts() {
}
if handler.level != oldLevel {
close(handler.c)
- handler.c = make(chan any)
+ handler.c = make(chan interface{})
}
handler.lock.Unlock()
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/node.go b/vendor/github.com/onsi/ginkgo/v2/internal/node.go
index 2bccec2db..6a15f19ae 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/node.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/node.go
@@ -4,7 +4,6 @@ import (
"context"
"fmt"
"reflect"
- "slices"
"sort"
"sync"
"time"
@@ -47,24 +46,20 @@ type Node struct {
ReportEachBody func(SpecContext, types.SpecReport)
ReportSuiteBody func(SpecContext, types.Report)
- MarkedFocus bool
- MarkedPending bool
- MarkedSerial bool
- MarkedOrdered bool
- MarkedContinueOnFailure bool
- MarkedOncePerOrdered bool
- FlakeAttempts int
- MustPassRepeatedly int
- Labels Labels
- SemVerConstraints SemVerConstraints
- PollProgressAfter time.Duration
- PollProgressInterval time.Duration
- NodeTimeout time.Duration
- SpecTimeout time.Duration
- GracePeriod time.Duration
- AroundNodes types.AroundNodes
- HasExplicitlySetSpecPriority bool
- SpecPriority int
+ MarkedFocus bool
+ MarkedPending bool
+ MarkedSerial bool
+ MarkedOrdered bool
+ MarkedContinueOnFailure bool
+ MarkedOncePerOrdered bool
+ FlakeAttempts int
+ MustPassRepeatedly int
+ Labels Labels
+ PollProgressAfter time.Duration
+ PollProgressInterval time.Duration
+ NodeTimeout time.Duration
+ SpecTimeout time.Duration
+ GracePeriod time.Duration
NodeIDWhereCleanupWasGenerated uint
}
@@ -89,51 +84,35 @@ const SuppressProgressReporting = suppressProgressReporting(true)
type FlakeAttempts uint
type MustPassRepeatedly uint
type Offset uint
-type Done chan<- any // Deprecated Done Channel for asynchronous testing
+type Done chan<- interface{} // Deprecated Done Channel for asynchronous testing
+type Labels []string
type PollProgressInterval time.Duration
type PollProgressAfter time.Duration
type NodeTimeout time.Duration
type SpecTimeout time.Duration
type GracePeriod time.Duration
-type SpecPriority int
-
-type Labels []string
func (l Labels) MatchesLabelFilter(query string) bool {
return types.MustParseLabelFilter(query)(l)
}
-type SemVerConstraints []string
-
-func (svc SemVerConstraints) MatchesSemVerFilter(version string) bool {
- return types.MustParseSemVerFilter(version)(svc)
-}
-
-func unionOf[S ~[]E, E comparable](slices ...S) S {
- out := S{}
- seen := map[E]bool{}
- for _, slice := range slices {
- for _, item := range slice {
- if !seen[item] {
- seen[item] = true
- out = append(out, item)
+func UnionOfLabels(labels ...Labels) Labels {
+ out := Labels{}
+ seen := map[string]bool{}
+ for _, labelSet := range labels {
+ for _, label := range labelSet {
+ if !seen[label] {
+ seen[label] = true
+ out = append(out, label)
}
}
}
return out
}
-func UnionOfLabels(labels ...Labels) Labels {
- return unionOf(labels...)
-}
-
-func UnionOfSemVerConstraints(semVerConstraints ...SemVerConstraints) SemVerConstraints {
- return unionOf(semVerConstraints...)
-}
-
-func PartitionDecorations(args ...any) ([]any, []any) {
- decorations := []any{}
- remainingArgs := []any{}
+func PartitionDecorations(args ...interface{}) ([]interface{}, []interface{}) {
+ decorations := []interface{}{}
+ remainingArgs := []interface{}{}
for _, arg := range args {
if isDecoration(arg) {
decorations = append(decorations, arg)
@@ -144,7 +123,7 @@ func PartitionDecorations(args ...any) ([]any, []any) {
return decorations, remainingArgs
}
-func isDecoration(arg any) bool {
+func isDecoration(arg interface{}) bool {
switch t := reflect.TypeOf(arg); {
case t == nil:
return false
@@ -172,8 +151,6 @@ func isDecoration(arg any) bool {
return true
case t == reflect.TypeOf(Labels{}):
return true
- case t == reflect.TypeOf(SemVerConstraints{}):
- return true
case t == reflect.TypeOf(PollProgressInterval(0)):
return true
case t == reflect.TypeOf(PollProgressAfter(0)):
@@ -184,10 +161,6 @@ func isDecoration(arg any) bool {
return true
case t == reflect.TypeOf(GracePeriod(0)):
return true
- case t == reflect.TypeOf(types.AroundNodeDecorator{}):
- return true
- case t == reflect.TypeOf(SpecPriority(0)):
- return true
case t.Kind() == reflect.Slice && isSliceOfDecorations(arg):
return true
default:
@@ -195,7 +168,7 @@ func isDecoration(arg any) bool {
}
}
-func isSliceOfDecorations(slice any) bool {
+func isSliceOfDecorations(slice interface{}) bool {
vSlice := reflect.ValueOf(slice)
if vSlice.Len() == 0 {
return false
@@ -211,14 +184,13 @@ func isSliceOfDecorations(slice any) bool {
var contextType = reflect.TypeOf(new(context.Context)).Elem()
var specContextType = reflect.TypeOf(new(SpecContext)).Elem()
-func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeType, text string, args ...any) (Node, []error) {
+func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeType, text string, args ...interface{}) (Node, []error) {
baseOffset := 2
node := Node{
ID: UniqueNodeID(),
NodeType: nodeType,
Text: text,
Labels: Labels{},
- SemVerConstraints: SemVerConstraints{},
CodeLocation: types.NewCodeLocation(baseOffset),
NestingLevel: -1,
PollProgressAfter: -1,
@@ -233,9 +205,9 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
}
}
- args = UnrollInterfaceSlice(args)
+ args = unrollInterfaceSlice(args)
- remainingArgs := []any{}
+ remainingArgs := []interface{}{}
// First get the CodeLocation up-to-date
for _, arg := range args {
switch v := arg.(type) {
@@ -249,10 +221,9 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
}
labelsSeen := map[string]bool{}
- semVerConstraintsSeen := map[string]bool{}
trackedFunctionError := false
args = remainingArgs
- remainingArgs = []any{}
+ remainingArgs = []interface{}{}
// now process the rest of the args
for _, arg := range args {
switch t := reflect.TypeOf(arg); {
@@ -270,9 +241,6 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
}
case t == reflect.TypeOf(Serial):
node.MarkedSerial = bool(arg.(serialType))
- if !labelsSeen["Serial"] {
- node.Labels = append(node.Labels, "Serial")
- }
if !nodeType.Is(types.NodeTypesForContainerAndIt) {
appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Serial"))
}
@@ -328,14 +296,6 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
if nodeType.Is(types.NodeTypeContainer) {
appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "GracePeriod"))
}
- case t == reflect.TypeOf(SpecPriority(0)):
- if !nodeType.Is(types.NodeTypesForContainerAndIt) {
- appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "SpecPriority"))
- }
- node.SpecPriority = int(arg.(SpecPriority))
- node.HasExplicitlySetSpecPriority = true
- case t == reflect.TypeOf(types.AroundNodeDecorator{}):
- node.AroundNodes = append(node.AroundNodes, arg.(types.AroundNodeDecorator))
case t == reflect.TypeOf(Labels{}):
if !nodeType.Is(types.NodeTypesForContainerAndIt) {
appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Label"))
@@ -348,18 +308,6 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
appendError(err)
}
}
- case t == reflect.TypeOf(SemVerConstraints{}):
- if !nodeType.Is(types.NodeTypesForContainerAndIt) {
- appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "SemVerConstraint"))
- }
- for _, semVerConstraint := range arg.(SemVerConstraints) {
- if !semVerConstraintsSeen[semVerConstraint] {
- semVerConstraintsSeen[semVerConstraint] = true
- semVerConstraint, err := types.ValidateAndCleanupSemVerConstraint(semVerConstraint, node.CodeLocation)
- node.SemVerConstraints = append(node.SemVerConstraints, semVerConstraint)
- appendError(err)
- }
- }
case t.Kind() == reflect.Func:
if nodeType.Is(types.NodeTypeContainer) {
if node.Body != nil {
@@ -500,7 +448,7 @@ func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeTy
var doneType = reflect.TypeOf(make(Done))
-func extractBodyFunction(deprecationTracker *types.DeprecationTracker, cl types.CodeLocation, arg any) (func(SpecContext), bool) {
+func extractBodyFunction(deprecationTracker *types.DeprecationTracker, cl types.CodeLocation, arg interface{}) (func(SpecContext), bool) {
t := reflect.TypeOf(arg)
if t.NumOut() > 0 || t.NumIn() > 1 {
return nil, false
@@ -526,7 +474,7 @@ func extractBodyFunction(deprecationTracker *types.DeprecationTracker, cl types.
var byteType = reflect.TypeOf([]byte{})
-func extractSynchronizedBeforeSuiteProc1Body(arg any) (func(SpecContext) []byte, bool) {
+func extractSynchronizedBeforeSuiteProc1Body(arg interface{}) (func(SpecContext) []byte, bool) {
t := reflect.TypeOf(arg)
v := reflect.ValueOf(arg)
@@ -554,7 +502,7 @@ func extractSynchronizedBeforeSuiteProc1Body(arg any) (func(SpecContext) []byte,
}, hasContext
}
-func extractSynchronizedBeforeSuiteAllProcsBody(arg any) (func(SpecContext, []byte), bool) {
+func extractSynchronizedBeforeSuiteAllProcsBody(arg interface{}) (func(SpecContext, []byte), bool) {
t := reflect.TypeOf(arg)
v := reflect.ValueOf(arg)
hasContext, hasByte := false, false
@@ -585,11 +533,11 @@ func extractSynchronizedBeforeSuiteAllProcsBody(arg any) (func(SpecContext, []by
var errInterface = reflect.TypeOf((*error)(nil)).Elem()
-func NewCleanupNode(deprecationTracker *types.DeprecationTracker, fail func(string, types.CodeLocation), args ...any) (Node, []error) {
+func NewCleanupNode(deprecationTracker *types.DeprecationTracker, fail func(string, types.CodeLocation), args ...interface{}) (Node, []error) {
decorations, remainingArgs := PartitionDecorations(args...)
baseOffset := 2
cl := types.NewCodeLocation(baseOffset)
- finalArgs := []any{}
+ finalArgs := []interface{}{}
for _, arg := range decorations {
switch t := reflect.TypeOf(arg); {
case t == reflect.TypeOf(Offset(0)):
@@ -648,7 +596,7 @@ func NewCleanupNode(deprecationTracker *types.DeprecationTracker, fail func(stri
})
}
- return NewNode(deprecationTracker, types.NodeTypeCleanupInvalid, "", finalArgs)
+ return NewNode(deprecationTracker, types.NodeTypeCleanupInvalid, "", finalArgs...)
}
func (n Node) IsZero() bool {
@@ -873,32 +821,6 @@ func (n Nodes) UnionOfLabels() []string {
return out
}
-func (n Nodes) SemVerConstraints() [][]string {
- out := make([][]string, len(n))
- for i := range n {
- if n[i].SemVerConstraints == nil {
- out[i] = []string{}
- } else {
- out[i] = []string(n[i].SemVerConstraints)
- }
- }
- return out
-}
-
-func (n Nodes) UnionOfSemVerConstraints() []string {
- out := []string{}
- seen := map[string]bool{}
- for i := range n {
- for _, constraint := range n[i].SemVerConstraints {
- if !seen[constraint] {
- seen[constraint] = true
- out = append(out, constraint)
- }
- }
- }
- return out
-}
-
func (n Nodes) CodeLocations() []types.CodeLocation {
out := make([]types.CodeLocation, len(n))
for i := range n {
@@ -995,84 +917,19 @@ func (n Nodes) GetMaxMustPassRepeatedly() int {
return maxMustPassRepeatedly
}
-func (n Nodes) GetSpecPriority() int {
- for i := len(n) - 1; i >= 0; i-- {
- if n[i].HasExplicitlySetSpecPriority {
- return n[i].SpecPriority
- }
- }
- return 0
-}
-
-func UnrollInterfaceSlice(args any) []any {
+func unrollInterfaceSlice(args interface{}) []interface{} {
v := reflect.ValueOf(args)
if v.Kind() != reflect.Slice {
- return []any{args}
+ return []interface{}{args}
}
- out := []any{}
+ out := []interface{}{}
for i := 0; i < v.Len(); i++ {
el := reflect.ValueOf(v.Index(i).Interface())
- if el.Kind() == reflect.Slice && el.Type() != reflect.TypeOf(Labels{}) && el.Type() != reflect.TypeOf(SemVerConstraints{}) {
- out = append(out, UnrollInterfaceSlice(el.Interface())...)
+ if el.Kind() == reflect.Slice && el.Type() != reflect.TypeOf(Labels{}) {
+ out = append(out, unrollInterfaceSlice(el.Interface())...)
} else {
out = append(out, v.Index(i).Interface())
}
}
return out
}
-
-type NodeArgsTransformer func(nodeType types.NodeType, offset Offset, text string, args []any) (string, []any, []error)
-
-func AddTreeConstructionNodeArgsTransformer(transformer NodeArgsTransformer) func() {
- id := nodeArgsTransformerCounter
- nodeArgsTransformerCounter++
- nodeArgsTransformers = append(nodeArgsTransformers, registeredNodeArgsTransformer{id, transformer})
- return func() {
- nodeArgsTransformers = slices.DeleteFunc(nodeArgsTransformers, func(transformer registeredNodeArgsTransformer) bool {
- return transformer.id == id
- })
- }
-}
-
-var (
- nodeArgsTransformerCounter int64
- nodeArgsTransformers []registeredNodeArgsTransformer
-)
-
-type registeredNodeArgsTransformer struct {
- id int64
- transformer NodeArgsTransformer
-}
-
-// TransformNewNodeArgs is the helper for DSL functions which handles NodeArgsTransformers.
-//
-// Its return valus are intentionally the same as the internal.NewNode parameters,
-// which makes it possible to chain the invocations:
-//
-// NewNode(transformNewNodeArgs(...))
-func TransformNewNodeArgs(exitIfErrors func([]error), deprecationTracker *types.DeprecationTracker, nodeType types.NodeType, text string, args ...any) (*types.DeprecationTracker, types.NodeType, string, []any) {
- var errs []error
-
- // Most recent first...
- //
- // This intentionally doesn't use slices.Backward because
- // using iterators influences stack unwinding.
- for i := len(nodeArgsTransformers) - 1; i >= 0; i-- {
- transformer := nodeArgsTransformers[i].transformer
- args = UnrollInterfaceSlice(args)
-
- // We do not really need to recompute this on additional loop iterations,
- // but its fast and simpler this way.
- var offset Offset
- for _, arg := range args {
- if o, ok := arg.(Offset); ok {
- offset = o
- }
- }
- offset += 3 // The DSL function, this helper, and the TransformNodeArgs implementation.
-
- text, args, errs = transformer(nodeType, offset, text, args)
- exitIfErrors(errs)
- }
- return deprecationTracker, nodeType, text, args
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go b/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go
index da58d54f9..84eea0a59 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go
@@ -125,7 +125,7 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices,
// pick out a representative spec
representativeSpec := specs[executionGroups[groupID][0]]
- // and grab the node on the spec that will represent which shufflable group this execution group belongs to
+ // and grab the node on the spec that will represent which shufflable group this execution group belongs tu
shufflableGroupingNode := representativeSpec.Nodes.FirstNodeWithType(nodeTypesToShuffle)
//add the execution group to its shufflable group
@@ -138,35 +138,14 @@ func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices,
}
}
- // now, for each shuffleable group, we compute the priority
- shufflableGroupingIDPriorities := map[uint]int{}
- for shufflableGroupingID, groupIDs := range shufflableGroupingIDToGroupIDs {
- // the priority of a shufflable grouping is the max priority of any spec in any execution group in the shufflable grouping
- maxPriority := -1 << 31 // min int
- for _, groupID := range groupIDs {
- for _, specIdx := range executionGroups[groupID] {
- specPriority := specs[specIdx].Nodes.GetSpecPriority()
- maxPriority = max(specPriority, maxPriority)
- }
- }
- shufflableGroupingIDPriorities[shufflableGroupingID] = maxPriority
- }
-
// now we permute the sorted shufflable grouping IDs and build the ordered Groups
- permutation := r.Perm(len(shufflableGroupingIDs))
- shuffledGroupingIds := make([]uint, len(shufflableGroupingIDs))
- for i, j := range permutation {
- shuffledGroupingIds[i] = shufflableGroupingIDs[j]
- }
- // now, we need to stable sort the shuffledGroupingIds by priority (higher priority first)
- sort.SliceStable(shuffledGroupingIds, func(i, j int) bool {
- return shufflableGroupingIDPriorities[shuffledGroupingIds[i]] > shufflableGroupingIDPriorities[shuffledGroupingIds[j]]
- })
-
- // we can now take these prioritized, shuffled, groupings and form the final set of ordered spec groups
orderedGroups := GroupedSpecIndices{}
- for _, id := range shuffledGroupingIds {
- for _, executionGroupID := range shufflableGroupingIDToGroupIDs[id] {
+ permutation := r.Perm(len(shufflableGroupingIDs))
+ for _, j := range permutation {
+ //let's get the execution group IDs for this shufflable group:
+ executionGroupIDsForJ := shufflableGroupingIDToGroupIDs[shufflableGroupingIDs[j]]
+ // and we'll add their associated specindices to the orderedGroups slice:
+ for _, executionGroupID := range executionGroupIDsForJ {
orderedGroups = append(orderedGroups, executionGroups[executionGroupID])
}
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go b/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go
index 5598f15cb..4a1c09461 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go
@@ -69,7 +69,7 @@ type pipePair struct {
writer *os.File
}
-func startPipeFactory(pipeChannel chan pipePair, shutdown chan any) {
+func startPipeFactory(pipeChannel chan pipePair, shutdown chan interface{}) {
for {
//make the next pipe...
pair := pipePair{}
@@ -101,8 +101,8 @@ type genericOutputInterceptor struct {
stderrClone *os.File
pipe pipePair
- shutdown chan any
- emergencyBailout chan any
+ shutdown chan interface{}
+ emergencyBailout chan interface{}
pipeChannel chan pipePair
interceptedContent chan string
@@ -139,7 +139,7 @@ func (interceptor *genericOutputInterceptor) ResumeIntercepting() {
interceptor.intercepting = true
if interceptor.stdoutClone == nil {
interceptor.stdoutClone, interceptor.stderrClone = interceptor.implementation.CreateStdoutStderrClones()
- interceptor.shutdown = make(chan any)
+ interceptor.shutdown = make(chan interface{})
go startPipeFactory(interceptor.pipeChannel, interceptor.shutdown)
}
@@ -147,13 +147,13 @@ func (interceptor *genericOutputInterceptor) ResumeIntercepting() {
// we get the pipe from our pipe factory. it runs in the background so we can request the next pipe while the spec being intercepted is running
interceptor.pipe = <-interceptor.pipeChannel
- interceptor.emergencyBailout = make(chan any)
+ interceptor.emergencyBailout = make(chan interface{})
//Spin up a goroutine to copy data from the pipe into a buffer, this is how we capture any output the user is emitting
go func() {
buffer := &bytes.Buffer{}
destination := io.MultiWriter(buffer, interceptor.forwardTo)
- copyFinished := make(chan any)
+ copyFinished := make(chan interface{})
reader := interceptor.pipe.reader
go func() {
io.Copy(destination, reader)
@@ -224,7 +224,7 @@ func NewOSGlobalReassigningOutputInterceptor() OutputInterceptor {
return &genericOutputInterceptor{
interceptedContent: make(chan string),
pipeChannel: make(chan pipePair),
- shutdown: make(chan any),
+ shutdown: make(chan interface{}),
implementation: &osGlobalReassigningOutputInterceptorImpl{},
}
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go b/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go
index e0f1431d5..8a237f446 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go
@@ -13,7 +13,7 @@ func NewOutputInterceptor() OutputInterceptor {
return &genericOutputInterceptor{
interceptedContent: make(chan string),
pipeChannel: make(chan pipePair),
- shutdown: make(chan any),
+ shutdown: make(chan interface{}),
implementation: &dupSyscallOutputInterceptorImpl{},
}
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go
index 4234d802c..b3cd64292 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go
@@ -30,7 +30,7 @@ type Server interface {
Close()
Address() string
RegisterAlive(node int, alive func() bool)
- GetSuiteDone() chan any
+ GetSuiteDone() chan interface{}
GetOutputDestination() io.Writer
SetOutputDestination(io.Writer)
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go
index 4aa10ae4f..6547c7a66 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go
@@ -34,7 +34,7 @@ func (client *httpClient) Close() error {
return nil
}
-func (client *httpClient) post(path string, data any) error {
+func (client *httpClient) post(path string, data interface{}) error {
var body io.Reader
if data != nil {
encoded, err := json.Marshal(data)
@@ -54,7 +54,7 @@ func (client *httpClient) post(path string, data any) error {
return nil
}
-func (client *httpClient) poll(path string, data any) error {
+func (client *httpClient) poll(path string, data interface{}) error {
for {
resp, err := http.Get(client.serverHost + path)
if err != nil {
@@ -153,7 +153,10 @@ func (client *httpClient) PostAbort() error {
func (client *httpClient) ShouldAbort() bool {
err := client.poll("/abort", nil)
- return err == ErrorGone
+ if err == ErrorGone {
+ return true
+ }
+ return false
}
func (client *httpClient) Write(p []byte) (int, error) {
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go
index 8a1b7a5bb..d2c71ab1b 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go
@@ -75,7 +75,7 @@ func (server *httpServer) Address() string {
return "http://" + server.listener.Addr().String()
}
-func (server *httpServer) GetSuiteDone() chan any {
+func (server *httpServer) GetSuiteDone() chan interface{} {
return server.handler.done
}
@@ -96,7 +96,7 @@ func (server *httpServer) RegisterAlive(node int, alive func() bool) {
//
// The server will forward all received messages to Ginkgo reporters registered with `RegisterReporters`
-func (server *httpServer) decode(writer http.ResponseWriter, request *http.Request, object any) bool {
+func (server *httpServer) decode(writer http.ResponseWriter, request *http.Request, object interface{}) bool {
defer request.Body.Close()
if json.NewDecoder(request.Body).Decode(object) != nil {
writer.WriteHeader(http.StatusBadRequest)
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go
index bb4675a02..59e8e6fd0 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go
@@ -35,7 +35,7 @@ func (client *rpcClient) Close() error {
return client.client.Close()
}
-func (client *rpcClient) poll(method string, data any) error {
+func (client *rpcClient) poll(method string, data interface{}) error {
for {
err := client.client.Call(method, voidSender, data)
if err == nil {
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_server.go b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_server.go
index 1574f99ac..2620fd562 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_server.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_server.go
@@ -25,7 +25,7 @@ type RPCServer struct {
handler *ServerHandler
}
-// Create a new server, automatically selecting a port
+//Create a new server, automatically selecting a port
func newRPCServer(parallelTotal int, reporter reporters.Reporter) (*RPCServer, error) {
listener, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
@@ -37,7 +37,7 @@ func newRPCServer(parallelTotal int, reporter reporters.Reporter) (*RPCServer, e
}, nil
}
-// Start the server. You don't need to `go s.Start()`, just `s.Start()`
+//Start the server. You don't need to `go s.Start()`, just `s.Start()`
func (server *RPCServer) Start() {
rpcServer := rpc.NewServer()
rpcServer.RegisterName("Server", server.handler) //register the handler's methods as the server
@@ -48,17 +48,17 @@ func (server *RPCServer) Start() {
go httpServer.Serve(server.listener)
}
-// Stop the server
+//Stop the server
func (server *RPCServer) Close() {
server.listener.Close()
}
-// The address the server can be reached it. Pass this into the `ForwardingReporter`.
+//The address the server can be reached it. Pass this into the `ForwardingReporter`.
func (server *RPCServer) Address() string {
return server.listener.Addr().String()
}
-func (server *RPCServer) GetSuiteDone() chan any {
+func (server *RPCServer) GetSuiteDone() chan interface{} {
return server.handler.done
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go
index ab9e11372..a6d98793e 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go
@@ -18,7 +18,7 @@ var voidSender Void
// It handles all the business logic to avoid duplication between the two servers
type ServerHandler struct {
- done chan any
+ done chan interface{}
outputDestination io.Writer
reporter reporters.Reporter
alives []func() bool
@@ -46,7 +46,7 @@ func newServerHandler(parallelTotal int, reporter reporters.Reporter) *ServerHan
parallelTotal: parallelTotal,
outputDestination: os.Stdout,
- done: make(chan any),
+ done: make(chan interface{}),
}
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go b/vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go
index 165cbc4b6..11269cf1f 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go
@@ -236,7 +236,7 @@ func extractRunningGoroutines() ([]types.Goroutine, error) {
}
functionCall.Filename = line[:delimiterIdx]
line = strings.Split(line[delimiterIdx+1:], " ")[0]
- lineNumber, err := strconv.ParseInt(line, 10, 32)
+ lineNumber, err := strconv.ParseInt(line, 10, 64)
functionCall.Line = int(lineNumber)
if err != nil {
return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid function call line number: %s\n%s", line, err.Error()))
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/report_entry.go b/vendor/github.com/onsi/ginkgo/v2/internal/report_entry.go
index 9c18dc8e5..cc351a39b 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/report_entry.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/report_entry.go
@@ -8,7 +8,7 @@ import (
type ReportEntry = types.ReportEntry
-func NewReportEntry(name string, cl types.CodeLocation, args ...any) (ReportEntry, error) {
+func NewReportEntry(name string, cl types.CodeLocation, args ...interface{}) (ReportEntry, error) {
out := ReportEntry{
Visibility: types.ReportEntryVisibilityAlways,
Name: name,
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson.go b/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson.go
deleted file mode 100644
index 8b7a9ceab..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson.go
+++ /dev/null
@@ -1,158 +0,0 @@
-package reporters
-
-import (
- "errors"
- "fmt"
- "strings"
- "time"
-
- "github.com/onsi/ginkgo/v2/types"
- "golang.org/x/tools/go/packages"
-)
-
-func ptr[T any](in T) *T {
- return &in
-}
-
-type encoder interface {
- Encode(v any) error
-}
-
-// gojsonEvent matches the format from go internals
-// https://github.com/golang/go/blob/master/src/cmd/internal/test2json/test2json.go#L31-L41
-// https://pkg.go.dev/cmd/test2json
-type gojsonEvent struct {
- Time *time.Time `json:",omitempty"`
- Action GoJSONAction
- Package string `json:",omitempty"`
- Test string `json:",omitempty"`
- Elapsed *float64 `json:",omitempty"`
- Output *string `json:",omitempty"`
- FailedBuild string `json:",omitempty"`
-}
-
-type GoJSONAction string
-
-const (
- // start - the test binary is about to be executed
- GoJSONStart GoJSONAction = "start"
- // run - the test has started running
- GoJSONRun GoJSONAction = "run"
- // pause - the test has been paused
- GoJSONPause GoJSONAction = "pause"
- // cont - the test has continued running
- GoJSONCont GoJSONAction = "cont"
- // pass - the test passed
- GoJSONPass GoJSONAction = "pass"
- // bench - the benchmark printed log output but did not fail
- GoJSONBench GoJSONAction = "bench"
- // fail - the test or benchmark failed
- GoJSONFail GoJSONAction = "fail"
- // output - the test printed output
- GoJSONOutput GoJSONAction = "output"
- // skip - the test was skipped or the package contained no tests
- GoJSONSkip GoJSONAction = "skip"
-)
-
-func goJSONActionFromSpecState(state types.SpecState) GoJSONAction {
- switch state {
- case types.SpecStateInvalid:
- return GoJSONFail
- case types.SpecStatePending:
- return GoJSONSkip
- case types.SpecStateSkipped:
- return GoJSONSkip
- case types.SpecStatePassed:
- return GoJSONPass
- case types.SpecStateFailed:
- return GoJSONFail
- case types.SpecStateAborted:
- return GoJSONFail
- case types.SpecStatePanicked:
- return GoJSONFail
- case types.SpecStateInterrupted:
- return GoJSONFail
- case types.SpecStateTimedout:
- return GoJSONFail
- default:
- panic("unexpected state should not happen")
- }
-}
-
-// gojsonReport wraps types.Report and calcualtes extra fields requires by gojson
-type gojsonReport struct {
- o types.Report
- // Extra calculated fields
- goPkg string
- elapsed float64
-}
-
-func newReport(in types.Report) *gojsonReport {
- return &gojsonReport{
- o: in,
- }
-}
-
-func (r *gojsonReport) Fill() error {
- // NOTE: could the types.Report include the go package name?
- goPkg, err := suitePathToPkg(r.o.SuitePath)
- if err != nil {
- return err
- }
- r.goPkg = goPkg
- r.elapsed = r.o.RunTime.Seconds()
- return nil
-}
-
-// gojsonSpecReport wraps types.SpecReport and calculates extra fields required by gojson
-type gojsonSpecReport struct {
- o types.SpecReport
- // extra calculated fields
- testName string
- elapsed float64
- action GoJSONAction
-}
-
-func newSpecReport(in types.SpecReport) *gojsonSpecReport {
- return &gojsonSpecReport{
- o: in,
- }
-}
-
-func (sr *gojsonSpecReport) Fill() error {
- sr.elapsed = sr.o.RunTime.Seconds()
- sr.testName = createTestName(sr.o)
- sr.action = goJSONActionFromSpecState(sr.o.State)
- return nil
-}
-
-func suitePathToPkg(dir string) (string, error) {
- cfg := &packages.Config{
- Mode: packages.NeedFiles | packages.NeedSyntax,
- }
- pkgs, err := packages.Load(cfg, dir)
- if err != nil {
- return "", err
- }
- if len(pkgs) != 1 {
- return "", errors.New("error")
- }
- return pkgs[0].ID, nil
-}
-
-func createTestName(spec types.SpecReport) string {
- name := fmt.Sprintf("[%s]", spec.LeafNodeType)
- if spec.FullText() != "" {
- name = name + " " + spec.FullText()
- }
- labels := spec.Labels()
- if len(labels) > 0 {
- name = name + " [" + strings.Join(labels, ", ") + "]"
- }
- semVerConstraints := spec.SemVerConstraints()
- if len(semVerConstraints) > 0 {
- name = name + " [" + strings.Join(semVerConstraints, ", ") + "]"
- }
- name = strings.TrimSpace(name)
- return name
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson_event_writer.go b/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson_event_writer.go
deleted file mode 100644
index ec5311d06..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson_event_writer.go
+++ /dev/null
@@ -1,111 +0,0 @@
-package reporters
-
-type GoJSONEventWriter struct {
- enc encoder
- specSystemErrFn specSystemExtractFn
- specSystemOutFn specSystemExtractFn
-}
-
-func NewGoJSONEventWriter(enc encoder, errFn specSystemExtractFn, outFn specSystemExtractFn) *GoJSONEventWriter {
- return &GoJSONEventWriter{
- enc: enc,
- specSystemErrFn: errFn,
- specSystemOutFn: outFn,
- }
-}
-
-func (r *GoJSONEventWriter) writeEvent(e *gojsonEvent) error {
- return r.enc.Encode(e)
-}
-
-func (r *GoJSONEventWriter) WriteSuiteStart(report *gojsonReport) error {
- e := &gojsonEvent{
- Time: &report.o.StartTime,
- Action: GoJSONStart,
- Package: report.goPkg,
- Output: nil,
- FailedBuild: "",
- }
- return r.writeEvent(e)
-}
-
-func (r *GoJSONEventWriter) WriteSuiteResult(report *gojsonReport) error {
- var action GoJSONAction
- switch {
- case report.o.PreRunStats.SpecsThatWillRun == 0:
- action = GoJSONSkip
- case report.o.SuiteSucceeded:
- action = GoJSONPass
- default:
- action = GoJSONFail
- }
- e := &gojsonEvent{
- Time: &report.o.EndTime,
- Action: action,
- Package: report.goPkg,
- Output: nil,
- FailedBuild: "",
- Elapsed: ptr(report.elapsed),
- }
- return r.writeEvent(e)
-}
-
-func (r *GoJSONEventWriter) WriteSpecStart(report *gojsonReport, specReport *gojsonSpecReport) error {
- e := &gojsonEvent{
- Time: &specReport.o.StartTime,
- Action: GoJSONRun,
- Test: specReport.testName,
- Package: report.goPkg,
- Output: nil,
- FailedBuild: "",
- }
- return r.writeEvent(e)
-}
-
-func (r *GoJSONEventWriter) WriteSpecOut(report *gojsonReport, specReport *gojsonSpecReport) error {
- events := []*gojsonEvent{}
-
- stdErr := r.specSystemErrFn(specReport.o)
- if stdErr != "" {
- events = append(events, &gojsonEvent{
- Time: &specReport.o.EndTime,
- Action: GoJSONOutput,
- Test: specReport.testName,
- Package: report.goPkg,
- Output: ptr(stdErr),
- FailedBuild: "",
- })
- }
- stdOut := r.specSystemOutFn(specReport.o)
- if stdOut != "" {
- events = append(events, &gojsonEvent{
- Time: &specReport.o.EndTime,
- Action: GoJSONOutput,
- Test: specReport.testName,
- Package: report.goPkg,
- Output: ptr(stdOut),
- FailedBuild: "",
- })
- }
-
- for _, ev := range events {
- err := r.writeEvent(ev)
- if err != nil {
- return err
- }
- }
- return nil
-}
-
-func (r *GoJSONEventWriter) WriteSpecResult(report *gojsonReport, specReport *gojsonSpecReport) error {
- e := &gojsonEvent{
- Time: &specReport.o.EndTime,
- Action: specReport.action,
- Test: specReport.testName,
- Package: report.goPkg,
- Elapsed: ptr(specReport.elapsed),
- Output: nil,
- FailedBuild: "",
- }
- return r.writeEvent(e)
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson_reporter.go b/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson_reporter.go
deleted file mode 100644
index 633e49b88..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/internal/reporters/gojson_reporter.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package reporters
-
-import (
- "github.com/onsi/ginkgo/v2/types"
-)
-
-type GoJSONReporter struct {
- ev *GoJSONEventWriter
-}
-
-type specSystemExtractFn func (spec types.SpecReport) string
-
-func NewGoJSONReporter(enc encoder, errFn specSystemExtractFn, outFn specSystemExtractFn) *GoJSONReporter {
- return &GoJSONReporter{
- ev: NewGoJSONEventWriter(enc, errFn, outFn),
- }
-}
-
-func (r *GoJSONReporter) Write(originalReport types.Report) error {
- // suite start events
- report := newReport(originalReport)
- err := report.Fill()
- if err != nil {
- return err
- }
- r.ev.WriteSuiteStart(report)
- for _, originalSpecReport := range originalReport.SpecReports {
- specReport := newSpecReport(originalSpecReport)
- err := specReport.Fill()
- if err != nil {
- return err
- }
- if specReport.o.LeafNodeType == types.NodeTypeIt {
- // handle any It leaf node as a spec
- r.ev.WriteSpecStart(report, specReport)
- r.ev.WriteSpecOut(report, specReport)
- r.ev.WriteSpecResult(report, specReport)
- } else {
- // handle any other leaf node as generic output
- r.ev.WriteSpecOut(report, specReport)
- }
- }
- r.ev.WriteSuiteResult(report)
- return nil
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go b/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go
index 99c9c5f5b..2d2ea2fc3 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go
@@ -2,7 +2,6 @@ package internal
import (
"context"
- "reflect"
"github.com/onsi/ginkgo/v2/types"
)
@@ -12,7 +11,6 @@ type SpecContext interface {
SpecReport() types.SpecReport
AttachProgressReporter(func() string) func()
- WrappedContext() context.Context
}
type specContext struct {
@@ -47,28 +45,3 @@ func NewSpecContext(suite *Suite) *specContext {
func (sc *specContext) SpecReport() types.SpecReport {
return sc.suite.CurrentSpecReport()
}
-
-func (sc *specContext) WrappedContext() context.Context {
- return sc.Context
-}
-
-/*
-The user is allowed to wrap `SpecContext` in a new context.Context when using AroundNodes. But body functions expect SpecContext.
-We support this by taking their context.Context and returning a SpecContext that wraps it.
-*/
-func wrapContextChain(ctx context.Context) SpecContext {
- if ctx == nil {
- return nil
- }
- if reflect.TypeOf(ctx) == reflect.TypeOf(&specContext{}) {
- return ctx.(*specContext)
- } else if sc, ok := ctx.Value("GINKGO_SPEC_CONTEXT").(*specContext); ok {
- return &specContext{
- Context: ctx,
- ProgressReporterManager: sc.ProgressReporterManager,
- cancel: sc.cancel,
- suite: sc.suite,
- }
- }
- return nil
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/spec_patch.go b/vendor/github.com/onsi/ginkgo/v2/internal/spec_patch.go
new file mode 100644
index 000000000..2d0bcc914
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/spec_patch.go
@@ -0,0 +1,22 @@
+package internal
+
+import (
+ "github.com/onsi/ginkgo/v2/types"
+)
+
+func (s Spec) CodeLocations() []types.CodeLocation {
+ return s.Nodes.CodeLocations()
+}
+
+func (s Spec) AppendText(text string) {
+ s.Nodes[len(s.Nodes)-1].Text += text
+}
+
+func (s Spec) Labels() []string {
+ var labels []string
+ for _, n := range s.Nodes {
+ labels = append(labels, n.Labels...)
+ }
+
+ return labels
+}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/suite.go b/vendor/github.com/onsi/ginkgo/v2/internal/suite.go
index ef76cd099..12e50b8a9 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/suite.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/suite.go
@@ -1,7 +1,6 @@
package internal
import (
- "context"
"fmt"
"sync"
"time"
@@ -10,6 +9,7 @@ import (
"github.com/onsi/ginkgo/v2/internal/parallel_support"
"github.com/onsi/ginkgo/v2/reporters"
"github.com/onsi/ginkgo/v2/types"
+ "golang.org/x/net/context"
)
type Phase uint
@@ -20,7 +20,7 @@ const (
PhaseRun
)
-const ProgressReporterDeadline = 5 * time.Second
+var PROGRESS_REPORTER_DEADLING = 5 * time.Second
type Suite struct {
tree *TreeNode
@@ -32,7 +32,6 @@ type Suite struct {
suiteNodes Nodes
cleanupNodes Nodes
- aroundNodes types.AroundNodes
failer *Failer
reporter reporters.Reporter
@@ -42,8 +41,6 @@ type Suite struct {
config types.SuiteConfig
deadline time.Time
- currentConstructionNodeReport *types.ConstructionNodeReport
-
skipAll bool
report types.Report
currentSpecReport types.SpecReport
@@ -68,6 +65,8 @@ type Suite struct {
selectiveLock *sync.Mutex
client parallel_support.Client
+
+ annotateFn AnnotateFunc
}
func NewSuite() *Suite {
@@ -90,7 +89,6 @@ func (suite *Suite) Clone() (*Suite, error) {
ProgressReporterManager: NewProgressReporterManager(),
topLevelContainers: suite.topLevelContainers.Clone(),
suiteNodes: suite.suiteNodes.Clone(),
- aroundNodes: suite.aroundNodes.Clone(),
selectiveLock: &sync.Mutex{},
}, nil
}
@@ -108,14 +106,18 @@ func (suite *Suite) BuildTree() error {
return nil
}
-func (suite *Suite) Run(description string, suiteLabels Labels, suiteSemVerConstraints SemVerConstraints, suiteAroundNodes types.AroundNodes, suitePath string, failer *Failer, reporter reporters.Reporter, writer WriterInterface, outputInterceptor OutputInterceptor, interruptHandler interrupt_handler.InterruptHandlerInterface, client parallel_support.Client, progressSignalRegistrar ProgressSignalRegistrar, suiteConfig types.SuiteConfig) (bool, bool) {
+func (suite *Suite) Run(description string, suiteLabels Labels, suitePath string, failer *Failer, reporter reporters.Reporter, writer WriterInterface, outputInterceptor OutputInterceptor, interruptHandler interrupt_handler.InterruptHandlerInterface, client parallel_support.Client, progressSignalRegistrar ProgressSignalRegistrar, suiteConfig types.SuiteConfig) (bool, bool) {
if suite.phase != PhaseBuildTree {
panic("cannot run before building the tree = call suite.BuildTree() first")
}
ApplyNestedFocusPolicyToTree(suite.tree)
specs := GenerateSpecsFromTreeRoot(suite.tree)
- specs, hasProgrammaticFocus := ApplyFocusToSpecs(specs, description, suiteLabels, suiteSemVerConstraints, suiteConfig)
- specs = ComputeAroundNodes(specs)
+ if suite.annotateFn != nil {
+ for _, spec := range specs {
+ suite.annotateFn(spec.Text(), spec)
+ }
+ }
+ specs, hasProgrammaticFocus := ApplyFocusToSpecs(specs, description, suiteLabels, suiteConfig)
suite.phase = PhaseRun
suite.client = client
@@ -125,7 +127,6 @@ func (suite *Suite) Run(description string, suiteLabels Labels, suiteSemVerConst
suite.outputInterceptor = outputInterceptor
suite.interruptHandler = interruptHandler
suite.config = suiteConfig
- suite.aroundNodes = suiteAroundNodes
if suite.config.Timeout > 0 {
suite.deadline = time.Now().Add(suite.config.Timeout)
@@ -133,7 +134,7 @@ func (suite *Suite) Run(description string, suiteLabels Labels, suiteSemVerConst
cancelProgressHandler := progressSignalRegistrar(suite.handleProgressSignal)
- success := suite.runSpecs(description, suiteLabels, suiteSemVerConstraints, suitePath, hasProgrammaticFocus, specs)
+ success := suite.runSpecs(description, suiteLabels, suitePath, hasProgrammaticFocus, specs)
cancelProgressHandler()
@@ -205,14 +206,6 @@ func (suite *Suite) PushNode(node Node) error {
err = types.GinkgoErrors.CaughtPanicDuringABuildPhase(e, node.CodeLocation)
}
}()
-
- // Ensure that code running in the body of the container node
- // has access to information about the current container node(s).
- suite.currentConstructionNodeReport = constructionNodeReportForTreeNode(suite.tree)
- defer func() {
- suite.currentConstructionNodeReport = nil
- }()
-
node.Body(nil)
return err
}()
@@ -273,7 +266,6 @@ func (suite *Suite) pushCleanupNode(node Node) error {
node.NodeIDWhereCleanupWasGenerated = suite.currentNode.ID
node.NestingLevel = suite.currentNode.NestingLevel
- node.AroundNodes = types.AroundNodes{}.Append(suite.currentNode.AroundNodes...).Append(node.AroundNodes...)
suite.selectiveLock.Lock()
suite.cleanupNodes = append(suite.cleanupNodes, node)
suite.selectiveLock.Unlock()
@@ -342,16 +334,6 @@ func (suite *Suite) By(text string, callback ...func()) error {
return nil
}
-func (suite *Suite) CurrentConstructionNodeReport() types.ConstructionNodeReport {
- suite.selectiveLock.Lock()
- defer suite.selectiveLock.Unlock()
- report := suite.currentConstructionNodeReport
- if report == nil {
- panic("CurrentConstructionNodeReport may only be called during construction of the spec tree")
- }
- return *report
-}
-
/*
Spec Running methods - used during PhaseRun
*/
@@ -395,7 +377,7 @@ func (suite *Suite) generateProgressReport(fullReport bool) types.ProgressReport
suite.selectiveLock.Lock()
defer suite.selectiveLock.Unlock()
- deadline, cancel := context.WithTimeout(context.Background(), ProgressReporterDeadline)
+ deadline, cancel := context.WithTimeout(context.Background(), PROGRESS_REPORTER_DEADLING)
defer cancel()
var additionalReports []string
if suite.currentSpecContext != nil {
@@ -453,14 +435,13 @@ func (suite *Suite) processCurrentSpecReport() {
}
}
-func (suite *Suite) runSpecs(description string, suiteLabels Labels, suiteSemVerConstraints SemVerConstraints, suitePath string, hasProgrammaticFocus bool, specs Specs) bool {
+func (suite *Suite) runSpecs(description string, suiteLabels Labels, suitePath string, hasProgrammaticFocus bool, specs Specs) bool {
numSpecsThatWillBeRun := specs.CountWithoutSkip()
suite.report = types.Report{
SuitePath: suitePath,
SuiteDescription: description,
SuiteLabels: suiteLabels,
- SuiteSemVerConstraints: suiteSemVerConstraints,
SuiteConfig: suite.config,
SuiteHasProgrammaticFocus: hasProgrammaticFocus,
PreRunStats: types.PreRunStats{
@@ -917,30 +898,7 @@ func (suite *Suite) runNode(node Node, specDeadline time.Time, text string) (typ
failureC <- failureFromRun
}()
- aroundNodes := types.AroundNodes{}.Append(suite.aroundNodes...).Append(node.AroundNodes...)
- if len(aroundNodes) > 0 {
- i := 0
- var f func(context.Context)
- f = func(c context.Context) {
- sc := wrapContextChain(c)
- if sc == nil {
- suite.failer.Fail("An AroundNode failed to pass a valid Ginkgo SpecContext in. You must always pass in a context derived from the context passed to you.", aroundNodes[i].CodeLocation)
- return
- }
- i++
- if i < len(aroundNodes) {
- aroundNodes[i].Body(sc, f)
- } else {
- node.Body(sc)
- }
- }
- aroundNodes[0].Body(sc, f)
- if i != len(aroundNodes) {
- suite.failer.Fail("An AroundNode failed to call the passed in function.", aroundNodes[i].CodeLocation)
- }
- } else {
- node.Body(sc)
- }
+ node.Body(sc)
finished = true
}()
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/suite_patch.go b/vendor/github.com/onsi/ginkgo/v2/internal/suite_patch.go
new file mode 100644
index 000000000..29eae0283
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/suite_patch.go
@@ -0,0 +1,71 @@
+package internal
+
+import (
+ "time"
+
+ "github.com/onsi/ginkgo/v2/internal/interrupt_handler"
+ "github.com/onsi/ginkgo/v2/reporters"
+ "github.com/onsi/ginkgo/v2/types"
+)
+
+type AnnotateFunc func(testName string, test types.TestSpec)
+
+func (suite *Suite) SetAnnotateFn(fn AnnotateFunc) {
+ suite.annotateFn = fn
+}
+
+func (suite *Suite) GetReport() types.Report {
+ return suite.report
+}
+
+func (suite *Suite) WalkTests(fn AnnotateFunc) {
+ if suite.phase != PhaseBuildTree {
+ panic("cannot run before building the tree = call suite.BuildTree() first")
+ }
+ ApplyNestedFocusPolicyToTree(suite.tree)
+ specs := GenerateSpecsFromTreeRoot(suite.tree)
+ for _, spec := range specs {
+ fn(spec.Text(), spec)
+ }
+}
+
+func (suite *Suite) InPhaseBuildTree() bool {
+ return suite.phase == PhaseBuildTree
+}
+
+func (suite *Suite) ClearBeforeAndAfterSuiteNodes() {
+ // Don't build the tree multiple times, it results in multiple initing of tests
+ if !suite.InPhaseBuildTree() {
+ suite.BuildTree()
+ }
+ newNodes := Nodes{}
+ for _, node := range suite.suiteNodes {
+ if node.NodeType == types.NodeTypeBeforeSuite || node.NodeType == types.NodeTypeAfterSuite || node.NodeType == types.NodeTypeSynchronizedBeforeSuite || node.NodeType == types.NodeTypeSynchronizedAfterSuite {
+ continue
+ }
+ newNodes = append(newNodes, node)
+ }
+ suite.suiteNodes = newNodes
+}
+
+func (suite *Suite) RunSpec(spec types.TestSpec, suiteLabels Labels, suiteDescription, suitePath string, failer *Failer, writer WriterInterface, suiteConfig types.SuiteConfig, reporterConfig types.ReporterConfig) (bool, bool) {
+ if suite.phase != PhaseBuildTree {
+ panic("cannot run before building the tree = call suite.BuildTree() first")
+ }
+
+ suite.phase = PhaseRun
+ suite.client = nil
+ suite.failer = failer
+ suite.reporter = reporters.NewDefaultReporter(reporterConfig, writer)
+ suite.writer = writer
+ suite.outputInterceptor = NoopOutputInterceptor{}
+ if suite.config.Timeout > 0 {
+ suite.deadline = time.Now().Add(suiteConfig.Timeout)
+ }
+ suite.interruptHandler = interrupt_handler.NewInterruptHandler(nil)
+ suite.config = suiteConfig
+
+ success := suite.runSpecs(suiteDescription, suiteLabels, suitePath, false, []Spec{spec.(Spec)})
+
+ return success, false
+}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go b/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go
index 9806e315a..73e265565 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go
@@ -1,7 +1,6 @@
package testingtproxy
import (
- "context"
"fmt"
"io"
"os"
@@ -20,9 +19,9 @@ type addReportEntryFunc func(names string, args ...any)
type ginkgoWriterInterface interface {
io.Writer
- Print(a ...any)
- Printf(format string, a ...any)
- Println(a ...any)
+ Print(a ...interface{})
+ Printf(format string, a ...interface{})
+ Println(a ...interface{})
}
type ginkgoRecoverFunc func()
type attachProgressReporterFunc func(func() string) func()
@@ -81,31 +80,11 @@ func (t *ginkgoTestingTProxy) Setenv(key, value string) {
}
}
-func (t *ginkgoTestingTProxy) Chdir(dir string) {
- currentDir, err := os.Getwd()
- if err != nil {
- t.fail(fmt.Sprintf("Failed to get current directory: %v", err), 1)
- }
-
- t.cleanup(os.Chdir, currentDir, internal.Offset(1))
-
- err = os.Chdir(dir)
- if err != nil {
- t.fail(fmt.Sprintf("Failed to change directory: %v", err), 1)
- }
-}
-
-func (t *ginkgoTestingTProxy) Context() context.Context {
- ctx, cancel := context.WithCancel(context.Background())
- t.cleanup(cancel, internal.Offset(1))
- return ctx
-}
-
-func (t *ginkgoTestingTProxy) Error(args ...any) {
+func (t *ginkgoTestingTProxy) Error(args ...interface{}) {
t.fail(fmt.Sprintln(args...), t.offset)
}
-func (t *ginkgoTestingTProxy) Errorf(format string, args ...any) {
+func (t *ginkgoTestingTProxy) Errorf(format string, args ...interface{}) {
t.fail(fmt.Sprintf(format, args...), t.offset)
}
@@ -121,11 +100,11 @@ func (t *ginkgoTestingTProxy) Failed() bool {
return t.report().Failed()
}
-func (t *ginkgoTestingTProxy) Fatal(args ...any) {
+func (t *ginkgoTestingTProxy) Fatal(args ...interface{}) {
t.fail(fmt.Sprintln(args...), t.offset)
}
-func (t *ginkgoTestingTProxy) Fatalf(format string, args ...any) {
+func (t *ginkgoTestingTProxy) Fatalf(format string, args ...interface{}) {
t.fail(fmt.Sprintf(format, args...), t.offset)
}
@@ -133,11 +112,11 @@ func (t *ginkgoTestingTProxy) Helper() {
types.MarkAsHelper(1)
}
-func (t *ginkgoTestingTProxy) Log(args ...any) {
+func (t *ginkgoTestingTProxy) Log(args ...interface{}) {
fmt.Fprintln(t.writer, args...)
}
-func (t *ginkgoTestingTProxy) Logf(format string, args ...any) {
+func (t *ginkgoTestingTProxy) Logf(format string, args ...interface{}) {
t.Log(fmt.Sprintf(format, args...))
}
@@ -149,7 +128,7 @@ func (t *ginkgoTestingTProxy) Parallel() {
// No-op
}
-func (t *ginkgoTestingTProxy) Skip(args ...any) {
+func (t *ginkgoTestingTProxy) Skip(args ...interface{}) {
t.skip(fmt.Sprintln(args...), t.offset)
}
@@ -157,7 +136,7 @@ func (t *ginkgoTestingTProxy) SkipNow() {
t.skip("skip", t.offset)
}
-func (t *ginkgoTestingTProxy) Skipf(format string, args ...any) {
+func (t *ginkgoTestingTProxy) Skipf(format string, args ...interface{}) {
t.skip(fmt.Sprintf(format, args...), t.offset)
}
@@ -229,9 +208,3 @@ func (t *ginkgoTestingTProxy) ParallelTotal() int {
func (t *ginkgoTestingTProxy) AttachProgressReporter(f func() string) func() {
return t.attachProgressReporter(f)
}
-func (t *ginkgoTestingTProxy) Output() io.Writer {
- return t.writer
-}
-func (t *ginkgoTestingTProxy) Attr(key, value string) {
- t.addReportEntry(key, value, internal.Offset(1), types.ReportEntryVisibilityFailureOrVerbose)
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/internal/writer.go b/vendor/github.com/onsi/ginkgo/v2/internal/writer.go
index 1c4e0534e..aab42d5fb 100644
--- a/vendor/github.com/onsi/ginkgo/v2/internal/writer.go
+++ b/vendor/github.com/onsi/ginkgo/v2/internal/writer.go
@@ -121,15 +121,15 @@ func (w *Writer) ClearTeeWriters() {
w.teeWriters = []io.Writer{}
}
-func (w *Writer) Print(a ...any) {
+func (w *Writer) Print(a ...interface{}) {
fmt.Fprint(w, a...)
}
-func (w *Writer) Printf(format string, a ...any) {
+func (w *Writer) Printf(format string, a ...interface{}) {
fmt.Fprintf(w, format, a...)
}
-func (w *Writer) Println(a ...any) {
+func (w *Writer) Println(a ...interface{}) {
fmt.Fprintln(w, a...)
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go b/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go
index 026d9cf9b..480730486 100644
--- a/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go
+++ b/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go
@@ -72,9 +72,6 @@ func (r *DefaultReporter) SuiteWillBegin(report types.Report) {
if len(report.SuiteLabels) > 0 {
r.emit(r.f("{{coral}}[%s]{{/}} ", strings.Join(report.SuiteLabels, ", ")))
}
- if len(report.SuiteSemVerConstraints) > 0 {
- r.emit(r.f("{{coral}}[%s]{{/}} ", strings.Join(report.SuiteSemVerConstraints, ", ")))
- }
r.emit(r.f("- %d/%d specs ", report.PreRunStats.SpecsThatWillRun, report.PreRunStats.TotalSpecs))
if report.SuiteConfig.ParallelTotal > 1 {
r.emit(r.f("- %d procs ", report.SuiteConfig.ParallelTotal))
@@ -90,13 +87,6 @@ func (r *DefaultReporter) SuiteWillBegin(report types.Report) {
bannerWidth = len(labels) + 2
}
}
- if len(report.SuiteSemVerConstraints) > 0 {
- semVerConstraints := strings.Join(report.SuiteSemVerConstraints, ", ")
- r.emitBlock(r.f("{{coral}}[%s]{{/}} ", semVerConstraints))
- if len(semVerConstraints)+2 > bannerWidth {
- bannerWidth = len(semVerConstraints) + 2
- }
- }
r.emitBlock(strings.Repeat("=", bannerWidth))
out := r.f("Random Seed: {{bold}}%d{{/}}", report.SuiteConfig.RandomSeed)
@@ -381,22 +371,13 @@ func (r *DefaultReporter) emitTimeline(indent uint, report types.SpecReport, tim
cursor := 0
for _, entry := range timeline {
tl := entry.GetTimelineLocation()
-
- end := tl.Offset
- if end > len(gw) {
- end = len(gw)
- }
- if end < cursor {
- end = cursor
- }
- if cursor < end && cursor <= len(gw) && end <= len(gw) {
- r.emit(r.fi(indent, "%s", gw[cursor:end]))
- cursor = end
- } else if cursor < len(gw) && end == len(gw) {
+ if tl.Offset < len(gw) {
+ r.emit(r.fi(indent, "%s", gw[cursor:tl.Offset]))
+ cursor = tl.Offset
+ } else if cursor < len(gw) {
r.emit(r.fi(indent, "%s", gw[cursor:]))
cursor = len(gw)
}
-
switch x := entry.(type) {
case types.Failure:
if isVeryVerbose {
@@ -413,7 +394,7 @@ func (r *DefaultReporter) emitTimeline(indent uint, report types.SpecReport, tim
case types.ReportEntry:
r.emitReportEntry(indent, x)
case types.ProgressReport:
- r.emitProgressReport(indent, false, isVeryVerbose, x)
+ r.emitProgressReport(indent, false, x)
case types.SpecEvent:
if isVeryVerbose || !x.IsOnlyVisibleAtVeryVerbose() || r.conf.ShowNodeEvents {
r.emitSpecEvent(indent, x, isVeryVerbose)
@@ -467,7 +448,7 @@ func (r *DefaultReporter) emitFailure(indent uint, state types.SpecState, failur
if !failure.ProgressReport.IsZero() {
r.emitBlock("\n")
- r.emitProgressReport(indent, false, false, failure.ProgressReport)
+ r.emitProgressReport(indent, false, failure.ProgressReport)
}
if failure.AdditionalFailure != nil && includeAdditionalFailure {
@@ -483,11 +464,11 @@ func (r *DefaultReporter) EmitProgressReport(report types.ProgressReport) {
r.emit(r.fi(1, "{{coral}}Progress Report for Ginkgo Process #{{bold}}%d{{/}}\n", report.ParallelProcess))
}
shouldEmitGW := report.RunningInParallel || r.conf.Verbosity().LT(types.VerbosityLevelVerbose)
- r.emitProgressReport(1, shouldEmitGW, true, report)
+ r.emitProgressReport(1, shouldEmitGW, report)
r.emitDelimiter(1)
}
-func (r *DefaultReporter) emitProgressReport(indent uint, emitGinkgoWriterOutput, emitGroup bool, report types.ProgressReport) {
+func (r *DefaultReporter) emitProgressReport(indent uint, emitGinkgoWriterOutput bool, report types.ProgressReport) {
if report.Message != "" {
r.emitBlock(r.fi(indent, report.Message+"\n"))
indent += 1
@@ -523,10 +504,6 @@ func (r *DefaultReporter) emitProgressReport(indent uint, emitGinkgoWriterOutput
indent -= 1
}
- if r.conf.GithubOutput && emitGroup {
- r.emitBlock(r.fi(indent, "::group::Progress Report"))
- }
-
if emitGinkgoWriterOutput && report.CapturedGinkgoWriterOutput != "" {
r.emit("\n")
r.emitBlock(r.fi(indent, "{{gray}}Begin Captured GinkgoWriter Output >>{{/}}"))
@@ -573,10 +550,6 @@ func (r *DefaultReporter) emitProgressReport(indent uint, emitGinkgoWriterOutput
r.emit(r.fi(indent, "{{gray}}{{bold}}{{underline}}Other Goroutines{{/}}\n"))
r.emitGoroutines(indent, otherGoroutines...)
}
-
- if r.conf.GithubOutput && emitGroup {
- r.emitBlock(r.fi(indent, "::endgroup::"))
- }
}
func (r *DefaultReporter) EmitReportEntry(entry types.ReportEntry) {
@@ -712,11 +685,11 @@ func (r *DefaultReporter) _emit(s string, block bool, isDelimiter bool) {
}
/* Rendering text */
-func (r *DefaultReporter) f(format string, args ...any) string {
+func (r *DefaultReporter) f(format string, args ...interface{}) string {
return r.formatter.F(format, args...)
}
-func (r *DefaultReporter) fi(indentation uint, format string, args ...any) string {
+func (r *DefaultReporter) fi(indentation uint, format string, args ...interface{}) string {
return r.formatter.Fi(indentation, format, args...)
}
@@ -725,8 +698,8 @@ func (r *DefaultReporter) cycleJoin(elements []string, joiner string) string {
}
func (r *DefaultReporter) codeLocationBlock(report types.SpecReport, highlightColor string, veryVerbose bool, usePreciseFailureLocation bool) string {
- texts, locations, labels, semVerConstraints := []string{}, []types.CodeLocation{}, [][]string{}, [][]string{}
- texts, locations, labels, semVerConstraints = append(texts, report.ContainerHierarchyTexts...), append(locations, report.ContainerHierarchyLocations...), append(labels, report.ContainerHierarchyLabels...), append(semVerConstraints, report.ContainerHierarchySemVerConstraints...)
+ texts, locations, labels := []string{}, []types.CodeLocation{}, [][]string{}
+ texts, locations, labels = append(texts, report.ContainerHierarchyTexts...), append(locations, report.ContainerHierarchyLocations...), append(labels, report.ContainerHierarchyLabels...)
if report.LeafNodeType.Is(types.NodeTypesForSuiteLevelNodes) {
texts = append(texts, r.f("[%s] %s", report.LeafNodeType, report.LeafNodeText))
@@ -734,7 +707,6 @@ func (r *DefaultReporter) codeLocationBlock(report types.SpecReport, highlightCo
texts = append(texts, r.f(report.LeafNodeText))
}
labels = append(labels, report.LeafNodeLabels)
- semVerConstraints = append(semVerConstraints, report.LeafNodeSemVerConstraints)
locations = append(locations, report.LeafNodeLocation)
failureLocation := report.Failure.FailureNodeLocation
@@ -748,7 +720,6 @@ func (r *DefaultReporter) codeLocationBlock(report types.SpecReport, highlightCo
texts = append([]string{fmt.Sprintf("TOP-LEVEL [%s]", report.Failure.FailureNodeType)}, texts...)
locations = append([]types.CodeLocation{failureLocation}, locations...)
labels = append([][]string{{}}, labels...)
- semVerConstraints = append([][]string{{}}, semVerConstraints...)
highlightIndex = 0
case types.FailureNodeInContainer:
i := report.Failure.FailureNodeContainerIndex
@@ -776,9 +747,6 @@ func (r *DefaultReporter) codeLocationBlock(report types.SpecReport, highlightCo
if len(labels[i]) > 0 {
out += r.f(" {{coral}}[%s]{{/}}", strings.Join(labels[i], ", "))
}
- if len(semVerConstraints[i]) > 0 {
- out += r.f(" {{coral}}[%s]{{/}}", strings.Join(semVerConstraints[i], ", "))
- }
out += "\n"
out += r.fi(uint(i), "{{gray}}%s{{/}}\n", locations[i])
}
@@ -802,10 +770,6 @@ func (r *DefaultReporter) codeLocationBlock(report types.SpecReport, highlightCo
if len(flattenedLabels) > 0 {
out += r.f(" {{coral}}[%s]{{/}}", strings.Join(flattenedLabels, ", "))
}
- flattenedSemVerConstraints := report.SemVerConstraints()
- if len(flattenedSemVerConstraints) > 0 {
- out += r.f(" {{coral}}[%s]{{/}}", strings.Join(flattenedSemVerConstraints, ", "))
- }
out += "\n"
if usePreciseFailureLocation {
out += r.f("{{gray}}%s{{/}}", failureLocation)
diff --git a/vendor/github.com/onsi/ginkgo/v2/reporters/gojson_report.go b/vendor/github.com/onsi/ginkgo/v2/reporters/gojson_report.go
deleted file mode 100644
index d02fb7a1a..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/reporters/gojson_report.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package reporters
-
-import (
- "encoding/json"
- "fmt"
- "os"
- "path"
-
- "github.com/onsi/ginkgo/v2/internal/reporters"
- "github.com/onsi/ginkgo/v2/types"
-)
-
-// GenerateGoTestJSONReport produces a JSON-formatted in the test2json format used by `go test -json`
-func GenerateGoTestJSONReport(report types.Report, destination string) error {
- // walk report and generate test2json-compatible objects
- // JSON-encode the objects into filename
- if err := os.MkdirAll(path.Dir(destination), 0770); err != nil {
- return err
- }
- f, err := os.Create(destination)
- if err != nil {
- return err
- }
- defer f.Close()
- enc := json.NewEncoder(f)
- r := reporters.NewGoJSONReporter(
- enc,
- systemErrForUnstructuredReporters,
- systemOutForUnstructuredReporters,
- )
- return r.Write(report)
-}
-
-// MergeJSONReports produces a single JSON-formatted report at the passed in destination by merging the JSON-formatted reports provided in sources
-// It skips over reports that fail to decode but reports on them via the returned messages []string
-func MergeAndCleanupGoTestJSONReports(sources []string, destination string) ([]string, error) {
- messages := []string{}
- if err := os.MkdirAll(path.Dir(destination), 0770); err != nil {
- return messages, err
- }
- f, err := os.Create(destination)
- if err != nil {
- return messages, err
- }
- defer f.Close()
-
- for _, source := range sources {
- data, err := os.ReadFile(source)
- if err != nil {
- messages = append(messages, fmt.Sprintf("Could not open %s:\n%s", source, err.Error()))
- continue
- }
- _, err = f.Write(data)
- if err != nil {
- messages = append(messages, fmt.Sprintf("Could not write to %s:\n%s", destination, err.Error()))
- continue
- }
- os.Remove(source)
- }
- return messages, nil
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go b/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go
index 828f893fb..562e0f62b 100644
--- a/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go
+++ b/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go
@@ -36,9 +36,6 @@ type JunitReportConfig struct {
// Enable OmitSpecLabels to prevent labels from appearing in the spec name
OmitSpecLabels bool
- // Enable OmitSpecSemVerConstraints to prevent semantic version constraints from appearing in the spec name
- OmitSpecSemVerConstraints bool
-
// Enable OmitLeafNodeType to prevent the spec leaf node type from appearing in the spec name
OmitLeafNodeType bool
@@ -172,11 +169,9 @@ func GenerateJUnitReportWithConfig(report types.Report, dst string, config Junit
{"SuiteHasProgrammaticFocus", fmt.Sprintf("%t", report.SuiteHasProgrammaticFocus)},
{"SpecialSuiteFailureReason", strings.Join(report.SpecialSuiteFailureReasons, ",")},
{"SuiteLabels", fmt.Sprintf("[%s]", strings.Join(report.SuiteLabels, ","))},
- {"SuiteSemVerConstraints", fmt.Sprintf("[%s]", strings.Join(report.SuiteSemVerConstraints, ","))},
{"RandomSeed", fmt.Sprintf("%d", report.SuiteConfig.RandomSeed)},
{"RandomizeAllSpecs", fmt.Sprintf("%t", report.SuiteConfig.RandomizeAllSpecs)},
{"LabelFilter", report.SuiteConfig.LabelFilter},
- {"SemVerFilter", report.SuiteConfig.SemVerFilter},
{"FocusStrings", strings.Join(report.SuiteConfig.FocusStrings, ",")},
{"SkipStrings", strings.Join(report.SuiteConfig.SkipStrings, ",")},
{"FocusFiles", strings.Join(report.SuiteConfig.FocusFiles, ";")},
@@ -212,10 +207,6 @@ func GenerateJUnitReportWithConfig(report types.Report, dst string, config Junit
owner = matches[1]
}
}
- semVerConstraints := spec.SemVerConstraints()
- if len(semVerConstraints) > 0 && !config.OmitSpecSemVerConstraints {
- name = name + " [" + strings.Join(semVerConstraints, ", ") + "]"
- }
name = strings.TrimSpace(name)
test := JUnitTestCase{
diff --git a/vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go b/vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go
index 55e1d1f4f..e990ad82e 100644
--- a/vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go
+++ b/vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go
@@ -38,13 +38,9 @@ func GenerateTeamcityReport(report types.Report, dst string) error {
name := report.SuiteDescription
labels := report.SuiteLabels
- semVerConstraints := report.SuiteSemVerConstraints
if len(labels) > 0 {
name = name + " [" + strings.Join(labels, ", ") + "]"
}
- if len(semVerConstraints) > 0 {
- name = name + " [" + strings.Join(semVerConstraints, ", ") + "]"
- }
fmt.Fprintf(f, "##teamcity[testSuiteStarted name='%s']\n", tcEscape(name))
for _, spec := range report.SpecReports {
name := fmt.Sprintf("[%s]", spec.LeafNodeType)
@@ -55,10 +51,6 @@ func GenerateTeamcityReport(report types.Report, dst string) error {
if len(labels) > 0 {
name = name + " [" + strings.Join(labels, ", ") + "]"
}
- semVerConstraints := spec.SemVerConstraints()
- if len(semVerConstraints) > 0 {
- name = name + " [" + strings.Join(semVerConstraints, ", ") + "]"
- }
name = tcEscape(name)
fmt.Fprintf(f, "##teamcity[testStarted name='%s']\n", name)
diff --git a/vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go b/vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go
index 4e86dba84..aa1a35176 100644
--- a/vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go
+++ b/vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go
@@ -27,8 +27,6 @@ CurrentSpecReport returns information about the current running spec.
The returned object is a types.SpecReport which includes helper methods
to make extracting information about the spec easier.
-During construction of the test tree the result is empty.
-
You can learn more about SpecReport here: https://pkg.go.dev/github.com/onsi/ginkgo/types#SpecReport
You can learn more about CurrentSpecReport() here: https://onsi.github.io/ginkgo/#getting-a-report-for-the-current-spec
*/
@@ -36,31 +34,6 @@ func CurrentSpecReport() SpecReport {
return global.Suite.CurrentSpecReport()
}
-/*
-ConstructionNodeReport describes the container nodes during construction of
-the spec tree. It provides a subset of the information that is provided
-by SpecReport at runtime.
-
-It is documented here: [types.ConstructionNodeReport]
-*/
-type ConstructionNodeReport = types.ConstructionNodeReport
-
-/*
-CurrentConstructionNodeReport returns information about the current container nodes
-that are leading to the current path in the spec tree.
-The returned object is a types.ConstructionNodeReport which includes helper methods
-to make extracting information about the spec easier.
-
-May only be called during construction of the spec tree. It panics when
-called while tests are running. Use CurrentSpecReport instead in that
-phase.
-
-You can learn more about ConstructionNodeReport here: [types.ConstructionNodeReport]
-*/
-func CurrentTreeConstructionNodeReport() ConstructionNodeReport {
- return global.Suite.CurrentConstructionNodeReport()
-}
-
/*
ReportEntryVisibility governs the visibility of ReportEntries in Ginkgo's console reporter
@@ -87,7 +60,7 @@ AddReportEntry() must be called within a Subject or Setup node - not in a Contai
You can learn more about Report Entries here: https://onsi.github.io/ginkgo/#attaching-data-to-reports
*/
-func AddReportEntry(name string, args ...any) {
+func AddReportEntry(name string, args ...interface{}) {
cl := types.NewCodeLocation(1)
reportEntry, err := internal.NewReportEntry(name, cl, args...)
if err != nil {
@@ -116,10 +89,10 @@ You can learn more about ReportBeforeEach here: https://onsi.github.io/ginkgo/#g
You can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes
*/
func ReportBeforeEach(body any, args ...any) bool {
- combinedArgs := []any{body}
+ combinedArgs := []interface{}{body}
combinedArgs = append(combinedArgs, args...)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeReportBeforeEach, "", combinedArgs...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeReportBeforeEach, "", combinedArgs...))
}
/*
@@ -140,10 +113,10 @@ You can learn more about ReportAfterEach here: https://onsi.github.io/ginkgo/#ge
You can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes
*/
func ReportAfterEach(body any, args ...any) bool {
- combinedArgs := []any{body}
+ combinedArgs := []interface{}{body}
combinedArgs = append(combinedArgs, args...)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeReportAfterEach, "", combinedArgs...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeReportAfterEach, "", combinedArgs...))
}
/*
@@ -170,9 +143,9 @@ You can learn more about Ginkgo's reporting infrastructure, including generating
You can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes
*/
func ReportBeforeSuite(body any, args ...any) bool {
- combinedArgs := []any{body}
+ combinedArgs := []interface{}{body}
combinedArgs = append(combinedArgs, args...)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeReportBeforeSuite, "", combinedArgs...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeReportBeforeSuite, "", combinedArgs...))
}
/*
@@ -192,7 +165,7 @@ ReportAfterSuite nodes must be created at the top-level (i.e. not nested in a Co
When running in parallel, Ginkgo ensures that only one of the parallel nodes runs the ReportAfterSuite and that it is passed a report that is aggregated across
all parallel nodes
-In addition to using ReportAfterSuite to programmatically generate suite reports, you can also generate JSON, GoJSON, JUnit, and Teamcity formatted reports using the --json-report, --gojson-report, --junit-report, and --teamcity-report ginkgo CLI flags.
+In addition to using ReportAfterSuite to programmatically generate suite reports, you can also generate JSON, JUnit, and Teamcity formatted reports using the --json-report, --junit-report, and --teamcity-report ginkgo CLI flags.
You cannot nest any other Ginkgo nodes within a ReportAfterSuite node's closure.
You can learn more about ReportAfterSuite here: https://onsi.github.io/ginkgo/#generating-reports-programmatically
@@ -201,10 +174,10 @@ You can learn more about Ginkgo's reporting infrastructure, including generating
You can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes
*/
-func ReportAfterSuite(text string, body any, args ...any) bool {
- combinedArgs := []any{body}
+func ReportAfterSuite(text string, body any, args ...interface{}) bool {
+ combinedArgs := []interface{}{body}
combinedArgs = append(combinedArgs, args...)
- return pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeReportAfterSuite, text, combinedArgs...)))
+ return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeReportAfterSuite, text, combinedArgs...))
}
func registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig types.ReporterConfig) {
@@ -215,12 +188,6 @@ func registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig types.Re
Fail(fmt.Sprintf("Failed to generate JSON report:\n%s", err.Error()))
}
}
- if reporterConfig.GoJSONReport != "" {
- err := reporters.GenerateGoTestJSONReport(report, reporterConfig.GoJSONReport)
- if err != nil {
- Fail(fmt.Sprintf("Failed to generate Go JSON report:\n%s", err.Error()))
- }
- }
if reporterConfig.JUnitReport != "" {
err := reporters.GenerateJUnitReport(report, reporterConfig.JUnitReport)
if err != nil {
@@ -239,9 +206,6 @@ func registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig types.Re
if reporterConfig.JSONReport != "" {
flags = append(flags, "--json-report")
}
- if reporterConfig.GoJSONReport != "" {
- flags = append(flags, "--gojson-report")
- }
if reporterConfig.JUnitReport != "" {
flags = append(flags, "--junit-report")
}
@@ -249,11 +213,9 @@ func registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig types.Re
flags = append(flags, "--teamcity-report")
}
pushNode(internal.NewNode(
- internal.TransformNewNodeArgs(
- exitIfErrors, deprecationTracker, types.NodeTypeReportAfterSuite,
- fmt.Sprintf("Autogenerated ReportAfterSuite for %s", strings.Join(flags, " ")),
- body,
- types.NewCustomCodeLocation("autogenerated by Ginkgo"),
- ),
+ deprecationTracker, types.NodeTypeReportAfterSuite,
+ fmt.Sprintf("Autogenerated ReportAfterSuite for %s", strings.Join(flags, " ")),
+ body,
+ types.NewCustomCodeLocation("autogenerated by Ginkgo"),
))
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/table_dsl.go b/vendor/github.com/onsi/ginkgo/v2/table_dsl.go
index 1031aa855..c7de7a8be 100644
--- a/vendor/github.com/onsi/ginkgo/v2/table_dsl.go
+++ b/vendor/github.com/onsi/ginkgo/v2/table_dsl.go
@@ -23,7 +23,7 @@ You can learn more about generating EntryDescriptions here: https://onsi.github.
*/
type EntryDescription string
-func (ed EntryDescription) render(args ...any) string {
+func (ed EntryDescription) render(args ...interface{}) string {
return fmt.Sprintf(string(ed), args...)
}
@@ -44,7 +44,7 @@ For example:
You can learn more about DescribeTable here: https://onsi.github.io/ginkgo/#table-specs
And can explore some Table patterns here: https://onsi.github.io/ginkgo/#table-specs-patterns
*/
-func DescribeTable(description string, args ...any) bool {
+func DescribeTable(description string, args ...interface{}) bool {
GinkgoHelper()
generateTable(description, false, args...)
return true
@@ -53,7 +53,7 @@ func DescribeTable(description string, args ...any) bool {
/*
You can focus a table with `FDescribeTable`. This is equivalent to `FDescribe`.
*/
-func FDescribeTable(description string, args ...any) bool {
+func FDescribeTable(description string, args ...interface{}) bool {
GinkgoHelper()
args = append(args, internal.Focus)
generateTable(description, false, args...)
@@ -63,7 +63,7 @@ func FDescribeTable(description string, args ...any) bool {
/*
You can mark a table as pending with `PDescribeTable`. This is equivalent to `PDescribe`.
*/
-func PDescribeTable(description string, args ...any) bool {
+func PDescribeTable(description string, args ...interface{}) bool {
GinkgoHelper()
args = append(args, internal.Pending)
generateTable(description, false, args...)
@@ -95,7 +95,7 @@ For example:
})
It("should return the expected message", func() {
- body, err := io.ReadAll(resp.Body)
+ body, err := ioutil.ReadAll(resp.Body)
Expect(err).NotTo(HaveOccurred())
Expect(string(body)).To(Equal(message))
})
@@ -109,7 +109,7 @@ Note that you **must** place define an It inside the body function.
You can learn more about DescribeTableSubtree here: https://onsi.github.io/ginkgo/#table-specs
And can explore some Table patterns here: https://onsi.github.io/ginkgo/#table-specs-patterns
*/
-func DescribeTableSubtree(description string, args ...any) bool {
+func DescribeTableSubtree(description string, args ...interface{}) bool {
GinkgoHelper()
generateTable(description, true, args...)
return true
@@ -118,7 +118,7 @@ func DescribeTableSubtree(description string, args ...any) bool {
/*
You can focus a table with `FDescribeTableSubtree`. This is equivalent to `FDescribe`.
*/
-func FDescribeTableSubtree(description string, args ...any) bool {
+func FDescribeTableSubtree(description string, args ...interface{}) bool {
GinkgoHelper()
args = append(args, internal.Focus)
generateTable(description, true, args...)
@@ -128,7 +128,7 @@ func FDescribeTableSubtree(description string, args ...any) bool {
/*
You can mark a table as pending with `PDescribeTableSubtree`. This is equivalent to `PDescribe`.
*/
-func PDescribeTableSubtree(description string, args ...any) bool {
+func PDescribeTableSubtree(description string, args ...interface{}) bool {
GinkgoHelper()
args = append(args, internal.Pending)
generateTable(description, true, args...)
@@ -144,9 +144,9 @@ var XDescribeTableSubtree = PDescribeTableSubtree
TableEntry represents an entry in a table test. You generally use the `Entry` constructor.
*/
type TableEntry struct {
- description any
- decorations []any
- parameters []any
+ description interface{}
+ decorations []interface{}
+ parameters []interface{}
codeLocation types.CodeLocation
}
@@ -162,7 +162,7 @@ If you want to generate interruptible specs simply write a Table function that a
You can learn more about Entry here: https://onsi.github.io/ginkgo/#table-specs
*/
-func Entry(description any, args ...any) TableEntry {
+func Entry(description interface{}, args ...interface{}) TableEntry {
GinkgoHelper()
decorations, parameters := internal.PartitionDecorations(args...)
return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)}
@@ -171,7 +171,7 @@ func Entry(description any, args ...any) TableEntry {
/*
You can focus a particular entry with FEntry. This is equivalent to FIt.
*/
-func FEntry(description any, args ...any) TableEntry {
+func FEntry(description interface{}, args ...interface{}) TableEntry {
GinkgoHelper()
decorations, parameters := internal.PartitionDecorations(args...)
decorations = append(decorations, internal.Focus)
@@ -181,7 +181,7 @@ func FEntry(description any, args ...any) TableEntry {
/*
You can mark a particular entry as pending with PEntry. This is equivalent to PIt.
*/
-func PEntry(description any, args ...any) TableEntry {
+func PEntry(description interface{}, args ...interface{}) TableEntry {
GinkgoHelper()
decorations, parameters := internal.PartitionDecorations(args...)
decorations = append(decorations, internal.Pending)
@@ -196,17 +196,17 @@ var XEntry = PEntry
var contextType = reflect.TypeOf(new(context.Context)).Elem()
var specContextType = reflect.TypeOf(new(SpecContext)).Elem()
-func generateTable(description string, isSubtree bool, args ...any) {
+func generateTable(description string, isSubtree bool, args ...interface{}) {
GinkgoHelper()
cl := types.NewCodeLocation(0)
- containerNodeArgs := []any{cl}
+ containerNodeArgs := []interface{}{cl}
entries := []TableEntry{}
- var internalBody any
+ var internalBody interface{}
var internalBodyType reflect.Type
- var tableLevelEntryDescription any
- tableLevelEntryDescription = func(args ...any) string {
+ var tableLevelEntryDescription interface{}
+ tableLevelEntryDescription = func(args ...interface{}) string {
out := []string{}
for _, arg := range args {
out = append(out, fmt.Sprint(arg))
@@ -265,7 +265,7 @@ func generateTable(description string, isSubtree bool, args ...any) {
err = types.GinkgoErrors.InvalidEntryDescription(entry.codeLocation)
}
- internalNodeArgs := []any{entry.codeLocation}
+ internalNodeArgs := []interface{}{entry.codeLocation}
internalNodeArgs = append(internalNodeArgs, entry.decorations...)
hasContext := false
@@ -290,7 +290,7 @@ func generateTable(description string, isSubtree bool, args ...any) {
if err != nil {
panic(err)
}
- invokeFunction(internalBody, append([]any{c}, entry.parameters...))
+ invokeFunction(internalBody, append([]interface{}{c}, entry.parameters...))
})
if isSubtree {
exitIfErr(types.GinkgoErrors.ContextsCannotBeUsedInSubtreeTables(cl))
@@ -309,14 +309,14 @@ func generateTable(description string, isSubtree bool, args ...any) {
internalNodeType = types.NodeTypeContainer
}
- pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, internalNodeType, description, internalNodeArgs...)))
+ pushNode(internal.NewNode(deprecationTracker, internalNodeType, description, internalNodeArgs...))
}
})
- pushNode(internal.NewNode(internal.TransformNewNodeArgs(exitIfErrors, deprecationTracker, types.NodeTypeContainer, description, containerNodeArgs...)))
+ pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, description, containerNodeArgs...))
}
-func invokeFunction(function any, parameters []any) []reflect.Value {
+func invokeFunction(function interface{}, parameters []interface{}) []reflect.Value {
inValues := make([]reflect.Value, len(parameters))
funcType := reflect.TypeOf(function)
@@ -339,7 +339,7 @@ func invokeFunction(function any, parameters []any) []reflect.Value {
return reflect.ValueOf(function).Call(inValues)
}
-func validateParameters(function any, parameters []any, kind string, cl types.CodeLocation, hasContext bool) error {
+func validateParameters(function interface{}, parameters []interface{}, kind string, cl types.CodeLocation, hasContext bool) error {
funcType := reflect.TypeOf(function)
limit := funcType.NumIn()
offset := 0
@@ -377,7 +377,7 @@ func validateParameters(function any, parameters []any, kind string, cl types.Co
return nil
}
-func computeValue(parameter any, t reflect.Type) reflect.Value {
+func computeValue(parameter interface{}, t reflect.Type) reflect.Value {
if parameter == nil {
return reflect.Zero(t)
} else {
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/around_node.go b/vendor/github.com/onsi/ginkgo/v2/types/around_node.go
deleted file mode 100644
index a069e0623..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/types/around_node.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package types
-
-import (
- "context"
-)
-
-type AroundNodeAllowedFuncs interface {
- ~func(context.Context, func(context.Context)) | ~func(context.Context) context.Context | ~func()
-}
-type AroundNodeFunc func(ctx context.Context, body func(ctx context.Context))
-
-func AroundNode[F AroundNodeAllowedFuncs](f F, cl CodeLocation) AroundNodeDecorator {
- if f == nil {
- panic("BuildAroundNode cannot be called with a nil function.")
- }
- var aroundNodeFunc func(context.Context, func(context.Context))
- switch x := any(f).(type) {
- case func(context.Context, func(context.Context)):
- aroundNodeFunc = x
- case func(context.Context) context.Context:
- aroundNodeFunc = func(ctx context.Context, body func(context.Context)) {
- ctx = x(ctx)
- body(ctx)
- }
- case func():
- aroundNodeFunc = func(ctx context.Context, body func(context.Context)) {
- x()
- body(ctx)
- }
- }
-
- return AroundNodeDecorator{
- Body: aroundNodeFunc,
- CodeLocation: cl,
- }
-}
-
-type AroundNodeDecorator struct {
- Body AroundNodeFunc
- CodeLocation CodeLocation
-}
-
-type AroundNodes []AroundNodeDecorator
-
-func (an AroundNodes) Clone() AroundNodes {
- out := make(AroundNodes, len(an))
- copy(out, an)
- return out
-}
-
-func (an AroundNodes) Append(other ...AroundNodeDecorator) AroundNodes {
- out := make(AroundNodes, len(an)+len(other))
- copy(out, an)
- copy(out[len(an):], other)
- return out
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/config.go b/vendor/github.com/onsi/ginkgo/v2/types/config.go
index f84703604..8c0dfab8c 100644
--- a/vendor/github.com/onsi/ginkgo/v2/types/config.go
+++ b/vendor/github.com/onsi/ginkgo/v2/types/config.go
@@ -24,7 +24,6 @@ type SuiteConfig struct {
FocusFiles []string
SkipFiles []string
LabelFilter string
- SemVerFilter string
FailOnPending bool
FailOnEmpty bool
FailFast bool
@@ -96,7 +95,6 @@ type ReporterConfig struct {
ForceNewlines bool
JSONReport string
- GoJSONReport string
JUnitReport string
TeamcityReport string
}
@@ -113,7 +111,7 @@ func (rc ReporterConfig) Verbosity() VerbosityLevel {
}
func (rc ReporterConfig) WillGenerateReport() bool {
- return rc.JSONReport != "" || rc.GoJSONReport != "" || rc.JUnitReport != "" || rc.TeamcityReport != ""
+ return rc.JSONReport != "" || rc.JUnitReport != "" || rc.TeamcityReport != ""
}
func NewDefaultReporterConfig() ReporterConfig {
@@ -161,7 +159,7 @@ func (g CLIConfig) ComputedProcs() int {
n := 1
if g.Parallel {
- n = runtime.GOMAXPROCS(-1)
+ n = runtime.NumCPU()
if n > 4 {
n = n - 1
}
@@ -174,7 +172,7 @@ func (g CLIConfig) ComputedNumCompilers() int {
return g.NumCompilers
}
- return runtime.GOMAXPROCS(-1)
+ return runtime.NumCPU()
}
// Configuration for the Ginkgo CLI capturing available go flags
@@ -233,10 +231,6 @@ func (g GoFlagsConfig) BinaryMustBePreserved() bool {
return g.BlockProfile != "" || g.CPUProfile != "" || g.MemProfile != "" || g.MutexProfile != ""
}
-func (g GoFlagsConfig) NeedsSymbols() bool {
- return g.BinaryMustBePreserved()
-}
-
// Configuration that were deprecated in 2.0
type deprecatedConfig struct {
DebugParallel bool
@@ -263,12 +257,8 @@ var FlagSections = GinkgoFlagSections{
{Key: "filter", Style: "{{cyan}}", Heading: "Filtering Tests"},
{Key: "failure", Style: "{{red}}", Heading: "Failure Handling"},
{Key: "output", Style: "{{magenta}}", Heading: "Controlling Output Formatting"},
- {Key: "code-and-coverage-analysis", Style: "{{orange}}", Heading: "Code and Coverage Analysis",
- Description: "When generating a cover files, please pass a filename {{bold}}not{{/}} a path. To specify a different directory use {{magenta}}--output-dir{{/}}.",
- },
- {Key: "performance-analysis", Style: "{{coral}}", Heading: "Performance Analysis",
- Description: "When generating profile files, please pass filenames {{bold}}not{{/}} a path. Ginkgo will generate a profile file with the given name in the package's directory. To specify a different directory use {{magenta}}--output-dir{{/}}.",
- },
+ {Key: "code-and-coverage-analysis", Style: "{{orange}}", Heading: "Code and Coverage Analysis"},
+ {Key: "performance-analysis", Style: "{{coral}}", Heading: "Performance Analysis"},
{Key: "debug", Style: "{{blue}}", Heading: "Debugging Tests",
Description: "In addition to these flags, Ginkgo supports a few debugging environment variables. To change the parallel server protocol set {{blue}}GINKGO_PARALLEL_PROTOCOL{{/}} to {{bold}}HTTP{{/}}. To avoid pruning callstacks set {{blue}}GINKGO_PRUNE_STACK{{/}} to {{bold}}FALSE{{/}}."},
{Key: "watch", Style: "{{light-yellow}}", Heading: "Controlling Ginkgo Watch"},
@@ -310,8 +300,6 @@ var SuiteConfigFlags = GinkgoFlags{
{KeyPath: "S.LabelFilter", Name: "label-filter", SectionKey: "filter", UsageArgument: "expression",
Usage: "If set, ginkgo will only run specs with labels that match the label-filter. The passed-in expression can include boolean operations (!, &&, ||, ','), groupings via '()', and regular expressions '/regexp/'. e.g. '(cat || dog) && !fruit'"},
- {KeyPath: "S.SemVerFilter", Name: "sem-ver-filter", SectionKey: "filter", UsageArgument: "version",
- Usage: "If set, ginkgo will only run specs with semantic version constraints that are satisfied by the provided version. e.g. '2.1.0'"},
{KeyPath: "S.FocusStrings", Name: "focus", SectionKey: "filter",
Usage: "If set, ginkgo will only run specs that match this regular expression. Can be specified multiple times, values are ORed."},
{KeyPath: "S.SkipStrings", Name: "skip", SectionKey: "filter",
@@ -360,8 +348,6 @@ var ReporterConfigFlags = GinkgoFlags{
{KeyPath: "R.JSONReport", Name: "json-report", UsageArgument: "filename.json", SectionKey: "output",
Usage: "If set, Ginkgo will generate a JSON-formatted test report at the specified location."},
- {KeyPath: "R.GoJSONReport", Name: "gojson-report", UsageArgument: "filename.json", SectionKey: "output",
- Usage: "If set, Ginkgo will generate a Go JSON-formatted test report at the specified location."},
{KeyPath: "R.JUnitReport", Name: "junit-report", UsageArgument: "filename.xml", SectionKey: "output", DeprecatedName: "reportFile", DeprecatedDocLink: "improved-reporting-infrastructure",
Usage: "If set, Ginkgo will generate a conformant junit test report in the specified file."},
{KeyPath: "R.TeamcityReport", Name: "teamcity-report", UsageArgument: "filename", SectionKey: "output",
@@ -379,7 +365,7 @@ var ReporterConfigFlags = GinkgoFlags{
func BuildTestSuiteFlagSet(suiteConfig *SuiteConfig, reporterConfig *ReporterConfig) (GinkgoFlagSet, error) {
flags := SuiteConfigFlags.CopyAppend(ParallelConfigFlags...).CopyAppend(ReporterConfigFlags...)
flags = flags.WithPrefix("ginkgo")
- bindings := map[string]any{
+ bindings := map[string]interface{}{
"S": suiteConfig,
"R": reporterConfig,
"D": &deprecatedConfig{},
@@ -449,13 +435,6 @@ func VetConfig(flagSet GinkgoFlagSet, suiteConfig SuiteConfig, reporterConfig Re
}
}
- if suiteConfig.SemVerFilter != "" {
- _, err := ParseSemVerFilter(suiteConfig.SemVerFilter)
- if err != nil {
- errors = append(errors, err)
- }
- }
-
switch strings.ToLower(suiteConfig.OutputInterceptorMode) {
case "", "dup", "swap", "none":
default:
@@ -536,7 +515,7 @@ var GoBuildFlags = GinkgoFlags{
{KeyPath: "Go.Race", Name: "race", SectionKey: "code-and-coverage-analysis",
Usage: "enable data race detection. Supported on linux/amd64, linux/ppc64le, linux/arm64, linux/s390x, freebsd/amd64, netbsd/amd64, darwin/amd64, darwin/arm64, and windows/amd64."},
{KeyPath: "Go.Vet", Name: "vet", UsageArgument: "list", SectionKey: "code-and-coverage-analysis",
- Usage: `Configure the invocation of "go vet" during "go test" to use the comma-separated list of vet checks. If list is empty (by explicitly passing --vet=""), "go test" runs "go vet" with a curated list of checks believed to be always worth addressing. If list is "off", "go test" does not run "go vet" at all. Available checks can be found by running 'go doc cmd/vet'`},
+ Usage: `Configure the invocation of "go vet" during "go test" to use the comma-separated list of vet checks. If list is empty, "go test" runs "go vet" with a curated list of checks believed to be always worth addressing. If list is "off", "go test" does not run "go vet" at all. Available checks can be found by running 'go doc cmd/vet'`},
{KeyPath: "Go.Cover", Name: "cover", SectionKey: "code-and-coverage-analysis",
Usage: "Enable coverage analysis. Note that because coverage works by annotating the source code before compilation, compilation and test failures with coverage enabled may report line numbers that don't correspond to the original sources."},
{KeyPath: "Go.CoverMode", Name: "covermode", UsageArgument: "set,count,atomic", SectionKey: "code-and-coverage-analysis",
@@ -586,9 +565,6 @@ var GoBuildFlags = GinkgoFlags{
Usage: "print the name of the temporary work directory and do not delete it when exiting."},
{KeyPath: "Go.X", Name: "x", SectionKey: "go-build",
Usage: "print the commands."},
-}
-
-var GoBuildOFlags = GinkgoFlags{
{KeyPath: "Go.O", Name: "o", SectionKey: "go-build",
Usage: "output binary path (including name)."},
}
@@ -596,7 +572,7 @@ var GoBuildOFlags = GinkgoFlags{
// GoRunFlags provides flags for the Ginkgo CLI run, and watch commands that capture go's run-time flags. These are passed to the compiled test binary by the ginkgo CLI
var GoRunFlags = GinkgoFlags{
{KeyPath: "Go.CoverProfile", Name: "coverprofile", UsageArgument: "file", SectionKey: "code-and-coverage-analysis",
- Usage: `Write a coverage profile to the file after all tests have passed. Sets -cover. Must be passed a filename, not a path. Use output-dir to control the location of the output.`},
+ Usage: `Write a coverage profile to the file after all tests have passed. Sets -cover.`},
{KeyPath: "Go.BlockProfile", Name: "blockprofile", UsageArgument: "file", SectionKey: "performance-analysis",
Usage: `Write a goroutine blocking profile to the specified file when all tests are complete. Preserves test binary.`},
{KeyPath: "Go.BlockProfileRate", Name: "blockprofilerate", UsageArgument: "rate", SectionKey: "performance-analysis",
@@ -624,22 +600,6 @@ func VetAndInitializeCLIAndGoConfig(cliConfig CLIConfig, goFlagsConfig GoFlagsCo
errors = append(errors, GinkgoErrors.BothRepeatAndUntilItFails())
}
- if strings.ContainsRune(goFlagsConfig.CoverProfile, os.PathSeparator) {
- errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--coverprofile", goFlagsConfig.CoverProfile))
- }
- if strings.ContainsRune(goFlagsConfig.CPUProfile, os.PathSeparator) {
- errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--cpuprofile", goFlagsConfig.CPUProfile))
- }
- if strings.ContainsRune(goFlagsConfig.MemProfile, os.PathSeparator) {
- errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--memprofile", goFlagsConfig.MemProfile))
- }
- if strings.ContainsRune(goFlagsConfig.BlockProfile, os.PathSeparator) {
- errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--blockprofile", goFlagsConfig.BlockProfile))
- }
- if strings.ContainsRune(goFlagsConfig.MutexProfile, os.PathSeparator) {
- errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--mutexprofile", goFlagsConfig.MutexProfile))
- }
-
//initialize the output directory
if cliConfig.OutputDir != "" {
err := os.MkdirAll(cliConfig.OutputDir, 0777)
@@ -660,7 +620,7 @@ func VetAndInitializeCLIAndGoConfig(cliConfig CLIConfig, goFlagsConfig GoFlagsCo
}
// GenerateGoTestCompileArgs is used by the Ginkgo CLI to generate command line arguments to pass to the go test -c command when compiling the test
-func GenerateGoTestCompileArgs(goFlagsConfig GoFlagsConfig, packageToBuild string, pathToInvocationPath string, preserveSymbols bool) ([]string, error) {
+func GenerateGoTestCompileArgs(goFlagsConfig GoFlagsConfig, packageToBuild string, pathToInvocationPath string) ([]string, error) {
// if the user has set the CoverProfile run-time flag make sure to set the build-time cover flag to make sure
// the built test binary can generate a coverprofile
if goFlagsConfig.CoverProfile != "" {
@@ -683,14 +643,10 @@ func GenerateGoTestCompileArgs(goFlagsConfig GoFlagsConfig, packageToBuild strin
goFlagsConfig.CoverPkg = strings.Join(adjustedCoverPkgs, ",")
}
- if !goFlagsConfig.NeedsSymbols() && goFlagsConfig.LDFlags == "" && !preserveSymbols {
- goFlagsConfig.LDFlags = "-w -s"
- }
-
args := []string{"test", "-c", packageToBuild}
goArgs, err := GenerateFlagArgs(
- GoBuildFlags.CopyAppend(GoBuildOFlags...),
- map[string]any{
+ GoBuildFlags,
+ map[string]interface{}{
"Go": &goFlagsConfig,
},
)
@@ -709,7 +665,7 @@ func GenerateGinkgoTestRunArgs(suiteConfig SuiteConfig, reporterConfig ReporterC
flags = flags.CopyAppend(ParallelConfigFlags.WithPrefix("ginkgo")...)
flags = flags.CopyAppend(ReporterConfigFlags.WithPrefix("ginkgo")...)
flags = flags.CopyAppend(GoRunFlags.WithPrefix("test")...)
- bindings := map[string]any{
+ bindings := map[string]interface{}{
"S": &suiteConfig,
"R": &reporterConfig,
"Go": &goFlagsConfig,
@@ -721,7 +677,7 @@ func GenerateGinkgoTestRunArgs(suiteConfig SuiteConfig, reporterConfig ReporterC
// GenerateGoTestRunArgs is used by the Ginkgo CLI to generate command line arguments to pass to the compiled non-Ginkgo test binary
func GenerateGoTestRunArgs(goFlagsConfig GoFlagsConfig) ([]string, error) {
flags := GoRunFlags.WithPrefix("test")
- bindings := map[string]any{
+ bindings := map[string]interface{}{
"Go": &goFlagsConfig,
}
@@ -743,7 +699,7 @@ func BuildRunCommandFlagSet(suiteConfig *SuiteConfig, reporterConfig *ReporterCo
flags = flags.CopyAppend(GoBuildFlags...)
flags = flags.CopyAppend(GoRunFlags...)
- bindings := map[string]any{
+ bindings := map[string]interface{}{
"S": suiteConfig,
"R": reporterConfig,
"C": cliConfig,
@@ -764,7 +720,7 @@ func BuildWatchCommandFlagSet(suiteConfig *SuiteConfig, reporterConfig *Reporter
flags = flags.CopyAppend(GoBuildFlags...)
flags = flags.CopyAppend(GoRunFlags...)
- bindings := map[string]any{
+ bindings := map[string]interface{}{
"S": suiteConfig,
"R": reporterConfig,
"C": cliConfig,
@@ -779,9 +735,8 @@ func BuildWatchCommandFlagSet(suiteConfig *SuiteConfig, reporterConfig *Reporter
func BuildBuildCommandFlagSet(cliConfig *CLIConfig, goFlagsConfig *GoFlagsConfig) (GinkgoFlagSet, error) {
flags := GinkgoCLISharedFlags
flags = flags.CopyAppend(GoBuildFlags...)
- flags = flags.CopyAppend(GoBuildOFlags...)
- bindings := map[string]any{
+ bindings := map[string]interface{}{
"C": cliConfig,
"Go": goFlagsConfig,
"D": &deprecatedConfig{},
@@ -805,7 +760,7 @@ func BuildBuildCommandFlagSet(cliConfig *CLIConfig, goFlagsConfig *GoFlagsConfig
func BuildLabelsCommandFlagSet(cliConfig *CLIConfig) (GinkgoFlagSet, error) {
flags := GinkgoCLISharedFlags.SubsetWithNames("r", "skip-package")
- bindings := map[string]any{
+ bindings := map[string]interface{}{
"C": cliConfig,
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/deprecated_types.go b/vendor/github.com/onsi/ginkgo/v2/types/deprecated_types.go
index 518989a84..17922304b 100644
--- a/vendor/github.com/onsi/ginkgo/v2/types/deprecated_types.go
+++ b/vendor/github.com/onsi/ginkgo/v2/types/deprecated_types.go
@@ -113,7 +113,7 @@ type DeprecatedSpecFailure struct {
type DeprecatedSpecMeasurement struct {
Name string
- Info any
+ Info interface{}
Order int
Results []float64
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/errors.go b/vendor/github.com/onsi/ginkgo/v2/types/errors.go
index 59313238c..6bb72d00c 100644
--- a/vendor/github.com/onsi/ginkgo/v2/types/errors.go
+++ b/vendor/github.com/onsi/ginkgo/v2/types/errors.go
@@ -88,7 +88,7 @@ body of a {{bold}}Describe{{/}}, {{bold}}Context{{/}}, or {{bold}}When{{/}}.`, n
}
}
-func (g ginkgoErrors) CaughtPanicDuringABuildPhase(caughtPanic any, cl CodeLocation) error {
+func (g ginkgoErrors) CaughtPanicDuringABuildPhase(caughtPanic interface{}, cl CodeLocation) error {
return GinkgoError{
Heading: "Assertion or Panic detected during tree construction",
Message: formatter.F(
@@ -189,7 +189,7 @@ func (g ginkgoErrors) InvalidDeclarationOfFlakeAttemptsAndMustPassRepeatedly(cl
}
}
-func (g ginkgoErrors) UnknownDecorator(cl CodeLocation, nodeType NodeType, decorator any) error {
+func (g ginkgoErrors) UnknownDecorator(cl CodeLocation, nodeType NodeType, decorator interface{}) error {
return GinkgoError{
Heading: "Unknown Decorator",
Message: formatter.F(`[%s] node was passed an unknown decorator: '%#v'`, nodeType, decorator),
@@ -345,7 +345,7 @@ func (g ginkgoErrors) PushingCleanupInCleanupNode(cl CodeLocation) error {
}
/* ReportEntry errors */
-func (g ginkgoErrors) TooManyReportEntryValues(cl CodeLocation, arg any) error {
+func (g ginkgoErrors) TooManyReportEntryValues(cl CodeLocation, arg interface{}) error {
return GinkgoError{
Heading: "Too Many ReportEntry Values",
Message: formatter.F(`{{bold}}AddGinkgoReport{{/}} can only be given one value. Got unexpected value: %#v`, arg),
@@ -432,24 +432,6 @@ func (g ginkgoErrors) InvalidEmptyLabel(cl CodeLocation) error {
}
}
-func (g ginkgoErrors) InvalidSemVerConstraint(semVerConstraint, errMsg string, cl CodeLocation) error {
- return GinkgoError{
- Heading: "Invalid SemVerConstraint",
- Message: fmt.Sprintf("'%s' is an invalid SemVerConstraint: %s", semVerConstraint, errMsg),
- CodeLocation: cl,
- DocLink: "spec-semantic-version-filtering",
- }
-}
-
-func (g ginkgoErrors) InvalidEmptySemVerConstraint(cl CodeLocation) error {
- return GinkgoError{
- Heading: "Invalid Empty SemVerConstraint",
- Message: "SemVerConstraint cannot be empty",
- CodeLocation: cl,
- DocLink: "spec-semantic-version-filtering",
- }
-}
-
/* Table errors */
func (g ginkgoErrors) MultipleEntryBodyFunctionsForTable(cl CodeLocation) error {
return GinkgoError{
@@ -557,7 +539,7 @@ func (g ginkgoErrors) SynchronizedBeforeSuiteDisappearedOnProc1() error {
/* Configuration errors */
-func (g ginkgoErrors) UnknownTypePassedToRunSpecs(value any) error {
+func (g ginkgoErrors) UnknownTypePassedToRunSpecs(value interface{}) error {
return GinkgoError{
Heading: "Unknown Type passed to RunSpecs",
Message: fmt.Sprintf("RunSpecs() accepts labels, and configuration of type types.SuiteConfig and/or types.ReporterConfig.\n You passed in: %v", value),
@@ -647,20 +629,6 @@ func (g ginkgoErrors) BothRepeatAndUntilItFails() error {
}
}
-func (g ginkgoErrors) ExpectFilenameNotPath(flag string, path string) error {
- return GinkgoError{
- Heading: fmt.Sprintf("%s expects a filename but was given a path: %s", flag, path),
- Message: fmt.Sprintf("%s takes a filename, not a path. Use --output-dir to specify a directory to collect all test outputs.", flag),
- }
-}
-
-func (g ginkgoErrors) FlagAfterPositionalParameter() error {
- return GinkgoError{
- Heading: "Malformed arguments - detected a flag after the package liste",
- Message: "Make sure all flags appear {{bold}}after{{/}} the Ginkgo subcommand and {{bold}}before{{/}} your list of packages (or './...').\n{{gray}}e.g. 'ginkgo run -p my_package' is valid but `ginkgo -p run my_package` is not.\n{{gray}}e.g. 'ginkgo -p -vet=\"\" ./...' is valid but 'ginkgo -p ./... -vet=\"\"' is not{{/}}",
- }
-}
-
/* Stack-Trace parsing errors */
func (g ginkgoErrors) FailedToParseStackTrace(message string) error {
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/flags.go b/vendor/github.com/onsi/ginkgo/v2/types/flags.go
index 8409653f9..de69f3022 100644
--- a/vendor/github.com/onsi/ginkgo/v2/types/flags.go
+++ b/vendor/github.com/onsi/ginkgo/v2/types/flags.go
@@ -92,7 +92,7 @@ func (gfs GinkgoFlagSections) Lookup(key string) (GinkgoFlagSection, bool) {
type GinkgoFlagSet struct {
flags GinkgoFlags
- bindings any
+ bindings interface{}
sections GinkgoFlagSections
extraGoFlagsSection GinkgoFlagSection
@@ -101,7 +101,7 @@ type GinkgoFlagSet struct {
}
// Call NewGinkgoFlagSet to create GinkgoFlagSet that creates and binds to it's own *flag.FlagSet
-func NewGinkgoFlagSet(flags GinkgoFlags, bindings any, sections GinkgoFlagSections) (GinkgoFlagSet, error) {
+func NewGinkgoFlagSet(flags GinkgoFlags, bindings interface{}, sections GinkgoFlagSections) (GinkgoFlagSet, error) {
return bindFlagSet(GinkgoFlagSet{
flags: flags,
bindings: bindings,
@@ -110,7 +110,7 @@ func NewGinkgoFlagSet(flags GinkgoFlags, bindings any, sections GinkgoFlagSectio
}
// Call NewGinkgoFlagSet to create GinkgoFlagSet that extends an existing *flag.FlagSet
-func NewAttachedGinkgoFlagSet(flagSet *flag.FlagSet, flags GinkgoFlags, bindings any, sections GinkgoFlagSections, extraGoFlagsSection GinkgoFlagSection) (GinkgoFlagSet, error) {
+func NewAttachedGinkgoFlagSet(flagSet *flag.FlagSet, flags GinkgoFlags, bindings interface{}, sections GinkgoFlagSections, extraGoFlagsSection GinkgoFlagSection) (GinkgoFlagSet, error) {
return bindFlagSet(GinkgoFlagSet{
flags: flags,
bindings: bindings,
@@ -335,7 +335,7 @@ func (f GinkgoFlagSet) substituteUsage() {
fmt.Fprintln(f.flagSet.Output(), f.Usage())
}
-func valueAtKeyPath(root any, keyPath string) (reflect.Value, bool) {
+func valueAtKeyPath(root interface{}, keyPath string) (reflect.Value, bool) {
if len(keyPath) == 0 {
return reflect.Value{}, false
}
@@ -433,7 +433,7 @@ func (ssv stringSliceVar) Set(s string) error {
}
// given a set of GinkgoFlags and bindings, generate flag arguments suitable to be passed to an application with that set of flags configured.
-func GenerateFlagArgs(flags GinkgoFlags, bindings any) ([]string, error) {
+func GenerateFlagArgs(flags GinkgoFlags, bindings interface{}) ([]string, error) {
result := []string{}
for _, flag := range flags {
name := flag.ExportAs
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go b/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go
index 40a909b6d..7fdc8aa23 100644
--- a/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go
+++ b/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go
@@ -343,7 +343,7 @@ func tokenize(input string) func() (*treeNode, error) {
consumeUntil := func(cutset string) (string, int) {
j := i
for ; j < len(runes); j++ {
- if strings.ContainsRune(cutset, runes[j]) {
+ if strings.IndexRune(cutset, runes[j]) >= 0 {
break
}
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/report_entry.go b/vendor/github.com/onsi/ginkgo/v2/types/report_entry.go
index 63f7a9f6d..7b1524b52 100644
--- a/vendor/github.com/onsi/ginkgo/v2/types/report_entry.go
+++ b/vendor/github.com/onsi/ginkgo/v2/types/report_entry.go
@@ -9,18 +9,18 @@ import (
// ReportEntryValue wraps a report entry's value ensuring it can be encoded and decoded safely into reports
// and across the network connection when running in parallel
type ReportEntryValue struct {
- raw any //unexported to prevent gob from freaking out about unregistered structs
+ raw interface{} //unexported to prevent gob from freaking out about unregistered structs
AsJSON string
Representation string
}
-func WrapEntryValue(value any) ReportEntryValue {
+func WrapEntryValue(value interface{}) ReportEntryValue {
return ReportEntryValue{
raw: value,
}
}
-func (rev ReportEntryValue) GetRawValue() any {
+func (rev ReportEntryValue) GetRawValue() interface{} {
return rev.raw
}
@@ -118,7 +118,7 @@ func (entry ReportEntry) StringRepresentation() string {
// If used from a rehydrated JSON file _or_ in a ReportAfterSuite when running in parallel this will be
// a JSON-decoded {}interface. If you want to reconstitute your original object you can decode the entry.Value.AsJSON
// field yourself.
-func (entry ReportEntry) GetRawValue() any {
+func (entry ReportEntry) GetRawValue() interface{} {
return entry.Value.GetRawValue()
}
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/semver_filter.go b/vendor/github.com/onsi/ginkgo/v2/types/semver_filter.go
deleted file mode 100644
index 3fc2ed144..000000000
--- a/vendor/github.com/onsi/ginkgo/v2/types/semver_filter.go
+++ /dev/null
@@ -1,60 +0,0 @@
-package types
-
-import (
- "fmt"
-
- "github.com/Masterminds/semver/v3"
-)
-
-type SemVerFilter func([]string) bool
-
-func MustParseSemVerFilter(input string) SemVerFilter {
- filter, err := ParseSemVerFilter(input)
- if err != nil {
- panic(err)
- }
- return filter
-}
-
-func ParseSemVerFilter(filterVersion string) (SemVerFilter, error) {
- if filterVersion == "" {
- return func(_ []string) bool { return true }, nil
- }
-
- targetVersion, err := semver.NewVersion(filterVersion)
- if err != nil {
- return nil, fmt.Errorf("invalid filter version: %w", err)
- }
-
- return func(constraints []string) bool {
- // unconstrained specs always run
- if len(constraints) == 0 {
- return true
- }
-
- for _, constraintStr := range constraints {
- constraint, err := semver.NewConstraint(constraintStr)
- if err != nil {
- return false
- }
-
- if !constraint.Check(targetVersion) {
- return false
- }
- }
-
- return true
- }, nil
-}
-
-func ValidateAndCleanupSemVerConstraint(semVerConstraint string, cl CodeLocation) (string, error) {
- if len(semVerConstraint) == 0 {
- return "", GinkgoErrors.InvalidEmptySemVerConstraint(cl)
- }
- _, err := semver.NewConstraint(semVerConstraint)
- if err != nil {
- return "", GinkgoErrors.InvalidSemVerConstraint(semVerConstraint, err.Error(), cl)
- }
-
- return semVerConstraint, nil
-}
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/types.go b/vendor/github.com/onsi/ginkgo/v2/types/types.go
index 9981a0dd6..ddcbec1ba 100644
--- a/vendor/github.com/onsi/ginkgo/v2/types/types.go
+++ b/vendor/github.com/onsi/ginkgo/v2/types/types.go
@@ -4,7 +4,6 @@ import (
"encoding/json"
"fmt"
"os"
- "slices"
"sort"
"strings"
"time"
@@ -20,57 +19,6 @@ func init() {
}
}
-// ConstructionNodeReport captures information about a Ginkgo spec.
-type ConstructionNodeReport struct {
- // ContainerHierarchyTexts is a slice containing the text strings of
- // all Describe/Context/When containers in this spec's hierarchy.
- ContainerHierarchyTexts []string
-
- // ContainerHierarchyLocations is a slice containing the CodeLocations of
- // all Describe/Context/When containers in this spec's hierarchy.
- ContainerHierarchyLocations []CodeLocation
-
- // ContainerHierarchyLabels is a slice containing the labels of
- // all Describe/Context/When containers in this spec's hierarchy
- ContainerHierarchyLabels [][]string
-
- // ContainerHierarchySemVerConstraints is a slice containing the semVerConstraints of
- // all Describe/Context/When containers in this spec's hierarchy
- ContainerHierarchySemVerConstraints [][]string
-
- // IsSerial captures whether the any container has the Serial decorator
- IsSerial bool
-
- // IsInOrderedContainer captures whether any container is an Ordered container
- IsInOrderedContainer bool
-}
-
-// FullText returns a concatenation of all the report.ContainerHierarchyTexts and report.LeafNodeText
-func (report ConstructionNodeReport) FullText() string {
- texts := []string{}
- texts = append(texts, report.ContainerHierarchyTexts...)
- texts = slices.DeleteFunc(texts, func(t string) bool {
- return t == ""
- })
- return strings.Join(texts, " ")
-}
-
-// Labels returns a deduped set of all the spec's Labels.
-func (report ConstructionNodeReport) Labels() []string {
- out := []string{}
- seen := map[string]bool{}
- for _, labels := range report.ContainerHierarchyLabels {
- for _, label := range labels {
- if !seen[label] {
- seen[label] = true
- out = append(out, label)
- }
- }
- }
-
- return out
-}
-
// Report captures information about a Ginkgo test run
type Report struct {
//SuitePath captures the absolute path to the test suite
@@ -82,9 +30,6 @@ type Report struct {
//SuiteLabels captures any labels attached to the suite by the DSL's RunSpecs() function
SuiteLabels []string
- //SuiteSemVerConstraints captures any semVerConstraints attached to the suite by the DSL's RunSpecs() function
- SuiteSemVerConstraints []string
-
//SuiteSucceeded captures the success or failure status of the test run
//If true, the test run is considered successful.
//If false, the test run is considered unsuccessful
@@ -184,21 +129,13 @@ type SpecReport struct {
// all Describe/Context/When containers in this spec's hierarchy
ContainerHierarchyLabels [][]string
- // ContainerHierarchySemVerConstraints is a slice containing the semVerConstraints of
- // all Describe/Context/When containers in this spec's hierarchy
- ContainerHierarchySemVerConstraints [][]string
-
- // LeafNodeType, LeafNodeLocation, LeafNodeLabels, LeafNodeSemVerConstraints and LeafNodeText capture the NodeType, CodeLocation, and text
+ // LeafNodeType, LeadNodeLocation, LeafNodeLabels and LeafNodeText capture the NodeType, CodeLocation, and text
// of the Ginkgo node being tested (typically an NodeTypeIt node, though this can also be
// one of the NodeTypesForSuiteLevelNodes node types)
- LeafNodeType NodeType
- LeafNodeLocation CodeLocation
- LeafNodeLabels []string
- LeafNodeSemVerConstraints []string
- LeafNodeText string
-
- // Captures the Spec Priority
- SpecPriority int
+ LeafNodeType NodeType
+ LeafNodeLocation CodeLocation
+ LeafNodeLabels []string
+ LeafNodeText string
// State captures whether the spec has passed, failed, etc.
State SpecState
@@ -261,52 +198,48 @@ type SpecReport struct {
func (report SpecReport) MarshalJSON() ([]byte, error) {
//All this to avoid emitting an empty Failure struct in the JSON
out := struct {
- ContainerHierarchyTexts []string
- ContainerHierarchyLocations []CodeLocation
- ContainerHierarchyLabels [][]string
- ContainerHierarchySemVerConstraints [][]string
- LeafNodeType NodeType
- LeafNodeLocation CodeLocation
- LeafNodeLabels []string
- LeafNodeSemVerConstraints []string
- LeafNodeText string
- State SpecState
- StartTime time.Time
- EndTime time.Time
- RunTime time.Duration
- ParallelProcess int
- Failure *Failure `json:",omitempty"`
- NumAttempts int
- MaxFlakeAttempts int
- MaxMustPassRepeatedly int
- CapturedGinkgoWriterOutput string `json:",omitempty"`
- CapturedStdOutErr string `json:",omitempty"`
- ReportEntries ReportEntries `json:",omitempty"`
- ProgressReports []ProgressReport `json:",omitempty"`
- AdditionalFailures []AdditionalFailure `json:",omitempty"`
- SpecEvents SpecEvents `json:",omitempty"`
+ ContainerHierarchyTexts []string
+ ContainerHierarchyLocations []CodeLocation
+ ContainerHierarchyLabels [][]string
+ LeafNodeType NodeType
+ LeafNodeLocation CodeLocation
+ LeafNodeLabels []string
+ LeafNodeText string
+ State SpecState
+ StartTime time.Time
+ EndTime time.Time
+ RunTime time.Duration
+ ParallelProcess int
+ Failure *Failure `json:",omitempty"`
+ NumAttempts int
+ MaxFlakeAttempts int
+ MaxMustPassRepeatedly int
+ CapturedGinkgoWriterOutput string `json:",omitempty"`
+ CapturedStdOutErr string `json:",omitempty"`
+ ReportEntries ReportEntries `json:",omitempty"`
+ ProgressReports []ProgressReport `json:",omitempty"`
+ AdditionalFailures []AdditionalFailure `json:",omitempty"`
+ SpecEvents SpecEvents `json:",omitempty"`
}{
- ContainerHierarchyTexts: report.ContainerHierarchyTexts,
- ContainerHierarchyLocations: report.ContainerHierarchyLocations,
- ContainerHierarchyLabels: report.ContainerHierarchyLabels,
- ContainerHierarchySemVerConstraints: report.ContainerHierarchySemVerConstraints,
- LeafNodeType: report.LeafNodeType,
- LeafNodeLocation: report.LeafNodeLocation,
- LeafNodeLabels: report.LeafNodeLabels,
- LeafNodeSemVerConstraints: report.LeafNodeSemVerConstraints,
- LeafNodeText: report.LeafNodeText,
- State: report.State,
- StartTime: report.StartTime,
- EndTime: report.EndTime,
- RunTime: report.RunTime,
- ParallelProcess: report.ParallelProcess,
- Failure: nil,
- ReportEntries: nil,
- NumAttempts: report.NumAttempts,
- MaxFlakeAttempts: report.MaxFlakeAttempts,
- MaxMustPassRepeatedly: report.MaxMustPassRepeatedly,
- CapturedGinkgoWriterOutput: report.CapturedGinkgoWriterOutput,
- CapturedStdOutErr: report.CapturedStdOutErr,
+ ContainerHierarchyTexts: report.ContainerHierarchyTexts,
+ ContainerHierarchyLocations: report.ContainerHierarchyLocations,
+ ContainerHierarchyLabels: report.ContainerHierarchyLabels,
+ LeafNodeType: report.LeafNodeType,
+ LeafNodeLocation: report.LeafNodeLocation,
+ LeafNodeLabels: report.LeafNodeLabels,
+ LeafNodeText: report.LeafNodeText,
+ State: report.State,
+ StartTime: report.StartTime,
+ EndTime: report.EndTime,
+ RunTime: report.RunTime,
+ ParallelProcess: report.ParallelProcess,
+ Failure: nil,
+ ReportEntries: nil,
+ NumAttempts: report.NumAttempts,
+ MaxFlakeAttempts: report.MaxFlakeAttempts,
+ MaxMustPassRepeatedly: report.MaxMustPassRepeatedly,
+ CapturedGinkgoWriterOutput: report.CapturedGinkgoWriterOutput,
+ CapturedStdOutErr: report.CapturedStdOutErr,
}
if !report.Failure.IsZero() {
@@ -354,9 +287,6 @@ func (report SpecReport) FullText() string {
if report.LeafNodeText != "" {
texts = append(texts, report.LeafNodeText)
}
- texts = slices.DeleteFunc(texts, func(t string) bool {
- return t == ""
- })
return strings.Join(texts, " ")
}
@@ -382,28 +312,6 @@ func (report SpecReport) Labels() []string {
return out
}
-// SemVerConstraints returns a deduped set of all the spec's SemVerConstraints.
-func (report SpecReport) SemVerConstraints() []string {
- out := []string{}
- seen := map[string]bool{}
- for _, semVerConstraints := range report.ContainerHierarchySemVerConstraints {
- for _, semVerConstraint := range semVerConstraints {
- if !seen[semVerConstraint] {
- seen[semVerConstraint] = true
- out = append(out, semVerConstraint)
- }
- }
- }
- for _, semVerConstraint := range report.LeafNodeSemVerConstraints {
- if !seen[semVerConstraint] {
- seen[semVerConstraint] = true
- out = append(out, semVerConstraint)
- }
- }
-
- return out
-}
-
// MatchesLabelFilter returns true if the spec satisfies the passed in label filter query
func (report SpecReport) MatchesLabelFilter(query string) (bool, error) {
filter, err := ParseLabelFilter(query)
@@ -413,15 +321,6 @@ func (report SpecReport) MatchesLabelFilter(query string) (bool, error) {
return filter(report.Labels()), nil
}
-// MatchesSemVerFilter returns true if the spec satisfies the passed in label filter query
-func (report SpecReport) MatchesSemVerFilter(version string) (bool, error) {
- filter, err := ParseSemVerFilter(version)
- if err != nil {
- return false, err
- }
- return filter(report.SemVerConstraints()), nil
-}
-
// FileName() returns the name of the file containing the spec
func (report SpecReport) FileName() string {
return report.LeafNodeLocation.FileName
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/types_patch.go b/vendor/github.com/onsi/ginkgo/v2/types/types_patch.go
new file mode 100644
index 000000000..02d319bba
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/v2/types/types_patch.go
@@ -0,0 +1,8 @@
+package types
+
+type TestSpec interface {
+ CodeLocations() []CodeLocation
+ Text() string
+ AppendText(text string)
+ Labels() []string
+}
diff --git a/vendor/github.com/onsi/ginkgo/v2/types/version.go b/vendor/github.com/onsi/ginkgo/v2/types/version.go
index b9c1ea985..caf3c9f5e 100644
--- a/vendor/github.com/onsi/ginkgo/v2/types/version.go
+++ b/vendor/github.com/onsi/ginkgo/v2/types/version.go
@@ -1,3 +1,3 @@
package types
-const VERSION = "2.27.2"
+const VERSION = "2.21.0"
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/LICENSE b/vendor/github.com/openshift-eng/openshift-tests-extension/LICENSE
new file mode 100644
index 000000000..261eeb9e9
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmd.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmd.go
new file mode 100644
index 000000000..2db8cfa6e
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmd.go
@@ -0,0 +1,23 @@
+package cmd
+
+import (
+ "github.com/spf13/cobra"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdimages"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdinfo"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdlist"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdupdate"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
+)
+
+func DefaultExtensionCommands(registry *extension.Registry) []*cobra.Command {
+ return []*cobra.Command{
+ cmdrun.NewRunSuiteCommand(registry),
+ cmdrun.NewRunTestCommand(registry),
+ cmdlist.NewListCommand(registry),
+ cmdinfo.NewInfoCommand(registry),
+ cmdupdate.NewUpdateCommand(registry),
+ cmdimages.NewImagesCommand(registry),
+ }
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdimages/cmdimages.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdimages/cmdimages.go
new file mode 100644
index 000000000..33b458fac
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdimages/cmdimages.go
@@ -0,0 +1,36 @@
+package cmdimages
+
+import (
+ "encoding/json"
+ "fmt"
+ "os"
+
+ "github.com/spf13/cobra"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/flags"
+)
+
+func NewImagesCommand(registry *extension.Registry) *cobra.Command {
+ componentFlags := flags.NewComponentFlags()
+
+ cmd := &cobra.Command{
+ Use: "images",
+ Short: "List test images",
+ SilenceUsage: true,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ extension := registry.Get(componentFlags.Component)
+ if extension == nil {
+ return fmt.Errorf("couldn't find the component %q", componentFlags.Component)
+ }
+ images, err := json.Marshal(extension.Images)
+ if err != nil {
+ return err
+ }
+ fmt.Fprintf(os.Stdout, "%s\n", images)
+ return nil
+ },
+ }
+ componentFlags.BindFlags(cmd.Flags())
+ return cmd
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdinfo/info.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdinfo/info.go
new file mode 100644
index 000000000..1d4237876
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdinfo/info.go
@@ -0,0 +1,38 @@
+package cmdinfo
+
+import (
+ "encoding/json"
+ "fmt"
+ "os"
+
+ "github.com/spf13/cobra"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/flags"
+)
+
+func NewInfoCommand(registry *extension.Registry) *cobra.Command {
+ componentFlags := flags.NewComponentFlags()
+
+ cmd := &cobra.Command{
+ Use: "info",
+ Short: "Display extension metadata",
+ SilenceUsage: true,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ extension := registry.Get(componentFlags.Component)
+ if extension == nil {
+ return fmt.Errorf("couldn't find the component %q", componentFlags.Component)
+ }
+
+ info, err := json.MarshalIndent(extension, "", " ")
+ if err != nil {
+ return err
+ }
+
+ fmt.Fprintf(os.Stdout, "%s\n", string(info))
+ return nil
+ },
+ }
+ componentFlags.BindFlags(cmd.Flags())
+ return cmd
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdlist/list.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdlist/list.go
new file mode 100644
index 000000000..31a040b7c
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdlist/list.go
@@ -0,0 +1,133 @@
+package cmdlist
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/spf13/cobra"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/flags"
+)
+
+func NewListCommand(registry *extension.Registry) *cobra.Command {
+ opts := struct {
+ componentFlags *flags.ComponentFlags
+ suiteFlags *flags.SuiteFlags
+ outputFlags *flags.OutputFlags
+ environmentalFlags *flags.EnvironmentalFlags
+ }{
+ suiteFlags: flags.NewSuiteFlags(),
+ componentFlags: flags.NewComponentFlags(),
+ outputFlags: flags.NewOutputFlags(),
+ environmentalFlags: flags.NewEnvironmentalFlags(),
+ }
+
+ // Tests
+ listTestsCmd := &cobra.Command{
+ Use: "tests",
+ Short: "List available tests",
+ SilenceUsage: true,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ ext := registry.Get(opts.componentFlags.Component)
+ if ext == nil {
+ return fmt.Errorf("component not found: %s", opts.componentFlags.Component)
+ }
+
+ // Find suite, if specified
+ var foundSuite *extension.Suite
+ var err error
+ if opts.suiteFlags.Suite != "" {
+ foundSuite, err = ext.GetSuite(opts.suiteFlags.Suite)
+ if err != nil {
+ return err
+ }
+ }
+
+ // Filter for suite
+ specs := ext.GetSpecs()
+ if foundSuite != nil {
+ specs, err = specs.Filter(foundSuite.Qualifiers)
+ if err != nil {
+ return err
+ }
+ }
+
+ specs, err = specs.FilterByEnvironment(*opts.environmentalFlags)
+ if err != nil {
+ return err
+ }
+
+ data, err := opts.outputFlags.Marshal(specs)
+ if err != nil {
+ return err
+ }
+ fmt.Fprintf(os.Stdout, "%s\n", string(data))
+ return nil
+ },
+ }
+ opts.suiteFlags.BindFlags(listTestsCmd.Flags())
+ opts.componentFlags.BindFlags(listTestsCmd.Flags())
+ opts.environmentalFlags.BindFlags(listTestsCmd.Flags())
+ opts.outputFlags.BindFlags(listTestsCmd.Flags())
+
+ // Suites
+ listSuitesCommand := &cobra.Command{
+ Use: "suites",
+ Short: "List available suites",
+ SilenceUsage: true,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ ext := registry.Get(opts.componentFlags.Component)
+ if ext == nil {
+ return fmt.Errorf("component not found: %s", opts.componentFlags.Component)
+ }
+
+ suites := ext.Suites
+
+ data, err := opts.outputFlags.Marshal(suites)
+ if err != nil {
+ return err
+ }
+ fmt.Fprintf(os.Stdout, "%s\n", string(data))
+ return nil
+ },
+ }
+ opts.componentFlags.BindFlags(listSuitesCommand.Flags())
+ opts.outputFlags.BindFlags(listSuitesCommand.Flags())
+
+ // Components
+ listComponentsCmd := &cobra.Command{
+ Use: "components",
+ Short: "List available components",
+ SilenceUsage: true,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ var components []*extension.Component
+ registry.Walk(func(e *extension.Extension) {
+ components = append(components, &e.Component)
+ })
+
+ data, err := opts.outputFlags.Marshal(components)
+ if err != nil {
+ return err
+ }
+ fmt.Fprintf(os.Stdout, "%s\n", string(data))
+ return nil
+ },
+ }
+ opts.outputFlags.BindFlags(listComponentsCmd.Flags())
+
+ var listCmd = &cobra.Command{
+ Use: "list [subcommand]",
+ Short: "List items",
+ RunE: func(cmd *cobra.Command, args []string) error {
+ return listTestsCmd.RunE(cmd, args)
+ },
+ }
+ opts.suiteFlags.BindFlags(listCmd.Flags())
+ opts.componentFlags.BindFlags(listCmd.Flags())
+ opts.outputFlags.BindFlags(listCmd.Flags())
+ opts.environmentalFlags.BindFlags(listCmd.Flags())
+ listCmd.AddCommand(listTestsCmd, listComponentsCmd, listSuitesCommand)
+
+ return listCmd
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runsuite.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runsuite.go
new file mode 100644
index 000000000..d431719a5
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runsuite.go
@@ -0,0 +1,138 @@
+package cmdrun
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+ "os"
+ "os/signal"
+ "path/filepath"
+ "syscall"
+ "time"
+
+ "github.com/pkg/errors"
+ "github.com/spf13/cobra"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/flags"
+)
+
+func NewRunSuiteCommand(registry *extension.Registry) *cobra.Command {
+ opts := struct {
+ componentFlags *flags.ComponentFlags
+ outputFlags *flags.OutputFlags
+ concurrencyFlags *flags.ConcurrencyFlags
+ junitPath string
+ }{
+ componentFlags: flags.NewComponentFlags(),
+ outputFlags: flags.NewOutputFlags(),
+ concurrencyFlags: flags.NewConcurrencyFlags(),
+ junitPath: "",
+ }
+
+ cmd := &cobra.Command{
+ Use: "run-suite NAME",
+ Short: "Run a group of tests by suite. This is more limited than origin, and intended for light local " +
+ "development use. Orchestration parameters, scheduling, isolation, etc are not obeyed, and Ginkgo tests are executed serially.",
+ SilenceUsage: true,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ ctx, cancelCause := context.WithCancelCause(context.Background())
+ defer cancelCause(errors.New("exiting"))
+
+ abortCh := make(chan os.Signal, 2)
+ go func() {
+ <-abortCh
+ fmt.Fprintf(os.Stderr, "Interrupted, terminating tests")
+ cancelCause(errors.New("interrupt received"))
+
+ select {
+ case sig := <-abortCh:
+ fmt.Fprintf(os.Stderr, "Interrupted twice, exiting (%s)", sig)
+ switch sig {
+ case syscall.SIGINT:
+ os.Exit(130)
+ default:
+ os.Exit(130) // if we were interrupted, never return zero.
+ }
+
+ case <-time.After(30 * time.Minute): // allow time for cleanup. If we finish before this, we'll exit
+ fmt.Fprintf(os.Stderr, "Timed out during cleanup, exiting")
+ os.Exit(130) // if we were interrupted, never return zero.
+ }
+ }()
+ signal.Notify(abortCh, syscall.SIGINT, syscall.SIGTERM)
+
+ ext := registry.Get(opts.componentFlags.Component)
+ if ext == nil {
+ return fmt.Errorf("component not found: %s", opts.componentFlags.Component)
+ }
+ if len(args) != 1 {
+ return fmt.Errorf("must specify one suite name")
+ }
+ suite, err := ext.GetSuite(args[0])
+ if err != nil {
+ return errors.Wrapf(err, "couldn't find suite: %s", args[0])
+ }
+
+ compositeWriter := extensiontests.NewCompositeResultWriter()
+ defer func() {
+ if err = compositeWriter.Flush(); err != nil {
+ fmt.Fprintf(os.Stderr, "failed to write results: %v\n", err)
+ }
+ }()
+
+ // JUnit writer if needed
+ if opts.junitPath != "" {
+ junitWriter, err := extensiontests.NewJUnitResultWriter(opts.junitPath, suite.Name)
+ if err != nil {
+ return errors.Wrap(err, "couldn't create junit writer")
+ }
+ compositeWriter.AddWriter(junitWriter)
+ }
+
+ // JSON writer
+ jsonWriter, err := extensiontests.NewJSONResultWriter(os.Stdout,
+ extensiontests.ResultFormat(opts.outputFlags.Output))
+ if err != nil {
+ return err
+ }
+ compositeWriter.AddWriter(jsonWriter)
+
+ specs, err := ext.GetSpecs().Filter(suite.Qualifiers)
+ if err != nil {
+ return errors.Wrap(err, "couldn't filter specs")
+ }
+
+ results, runErr := specs.Run(ctx, compositeWriter, opts.concurrencyFlags.MaxConcurency)
+ if opts.junitPath != "" {
+ // we want to commit the results to disk regardless of the success or failure of the specs
+ if err := writeResults(opts.junitPath, results); err != nil {
+ fmt.Fprintf(os.Stderr, "Failed to write test results to disk: %v\n", err)
+ }
+ }
+ return runErr
+ },
+ }
+ opts.componentFlags.BindFlags(cmd.Flags())
+ opts.outputFlags.BindFlags(cmd.Flags())
+ opts.concurrencyFlags.BindFlags(cmd.Flags())
+ cmd.Flags().StringVarP(&opts.junitPath, "junit-path", "j", opts.junitPath, "write results to junit XML")
+
+ return cmd
+}
+
+func writeResults(jUnitPath string, results []*extensiontests.ExtensionTestResult) error {
+ jUnitDir := filepath.Dir(jUnitPath)
+ if err := os.MkdirAll(jUnitDir, 0755); err != nil {
+ return fmt.Errorf("failed to create output directory: %v", err)
+ }
+
+ encodedResults, err := json.MarshalIndent(results, "", " ")
+ if err != nil {
+ return fmt.Errorf("failed to marshal results: %v", err)
+ }
+
+ outputPath := filepath.Join(jUnitDir, fmt.Sprintf("extension_test_result_e2e_%s.json", time.Now().UTC().Format("20060102-150405")))
+ return os.WriteFile(outputPath, encodedResults, 0644)
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runtest.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runtest.go
new file mode 100644
index 000000000..c62021e7e
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runtest.go
@@ -0,0 +1,113 @@
+package cmdrun
+
+import (
+ "bufio"
+ "context"
+ "errors"
+ "fmt"
+ "os"
+ "os/signal"
+ "syscall"
+ "time"
+
+ "github.com/spf13/cobra"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/flags"
+)
+
+func NewRunTestCommand(registry *extension.Registry) *cobra.Command {
+ opts := struct {
+ componentFlags *flags.ComponentFlags
+ concurrencyFlags *flags.ConcurrencyFlags
+ nameFlags *flags.NamesFlags
+ outputFlags *flags.OutputFlags
+ }{
+ componentFlags: flags.NewComponentFlags(),
+ nameFlags: flags.NewNamesFlags(),
+ outputFlags: flags.NewOutputFlags(),
+ concurrencyFlags: flags.NewConcurrencyFlags(),
+ }
+
+ cmd := &cobra.Command{
+ Use: "run-test [-n NAME...] [NAME]",
+ Short: "Runs tests by name",
+ SilenceUsage: true,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ ctx, cancelCause := context.WithCancelCause(context.Background())
+ defer cancelCause(errors.New("exiting"))
+
+ abortCh := make(chan os.Signal, 2)
+ go func() {
+ <-abortCh
+ fmt.Fprintf(os.Stderr, "Interrupted, terminating tests")
+ cancelCause(errors.New("interrupt received"))
+
+ select {
+ case sig := <-abortCh:
+ fmt.Fprintf(os.Stderr, "Interrupted twice, exiting (%s)", sig)
+ switch sig {
+ case syscall.SIGINT:
+ os.Exit(130)
+ default:
+ os.Exit(130) // if we were interrupted, never return zero.
+ }
+
+ case <-time.After(30 * time.Minute): // allow time for cleanup. If we finish before this, we'll exit
+ fmt.Fprintf(os.Stderr, "Timed out during cleanup, exiting")
+ os.Exit(130) // if we were interrupted, never return zero.
+ }
+ }()
+ signal.Notify(abortCh, syscall.SIGINT, syscall.SIGTERM)
+
+ ext := registry.Get(opts.componentFlags.Component)
+ if ext == nil {
+ return fmt.Errorf("component not found: %s", opts.componentFlags.Component)
+ }
+ if len(args) > 1 {
+ return fmt.Errorf("use --names to specify more than one test")
+ }
+ opts.nameFlags.Names = append(opts.nameFlags.Names, args...)
+
+ // allow reading tests from an stdin pipe
+ info, err := os.Stdin.Stat()
+ if err != nil {
+ return err
+ }
+ if info.Mode()&os.ModeCharDevice == 0 { // Check if input is from a pipe
+ scanner := bufio.NewScanner(os.Stdin)
+ for scanner.Scan() {
+ opts.nameFlags.Names = append(opts.nameFlags.Names, scanner.Text())
+ }
+ if err := scanner.Err(); err != nil {
+ return fmt.Errorf("error reading from stdin: %v", err)
+ }
+ }
+
+ if len(opts.nameFlags.Names) == 0 {
+ return fmt.Errorf("must specify at least one test")
+ }
+
+ specs, err := ext.FindSpecsByName(opts.nameFlags.Names...)
+ if err != nil {
+ return err
+ }
+
+ w, err := extensiontests.NewJSONResultWriter(os.Stdout, extensiontests.ResultFormat(opts.outputFlags.Output))
+ if err != nil {
+ return err
+ }
+ defer w.Flush()
+
+ _, err = specs.Run(ctx, w, opts.concurrencyFlags.MaxConcurency)
+ return err
+ },
+ }
+ opts.componentFlags.BindFlags(cmd.Flags())
+ opts.nameFlags.BindFlags(cmd.Flags())
+ opts.outputFlags.BindFlags(cmd.Flags())
+ opts.concurrencyFlags.BindFlags(cmd.Flags())
+
+ return cmd
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdupdate/update.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdupdate/update.go
new file mode 100644
index 000000000..5d847308e
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdupdate/update.go
@@ -0,0 +1,84 @@
+package cmdupdate
+
+import (
+ "encoding/json"
+ "fmt"
+ "os"
+ "path/filepath"
+ "strings"
+
+ "github.com/spf13/cobra"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/flags"
+)
+
+const metadataDirectory = ".openshift-tests-extension"
+
+// NewUpdateCommand adds an "update" command used to generate and verify the metadata we keep track of. This should
+// be a black box to end users, i.e. we can add more criteria later they'll consume when revendoring. For now,
+// we prevent a test to be renamed without updating other names, or a test to be deleted.
+func NewUpdateCommand(registry *extension.Registry) *cobra.Command {
+ componentFlags := flags.NewComponentFlags()
+
+ cmd := &cobra.Command{
+ Use: "update",
+ Short: "Update test metadata",
+ SilenceUsage: true,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ ext := registry.Get(componentFlags.Component)
+ if ext == nil {
+ return fmt.Errorf("couldn't find the component %q", componentFlags.Component)
+ }
+
+ // Create the metadata directory if it doesn't exist
+ if err := os.MkdirAll(metadataDirectory, 0755); err != nil {
+ return fmt.Errorf("failed to create directory %s: %w", metadataDirectory, err)
+ }
+
+ // Read existing specs
+ metadataPath := filepath.Join(metadataDirectory, fmt.Sprintf("%s.json", strings.ReplaceAll(ext.Component.Identifier(), ":", "_")))
+ var oldSpecs extensiontests.ExtensionTestSpecs
+ source, err := os.Open(metadataPath)
+ if err != nil {
+ if !os.IsNotExist(err) {
+ return fmt.Errorf("failed to open file: %s: %+w", metadataPath, err)
+ }
+ } else {
+ if err := json.NewDecoder(source).Decode(&oldSpecs); err != nil {
+ return fmt.Errorf("failed to decode file: %s: %+w", metadataPath, err)
+ }
+
+ missing, err := ext.FindRemovedTestsWithoutRename(oldSpecs)
+ if err != nil && len(missing) > 0 {
+ fmt.Fprintf(os.Stderr, "Missing Tests:\n")
+ for _, name := range missing {
+ fmt.Fprintf(os.Stdout, " * %s\n", name)
+ }
+ fmt.Fprintf(os.Stderr, "\n")
+
+ return fmt.Errorf("missing tests, if you've renamed tests you must add their names to OriginalName, " +
+ "or mark them obsolete")
+ }
+ }
+
+ // no missing tests, write the results
+ newSpecs := ext.GetSpecs()
+ data, err := json.MarshalIndent(newSpecs, "", " ")
+ if err != nil {
+ return fmt.Errorf("failed to marshal specs to JSON: %w", err)
+ }
+
+ // Write the JSON data to the file
+ if err := os.WriteFile(metadataPath, data, 0644); err != nil {
+ return fmt.Errorf("failed to write file %s: %w", metadataPath, err)
+ }
+
+ fmt.Printf("successfully updated metadata\n")
+ return nil
+ },
+ }
+ componentFlags.BindFlags(cmd.Flags())
+ return cmd
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/dbtime/time.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/dbtime/time.go
new file mode 100644
index 000000000..b7651ba02
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/dbtime/time.go
@@ -0,0 +1,26 @@
+package dbtime
+
+import "time"
+
+// DBTime is a type suitable for direct importing into databases like BigQuery,
+// formatted like 2006-01-02 15:04:05.000000 UTC.
+type DBTime time.Time
+
+func Ptr(t time.Time) *DBTime {
+ return (*DBTime)(&t)
+}
+
+func (dbt *DBTime) MarshalJSON() ([]byte, error) {
+ formattedTime := time.Time(*dbt).Format(`"2006-01-02 15:04:05.000000 UTC"`)
+ return []byte(formattedTime), nil
+}
+
+func (dbt *DBTime) UnmarshalJSON(b []byte) error {
+ timeStr := string(b[1 : len(b)-1])
+ parsedTime, err := time.Parse("2006-01-02 15:04:05.000000 UTC", timeStr)
+ if err != nil {
+ return err
+ }
+ *dbt = (DBTime)(parsedTime)
+ return nil
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extension.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extension.go
new file mode 100644
index 000000000..b9fbfb2ec
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extension.go
@@ -0,0 +1,165 @@
+package extension
+
+import (
+ "fmt"
+ "strings"
+
+ et "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/util/sets"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/version"
+)
+
+func NewExtension(product, kind, name string) *Extension {
+ return &Extension{
+ APIVersion: CurrentExtensionAPIVersion,
+ Source: Source{
+ Commit: version.CommitFromGit,
+ BuildDate: version.BuildDate,
+ GitTreeState: version.GitTreeState,
+ },
+ Component: Component{
+ Product: product,
+ Kind: kind,
+ Name: name,
+ },
+ }
+}
+
+func (e *Extension) GetSuite(name string) (*Suite, error) {
+ var suite *Suite
+
+ for _, s := range e.Suites {
+ if s.Name == name {
+ suite = &s
+ break
+ }
+ }
+
+ if suite == nil {
+ return nil, fmt.Errorf("no such suite: %s", name)
+ }
+
+ return suite, nil
+}
+
+func (e *Extension) GetSpecs() et.ExtensionTestSpecs {
+ return e.specs
+}
+
+func (e *Extension) AddSpecs(specs et.ExtensionTestSpecs) {
+ specs.Walk(func(spec *et.ExtensionTestSpec) {
+ spec.Source = e.Component.Identifier()
+ })
+
+ e.specs = append(e.specs, specs...)
+}
+
+// IgnoreObsoleteTests allows removal of a test.
+func (e *Extension) IgnoreObsoleteTests(testNames ...string) {
+ if e.obsoleteTests == nil {
+ e.obsoleteTests = sets.New[string](testNames...)
+ } else {
+ e.obsoleteTests.Insert(testNames...)
+ }
+}
+
+// FindRemovedTestsWithoutRename compares the current set of test specs against oldSpecs, including consideration of the original name,
+// we return an error. Can be used to detect test renames or removals.
+func (e *Extension) FindRemovedTestsWithoutRename(oldSpecs et.ExtensionTestSpecs) ([]string, error) {
+ currentSpecs := e.GetSpecs()
+ currentMap := make(map[string]bool)
+
+ // Populate current specs into a map for quick lookup by both Name and OriginalName.
+ for _, spec := range currentSpecs {
+ currentMap[spec.Name] = true
+ if spec.OriginalName != "" {
+ currentMap[spec.OriginalName] = true
+ }
+ }
+
+ var removedTests []string
+
+ // Check oldSpecs against current specs.
+ for _, oldSpec := range oldSpecs {
+ // Skip if the test is marked as obsolete.
+ if e.obsoleteTests.Has(oldSpec.Name) {
+ continue
+ }
+
+ // Check if oldSpec is missing in currentSpecs by both Name and OriginalName.
+ if !currentMap[oldSpec.Name] && (oldSpec.OriginalName == "" || !currentMap[oldSpec.OriginalName]) {
+ removedTests = append(removedTests, oldSpec.Name)
+ }
+ }
+
+ // Return error if any removed tests were found.
+ if len(removedTests) > 0 {
+ return removedTests, fmt.Errorf("tests removed without rename: %v", removedTests)
+ }
+
+ return nil, nil
+}
+
+// AddGlobalSuite adds a suite whose qualifiers will apply to all tests,
+// not just this one. Allowing a developer to create a composed suite of
+// tests from many sources.
+func (e *Extension) AddGlobalSuite(suite Suite) *Extension {
+ if e.Suites == nil {
+ e.Suites = []Suite{suite}
+ } else {
+ e.Suites = append(e.Suites, suite)
+ }
+
+ return e
+}
+
+// AddSuite adds a suite whose qualifiers will only apply to tests present
+// in its own extension.
+func (e *Extension) AddSuite(suite Suite) *Extension {
+ expr := fmt.Sprintf("source == %q", e.Component.Identifier())
+ if len(suite.Qualifiers) == 0 {
+ suite.Qualifiers = []string{expr}
+ } else {
+ for i := range suite.Qualifiers {
+ suite.Qualifiers[i] = fmt.Sprintf("(%s) && (%s)",
+ expr, suite.Qualifiers[i])
+ }
+ }
+
+ e.AddGlobalSuite(suite)
+ return e
+}
+
+func (e *Extension) RegisterImage(image Image) *Extension {
+ e.Images = append(e.Images, image)
+ return e
+}
+
+func (e *Extension) FindSpecsByName(names ...string) (et.ExtensionTestSpecs, error) {
+ var specs et.ExtensionTestSpecs
+ var notFound []string
+
+ for _, name := range names {
+ found := false
+ for i := range e.specs {
+ if e.specs[i].Name == name {
+ specs = append(specs, e.specs[i])
+ found = true
+ break
+ }
+ }
+ if !found {
+ notFound = append(notFound, name)
+ }
+ }
+
+ if len(notFound) > 0 {
+ return nil, fmt.Errorf("no such tests: %s", strings.Join(notFound, ", "))
+ }
+
+ return specs, nil
+}
+
+func (e *Component) Identifier() string {
+ return fmt.Sprintf("%s:%s:%s", e.Product, e.Kind, e.Name)
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/environment.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/environment.go
new file mode 100644
index 000000000..b5116a535
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/environment.go
@@ -0,0 +1,92 @@
+package extensiontests
+
+import (
+ "fmt"
+ "strings"
+)
+
+func PlatformEquals(platform string) string {
+ return fmt.Sprintf(`platform=="%s"`, platform)
+}
+
+func NetworkEquals(network string) string {
+ return fmt.Sprintf(`network=="%s"`, network)
+}
+
+func NetworkStackEquals(networkStack string) string {
+ return fmt.Sprintf(`networkStack=="%s"`, networkStack)
+}
+
+func UpgradeEquals(upgrade string) string {
+ return fmt.Sprintf(`upgrade=="%s"`, upgrade)
+}
+
+func TopologyEquals(topology string) string {
+ return fmt.Sprintf(`topology=="%s"`, topology)
+}
+
+func ArchitectureEquals(arch string) string {
+ return fmt.Sprintf(`architecture=="%s"`, arch)
+}
+
+func APIGroupEnabled(apiGroup string) string {
+ return fmt.Sprintf(`apiGroups.exists(api, api=="%s")`, apiGroup)
+}
+
+func APIGroupDisabled(apiGroup string) string {
+ return fmt.Sprintf(`!apiGroups.exists(api, api=="%s")`, apiGroup)
+}
+
+func FeatureGateEnabled(featureGate string) string {
+ return fmt.Sprintf(`featureGates.exists(fg, fg=="%s")`, featureGate)
+}
+
+func FeatureGateDisabled(featureGate string) string {
+ return fmt.Sprintf(`!featureGates.exists(fg, fg=="%s")`, featureGate)
+}
+
+func ExternalConnectivityEquals(externalConnectivity string) string {
+ return fmt.Sprintf(`externalConnectivity=="%s"`, externalConnectivity)
+}
+
+func OptionalCapabilitiesIncludeAny(optionalCapability ...string) string {
+ for i := range optionalCapability {
+ optionalCapability[i] = OptionalCapabilityExists(optionalCapability[i])
+ }
+ return fmt.Sprintf("(%s)", fmt.Sprint(strings.Join(optionalCapability, " || ")))
+}
+
+func OptionalCapabilitiesIncludeAll(optionalCapability ...string) string {
+ for i := range optionalCapability {
+ optionalCapability[i] = OptionalCapabilityExists(optionalCapability[i])
+ }
+ return fmt.Sprintf("(%s)", fmt.Sprint(strings.Join(optionalCapability, " && ")))
+}
+
+func OptionalCapabilityExists(optionalCapability string) string {
+ return fmt.Sprintf(`optionalCapabilities.exists(oc, oc=="%s")`, optionalCapability)
+}
+
+func NoOptionalCapabilitiesExist() string {
+ return "size(optionalCapabilities) == 0"
+}
+
+func InstallerEquals(installer string) string {
+ return fmt.Sprintf(`installer=="%s"`, installer)
+}
+
+func VersionEquals(version string) string {
+ return fmt.Sprintf(`version=="%s"`, version)
+}
+
+func FactEquals(key, value string) string {
+ return fmt.Sprintf(`(fact_keys.exists(k, k=="%s") && facts["%s"].matches("%s"))`, key, key, value)
+}
+
+func Or(cel ...string) string {
+ return fmt.Sprintf("(%s)", strings.Join(cel, " || "))
+}
+
+func And(cel ...string) string {
+ return fmt.Sprintf("(%s)", strings.Join(cel, " && "))
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result.go
new file mode 100644
index 000000000..2e36969fe
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result.go
@@ -0,0 +1,69 @@
+package extensiontests
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/junit"
+)
+
+func (results ExtensionTestResults) Walk(walkFn func(*ExtensionTestResult)) {
+ for i := range results {
+ walkFn(results[i])
+ }
+}
+
+// AddDetails adds additional information to an ExtensionTestResult. Value must marshal to JSON.
+func (result *ExtensionTestResult) AddDetails(name string, value interface{}) {
+ result.Details = append(result.Details, Details{Name: name, Value: value})
+}
+
+func (result ExtensionTestResult) ToJUnit() *junit.TestCase {
+ tc := &junit.TestCase{
+ Name: result.Name,
+ Duration: float64(result.Duration) / 1000.0,
+ }
+ switch result.Result {
+ case ResultFailed:
+ tc.FailureOutput = &junit.FailureOutput{
+ Message: result.Error,
+ Output: result.Error,
+ }
+ case ResultSkipped:
+ messages := []string{}
+ for _, detail := range result.Details {
+ messages = append(messages, fmt.Sprintf("%s: %s", detail.Name, detail.Value))
+ }
+ tc.SkipMessage = &junit.SkipMessage{
+ Message: strings.Join(messages, "\n"),
+ }
+ case ResultPassed:
+ tc.SystemOut = result.Output
+ }
+
+ return tc
+}
+
+func (results ExtensionTestResults) ToJUnit(suiteName string) junit.TestSuite {
+ suite := junit.TestSuite{
+ Name: suiteName,
+ }
+
+ results.Walk(func(result *ExtensionTestResult) {
+ suite.NumTests++
+ switch result.Result {
+ case ResultFailed:
+ suite.NumFailed++
+ case ResultSkipped:
+ suite.NumSkipped++
+ case ResultPassed:
+ // do nothing
+ default:
+ panic(fmt.Sprintf("unknown result type: %s", result.Result))
+ }
+
+ suite.TestCases = append(suite.TestCases, result.ToJUnit())
+ })
+
+ return suite
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result_writer.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result_writer.go
new file mode 100644
index 000000000..aedc409c1
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result_writer.go
@@ -0,0 +1,164 @@
+package extensiontests
+
+import (
+ "encoding/json"
+ "encoding/xml"
+ "errors"
+ "fmt"
+ "io"
+ "os"
+ "sync"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/junit"
+)
+
+type ResultWriter interface {
+ Write(result *ExtensionTestResult)
+ Flush() error
+}
+
+type NullResultWriter struct{}
+
+func (NullResultWriter) Write(*ExtensionTestResult) {}
+func (NullResultWriter) Flush() error { return nil }
+
+type CompositeResultWriter struct {
+ writers []ResultWriter
+}
+
+func NewCompositeResultWriter(writers ...ResultWriter) *CompositeResultWriter {
+ return &CompositeResultWriter{
+ writers: writers,
+ }
+}
+
+func (w *CompositeResultWriter) AddWriter(writer ResultWriter) {
+ w.writers = append(w.writers, writer)
+}
+
+func (w *CompositeResultWriter) Write(res *ExtensionTestResult) {
+ for _, writer := range w.writers {
+ writer.Write(res)
+ }
+}
+
+func (w *CompositeResultWriter) Flush() error {
+ var errs []error
+ for _, writer := range w.writers {
+ if err := writer.Flush(); err != nil {
+ errs = append(errs, err)
+ }
+ }
+
+ return errors.Join(errs...)
+}
+
+type JUnitResultWriter struct {
+ lock sync.Mutex
+ testSuite *junit.TestSuite
+ out *os.File
+ suiteName string
+ path string
+ results ExtensionTestResults
+}
+
+func NewJUnitResultWriter(path, suiteName string) (ResultWriter, error) {
+ file, err := os.Create(path)
+ if err != nil {
+ return nil, err
+ }
+
+ return &JUnitResultWriter{
+ testSuite: &junit.TestSuite{
+ Name: suiteName,
+ },
+ out: file,
+ suiteName: suiteName,
+ path: path,
+ }, nil
+}
+
+func (w *JUnitResultWriter) Write(res *ExtensionTestResult) {
+ w.lock.Lock()
+ defer w.lock.Unlock()
+ w.results = append(w.results, res)
+}
+
+func (w *JUnitResultWriter) Flush() error {
+ w.lock.Lock()
+ defer w.lock.Unlock()
+ data, err := xml.MarshalIndent(w.results.ToJUnit(w.suiteName), "", " ")
+ if err != nil {
+ return fmt.Errorf("failed to marshal JUnit XML: %w", err)
+ }
+ if _, err := w.out.Write(data); err != nil {
+ return err
+ }
+ if err := w.out.Close(); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+type ResultFormat string
+
+var (
+ JSON ResultFormat = "json"
+ JSONL ResultFormat = "jsonl"
+)
+
+type JSONResultWriter struct {
+ lock sync.Mutex
+ out io.Writer
+ format ResultFormat
+ results ExtensionTestResults
+}
+
+func NewJSONResultWriter(out io.Writer, format ResultFormat) (*JSONResultWriter, error) {
+ switch format {
+ case JSON, JSONL:
+ // do nothing
+ default:
+ return nil, fmt.Errorf("unsupported result format: %s", format)
+ }
+
+ return &JSONResultWriter{
+ out: out,
+ format: format,
+ }, nil
+}
+
+func (w *JSONResultWriter) Write(result *ExtensionTestResult) {
+ w.lock.Lock()
+ defer w.lock.Unlock()
+ switch w.format {
+ case JSONL:
+ // JSONL gets written to out as we get the items
+ data, err := json.Marshal(result)
+ if err != nil {
+ panic(err)
+ }
+ fmt.Fprintf(w.out, "%s\n", string(data))
+ case JSON:
+ w.results = append(w.results, result)
+ }
+}
+
+func (w *JSONResultWriter) Flush() error {
+ w.lock.Lock()
+ defer w.lock.Unlock()
+ switch w.format {
+ case JSONL:
+ // we already wrote it out
+ case JSON:
+ data, err := json.MarshalIndent(w.results, "", " ")
+ if err != nil {
+ return err
+ }
+ _, err = w.out.Write(data)
+ return err
+ }
+
+ return nil
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/spec.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/spec.go
new file mode 100644
index 000000000..e87809c8a
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/spec.go
@@ -0,0 +1,621 @@
+package extensiontests
+
+import (
+ "context"
+ "fmt"
+ "os"
+ "strings"
+ "sync"
+ "sync/atomic"
+ "time"
+
+ "github.com/google/cel-go/cel"
+ "github.com/google/cel-go/checker/decls"
+ "github.com/google/cel-go/common/types"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/dbtime"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/flags"
+)
+
+// Walk iterates over all test specs, and executions the function provided. The test spec can be mutated.
+func (specs ExtensionTestSpecs) Walk(walkFn func(*ExtensionTestSpec)) ExtensionTestSpecs {
+ for i := range specs {
+ walkFn(specs[i])
+ }
+
+ return specs
+}
+
+type SelectFunction func(spec *ExtensionTestSpec) bool
+
+// Select filters the ExtensionTestSpecs to only those that match the provided SelectFunction
+func (specs ExtensionTestSpecs) Select(selectFn SelectFunction) ExtensionTestSpecs {
+ filtered := ExtensionTestSpecs{}
+ for _, spec := range specs {
+ if selectFn(spec) {
+ filtered = append(filtered, spec)
+ }
+ }
+
+ return filtered
+}
+
+// MustSelect filters the ExtensionTestSpecs to only those that match the provided SelectFunction.
+// if no specs are selected, it will throw an error
+func (specs ExtensionTestSpecs) MustSelect(selectFn SelectFunction) (ExtensionTestSpecs, error) {
+ filtered := specs.Select(selectFn)
+ if len(filtered) == 0 {
+ return filtered, fmt.Errorf("no specs selected with specified SelectFunctions")
+ }
+
+ return filtered, nil
+}
+
+// SelectAny filters the ExtensionTestSpecs to only those that match any of the provided SelectFunctions
+func (specs ExtensionTestSpecs) SelectAny(selectFns []SelectFunction) ExtensionTestSpecs {
+ filtered := ExtensionTestSpecs{}
+ for _, spec := range specs {
+ for _, selectFn := range selectFns {
+ if selectFn(spec) {
+ filtered = append(filtered, spec)
+ break
+ }
+ }
+ }
+
+ return filtered
+}
+
+// MustSelectAny filters the ExtensionTestSpecs to only those that match any of the provided SelectFunctions.
+// if no specs are selected, it will throw an error
+func (specs ExtensionTestSpecs) MustSelectAny(selectFns []SelectFunction) (ExtensionTestSpecs, error) {
+ filtered := specs.SelectAny(selectFns)
+ if len(filtered) == 0 {
+ return filtered, fmt.Errorf("no specs selected with specified SelectFunctions")
+ }
+
+ return filtered, nil
+}
+
+// SelectAll filters the ExtensionTestSpecs to only those that match all the provided SelectFunctions
+func (specs ExtensionTestSpecs) SelectAll(selectFns []SelectFunction) ExtensionTestSpecs {
+ filtered := ExtensionTestSpecs{}
+ for _, spec := range specs {
+ anyFalse := false
+ for _, selectFn := range selectFns {
+ if !selectFn(spec) {
+ anyFalse = true
+ break
+ }
+ }
+ if !anyFalse {
+ filtered = append(filtered, spec)
+ }
+ }
+
+ return filtered
+}
+
+// MustSelectAll filters the ExtensionTestSpecs to only those that match all the provided SelectFunctions.
+// if no specs are selected, it will throw an error
+func (specs ExtensionTestSpecs) MustSelectAll(selectFns []SelectFunction) (ExtensionTestSpecs, error) {
+ filtered := specs.SelectAll(selectFns)
+ if len(filtered) == 0 {
+ return filtered, fmt.Errorf("no specs selected with specified SelectFunctions")
+ }
+
+ return filtered, nil
+}
+
+// ModuleTestsOnly ensures that ginkgo tests from vendored sources aren't selected. Unfortunately, making
+// use of kubernetes test helpers results in the entire Ginkgo suite being initialized (ginkgo loves global state),
+// so we need to be careful about which tests we select.
+//
+// A test is excluded if ALL of its code locations with full paths are external (vendored or from external test
+// suites). If at least one code location with a full path is from the local module, the test is included, because
+// local tests may legitimately call helper functions from vendored test frameworks.
+func ModuleTestsOnly() SelectFunction {
+ return func(spec *ExtensionTestSpec) bool {
+ hasLocalCode := false
+
+ for _, cl := range spec.CodeLocations {
+ // Short-form code locations (e.g., "set up framework | framework.go:200") are ignored in this determination.
+ if !strings.Contains(cl, "/") {
+ continue
+ }
+
+ // If this code location is not external (vendored or k8s test), it's local code
+ if !(strings.Contains(cl, "/vendor/") || strings.HasPrefix(cl, "k8s.io/kubernetes")) {
+ hasLocalCode = true
+ break
+ }
+ }
+
+ // Include the test only if it has at least one local code location
+ return hasLocalCode
+ }
+}
+
+// AllTestsIncludingVendored is an alternative to ModuleTestsOnly, which would explicitly opt-in
+// to including vendored tests.
+func AllTestsIncludingVendored() SelectFunction {
+ return func(spec *ExtensionTestSpec) bool {
+ return true
+ }
+}
+
+// NameContains returns a function that selects specs whose name contains the provided string
+func NameContains(name string) SelectFunction {
+ return func(spec *ExtensionTestSpec) bool {
+ return strings.Contains(spec.Name, name)
+ }
+}
+
+// NameContainsAll returns a function that selects specs whose name contains each of the provided contents strings
+func NameContainsAll(contents ...string) SelectFunction {
+ return func(spec *ExtensionTestSpec) bool {
+ for _, content := range contents {
+ if !strings.Contains(spec.Name, content) {
+ return false
+ }
+ }
+ return true
+ }
+}
+
+// HasLabel returns a function that selects specs with the provided label
+func HasLabel(label string) SelectFunction {
+ return func(spec *ExtensionTestSpec) bool {
+ return spec.Labels.Has(label)
+ }
+}
+
+// HasTagWithValue returns a function that selects specs containing a tag with the provided key and value
+func HasTagWithValue(key, value string) SelectFunction {
+ return func(spec *ExtensionTestSpec) bool {
+ return spec.Tags[key] == value
+ }
+}
+
+// WithLifecycle returns a function that selects specs with the provided Lifecycle
+func WithLifecycle(lifecycle Lifecycle) SelectFunction {
+ return func(spec *ExtensionTestSpec) bool {
+ return spec.Lifecycle == lifecycle
+ }
+}
+
+func (specs ExtensionTestSpecs) Names() []string {
+ var names []string
+ for _, spec := range specs {
+ names = append(names, spec.Name)
+ }
+ return names
+}
+
+// Run executes all the specs in parallel, up to maxConcurrent at the same time. Results
+// are written to the given ResultWriter after each spec has completed execution. BeforeEach,
+// BeforeAll, AfterEach, AfterAll hooks are executed when specified. "Each" hooks must be thread
+// safe. Returns an error if any test spec failed, indicating the quantity of failures.
+func (specs ExtensionTestSpecs) Run(ctx context.Context, w ResultWriter, maxConcurrent int) ([]*ExtensionTestResult, error) {
+ queue := make(chan *ExtensionTestSpec)
+ terminalFailures := atomic.Int64{}
+ nonTerminalFailures := atomic.Int64{}
+
+ // Execute beforeAll
+ for _, spec := range specs {
+ for _, beforeAllTask := range spec.beforeAll {
+ beforeAllTask.Run()
+ }
+ }
+
+ // Feed the queue
+ go func() {
+ specs.Walk(func(spec *ExtensionTestSpec) {
+ queue <- spec
+ })
+ close(queue)
+ }()
+
+ // if we have only a single spec to run, we do that differently than running multiple.
+ // multiple specs can run in parallel and do so by exec-ing back into the binary with `run-test` with a single test to execute.
+ // This means that to avoid infinite recursion, when requesting a single test to run
+ // we need to run it in process.
+ runSingleSpec := len(specs) == 1
+
+ // Start consumers
+ var wg sync.WaitGroup
+ resultChan := make(chan *ExtensionTestResult, len(specs))
+ for i := 0; i < maxConcurrent; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ for spec := range queue {
+ for _, beforeEachTask := range spec.beforeEach {
+ beforeEachTask.Run(*spec)
+ }
+
+ res := runSpec(ctx, spec, runSingleSpec)
+ if res.Result == ResultFailed {
+ if res.Lifecycle.IsTerminal() {
+ terminalFailures.Add(1)
+ } else {
+ nonTerminalFailures.Add(1)
+ }
+ }
+
+ for _, afterEachTask := range spec.afterEach {
+ afterEachTask.Run(res)
+ }
+
+ // We can't assume the runner will set the name of a test; it may not know it. Even if
+ // it does, we may want to modify it (e.g. k8s-tests for annotations currently).
+ res.Name = spec.Name
+ w.Write(res)
+ resultChan <- res
+ }
+ }()
+ }
+
+ // Wait for all consumers to finish
+ wg.Wait()
+ close(resultChan)
+
+ // Execute afterAll
+ for _, spec := range specs {
+ for _, afterAllTask := range spec.afterAll {
+ afterAllTask.Run()
+ }
+ }
+
+ var results []*ExtensionTestResult
+ for res := range resultChan {
+ results = append(results, res)
+ }
+
+ terminalFailCount := terminalFailures.Load()
+ nonTerminalFailCount := nonTerminalFailures.Load()
+
+ // Non-terminal failures don't cause exit 1, but we still log them
+ if nonTerminalFailCount > 0 {
+ fmt.Fprintf(os.Stderr, "%d informing tests failed (not terminal)\n", nonTerminalFailCount)
+ }
+
+ // Only exit with error if terminal lifecycle tests failed
+ if terminalFailCount > 0 {
+ if nonTerminalFailCount > 0 {
+ return results, fmt.Errorf("%d tests failed (%d informing)", terminalFailCount+nonTerminalFailCount, nonTerminalFailCount)
+ }
+ return results, fmt.Errorf("%d tests failed", terminalFailCount)
+ }
+
+ return results, nil
+}
+
+// AddBeforeAll adds a function to be run once before all tests start executing.
+func (specs ExtensionTestSpecs) AddBeforeAll(fn func()) {
+ task := &OneTimeTask{fn: fn}
+ specs.Walk(func(spec *ExtensionTestSpec) {
+ spec.beforeAll = append(spec.beforeAll, task)
+ })
+}
+
+// AddAfterAll adds a function to be run once after all tests have finished.
+func (specs ExtensionTestSpecs) AddAfterAll(fn func()) {
+ task := &OneTimeTask{fn: fn}
+ specs.Walk(func(spec *ExtensionTestSpec) {
+ spec.afterAll = append(spec.afterAll, task)
+ })
+}
+
+// AddBeforeEach adds a function that runs before each test starts executing. The ExtensionTestSpec is
+// passed in for contextual information, but must not be modified. The provided function must be thread
+// safe.
+func (specs ExtensionTestSpecs) AddBeforeEach(fn func(spec ExtensionTestSpec)) {
+ task := &SpecTask{fn: fn}
+ specs.Walk(func(spec *ExtensionTestSpec) {
+ spec.beforeEach = append(spec.beforeEach, task)
+ })
+}
+
+// AddAfterEach adds a function that runs after each test has finished executing. The ExtensionTestResult
+// can be modified if needed. The provided function must be thread safe.
+func (specs ExtensionTestSpecs) AddAfterEach(fn func(task *ExtensionTestResult)) {
+ task := &TestResultTask{fn: fn}
+ specs.Walk(func(spec *ExtensionTestSpec) {
+ spec.afterEach = append(spec.afterEach, task)
+ })
+}
+
+// MustFilter filters specs using the given celExprs. Each celExpr is OR'd together, if any
+// match the spec is included in the filtered set. If your CEL expression is invalid or filtering
+// otherwise fails, this function panics.
+func (specs ExtensionTestSpecs) MustFilter(celExprs []string) ExtensionTestSpecs {
+ specs, err := specs.Filter(celExprs)
+ if err != nil {
+ panic(fmt.Sprintf("filter did not succeed: %s", err.Error()))
+ }
+
+ return specs
+}
+
+// Filter filters specs using the given celExprs. Each celExpr is OR'd together, if any
+// match the spec is included in the filtered set.
+func (specs ExtensionTestSpecs) Filter(celExprs []string) (ExtensionTestSpecs, error) {
+ var filteredSpecs ExtensionTestSpecs
+
+ // Empty filters returns all
+ if len(celExprs) == 0 {
+ return specs, nil
+ }
+
+ env, err := cel.NewEnv(
+ cel.Declarations(
+ decls.NewVar("source", decls.String),
+ decls.NewVar("name", decls.String),
+ decls.NewVar("originalName", decls.String),
+ decls.NewVar("labels", decls.NewListType(decls.String)),
+ decls.NewVar("codeLocations", decls.NewListType(decls.String)),
+ decls.NewVar("tags", decls.NewMapType(decls.String, decls.String)),
+ ),
+ )
+ if err != nil {
+ return nil, fmt.Errorf("failed to create CEL environment: %w", err)
+ }
+
+ // OR all expressions together
+ for _, spec := range specs {
+ include := false
+ for _, celExpr := range celExprs {
+ prg, err := programForCEL(env, celExpr)
+ if err != nil {
+ return nil, err
+ }
+ out, _, err := prg.Eval(map[string]interface{}{
+ "name": spec.Name,
+ "source": spec.Source,
+ "originalName": spec.OriginalName,
+ "labels": spec.Labels.UnsortedList(),
+ "codeLocations": spec.CodeLocations,
+ "tags": spec.Tags,
+ })
+ if err != nil {
+ return nil, fmt.Errorf("error evaluating CEL expression: %v", err)
+ }
+
+ // If any CEL expression evaluates to true, include the TestSpec
+ if out == types.True {
+ include = true
+ break
+ }
+ }
+ if include {
+ filteredSpecs = append(filteredSpecs, spec)
+ }
+ }
+
+ return filteredSpecs, nil
+}
+
+func programForCEL(env *cel.Env, celExpr string) (cel.Program, error) {
+ // Parse CEL expression
+ ast, iss := env.Parse(celExpr)
+ if iss.Err() != nil {
+ return nil, fmt.Errorf("error parsing CEL expression '%s': %v", celExpr, iss.Err())
+ }
+
+ // Check the AST
+ checked, iss := env.Check(ast)
+ if iss.Err() != nil {
+ return nil, fmt.Errorf("error checking CEL expression '%s': %v", celExpr, iss.Err())
+ }
+
+ // Create a CEL program from the checked AST
+ prg, err := env.Program(checked)
+ if err != nil {
+ return nil, fmt.Errorf("error creating CEL program: %v", err)
+ }
+ return prg, nil
+}
+
+// FilterByEnvironment checks both the Include and Exclude fields of the ExtensionTestSpec to return those specs which match.
+// Tests will be included by default unless they are explicitly excluded. If Include is specified, only those tests matching
+// the CEL expression will be included.
+//
+// See helper functions in extensiontests/environment.go to craft CEL expressions
+func (specs ExtensionTestSpecs) FilterByEnvironment(envFlags flags.EnvironmentalFlags) (ExtensionTestSpecs, error) {
+ var filteredSpecs ExtensionTestSpecs
+ if envFlags.IsEmpty() {
+ return specs, nil
+ }
+
+ env, err := cel.NewEnv(
+ cel.Declarations(
+ decls.NewVar("apiGroups", decls.NewListType(decls.String)),
+ decls.NewVar("architecture", decls.String),
+ decls.NewVar("externalConnectivity", decls.String),
+ decls.NewVar("fact_keys", decls.NewListType(decls.String)),
+ decls.NewVar("facts", decls.NewMapType(decls.String, decls.String)),
+ decls.NewVar("featureGates", decls.NewListType(decls.String)),
+ decls.NewVar("network", decls.String),
+ decls.NewVar("networkStack", decls.String),
+ decls.NewVar("optionalCapabilities", decls.NewListType(decls.String)),
+ decls.NewVar("platform", decls.String),
+ decls.NewVar("topology", decls.String),
+ decls.NewVar("upgrade", decls.String),
+ decls.NewVar("version", decls.String),
+ ),
+ )
+ if err != nil {
+ return nil, fmt.Errorf("failed to create CEL environment: %w", err)
+ }
+ factKeys := make([]string, len(envFlags.Facts))
+ for k := range envFlags.Facts {
+ factKeys = append(factKeys, k)
+ }
+ vars := map[string]interface{}{
+ "apiGroups": envFlags.APIGroups,
+ "architecture": envFlags.Architecture,
+ "externalConnectivity": envFlags.ExternalConnectivity,
+ "fact_keys": factKeys,
+ "facts": envFlags.Facts,
+ "featureGates": envFlags.FeatureGates,
+ "network": envFlags.Network,
+ "networkStack": envFlags.NetworkStack,
+ "optionalCapabilities": envFlags.OptionalCapabilities,
+ "platform": envFlags.Platform,
+ "topology": envFlags.Topology,
+ "upgrade": envFlags.Upgrade,
+ "version": envFlags.Version,
+ }
+
+ for _, spec := range specs {
+ envSel := spec.EnvironmentSelector
+ // If there is no include or exclude CEL, include it implicitly
+ if envSel.IsEmpty() {
+ filteredSpecs = append(filteredSpecs, spec)
+ continue
+ }
+
+ if envSel.Exclude != "" {
+ prg, err := programForCEL(env, envSel.Exclude)
+ if err != nil {
+ return nil, err
+ }
+ out, _, err := prg.Eval(vars)
+ if err != nil {
+ return nil, fmt.Errorf("error evaluating CEL expression: %v", err)
+ }
+ // If it is explicitly excluded, don't check include
+ if out == types.True {
+ continue
+ }
+ }
+
+ if envSel.Include != "" {
+ prg, err := programForCEL(env, envSel.Include)
+ if err != nil {
+ return nil, err
+ }
+ out, _, err := prg.Eval(vars)
+ if err != nil {
+ return nil, fmt.Errorf("error evaluating CEL expression: %v", err)
+ }
+
+ if out == types.True {
+ filteredSpecs = append(filteredSpecs, spec)
+ }
+ } else { // If it hasn't been excluded, and there is no "include" it will be implicitly included
+ filteredSpecs = append(filteredSpecs, spec)
+ }
+
+ }
+
+ return filteredSpecs, nil
+}
+
+// AddLabel adds the labels to each spec.
+func (specs ExtensionTestSpecs) AddLabel(labels ...string) ExtensionTestSpecs {
+ for i := range specs {
+ specs[i].Labels.Insert(labels...)
+ }
+
+ return specs
+}
+
+// RemoveLabel removes the labels from each spec.
+func (specs ExtensionTestSpecs) RemoveLabel(labels ...string) ExtensionTestSpecs {
+ for i := range specs {
+ specs[i].Labels.Delete(labels...)
+ }
+
+ return specs
+}
+
+// SetTag specifies a key/value pair for each spec.
+func (specs ExtensionTestSpecs) SetTag(key, value string) ExtensionTestSpecs {
+ for i := range specs {
+ specs[i].Tags[key] = value
+ }
+
+ return specs
+}
+
+// UnsetTag removes the specified key from each spec.
+func (specs ExtensionTestSpecs) UnsetTag(key string) ExtensionTestSpecs {
+ for i := range specs {
+ delete(specs[i].Tags, key)
+ }
+
+ return specs
+}
+
+// Include adds the specified CEL expression to explicitly include tests by environment to each spec
+func (specs ExtensionTestSpecs) Include(includeCEL string) ExtensionTestSpecs {
+ for _, spec := range specs {
+ spec.Include(includeCEL)
+ }
+ return specs
+}
+
+// Exclude adds the specified CEL expression to explicitly exclude tests by environment to each spec
+func (specs ExtensionTestSpecs) Exclude(excludeCEL string) ExtensionTestSpecs {
+ for _, spec := range specs {
+ spec.Exclude(excludeCEL)
+ }
+ return specs
+}
+
+// Include adds the specified CEL expression to explicitly include tests by environment.
+// If there is already an "include" defined, it will OR the expressions together
+func (spec *ExtensionTestSpec) Include(includeCEL string) *ExtensionTestSpec {
+ existingInclude := spec.EnvironmentSelector.Include
+ if existingInclude != "" {
+ includeCEL = fmt.Sprintf("(%s) || (%s)", existingInclude, includeCEL)
+ }
+
+ spec.EnvironmentSelector.Include = includeCEL
+ return spec
+}
+
+// Exclude adds the specified CEL expression to explicitly exclude tests by environment.
+// If there is already an "exclude" defined, it will OR the expressions together
+func (spec *ExtensionTestSpec) Exclude(excludeCEL string) *ExtensionTestSpec {
+ existingExclude := spec.EnvironmentSelector.Exclude
+ if existingExclude != "" {
+ excludeCEL = fmt.Sprintf("(%s) || (%s)", existingExclude, excludeCEL)
+ }
+
+ spec.EnvironmentSelector.Exclude = excludeCEL
+ return spec
+}
+
+func runSpec(ctx context.Context, spec *ExtensionTestSpec, runSingleSpec bool) *ExtensionTestResult {
+ startTime := time.Now().UTC()
+ var res *ExtensionTestResult
+ if runSingleSpec || spec.RunParallel == nil {
+ res = spec.Run(ctx)
+ } else {
+ res = spec.RunParallel(ctx)
+ }
+ duration := time.Since(startTime)
+ endTime := startTime.Add(duration).UTC()
+ if res == nil {
+ // this shouldn't happen
+ panic(fmt.Sprintf("test produced no result: %s", spec.Name))
+ }
+
+ res.Lifecycle = spec.Lifecycle
+
+ // If the runner doesn't populate this info, we should set it
+ if res.StartTime == nil {
+ res.StartTime = dbtime.Ptr(startTime)
+ }
+ if res.EndTime == nil {
+ res.EndTime = dbtime.Ptr(endTime)
+ }
+ if res.Duration == 0 {
+ res.Duration = duration.Milliseconds()
+ }
+
+ return res
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/task.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/task.go
new file mode 100644
index 000000000..e808bea87
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/task.go
@@ -0,0 +1,31 @@
+package extensiontests
+
+import "sync/atomic"
+
+type SpecTask struct {
+ fn func(spec ExtensionTestSpec)
+}
+
+func (t *SpecTask) Run(spec ExtensionTestSpec) {
+ t.fn(spec)
+}
+
+type TestResultTask struct {
+ fn func(result *ExtensionTestResult)
+}
+
+func (t *TestResultTask) Run(result *ExtensionTestResult) {
+ t.fn(result)
+}
+
+type OneTimeTask struct {
+ fn func()
+ executed int32 // Atomic boolean to indicate whether the function has been run
+}
+
+func (t *OneTimeTask) Run() {
+ // Ensure one-time tasks are only run once
+ if atomic.CompareAndSwapInt32(&t.executed, 0, 1) {
+ t.fn()
+ }
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/types.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/types.go
new file mode 100644
index 000000000..cd23be81f
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/types.go
@@ -0,0 +1,119 @@
+package extensiontests
+
+import (
+ "context"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/dbtime"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/util/sets"
+)
+
+type Lifecycle string
+
+var LifecycleInforming Lifecycle = "informing"
+var LifecycleBlocking Lifecycle = "blocking"
+
+// IsTerminal returns true if failures in tests with this lifecycle should cause
+// the test run to exit with a non-zero exit code.
+func (l Lifecycle) IsTerminal() bool {
+ return l != LifecycleInforming
+}
+
+type ExtensionTestSpecs []*ExtensionTestSpec
+
+type ExtensionTestSpec struct {
+ Name string `json:"name"`
+
+ // OriginalName contains the very first name this test was ever known as, used to preserve
+ // history across all names.
+ OriginalName string `json:"originalName,omitempty"`
+
+ // Labels are single string values to apply to the test spec
+ Labels sets.Set[string] `json:"labels"`
+
+ // Tags are key:value pairs
+ Tags map[string]string `json:"tags,omitempty"`
+
+ // Resources gives optional information about what's required to run this test.
+ Resources Resources `json:"resources"`
+
+ // Source is the origin of the test.
+ Source string `json:"source"`
+
+ // CodeLocations are the files where the spec originates from.
+ CodeLocations []string `json:"codeLocations,omitempty"`
+
+ // Lifecycle informs the executor whether the test is informing only, and should not cause the
+ // overall job run to fail, or if it's blocking where a failure of the test is fatal.
+ // Informing lifecycle tests can be used temporarily to gather information about a test's stability.
+ // Tests must not remain informing forever.
+ Lifecycle Lifecycle `json:"lifecycle"`
+
+ // EnvironmentSelector allows for CEL expressions to be used to control test inclusion
+ EnvironmentSelector EnvironmentSelector `json:"environmentSelector,omitempty"`
+
+ // Run invokes a test in-process. It must not call back into `ote-binary run-test` because that will usually
+ // cause an infinite recursion.
+ Run func(ctx context.Context) *ExtensionTestResult `json:"-"`
+
+ // RunParallel invokes a test in parallel with other tests. This is usually done by exec-ing out
+ // to the `ote-binary run-test "test name"` commmand and interpretting the result.
+ RunParallel func(ctx context.Context) *ExtensionTestResult `json:"-"`
+
+ // Hook functions
+ afterAll []*OneTimeTask
+ beforeAll []*OneTimeTask
+ afterEach []*TestResultTask
+ beforeEach []*SpecTask
+}
+
+type Resources struct {
+ Isolation Isolation `json:"isolation"`
+ Memory string `json:"memory,omitempty"`
+ Duration string `json:"duration,omitempty"`
+ Timeout string `json:"timeout,omitempty"`
+}
+
+type Isolation struct {
+ Mode string `json:"mode,omitempty"`
+ Conflict []string `json:"conflict,omitempty"`
+ Taint []string `json:"taint,omitempty"`
+ Toleration []string `json:"toleration,omitempty"`
+}
+
+type EnvironmentSelector struct {
+ Include string `json:"include,omitempty"`
+ Exclude string `json:"exclude,omitempty"`
+}
+
+func (e EnvironmentSelector) IsEmpty() bool {
+ return e.Include == "" && e.Exclude == ""
+}
+
+type ExtensionTestResults []*ExtensionTestResult
+
+type Result string
+
+var ResultPassed Result = "passed"
+var ResultSkipped Result = "skipped"
+var ResultFailed Result = "failed"
+
+type ExtensionTestResult struct {
+ Name string `json:"name"`
+ Lifecycle Lifecycle `json:"lifecycle"`
+ Duration int64 `json:"duration"`
+ StartTime *dbtime.DBTime `json:"startTime"`
+ EndTime *dbtime.DBTime `json:"endTime"`
+ Result Result `json:"result"`
+ Output string `json:"output"`
+ Error string `json:"error,omitempty"`
+ Details []Details `json:"details,omitempty"`
+}
+
+// Details are human-readable messages to further explain skips, timeouts, etc.
+// It can also be used to provide contemporaneous information about failures
+// that may not be easily returned by must-gather. For larger artifacts (greater than
+// 10KB, write them to $EXTENSION_ARTIFACTS_DIR.
+type Details struct {
+ Name string `json:"name"`
+ Value interface{} `json:"value"`
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/registry.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/registry.go
new file mode 100644
index 000000000..bbae421df
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/registry.go
@@ -0,0 +1,39 @@
+package extension
+
+const DefaultExtension = "default"
+
+type Registry struct {
+ extensions map[string]*Extension
+}
+
+func NewRegistry() *Registry {
+ var r Registry
+ return &r
+}
+
+func (r *Registry) Walk(walkFn func(*Extension)) {
+ for k := range r.extensions {
+ if k == DefaultExtension {
+ continue
+ }
+ walkFn(r.extensions[k])
+ }
+}
+
+func (r *Registry) Get(name string) *Extension {
+ return r.extensions[name]
+}
+
+func (r *Registry) Register(extension *Extension) {
+ if r.extensions == nil {
+ r.extensions = make(map[string]*Extension)
+ // first extension is default
+ r.extensions[DefaultExtension] = extension
+ }
+
+ r.extensions[extension.Component.Identifier()] = extension
+}
+
+func (r *Registry) Deregister(name string) {
+ delete(r.extensions, name)
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/types.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/types.go
new file mode 100644
index 000000000..00d2d9d66
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/types.go
@@ -0,0 +1,94 @@
+package extension
+
+import (
+ "time"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/util/sets"
+)
+
+const CurrentExtensionAPIVersion = "v1.1"
+
+// Extension represents an extension to openshift-tests.
+type Extension struct {
+ APIVersion string `json:"apiVersion"`
+ Source Source `json:"source"`
+ Component Component `json:"component"`
+
+ // Suites that the extension wants to advertise/participate in.
+ Suites []Suite `json:"suites"`
+
+ Images []Image `json:"images"`
+
+ // Private data
+ specs extensiontests.ExtensionTestSpecs
+ obsoleteTests sets.Set[string]
+}
+
+// Source contains the details of the commit and source URL.
+type Source struct {
+ // Commit from which this binary was compiled.
+ Commit string `json:"commit"`
+ // BuildDate ISO8601 string of when the binary was built
+ BuildDate string `json:"build_date"`
+ // GitTreeState lets you know the status of the git tree (clean/dirty)
+ GitTreeState string `json:"git_tree_state"`
+ // SourceURL contains the url of the git repository (if known) that this extension was built from.
+ SourceURL string `json:"source_url,omitempty"`
+}
+
+// Component represents the component the binary acts on.
+type Component struct {
+ // The product this component is part of.
+ Product string `json:"product"`
+ // The type of the component.
+ Kind string `json:"type"`
+ // The name of the component.
+ Name string `json:"name"`
+}
+
+type ClusterStability string
+
+var (
+ // ClusterStabilityStable means that at no point during testing do we expect a component to take downtime and upgrades are not happening.
+ ClusterStabilityStable ClusterStability = "Stable"
+
+ // ClusterStabilityDisruptive means that the suite is expected to induce outages to the cluster.
+ ClusterStabilityDisruptive ClusterStability = "Disruptive"
+
+ // ClusterStabilityUpgrade was previously defined, but was removed by @deads2k. Please contact him if you find a use
+ // case for it and needs to be reintroduced.
+ // ClusterStabilityUpgrade ClusterStability = "Upgrade"
+)
+
+// Suite represents additional suites the extension wants to advertise. Child suites when being executed in the context
+// of a parent will have their count, parallelism, stability, and timeout options superseded by the parent's suite.
+type Suite struct {
+ Name string `json:"name"`
+ Description string `json:"description"`
+
+ // Parents are the parent suites this suite is part of.
+ Parents []string `json:"parents,omitempty"`
+ // Qualifiers are CEL expressions that are OR'd together for test selection that are members of the suite.
+ Qualifiers []string `json:"qualifiers,omitempty"`
+
+ // Count is the default number of times to execute each test in this suite.
+ Count int `json:"count,omitempty"`
+ // Parallelism is the maximum parallelism of this suite.
+ Parallelism int `json:"parallelism,omitempty"`
+ // ClusterStability informs openshift-tests whether this entire test suite is expected to be disruptive or not
+ // to normal cluster operations.
+ ClusterStability ClusterStability `json:"clusterStability,omitempty"`
+ // TestTimeout is the default timeout for tests in this suite.
+ TestTimeout *time.Duration `json:"testTimeout,omitempty"`
+}
+
+type Image struct {
+ Index int `json:"index"`
+ Registry string `json:"registry"`
+ Name string `json:"name"`
+ Version string `json:"version"`
+ // Mapped is the image reference that this image is mirrored to by the image mirror tool.
+ // This field should be populated if the mirrored image reference is predetermined by the test extensions.
+ Mapped *Image `json:"mapped,omitempty"`
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/component.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/component.go
new file mode 100644
index 000000000..ca9e425c4
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/component.go
@@ -0,0 +1,25 @@
+package flags
+
+import (
+ "github.com/spf13/pflag"
+)
+
+const DefaultExtension = "default"
+
+// ComponentFlags contains information for specifying the component.
+type ComponentFlags struct {
+ Component string
+}
+
+func NewComponentFlags() *ComponentFlags {
+ return &ComponentFlags{
+ Component: DefaultExtension,
+ }
+}
+
+func (f *ComponentFlags) BindFlags(fs *pflag.FlagSet) {
+ fs.StringVar(&f.Component,
+ "component",
+ f.Component,
+ "specify the component to enable")
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/concurrency.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/concurrency.go
new file mode 100644
index 000000000..2db07c765
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/concurrency.go
@@ -0,0 +1,23 @@
+package flags
+
+import "github.com/spf13/pflag"
+
+// ConcurrencyFlags contains information for configuring concurrency
+type ConcurrencyFlags struct {
+ MaxConcurency int
+}
+
+func NewConcurrencyFlags() *ConcurrencyFlags {
+ return &ConcurrencyFlags{
+ MaxConcurency: 10,
+ }
+}
+
+func (f *ConcurrencyFlags) BindFlags(fs *pflag.FlagSet) {
+ fs.IntVarP(&f.MaxConcurency,
+ "max-concurrency",
+ "c",
+ f.MaxConcurency,
+ "maximum number of tests to run in parallel",
+ )
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/environment.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/environment.go
new file mode 100644
index 000000000..af7a0258e
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/environment.go
@@ -0,0 +1,114 @@
+package flags
+
+import (
+ "reflect"
+
+ "github.com/spf13/pflag"
+)
+
+type EnvironmentalFlags struct {
+ APIGroups []string
+ Architecture string
+ ExternalConnectivity string
+ Facts map[string]string
+ FeatureGates []string
+ Network string
+ NetworkStack string
+ OptionalCapabilities []string
+ Platform string
+ Topology string
+ Upgrade string
+ Version string
+}
+
+func NewEnvironmentalFlags() *EnvironmentalFlags {
+ return &EnvironmentalFlags{}
+}
+
+func (f *EnvironmentalFlags) BindFlags(fs *pflag.FlagSet) {
+ fs.StringArrayVar(&f.APIGroups,
+ "api-group",
+ f.APIGroups,
+ "The API groups supported by this cluster. Since: v1.1")
+ fs.StringVar(&f.Architecture,
+ "architecture",
+ "",
+ "The CPU architecture of the target cluster (\"amd64\", \"arm64\"). Since: v1.0")
+ fs.StringVar(&f.ExternalConnectivity,
+ "external-connectivity",
+ "",
+ "The External Connectivity of the target cluster (\"Disconnected\", \"Direct\", \"Proxied\"). Since: v1.0")
+ fs.StringArrayVar(&f.FeatureGates,
+ "feature-gate",
+ f.FeatureGates,
+ "The feature gates enabled on this cluster. Since: v1.1")
+ fs.StringToStringVar(&f.Facts,
+ "fact",
+ make(map[string]string),
+ "Facts advertised by cluster components. Since: v1.0")
+ fs.StringVar(&f.Network,
+ "network",
+ "",
+ "The network of the target cluster (\"ovn\", \"sdn\"). Since: v1.0")
+ fs.StringVar(&f.NetworkStack,
+ "network-stack",
+ "",
+ "The network stack of the target cluster (\"ipv6\", \"ipv4\", \"dual\"). Since: v1.0")
+ fs.StringSliceVar(&f.OptionalCapabilities,
+ "optional-capability",
+ []string{},
+ "An Optional Capability of the target cluster. Can be passed multiple times. Since: v1.0")
+ fs.StringVar(&f.Platform,
+ "platform",
+ "",
+ "The hardware or cloud platform (\"aws\", \"gcp\", \"metal\", ...). Since: v1.0")
+ fs.StringVar(&f.Topology,
+ "topology",
+ "",
+ "The target cluster topology (\"ha\", \"microshift\", ...). Since: v1.0")
+ fs.StringVar(&f.Upgrade,
+ "upgrade",
+ "",
+ "The upgrade that was performed prior to the test run (\"micro\", \"minor\"). Since: v1.0")
+ fs.StringVar(&f.Version,
+ "version",
+ "",
+ "\"major.minor\" version of target cluster. Since: v1.0")
+}
+
+func (f *EnvironmentalFlags) IsEmpty() bool {
+ v := reflect.ValueOf(*f)
+
+ for i := 0; i < v.NumField(); i++ {
+ field := v.Field(i)
+
+ switch field.Kind() {
+ case reflect.Slice, reflect.Map:
+ if !field.IsNil() && field.Len() > 0 {
+ return false
+ }
+ default:
+ if !reflect.DeepEqual(field.Interface(), reflect.Zero(field.Type()).Interface()) {
+ return false
+ }
+ }
+ }
+
+ return true
+}
+
+// EnvironmentFlagVersions holds the "Since" version metadata for each flag.
+var EnvironmentFlagVersions = map[string]string{
+ "api-group": "v1.1",
+ "architecture": "v1.0",
+ "external-connectivity": "v1.0",
+ "fact": "v1.0",
+ "feature-gate": "v1.1",
+ "network": "v1.0",
+ "network-stack": "v1.0",
+ "optional-capability": "v1.0",
+ "platform": "v1.0",
+ "topology": "v1.0",
+ "upgrade": "v1.0",
+ "version": "v1.0",
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/names.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/names.go
new file mode 100644
index 000000000..9e5864839
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/names.go
@@ -0,0 +1,24 @@
+package flags
+
+import (
+ "github.com/spf13/pflag"
+)
+
+// NamesFlags contains information for specifying multiple test names.
+type NamesFlags struct {
+ Names []string
+}
+
+func NewNamesFlags() *NamesFlags {
+ return &NamesFlags{
+ Names: []string{},
+ }
+}
+
+func (f *NamesFlags) BindFlags(fs *pflag.FlagSet) {
+ fs.StringArrayVarP(&f.Names,
+ "names",
+ "n",
+ f.Names,
+ "specify test name (can be specified multiple times)")
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/output.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/output.go
new file mode 100644
index 000000000..24f49f638
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/output.go
@@ -0,0 +1,95 @@
+package flags
+
+import (
+ "encoding/json"
+ "reflect"
+ "strings"
+
+ "github.com/pkg/errors"
+ "github.com/spf13/pflag"
+)
+
+// OutputFlags contains information for specifying multiple test names.
+type OutputFlags struct {
+ Output string
+}
+
+func NewOutputFlags() *OutputFlags {
+ return &OutputFlags{
+ Output: "json",
+ }
+}
+
+func (f *OutputFlags) BindFlags(fs *pflag.FlagSet) {
+ fs.StringVarP(&f.Output,
+ "output",
+ "o",
+ f.Output,
+ "output mode")
+}
+
+func (o *OutputFlags) Marshal(v interface{}) ([]byte, error) {
+ switch o.Output {
+ case "", "json":
+ j, err := json.MarshalIndent(&v, "", " ")
+ if err != nil {
+ return nil, err
+ }
+ return j, nil
+ case "jsonl":
+ // Check if v is a slice or array
+ val := reflect.ValueOf(v)
+ if val.Kind() == reflect.Slice || val.Kind() == reflect.Array {
+ var result []byte
+ for i := 0; i < val.Len(); i++ {
+ item := val.Index(i).Interface()
+ j, err := json.Marshal(item)
+ if err != nil {
+ return nil, err
+ }
+ result = append(result, j...)
+ result = append(result, '\n') // Append newline after each item
+ }
+ return result, nil
+ }
+ return nil, errors.New("jsonl format requires a slice or array")
+ case "names":
+ val := reflect.ValueOf(v)
+ if val.Kind() == reflect.Slice || val.Kind() == reflect.Array {
+ var names []string
+ outerLoop:
+ for i := 0; i < val.Len(); i++ {
+ item := val.Index(i)
+ // Check for Name() or Identifier() methods
+ itemInterface := item.Interface()
+ nameFuncs := []string{"Name", "Identifier"}
+ for _, fn := range nameFuncs {
+ method := reflect.ValueOf(itemInterface).MethodByName(fn)
+ if method.IsValid() && method.Kind() == reflect.Func && method.Type().NumIn() == 0 && method.Type().NumOut() == 1 && method.Type().Out(0).Kind() == reflect.String {
+ name := method.Call(nil)[0].String()
+ names = append(names, name)
+ continue outerLoop
+ }
+ }
+
+ // Dereference pointer if needed
+ if item.Kind() == reflect.Ptr {
+ item = item.Elem()
+ }
+ // Check for struct with Name field
+ if item.Kind() == reflect.Struct {
+ nameField := item.FieldByName("Name")
+ if nameField.IsValid() && nameField.Kind() == reflect.String {
+ names = append(names, nameField.String())
+ }
+ } else {
+ return nil, errors.New("items must have a Name field or a Name() method")
+ }
+ }
+ return []byte(strings.Join(names, "\n")), nil
+ }
+ return nil, errors.New("names format requires an array of structs")
+ default:
+ return nil, errors.Errorf("invalid output format: %s", o.Output)
+ }
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/suite.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/suite.go
new file mode 100644
index 000000000..23de832a8
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/suite.go
@@ -0,0 +1,21 @@
+package flags
+
+import (
+ "github.com/spf13/pflag"
+)
+
+// SuiteFlags contains information for specifying the suite.
+type SuiteFlags struct {
+ Suite string
+}
+
+func NewSuiteFlags() *SuiteFlags {
+ return &SuiteFlags{}
+}
+
+func (f *SuiteFlags) BindFlags(fs *pflag.FlagSet) {
+ fs.StringVar(&f.Suite,
+ "suite",
+ f.Suite,
+ "specify the suite to use")
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/logging.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/logging.go
new file mode 100644
index 000000000..0b84ca41c
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/logging.go
@@ -0,0 +1,21 @@
+package ginkgo
+
+import (
+ "github.com/go-logr/logr"
+ "github.com/go-logr/logr/funcr"
+ "github.com/onsi/ginkgo/v2"
+)
+
+// this is copied from ginkgo because ginkgo made it internal and then hardcoded an init block
+// using these functions to wire to os.stdout and we want to wire to stderr (or a different buffer) so we can
+// have json output.
+
+func GinkgoLogrFunc(writer ginkgo.GinkgoWriterInterface) logr.Logger {
+ return funcr.New(func(prefix, args string) {
+ if prefix == "" {
+ writer.Printf("%s\n", args)
+ } else {
+ writer.Printf("%s %s\n", prefix, args)
+ }
+ }, funcr.Options{})
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/parallel.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/parallel.go
new file mode 100644
index 000000000..890cebb09
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/parallel.go
@@ -0,0 +1,139 @@
+package ginkgo
+
+import (
+ "bytes"
+ "context"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "os"
+ "os/exec"
+ "syscall"
+ "time"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/dbtime"
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
+)
+
+func SpawnProcessToRunTest(ctx context.Context, testName string, timeout time.Duration) *extensiontests.ExtensionTestResult {
+ // longerCtx is used to backstop the process, but leave termination up to us if possible to allow a double interrupt
+ longerCtx, longerCancel := context.WithTimeout(ctx, timeout+15*time.Minute)
+ defer longerCancel()
+ timeoutCtx, shorterCancel := context.WithTimeout(longerCtx, timeout)
+ defer shorterCancel()
+
+ stdout := &bytes.Buffer{}
+ stderr := &bytes.Buffer{}
+
+ command := exec.CommandContext(longerCtx, os.Args[0], "run-test", "--output=json", testName)
+ command.Stdout = stdout
+ command.Stderr = stderr
+
+ start := time.Now()
+ err := command.Start()
+ if err != nil {
+ fmt.Fprintf(stderr, "Command Start Error: %v\n", err)
+ return newTestResult(testName, extensiontests.ResultFailed, start, time.Now(), stdout, stderr)
+ }
+
+ go func() {
+ select {
+ // interrupt tests after timeout, and abort if they don't complete quick enough
+ case <-time.After(timeout):
+ if command.Process != nil {
+ // we're not going to do anything with the err
+ _ = command.Process.Signal(syscall.SIGINT)
+ }
+ // if the process appears to be hung a significant amount of time after the timeout
+ // send an ABRT so we get a stack dump
+ select {
+ case <-time.After(time.Minute):
+ if command.Process != nil {
+ // we're not going to do anything with the err
+ _ = command.Process.Signal(syscall.SIGABRT)
+ }
+ case <-timeoutCtx.Done():
+ if command.Process != nil {
+ _ = command.Process.Signal(syscall.SIGABRT)
+ }
+ }
+ case <-timeoutCtx.Done():
+ if command.Process != nil {
+ _ = command.Process.Signal(syscall.SIGINT)
+ }
+ }
+ }()
+
+ result := extensiontests.ResultFailed
+ cmdErr := command.Wait()
+
+ subcommandResult, parseErr := newTestResultFromOutput(stdout)
+ if parseErr == nil {
+ // even if we have a cmdErr, if we were able to parse the result, trust the output
+ return subcommandResult
+ }
+
+ fmt.Fprintf(stderr, "Command Error: %v\n", cmdErr)
+ fmt.Fprintf(stderr, "Deserializaion Error: %v\n", parseErr)
+ return newTestResult(testName, result, start, time.Now(), stdout, stderr)
+}
+
+func newTestResultFromOutput(stdout *bytes.Buffer) (*extensiontests.ExtensionTestResult, error) {
+ if len(stdout.Bytes()) == 0 {
+ return nil, errors.New("no output from command")
+ }
+
+ // when the command runs correctly, we get json or json slice output
+ retArray := []extensiontests.ExtensionTestResult{}
+ if arrayItemErr := json.Unmarshal(stdout.Bytes(), &retArray); arrayItemErr == nil {
+ if len(retArray) != 1 {
+ return nil, errors.New("expected 1 result, got %v results")
+ }
+ return &retArray[0], nil
+ }
+
+ // when the command runs correctly, we get json output
+ ret := &extensiontests.ExtensionTestResult{}
+ if singleItemErr := json.Unmarshal(stdout.Bytes(), ret); singleItemErr != nil {
+ return nil, singleItemErr
+ }
+
+ return ret, nil
+}
+
+func newTestResult(name string, result extensiontests.Result, start, end time.Time, stdout, stderr *bytes.Buffer) *extensiontests.ExtensionTestResult {
+ duration := end.Sub(start)
+ dbStart := dbtime.DBTime(start)
+ dbEnd := dbtime.DBTime(start)
+ ret := &extensiontests.ExtensionTestResult{
+ Name: name,
+ Lifecycle: "", // lifecycle is completed one level above this.
+ Duration: int64(duration),
+ StartTime: &dbStart,
+ EndTime: &dbEnd,
+ Result: result,
+ Details: nil,
+ }
+
+ if stdout != nil && stderr != nil {
+ stdoutStr := stdout.String()
+ stderrStr := stderr.String()
+
+ ret.Output = fmt.Sprintf("STDOUT:\n%s\n\nSTDERR:\n%s\n", stdoutStr, stderrStr)
+
+ // try to choose the best summary
+ switch {
+ case len(stderrStr) > 0 && len(stderrStr) < 5000:
+ ret.Error = stderrStr
+ case len(stderrStr) > 0 && len(stderrStr) >= 5000:
+ ret.Error = stderrStr[len(stderrStr)-5000:]
+
+ case len(stdoutStr) > 0 && len(stdoutStr) < 5000:
+ ret.Error = stdoutStr
+ case len(stdoutStr) > 0 && len(stdoutStr) >= 5000:
+ ret.Error = stdoutStr[len(stdoutStr)-5000:]
+ }
+ }
+
+ return ret
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/util.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/util.go
new file mode 100644
index 000000000..e970d46ad
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/util.go
@@ -0,0 +1,229 @@
+package ginkgo
+
+import (
+ "context"
+ "fmt"
+ "os"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/onsi/ginkgo/v2"
+ "github.com/onsi/ginkgo/v2/types"
+ "github.com/onsi/gomega"
+ "github.com/pkg/errors"
+
+ "github.com/openshift-eng/openshift-tests-extension/pkg/util/sets"
+
+ ext "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
+)
+
+func configureGinkgo() (*types.SuiteConfig, *types.ReporterConfig, error) {
+ if !ginkgo.GetSuite().InPhaseBuildTree() {
+ if err := ginkgo.GetSuite().BuildTree(); err != nil {
+ return nil, nil, errors.Wrapf(err, "couldn't build ginkgo tree")
+ }
+ }
+
+ // Ginkgo initialization
+ ginkgo.GetSuite().ClearBeforeAndAfterSuiteNodes()
+ suiteConfig, reporterConfig := ginkgo.GinkgoConfiguration()
+ suiteConfig.RandomizeAllSpecs = true
+ suiteConfig.Timeout = 24 * time.Hour
+ reporterConfig.NoColor = true
+ reporterConfig.Verbose = true
+ ginkgo.SetReporterConfig(reporterConfig)
+
+ // Write output to Stderr
+ ginkgo.GinkgoWriter = ginkgo.NewWriter(os.Stderr)
+ ginkgo.GinkgoLogr = GinkgoLogrFunc(ginkgo.GinkgoWriter)
+
+ gomega.RegisterFailHandler(ginkgo.Fail)
+
+ return &suiteConfig, &reporterConfig, nil
+}
+
+// BuildExtensionTestSpecsFromOpenShiftGinkgoSuite generates OTE specs for Gingko tests. While OTE isn't limited to
+// calling ginkgo tests, anything that implements the ExtensionTestSpec interface can be used, it's the most common
+// course of action. The typical use case is to omit selectFns, but if provided, these will filter the returned list
+// of specs, applied in the order provided.
+func BuildExtensionTestSpecsFromOpenShiftGinkgoSuite(selectFns ...ext.SelectFunction) (ext.ExtensionTestSpecs, error) {
+ var specs ext.ExtensionTestSpecs
+ var enforceSerialExecutionForGinkgo sync.Mutex // in-process parallelization for ginkgo is impossible so far
+
+ if _, _, err := configureGinkgo(); err != nil {
+ return nil, err
+ }
+
+ cwd, err := os.Getwd()
+ if err != nil {
+ return nil, errors.Wrap(err, "couldn't get current working directory")
+ }
+
+ ginkgo.GetSuite().WalkTests(func(name string, spec types.TestSpec) {
+ var codeLocations []string
+ for _, cl := range spec.CodeLocations() {
+ codeLocations = append(codeLocations, cl.String())
+ }
+
+ testCase := &ext.ExtensionTestSpec{
+ Name: spec.Text(),
+ Labels: sets.New[string](spec.Labels()...),
+ CodeLocations: codeLocations,
+ Lifecycle: GetLifecycle(spec.Labels()),
+ Run: func(ctx context.Context) *ext.ExtensionTestResult {
+ enforceSerialExecutionForGinkgo.Lock()
+ defer enforceSerialExecutionForGinkgo.Unlock()
+
+ suiteConfig, reporterConfig, _ := configureGinkgo()
+
+ result := &ext.ExtensionTestResult{
+ Name: spec.Text(),
+ }
+
+ var summary types.SpecReport
+ ginkgo.GetSuite().RunSpec(spec, ginkgo.Labels{}, "", cwd, ginkgo.GetFailer(), ginkgo.GetWriter(), *suiteConfig,
+ *reporterConfig)
+ for _, report := range ginkgo.GetSuite().GetReport().SpecReports {
+ if report.NumAttempts > 0 {
+ summary = report
+ }
+ }
+
+ result.Output = summary.CapturedGinkgoWriterOutput
+ result.Error = summary.CapturedStdOutErr
+
+ switch {
+ case summary.State == types.SpecStatePassed:
+ result.Result = ext.ResultPassed
+ case summary.State == types.SpecStateSkipped, summary.State == types.SpecStatePending:
+ result.Result = ext.ResultSkipped
+ if len(summary.Failure.Message) > 0 {
+ result.Output = fmt.Sprintf(
+ "%s\n skip [%s:%d]: %s\n",
+ result.Output,
+ lastFilenameSegment(summary.Failure.Location.FileName),
+ summary.Failure.Location.LineNumber,
+ summary.Failure.Message,
+ )
+ } else if len(summary.Failure.ForwardedPanic) > 0 {
+ result.Output = fmt.Sprintf(
+ "%s\n skip [%s:%d]: %s\n",
+ result.Output,
+ lastFilenameSegment(summary.Failure.Location.FileName),
+ summary.Failure.Location.LineNumber,
+ summary.Failure.ForwardedPanic,
+ )
+ }
+ case summary.State == types.SpecStateFailed, summary.State == types.SpecStatePanicked, summary.State == types.SpecStateInterrupted, summary.State == types.SpecStateAborted:
+ result.Result = ext.ResultFailed
+ var errors []string
+ if len(summary.Failure.ForwardedPanic) > 0 {
+ if len(summary.Failure.Location.FullStackTrace) > 0 {
+ errors = append(errors, fmt.Sprintf("\n%s\n", summary.Failure.Location.FullStackTrace))
+ }
+ errors = append(errors, fmt.Sprintf("fail [%s:%d]: Test Panicked: %s", lastFilenameSegment(summary.Failure.Location.FileName), summary.Failure.Location.LineNumber, summary.Failure.ForwardedPanic))
+ }
+ errors = append(errors, fmt.Sprintf("fail [%s:%d]: %s", lastFilenameSegment(summary.Failure.Location.FileName), summary.Failure.Location.LineNumber, summary.Failure.Message))
+ result.Error = strings.Join(errors, "\n")
+ case summary.State == types.SpecStateTimedout:
+ result.Result = ext.ResultFailed
+ var errors []string
+ for _, additionalFailure := range summary.AdditionalFailures {
+ collectAdditionalFailures(&errors, " ", additionalFailure.Failure)
+ }
+ if summary.Failure.AdditionalFailure != nil {
+ collectAdditionalFailures(&errors, " ", summary.Failure.AdditionalFailure.Failure)
+ }
+ errors = append(errors, fmt.Sprintf("fail [%s:%d]: %s", lastFilenameSegment(summary.Failure.Location.FileName), summary.Failure.Location.LineNumber, summary.Failure.Message))
+ result.Error = strings.Join(errors, "\n")
+ default:
+ panic(fmt.Sprintf("test produced unknown outcome: %#v", summary))
+ }
+
+ return result
+ },
+ RunParallel: func(ctx context.Context) *ext.ExtensionTestResult {
+ // TODO pass through timeout and determine Lifecycle
+ return SpawnProcessToRunTest(ctx, name, 90*time.Minute)
+ },
+ }
+ specs = append(specs, testCase)
+ })
+
+ // Default select function is to exclude vendored specs. When relying on Kubernetes test framework for its helpers,
+ // it also unfortunately ends up importing *all* Gingko specs. This is unsafe: it would potentially override the
+ // kube specs already present in origin. The best course of action is enforce this behavior on everyone. If for
+ // some reason, you must include vendored specs, you can opt-in directly by supplying your own SelectFunctions or using
+ // AllTestsIncludedVendored().
+ if len(selectFns) == 0 {
+ selectFns = []ext.SelectFunction{ext.ModuleTestsOnly()}
+ }
+
+ for _, selectFn := range selectFns {
+ specs = specs.Select(selectFn)
+ }
+
+ return specs, nil
+}
+
+func Informing() ginkgo.Labels {
+ return ginkgo.Label(fmt.Sprintf("Lifecycle:%s", ext.LifecycleInforming))
+}
+
+func Slow() ginkgo.Labels {
+ return ginkgo.Label("SLOW")
+}
+
+func Blocking() ginkgo.Labels {
+ return ginkgo.Label(fmt.Sprintf("Lifecycle:%s", ext.LifecycleBlocking))
+}
+
+func GetLifecycle(labels ginkgo.Labels) ext.Lifecycle {
+ for _, label := range labels {
+ res := strings.Split(label, ":")
+ if len(res) != 2 || !strings.EqualFold(res[0], "lifecycle") {
+ continue
+ }
+ return MustLifecycle(res[1]) // this panics if unsupported lifecycle is used
+ }
+
+ return ext.LifecycleBlocking
+}
+
+func MustLifecycle(l string) ext.Lifecycle {
+ switch ext.Lifecycle(l) {
+ case ext.LifecycleInforming, ext.LifecycleBlocking:
+ return ext.Lifecycle(l)
+ default:
+ panic(fmt.Sprintf("unknown test lifecycle: %s", l))
+ }
+}
+
+func lastFilenameSegment(filename string) string {
+ if parts := strings.Split(filename, "/vendor/"); len(parts) > 1 {
+ return parts[len(parts)-1]
+ }
+ if parts := strings.Split(filename, "/src/"); len(parts) > 1 {
+ return parts[len(parts)-1]
+ }
+ return filename
+}
+
+func collectAdditionalFailures(errors *[]string, suffix string, failure types.Failure) {
+ if failure.IsZero() {
+ return
+ }
+
+ if len(failure.ForwardedPanic) > 0 {
+ if len(failure.Location.FullStackTrace) > 0 {
+ *errors = append(*errors, fmt.Sprintf("\n%s\n", failure.Location.FullStackTrace))
+ }
+ *errors = append(*errors, fmt.Sprintf("fail [%s:%d]: Test Panicked: %s%s", lastFilenameSegment(failure.Location.FileName), failure.Location.LineNumber, failure.ForwardedPanic, suffix))
+ }
+ *errors = append(*errors, fmt.Sprintf("fail [%s:%d] %s%s", lastFilenameSegment(failure.Location.FileName), failure.Location.LineNumber, failure.Message, suffix))
+
+ if failure.AdditionalFailure != nil {
+ collectAdditionalFailures(errors, " ", failure.AdditionalFailure.Failure)
+ }
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/junit/types.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/junit/types.go
new file mode 100644
index 000000000..0309fbd51
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/junit/types.go
@@ -0,0 +1,104 @@
+package junit
+
+import (
+ "encoding/xml"
+)
+
+// The below types are directly marshalled into XML. The types correspond to jUnit
+// XML schema, but do not contain all valid fields. For instance, the class name
+// field for test cases is omitted, as this concept does not directly apply to Go.
+// For XML specifications see http://help.catchsoftware.com/display/ET/JUnit+Format
+// or view the XSD included in this package as 'junit.xsd'
+
+// TestSuites represents a flat collection of jUnit test suites.
+type TestSuites struct {
+ XMLName xml.Name `xml:"testsuites"`
+
+ // Suites are the jUnit test suites held in this collection
+ Suites []*TestSuite `xml:"testsuite"`
+}
+
+// TestSuite represents a single jUnit test suite, potentially holding child suites.
+type TestSuite struct {
+ XMLName xml.Name `xml:"testsuite"`
+
+ // Name is the name of the test suite
+ Name string `xml:"name,attr"`
+
+ // NumTests records the number of tests in the TestSuite
+ NumTests uint `xml:"tests,attr"`
+
+ // NumSkipped records the number of skipped tests in the suite
+ NumSkipped uint `xml:"skipped,attr"`
+
+ // NumFailed records the number of failed tests in the suite
+ NumFailed uint `xml:"failures,attr"`
+
+ // Duration is the time taken in seconds to run all tests in the suite
+ Duration float64 `xml:"time,attr"`
+
+ // Properties holds other properties of the test suite as a mapping of name to value
+ Properties []*TestSuiteProperty `xml:"properties,omitempty"`
+
+ // TestCases are the test cases contained in the test suite
+ TestCases []*TestCase `xml:"testcases"`
+
+ // Children holds nested test suites
+ Children []*TestSuite `xml:"testsuites"` //nolint
+}
+
+// TestSuiteProperty contains a mapping of a property name to a value
+type TestSuiteProperty struct {
+ XMLName xml.Name `xml:"properties"`
+
+ Name string `xml:"name,attr"`
+ Value string `xml:"value,attr"`
+}
+
+// TestCase represents a jUnit test case
+type TestCase struct {
+ XMLName xml.Name `xml:"testcase"`
+
+ // Name is the name of the test case
+ Name string `xml:"name,attr"`
+
+ // Classname is an attribute set by the package type and is required
+ Classname string `xml:"classname,attr,omitempty"`
+
+ // Duration is the time taken in seconds to run the test
+ Duration float64 `xml:"time,attr"`
+
+ // SkipMessage holds the reason why the test was skipped
+ SkipMessage *SkipMessage `xml:"skipped"`
+
+ // FailureOutput holds the output from a failing test
+ FailureOutput *FailureOutput `xml:"failure"`
+
+ // SystemOut is output written to stdout during the execution of this test case
+ SystemOut string `xml:"system-out,omitempty"`
+
+ // SystemErr is output written to stderr during the execution of this test case
+ SystemErr string `xml:"system-err,omitempty"`
+}
+
+// SkipMessage holds a message explaining why a test was skipped
+type SkipMessage struct {
+ XMLName xml.Name `xml:"skipped"`
+
+ // Message explains why the test was skipped
+ Message string `xml:"message,attr,omitempty"`
+}
+
+// FailureOutput holds the output from a failing test
+type FailureOutput struct {
+ XMLName xml.Name `xml:"failure"`
+
+ // Message holds the failure message from the test
+ Message string `xml:"message,attr"`
+
+ // Output holds verbose failure output from the test
+ Output string `xml:",chardata"`
+}
+
+// TestResult is the result of a test case
+type TestResult string
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/LICENSE b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/LICENSE
new file mode 100644
index 000000000..d64569567
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/README.md b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/README.md
new file mode 100644
index 000000000..1a5def772
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/README.md
@@ -0,0 +1,3 @@
+This package is copy/pasted from [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery/tree/master/pkg/util/sets)
+to avoid a circular dependency with `openshift/kubernetes` as it requires OTE and, without having done this,
+OTE would require `kubernetes/kubernetes`.
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/byte.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/byte.go
new file mode 100644
index 000000000..4d7a17c3a
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/byte.go
@@ -0,0 +1,137 @@
+/*
+Copyright 2022 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sets
+
+// Byte is a set of bytes, implemented via map[byte]struct{} for minimal memory consumption.
+//
+// Deprecated: use generic Set instead.
+// new ways:
+// s1 := Set[byte]{}
+// s2 := New[byte]()
+type Byte map[byte]Empty
+
+// NewByte creates a Byte from a list of values.
+func NewByte(items ...byte) Byte {
+ return Byte(New[byte](items...))
+}
+
+// ByteKeySet creates a Byte from a keys of a map[byte](? extends interface{}).
+// If the value passed in is not actually a map, this will panic.
+func ByteKeySet[T any](theMap map[byte]T) Byte {
+ return Byte(KeySet(theMap))
+}
+
+// Insert adds items to the set.
+func (s Byte) Insert(items ...byte) Byte {
+ return Byte(cast(s).Insert(items...))
+}
+
+// Delete removes all items from the set.
+func (s Byte) Delete(items ...byte) Byte {
+ return Byte(cast(s).Delete(items...))
+}
+
+// Has returns true if and only if item is contained in the set.
+func (s Byte) Has(item byte) bool {
+ return cast(s).Has(item)
+}
+
+// HasAll returns true if and only if all items are contained in the set.
+func (s Byte) HasAll(items ...byte) bool {
+ return cast(s).HasAll(items...)
+}
+
+// HasAny returns true if any items are contained in the set.
+func (s Byte) HasAny(items ...byte) bool {
+ return cast(s).HasAny(items...)
+}
+
+// Clone returns a new set which is a copy of the current set.
+func (s Byte) Clone() Byte {
+ return Byte(cast(s).Clone())
+}
+
+// Difference returns a set of objects that are not in s2.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.Difference(s2) = {a3}
+// s2.Difference(s1) = {a4, a5}
+func (s1 Byte) Difference(s2 Byte) Byte {
+ return Byte(cast(s1).Difference(cast(s2)))
+}
+
+// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.SymmetricDifference(s2) = {a3, a4, a5}
+// s2.SymmetricDifference(s1) = {a3, a4, a5}
+func (s1 Byte) SymmetricDifference(s2 Byte) Byte {
+ return Byte(cast(s1).SymmetricDifference(cast(s2)))
+}
+
+// Union returns a new set which includes items in either s1 or s2.
+// For example:
+// s1 = {a1, a2}
+// s2 = {a3, a4}
+// s1.Union(s2) = {a1, a2, a3, a4}
+// s2.Union(s1) = {a1, a2, a3, a4}
+func (s1 Byte) Union(s2 Byte) Byte {
+ return Byte(cast(s1).Union(cast(s2)))
+}
+
+// Intersection returns a new set which includes the item in BOTH s1 and s2
+// For example:
+// s1 = {a1, a2}
+// s2 = {a2, a3}
+// s1.Intersection(s2) = {a2}
+func (s1 Byte) Intersection(s2 Byte) Byte {
+ return Byte(cast(s1).Intersection(cast(s2)))
+}
+
+// IsSuperset returns true if and only if s1 is a superset of s2.
+func (s1 Byte) IsSuperset(s2 Byte) bool {
+ return cast(s1).IsSuperset(cast(s2))
+}
+
+// Equal returns true if and only if s1 is equal (as a set) to s2.
+// Two sets are equal if their membership is identical.
+// (In practice, this means same elements, order doesn't matter)
+func (s1 Byte) Equal(s2 Byte) bool {
+ return cast(s1).Equal(cast(s2))
+}
+
+// List returns the contents as a sorted byte slice.
+func (s Byte) List() []byte {
+ return List(cast(s))
+}
+
+// UnsortedList returns the slice with contents in random order.
+func (s Byte) UnsortedList() []byte {
+ return cast(s).UnsortedList()
+}
+
+// PopAny returns a single element from the set.
+func (s Byte) PopAny() (byte, bool) {
+ return cast(s).PopAny()
+}
+
+// Len returns the size of the set.
+func (s Byte) Len() int {
+ return len(s)
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/doc.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/doc.go
new file mode 100644
index 000000000..997f5e033
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/doc.go
@@ -0,0 +1,19 @@
+/*
+Copyright 2022 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Package sets has generic set and specified sets. Generic set will
+// replace specified ones over time. And specific ones are deprecated.
+package sets // import "github.com/openshift-eng/openshift-tests-extension/pkg/util/sets"
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/empty.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/empty.go
new file mode 100644
index 000000000..fbb1df06d
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/empty.go
@@ -0,0 +1,21 @@
+/*
+Copyright 2022 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sets
+
+// Empty is public since it is used by some internal API objects for conversions between external
+// string arrays and internal sets, and conversion logic requires public types today.
+type Empty struct{}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int.go
new file mode 100644
index 000000000..5876fc9de
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int.go
@@ -0,0 +1,137 @@
+/*
+Copyright 2022 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sets
+
+// Int is a set of ints, implemented via map[int]struct{} for minimal memory consumption.
+//
+// Deprecated: use generic Set instead.
+// new ways:
+// s1 := Set[int]{}
+// s2 := New[int]()
+type Int map[int]Empty
+
+// NewInt creates a Int from a list of values.
+func NewInt(items ...int) Int {
+ return Int(New[int](items...))
+}
+
+// IntKeySet creates a Int from a keys of a map[int](? extends interface{}).
+// If the value passed in is not actually a map, this will panic.
+func IntKeySet[T any](theMap map[int]T) Int {
+ return Int(KeySet(theMap))
+}
+
+// Insert adds items to the set.
+func (s Int) Insert(items ...int) Int {
+ return Int(cast(s).Insert(items...))
+}
+
+// Delete removes all items from the set.
+func (s Int) Delete(items ...int) Int {
+ return Int(cast(s).Delete(items...))
+}
+
+// Has returns true if and only if item is contained in the set.
+func (s Int) Has(item int) bool {
+ return cast(s).Has(item)
+}
+
+// HasAll returns true if and only if all items are contained in the set.
+func (s Int) HasAll(items ...int) bool {
+ return cast(s).HasAll(items...)
+}
+
+// HasAny returns true if any items are contained in the set.
+func (s Int) HasAny(items ...int) bool {
+ return cast(s).HasAny(items...)
+}
+
+// Clone returns a new set which is a copy of the current set.
+func (s Int) Clone() Int {
+ return Int(cast(s).Clone())
+}
+
+// Difference returns a set of objects that are not in s2.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.Difference(s2) = {a3}
+// s2.Difference(s1) = {a4, a5}
+func (s1 Int) Difference(s2 Int) Int {
+ return Int(cast(s1).Difference(cast(s2)))
+}
+
+// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.SymmetricDifference(s2) = {a3, a4, a5}
+// s2.SymmetricDifference(s1) = {a3, a4, a5}
+func (s1 Int) SymmetricDifference(s2 Int) Int {
+ return Int(cast(s1).SymmetricDifference(cast(s2)))
+}
+
+// Union returns a new set which includes items in either s1 or s2.
+// For example:
+// s1 = {a1, a2}
+// s2 = {a3, a4}
+// s1.Union(s2) = {a1, a2, a3, a4}
+// s2.Union(s1) = {a1, a2, a3, a4}
+func (s1 Int) Union(s2 Int) Int {
+ return Int(cast(s1).Union(cast(s2)))
+}
+
+// Intersection returns a new set which includes the item in BOTH s1 and s2
+// For example:
+// s1 = {a1, a2}
+// s2 = {a2, a3}
+// s1.Intersection(s2) = {a2}
+func (s1 Int) Intersection(s2 Int) Int {
+ return Int(cast(s1).Intersection(cast(s2)))
+}
+
+// IsSuperset returns true if and only if s1 is a superset of s2.
+func (s1 Int) IsSuperset(s2 Int) bool {
+ return cast(s1).IsSuperset(cast(s2))
+}
+
+// Equal returns true if and only if s1 is equal (as a set) to s2.
+// Two sets are equal if their membership is identical.
+// (In practice, this means same elements, order doesn't matter)
+func (s1 Int) Equal(s2 Int) bool {
+ return cast(s1).Equal(cast(s2))
+}
+
+// List returns the contents as a sorted int slice.
+func (s Int) List() []int {
+ return List(cast(s))
+}
+
+// UnsortedList returns the slice with contents in random order.
+func (s Int) UnsortedList() []int {
+ return cast(s).UnsortedList()
+}
+
+// PopAny returns a single element from the set.
+func (s Int) PopAny() (int, bool) {
+ return cast(s).PopAny()
+}
+
+// Len returns the size of the set.
+func (s Int) Len() int {
+ return len(s)
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int32.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int32.go
new file mode 100644
index 000000000..2c640c5d0
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int32.go
@@ -0,0 +1,137 @@
+/*
+Copyright 2022 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sets
+
+// Int32 is a set of int32s, implemented via map[int32]struct{} for minimal memory consumption.
+//
+// Deprecated: use generic Set instead.
+// new ways:
+// s1 := Set[int32]{}
+// s2 := New[int32]()
+type Int32 map[int32]Empty
+
+// NewInt32 creates a Int32 from a list of values.
+func NewInt32(items ...int32) Int32 {
+ return Int32(New[int32](items...))
+}
+
+// Int32KeySet creates a Int32 from a keys of a map[int32](? extends interface{}).
+// If the value passed in is not actually a map, this will panic.
+func Int32KeySet[T any](theMap map[int32]T) Int32 {
+ return Int32(KeySet(theMap))
+}
+
+// Insert adds items to the set.
+func (s Int32) Insert(items ...int32) Int32 {
+ return Int32(cast(s).Insert(items...))
+}
+
+// Delete removes all items from the set.
+func (s Int32) Delete(items ...int32) Int32 {
+ return Int32(cast(s).Delete(items...))
+}
+
+// Has returns true if and only if item is contained in the set.
+func (s Int32) Has(item int32) bool {
+ return cast(s).Has(item)
+}
+
+// HasAll returns true if and only if all items are contained in the set.
+func (s Int32) HasAll(items ...int32) bool {
+ return cast(s).HasAll(items...)
+}
+
+// HasAny returns true if any items are contained in the set.
+func (s Int32) HasAny(items ...int32) bool {
+ return cast(s).HasAny(items...)
+}
+
+// Clone returns a new set which is a copy of the current set.
+func (s Int32) Clone() Int32 {
+ return Int32(cast(s).Clone())
+}
+
+// Difference returns a set of objects that are not in s2.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.Difference(s2) = {a3}
+// s2.Difference(s1) = {a4, a5}
+func (s1 Int32) Difference(s2 Int32) Int32 {
+ return Int32(cast(s1).Difference(cast(s2)))
+}
+
+// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.SymmetricDifference(s2) = {a3, a4, a5}
+// s2.SymmetricDifference(s1) = {a3, a4, a5}
+func (s1 Int32) SymmetricDifference(s2 Int32) Int32 {
+ return Int32(cast(s1).SymmetricDifference(cast(s2)))
+}
+
+// Union returns a new set which includes items in either s1 or s2.
+// For example:
+// s1 = {a1, a2}
+// s2 = {a3, a4}
+// s1.Union(s2) = {a1, a2, a3, a4}
+// s2.Union(s1) = {a1, a2, a3, a4}
+func (s1 Int32) Union(s2 Int32) Int32 {
+ return Int32(cast(s1).Union(cast(s2)))
+}
+
+// Intersection returns a new set which includes the item in BOTH s1 and s2
+// For example:
+// s1 = {a1, a2}
+// s2 = {a2, a3}
+// s1.Intersection(s2) = {a2}
+func (s1 Int32) Intersection(s2 Int32) Int32 {
+ return Int32(cast(s1).Intersection(cast(s2)))
+}
+
+// IsSuperset returns true if and only if s1 is a superset of s2.
+func (s1 Int32) IsSuperset(s2 Int32) bool {
+ return cast(s1).IsSuperset(cast(s2))
+}
+
+// Equal returns true if and only if s1 is equal (as a set) to s2.
+// Two sets are equal if their membership is identical.
+// (In practice, this means same elements, order doesn't matter)
+func (s1 Int32) Equal(s2 Int32) bool {
+ return cast(s1).Equal(cast(s2))
+}
+
+// List returns the contents as a sorted int32 slice.
+func (s Int32) List() []int32 {
+ return List(cast(s))
+}
+
+// UnsortedList returns the slice with contents in random order.
+func (s Int32) UnsortedList() []int32 {
+ return cast(s).UnsortedList()
+}
+
+// PopAny returns a single element from the set.
+func (s Int32) PopAny() (int32, bool) {
+ return cast(s).PopAny()
+}
+
+// Len returns the size of the set.
+func (s Int32) Len() int {
+ return len(s)
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int64.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int64.go
new file mode 100644
index 000000000..bf3eb3ffa
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int64.go
@@ -0,0 +1,137 @@
+/*
+Copyright 2022 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sets
+
+// Int64 is a set of int64s, implemented via map[int64]struct{} for minimal memory consumption.
+//
+// Deprecated: use generic Set instead.
+// new ways:
+// s1 := Set[int64]{}
+// s2 := New[int64]()
+type Int64 map[int64]Empty
+
+// NewInt64 creates a Int64 from a list of values.
+func NewInt64(items ...int64) Int64 {
+ return Int64(New[int64](items...))
+}
+
+// Int64KeySet creates a Int64 from a keys of a map[int64](? extends interface{}).
+// If the value passed in is not actually a map, this will panic.
+func Int64KeySet[T any](theMap map[int64]T) Int64 {
+ return Int64(KeySet(theMap))
+}
+
+// Insert adds items to the set.
+func (s Int64) Insert(items ...int64) Int64 {
+ return Int64(cast(s).Insert(items...))
+}
+
+// Delete removes all items from the set.
+func (s Int64) Delete(items ...int64) Int64 {
+ return Int64(cast(s).Delete(items...))
+}
+
+// Has returns true if and only if item is contained in the set.
+func (s Int64) Has(item int64) bool {
+ return cast(s).Has(item)
+}
+
+// HasAll returns true if and only if all items are contained in the set.
+func (s Int64) HasAll(items ...int64) bool {
+ return cast(s).HasAll(items...)
+}
+
+// HasAny returns true if any items are contained in the set.
+func (s Int64) HasAny(items ...int64) bool {
+ return cast(s).HasAny(items...)
+}
+
+// Clone returns a new set which is a copy of the current set.
+func (s Int64) Clone() Int64 {
+ return Int64(cast(s).Clone())
+}
+
+// Difference returns a set of objects that are not in s2.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.Difference(s2) = {a3}
+// s2.Difference(s1) = {a4, a5}
+func (s1 Int64) Difference(s2 Int64) Int64 {
+ return Int64(cast(s1).Difference(cast(s2)))
+}
+
+// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.SymmetricDifference(s2) = {a3, a4, a5}
+// s2.SymmetricDifference(s1) = {a3, a4, a5}
+func (s1 Int64) SymmetricDifference(s2 Int64) Int64 {
+ return Int64(cast(s1).SymmetricDifference(cast(s2)))
+}
+
+// Union returns a new set which includes items in either s1 or s2.
+// For example:
+// s1 = {a1, a2}
+// s2 = {a3, a4}
+// s1.Union(s2) = {a1, a2, a3, a4}
+// s2.Union(s1) = {a1, a2, a3, a4}
+func (s1 Int64) Union(s2 Int64) Int64 {
+ return Int64(cast(s1).Union(cast(s2)))
+}
+
+// Intersection returns a new set which includes the item in BOTH s1 and s2
+// For example:
+// s1 = {a1, a2}
+// s2 = {a2, a3}
+// s1.Intersection(s2) = {a2}
+func (s1 Int64) Intersection(s2 Int64) Int64 {
+ return Int64(cast(s1).Intersection(cast(s2)))
+}
+
+// IsSuperset returns true if and only if s1 is a superset of s2.
+func (s1 Int64) IsSuperset(s2 Int64) bool {
+ return cast(s1).IsSuperset(cast(s2))
+}
+
+// Equal returns true if and only if s1 is equal (as a set) to s2.
+// Two sets are equal if their membership is identical.
+// (In practice, this means same elements, order doesn't matter)
+func (s1 Int64) Equal(s2 Int64) bool {
+ return cast(s1).Equal(cast(s2))
+}
+
+// List returns the contents as a sorted int64 slice.
+func (s Int64) List() []int64 {
+ return List(cast(s))
+}
+
+// UnsortedList returns the slice with contents in random order.
+func (s Int64) UnsortedList() []int64 {
+ return cast(s).UnsortedList()
+}
+
+// PopAny returns a single element from the set.
+func (s Int64) PopAny() (int64, bool) {
+ return cast(s).PopAny()
+}
+
+// Len returns the size of the set.
+func (s Int64) Len() int {
+ return len(s)
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/set.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/set.go
new file mode 100644
index 000000000..cd961c8c5
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/set.go
@@ -0,0 +1,236 @@
+/*
+Copyright 2022 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sets
+
+import (
+ "cmp"
+ "sort"
+)
+
+// Set is a set of the same type elements, implemented via map[comparable]struct{} for minimal memory consumption.
+type Set[T comparable] map[T]Empty
+
+// cast transforms specified set to generic Set[T].
+func cast[T comparable](s map[T]Empty) Set[T] { return s }
+
+// New creates a Set from a list of values.
+// NOTE: type param must be explicitly instantiated if given items are empty.
+func New[T comparable](items ...T) Set[T] {
+ ss := make(Set[T], len(items))
+ ss.Insert(items...)
+ return ss
+}
+
+// KeySet creates a Set from a keys of a map[comparable](? extends interface{}).
+// If the value passed in is not actually a map, this will panic.
+func KeySet[T comparable, V any](theMap map[T]V) Set[T] {
+ ret := make(Set[T], len(theMap))
+ for keyValue := range theMap {
+ ret.Insert(keyValue)
+ }
+ return ret
+}
+
+// Insert adds items to the set.
+func (s Set[T]) Insert(items ...T) Set[T] {
+ for _, item := range items {
+ s[item] = Empty{}
+ }
+ return s
+}
+
+func Insert[T comparable](set Set[T], items ...T) Set[T] {
+ return set.Insert(items...)
+}
+
+// Delete removes all items from the set.
+func (s Set[T]) Delete(items ...T) Set[T] {
+ for _, item := range items {
+ delete(s, item)
+ }
+ return s
+}
+
+// Clear empties the set.
+// It is preferable to replace the set with a newly constructed set,
+// but not all callers can do that (when there are other references to the map).
+func (s Set[T]) Clear() Set[T] {
+ clear(s)
+ return s
+}
+
+// Has returns true if and only if item is contained in the set.
+func (s Set[T]) Has(item T) bool {
+ _, contained := s[item]
+ return contained
+}
+
+// HasAll returns true if and only if all items are contained in the set.
+func (s Set[T]) HasAll(items ...T) bool {
+ for _, item := range items {
+ if !s.Has(item) {
+ return false
+ }
+ }
+ return true
+}
+
+// HasAny returns true if any items are contained in the set.
+func (s Set[T]) HasAny(items ...T) bool {
+ for _, item := range items {
+ if s.Has(item) {
+ return true
+ }
+ }
+ return false
+}
+
+// Clone returns a new set which is a copy of the current set.
+func (s Set[T]) Clone() Set[T] {
+ result := make(Set[T], len(s))
+ for key := range s {
+ result.Insert(key)
+ }
+ return result
+}
+
+// Difference returns a set of objects that are not in s2.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.Difference(s2) = {a3}
+// s2.Difference(s1) = {a4, a5}
+func (s1 Set[T]) Difference(s2 Set[T]) Set[T] {
+ result := New[T]()
+ for key := range s1 {
+ if !s2.Has(key) {
+ result.Insert(key)
+ }
+ }
+ return result
+}
+
+// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.SymmetricDifference(s2) = {a3, a4, a5}
+// s2.SymmetricDifference(s1) = {a3, a4, a5}
+func (s1 Set[T]) SymmetricDifference(s2 Set[T]) Set[T] {
+ return s1.Difference(s2).Union(s2.Difference(s1))
+}
+
+// Union returns a new set which includes items in either s1 or s2.
+// For example:
+// s1 = {a1, a2}
+// s2 = {a3, a4}
+// s1.Union(s2) = {a1, a2, a3, a4}
+// s2.Union(s1) = {a1, a2, a3, a4}
+func (s1 Set[T]) Union(s2 Set[T]) Set[T] {
+ result := s1.Clone()
+ for key := range s2 {
+ result.Insert(key)
+ }
+ return result
+}
+
+// Intersection returns a new set which includes the item in BOTH s1 and s2
+// For example:
+// s1 = {a1, a2}
+// s2 = {a2, a3}
+// s1.Intersection(s2) = {a2}
+func (s1 Set[T]) Intersection(s2 Set[T]) Set[T] {
+ var walk, other Set[T]
+ result := New[T]()
+ if s1.Len() < s2.Len() {
+ walk = s1
+ other = s2
+ } else {
+ walk = s2
+ other = s1
+ }
+ for key := range walk {
+ if other.Has(key) {
+ result.Insert(key)
+ }
+ }
+ return result
+}
+
+// IsSuperset returns true if and only if s1 is a superset of s2.
+func (s1 Set[T]) IsSuperset(s2 Set[T]) bool {
+ for item := range s2 {
+ if !s1.Has(item) {
+ return false
+ }
+ }
+ return true
+}
+
+// Equal returns true if and only if s1 is equal (as a set) to s2.
+// Two sets are equal if their membership is identical.
+// (In practice, this means same elements, order doesn't matter)
+func (s1 Set[T]) Equal(s2 Set[T]) bool {
+ return len(s1) == len(s2) && s1.IsSuperset(s2)
+}
+
+type sortableSliceOfGeneric[T cmp.Ordered] []T
+
+func (g sortableSliceOfGeneric[T]) Len() int { return len(g) }
+func (g sortableSliceOfGeneric[T]) Less(i, j int) bool { return less[T](g[i], g[j]) }
+func (g sortableSliceOfGeneric[T]) Swap(i, j int) { g[i], g[j] = g[j], g[i] }
+
+// List returns the contents as a sorted T slice.
+//
+// This is a separate function and not a method because not all types supported
+// by Generic are ordered and only those can be sorted.
+func List[T cmp.Ordered](s Set[T]) []T {
+ res := make(sortableSliceOfGeneric[T], 0, len(s))
+ for key := range s {
+ res = append(res, key)
+ }
+ sort.Sort(res)
+ return res
+}
+
+// UnsortedList returns the slice with contents in random order.
+func (s Set[T]) UnsortedList() []T {
+ res := make([]T, 0, len(s))
+ for key := range s {
+ res = append(res, key)
+ }
+ return res
+}
+
+// PopAny returns a single element from the set.
+func (s Set[T]) PopAny() (T, bool) {
+ for key := range s {
+ s.Delete(key)
+ return key, true
+ }
+ var zeroValue T
+ return zeroValue, false
+}
+
+// Len returns the size of the set.
+func (s Set[T]) Len() int {
+ return len(s)
+}
+
+func less[T cmp.Ordered](lhs, rhs T) bool {
+ return lhs < rhs
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/string.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/string.go
new file mode 100644
index 000000000..1dab6d13c
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/string.go
@@ -0,0 +1,137 @@
+/*
+Copyright 2022 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sets
+
+// String is a set of strings, implemented via map[string]struct{} for minimal memory consumption.
+//
+// Deprecated: use generic Set instead.
+// new ways:
+// s1 := Set[string]{}
+// s2 := New[string]()
+type String map[string]Empty
+
+// NewString creates a String from a list of values.
+func NewString(items ...string) String {
+ return String(New[string](items...))
+}
+
+// StringKeySet creates a String from a keys of a map[string](? extends interface{}).
+// If the value passed in is not actually a map, this will panic.
+func StringKeySet[T any](theMap map[string]T) String {
+ return String(KeySet(theMap))
+}
+
+// Insert adds items to the set.
+func (s String) Insert(items ...string) String {
+ return String(cast(s).Insert(items...))
+}
+
+// Delete removes all items from the set.
+func (s String) Delete(items ...string) String {
+ return String(cast(s).Delete(items...))
+}
+
+// Has returns true if and only if item is contained in the set.
+func (s String) Has(item string) bool {
+ return cast(s).Has(item)
+}
+
+// HasAll returns true if and only if all items are contained in the set.
+func (s String) HasAll(items ...string) bool {
+ return cast(s).HasAll(items...)
+}
+
+// HasAny returns true if any items are contained in the set.
+func (s String) HasAny(items ...string) bool {
+ return cast(s).HasAny(items...)
+}
+
+// Clone returns a new set which is a copy of the current set.
+func (s String) Clone() String {
+ return String(cast(s).Clone())
+}
+
+// Difference returns a set of objects that are not in s2.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.Difference(s2) = {a3}
+// s2.Difference(s1) = {a4, a5}
+func (s1 String) Difference(s2 String) String {
+ return String(cast(s1).Difference(cast(s2)))
+}
+
+// SymmetricDifference returns a set of elements which are in either of the sets, but not in their intersection.
+// For example:
+// s1 = {a1, a2, a3}
+// s2 = {a1, a2, a4, a5}
+// s1.SymmetricDifference(s2) = {a3, a4, a5}
+// s2.SymmetricDifference(s1) = {a3, a4, a5}
+func (s1 String) SymmetricDifference(s2 String) String {
+ return String(cast(s1).SymmetricDifference(cast(s2)))
+}
+
+// Union returns a new set which includes items in either s1 or s2.
+// For example:
+// s1 = {a1, a2}
+// s2 = {a3, a4}
+// s1.Union(s2) = {a1, a2, a3, a4}
+// s2.Union(s1) = {a1, a2, a3, a4}
+func (s1 String) Union(s2 String) String {
+ return String(cast(s1).Union(cast(s2)))
+}
+
+// Intersection returns a new set which includes the item in BOTH s1 and s2
+// For example:
+// s1 = {a1, a2}
+// s2 = {a2, a3}
+// s1.Intersection(s2) = {a2}
+func (s1 String) Intersection(s2 String) String {
+ return String(cast(s1).Intersection(cast(s2)))
+}
+
+// IsSuperset returns true if and only if s1 is a superset of s2.
+func (s1 String) IsSuperset(s2 String) bool {
+ return cast(s1).IsSuperset(cast(s2))
+}
+
+// Equal returns true if and only if s1 is equal (as a set) to s2.
+// Two sets are equal if their membership is identical.
+// (In practice, this means same elements, order doesn't matter)
+func (s1 String) Equal(s2 String) bool {
+ return cast(s1).Equal(cast(s2))
+}
+
+// List returns the contents as a sorted string slice.
+func (s String) List() []string {
+ return List(cast(s))
+}
+
+// UnsortedList returns the slice with contents in random order.
+func (s String) UnsortedList() []string {
+ return cast(s).UnsortedList()
+}
+
+// PopAny returns a single element from the set.
+func (s String) PopAny() (string, bool) {
+ return cast(s).PopAny()
+}
+
+// Len returns the size of the set.
+func (s String) Len() int {
+ return len(s)
+}
diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/version/version.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/version/version.go
new file mode 100644
index 000000000..7d6a3309b
--- /dev/null
+++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/version/version.go
@@ -0,0 +1,11 @@
+package version
+
+var (
+ // CommitFromGit is a constant representing the source version that
+ // generated this build. It should be set during build via -ldflags.
+ CommitFromGit string
+ // BuildDate in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')
+ BuildDate string
+ // GitTreeState has the state of git tree, either "clean" or "dirty"
+ GitTreeState string
+)
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/config.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/config.go
index 296407f38..ab091cf6a 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/config.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/config.go
@@ -9,12 +9,18 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/metric"
+ "go.opentelemetry.io/otel/metric/noop"
"go.opentelemetry.io/otel/propagation"
+ semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
"go.opentelemetry.io/otel/trace"
)
-// ScopeName is the instrumentation scope name.
-const ScopeName = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
+const (
+ // ScopeName is the instrumentation scope name.
+ ScopeName = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
+ // GRPCStatusCodeKey is convention for numeric status code of a gRPC request.
+ GRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code")
+)
// InterceptorFilter is a predicate used to determine whether a given request in
// interceptor info should be instrumented. A InterceptorFilter must return true if
@@ -36,11 +42,18 @@ type config struct {
TracerProvider trace.TracerProvider
MeterProvider metric.MeterProvider
SpanStartOptions []trace.SpanStartOption
- SpanAttributes []attribute.KeyValue
- MetricAttributes []attribute.KeyValue
ReceivedEvent bool
SentEvent bool
+
+ tracer trace.Tracer
+ meter metric.Meter
+
+ rpcDuration metric.Float64Histogram
+ rpcRequestSize metric.Int64Histogram
+ rpcResponseSize metric.Int64Histogram
+ rpcRequestsPerRPC metric.Int64Histogram
+ rpcResponsesPerRPC metric.Int64Histogram
}
// Option applies an option value for a config.
@@ -49,7 +62,7 @@ type Option interface {
}
// newConfig returns a config configured with all the passed Options.
-func newConfig(opts []Option) *config {
+func newConfig(opts []Option, role string) *config {
c := &config{
Propagators: otel.GetTextMapPropagator(),
TracerProvider: otel.GetTracerProvider(),
@@ -58,6 +71,69 @@ func newConfig(opts []Option) *config {
for _, o := range opts {
o.apply(c)
}
+
+ c.tracer = c.TracerProvider.Tracer(
+ ScopeName,
+ trace.WithInstrumentationVersion(SemVersion()),
+ )
+
+ c.meter = c.MeterProvider.Meter(
+ ScopeName,
+ metric.WithInstrumentationVersion(Version()),
+ metric.WithSchemaURL(semconv.SchemaURL),
+ )
+
+ var err error
+ c.rpcDuration, err = c.meter.Float64Histogram("rpc."+role+".duration",
+ metric.WithDescription("Measures the duration of inbound RPC."),
+ metric.WithUnit("ms"))
+ if err != nil {
+ otel.Handle(err)
+ if c.rpcDuration == nil {
+ c.rpcDuration = noop.Float64Histogram{}
+ }
+ }
+
+ c.rpcRequestSize, err = c.meter.Int64Histogram("rpc."+role+".request.size",
+ metric.WithDescription("Measures size of RPC request messages (uncompressed)."),
+ metric.WithUnit("By"))
+ if err != nil {
+ otel.Handle(err)
+ if c.rpcRequestSize == nil {
+ c.rpcRequestSize = noop.Int64Histogram{}
+ }
+ }
+
+ c.rpcResponseSize, err = c.meter.Int64Histogram("rpc."+role+".response.size",
+ metric.WithDescription("Measures size of RPC response messages (uncompressed)."),
+ metric.WithUnit("By"))
+ if err != nil {
+ otel.Handle(err)
+ if c.rpcResponseSize == nil {
+ c.rpcResponseSize = noop.Int64Histogram{}
+ }
+ }
+
+ c.rpcRequestsPerRPC, err = c.meter.Int64Histogram("rpc."+role+".requests_per_rpc",
+ metric.WithDescription("Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs."),
+ metric.WithUnit("{count}"))
+ if err != nil {
+ otel.Handle(err)
+ if c.rpcRequestsPerRPC == nil {
+ c.rpcRequestsPerRPC = noop.Int64Histogram{}
+ }
+ }
+
+ c.rpcResponsesPerRPC, err = c.meter.Int64Histogram("rpc."+role+".responses_per_rpc",
+ metric.WithDescription("Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs."),
+ metric.WithUnit("{count}"))
+ if err != nil {
+ otel.Handle(err)
+ if c.rpcResponsesPerRPC == nil {
+ c.rpcResponsesPerRPC = noop.Int64Histogram{}
+ }
+ }
+
return c
}
@@ -181,29 +257,3 @@ func (o spanStartOption) apply(c *config) {
func WithSpanOptions(opts ...trace.SpanStartOption) Option {
return spanStartOption{opts}
}
-
-type spanAttributesOption struct{ a []attribute.KeyValue }
-
-func (o spanAttributesOption) apply(c *config) {
- if o.a != nil {
- c.SpanAttributes = o.a
- }
-}
-
-// WithSpanAttributes returns an Option to add custom attributes to the spans.
-func WithSpanAttributes(a ...attribute.KeyValue) Option {
- return spanAttributesOption{a: a}
-}
-
-type metricAttributesOption struct{ a []attribute.KeyValue }
-
-func (o metricAttributesOption) apply(c *config) {
- if o.a != nil {
- c.MetricAttributes = o.a
- }
-}
-
-// WithMetricAttributes returns an Option to add custom attributes to the metrics.
-func WithMetricAttributes(a ...attribute.KeyValue) Option {
- return metricAttributesOption{a: a}
-}
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go
index f63513d45..7d5ed0580 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/interceptor.go
@@ -11,6 +11,7 @@ import (
"io"
"net"
"strconv"
+ "time"
"google.golang.org/grpc"
grpc_codes "google.golang.org/grpc/codes"
@@ -22,7 +23,8 @@ import (
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
- semconv "go.opentelemetry.io/otel/semconv/v1.30.0"
+ "go.opentelemetry.io/otel/metric"
+ semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
"go.opentelemetry.io/otel/trace"
)
@@ -37,15 +39,82 @@ func (m messageType) Event(ctx context.Context, id int, _ interface{}) {
}
span.AddEvent("message", trace.WithAttributes(
attribute.KeyValue(m),
- semconv.RPCMessageIDKey.Int(id),
+ RPCMessageIDKey.Int(id),
))
}
var (
- messageSent = messageType(semconv.RPCMessageTypeSent)
- messageReceived = messageType(semconv.RPCMessageTypeReceived)
+ messageSent = messageType(RPCMessageTypeSent)
+ messageReceived = messageType(RPCMessageTypeReceived)
)
+// UnaryClientInterceptor returns a grpc.UnaryClientInterceptor suitable
+// for use in a grpc.NewClient call.
+//
+// Deprecated: Use [NewClientHandler] instead.
+func UnaryClientInterceptor(opts ...Option) grpc.UnaryClientInterceptor {
+ cfg := newConfig(opts, "client")
+ tracer := cfg.TracerProvider.Tracer(
+ ScopeName,
+ trace.WithInstrumentationVersion(Version()),
+ )
+
+ return func(
+ ctx context.Context,
+ method string,
+ req, reply interface{},
+ cc *grpc.ClientConn,
+ invoker grpc.UnaryInvoker,
+ callOpts ...grpc.CallOption,
+ ) error {
+ i := &InterceptorInfo{
+ Method: method,
+ Type: UnaryClient,
+ }
+ if cfg.InterceptorFilter != nil && !cfg.InterceptorFilter(i) {
+ return invoker(ctx, method, req, reply, cc, callOpts...)
+ }
+
+ name, attr, _ := telemetryAttributes(method, cc.Target())
+
+ startOpts := append([]trace.SpanStartOption{
+ trace.WithSpanKind(trace.SpanKindClient),
+ trace.WithAttributes(attr...),
+ },
+ cfg.SpanStartOptions...,
+ )
+
+ ctx, span := tracer.Start(
+ ctx,
+ name,
+ startOpts...,
+ )
+ defer span.End()
+
+ ctx = inject(ctx, cfg.Propagators)
+
+ if cfg.SentEvent {
+ messageSent.Event(ctx, 1, req)
+ }
+
+ err := invoker(ctx, method, req, reply, cc, callOpts...)
+
+ if cfg.ReceivedEvent {
+ messageReceived.Event(ctx, 1, reply)
+ }
+
+ if err != nil {
+ s, _ := status.FromError(err)
+ span.SetStatus(codes.Error, s.Message())
+ span.SetAttributes(statusCodeAttr(s.Code()))
+ } else {
+ span.SetAttributes(statusCodeAttr(grpc_codes.OK))
+ }
+
+ return err
+ }
+}
+
// clientStream wraps around the embedded grpc.ClientStream, and intercepts the RecvMsg and
// SendMsg method call.
type clientStream struct {
@@ -144,7 +213,7 @@ func (w *clientStream) endSpan(err error) {
//
// Deprecated: Use [NewClientHandler] instead.
func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor {
- cfg := newConfig(opts)
+ cfg := newConfig(opts, "client")
tracer := cfg.TracerProvider.Tracer(
ScopeName,
trace.WithInstrumentationVersion(Version()),
@@ -166,7 +235,7 @@ func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor {
return streamer(ctx, desc, cc, method, callOpts...)
}
- name, attr := telemetryAttributes(method, cc.Target())
+ name, attr, _ := telemetryAttributes(method, cc.Target())
startOpts := append([]trace.SpanStartOption{
trace.WithSpanKind(trace.SpanKindClient),
@@ -196,6 +265,81 @@ func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor {
}
}
+// UnaryServerInterceptor returns a grpc.UnaryServerInterceptor suitable
+// for use in a grpc.NewServer call.
+//
+// Deprecated: Use [NewServerHandler] instead.
+func UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptor {
+ cfg := newConfig(opts, "server")
+ tracer := cfg.TracerProvider.Tracer(
+ ScopeName,
+ trace.WithInstrumentationVersion(Version()),
+ )
+
+ return func(
+ ctx context.Context,
+ req interface{},
+ info *grpc.UnaryServerInfo,
+ handler grpc.UnaryHandler,
+ ) (interface{}, error) {
+ i := &InterceptorInfo{
+ UnaryServerInfo: info,
+ Type: UnaryServer,
+ }
+ if cfg.InterceptorFilter != nil && !cfg.InterceptorFilter(i) {
+ return handler(ctx, req)
+ }
+
+ ctx = extract(ctx, cfg.Propagators)
+ name, attr, metricAttrs := telemetryAttributes(info.FullMethod, peerFromCtx(ctx))
+
+ startOpts := append([]trace.SpanStartOption{
+ trace.WithSpanKind(trace.SpanKindServer),
+ trace.WithAttributes(attr...),
+ },
+ cfg.SpanStartOptions...,
+ )
+
+ ctx, span := tracer.Start(
+ trace.ContextWithRemoteSpanContext(ctx, trace.SpanContextFromContext(ctx)),
+ name,
+ startOpts...,
+ )
+ defer span.End()
+
+ if cfg.ReceivedEvent {
+ messageReceived.Event(ctx, 1, req)
+ }
+
+ before := time.Now()
+
+ resp, err := handler(ctx, req)
+
+ s, _ := status.FromError(err)
+ if err != nil {
+ statusCode, msg := serverStatus(s)
+ span.SetStatus(statusCode, msg)
+ if cfg.SentEvent {
+ messageSent.Event(ctx, 1, s.Proto())
+ }
+ } else {
+ if cfg.SentEvent {
+ messageSent.Event(ctx, 1, resp)
+ }
+ }
+ grpcStatusCodeAttr := statusCodeAttr(s.Code())
+ span.SetAttributes(grpcStatusCodeAttr)
+
+ // Use floating point division here for higher precision (instead of Millisecond method).
+ elapsedTime := float64(time.Since(before)) / float64(time.Millisecond)
+
+ metricAttrs = append(metricAttrs, grpcStatusCodeAttr)
+ cfg.rpcDuration.Record(ctx, elapsedTime, metric.WithAttributeSet(attribute.NewSet(metricAttrs...)))
+
+ return resp, err
+ }
+}
+
// serverStream wraps around the embedded grpc.ServerStream, and intercepts the RecvMsg and
// SendMsg method call.
type serverStream struct {
@@ -251,7 +395,7 @@ func wrapServerStream(ctx context.Context, ss grpc.ServerStream, cfg *config) *s
//
// Deprecated: Use [NewServerHandler] instead.
func StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor {
- cfg := newConfig(opts)
+ cfg := newConfig(opts, "server")
tracer := cfg.TracerProvider.Tracer(
ScopeName,
trace.WithInstrumentationVersion(Version()),
@@ -273,7 +417,7 @@ func StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor {
}
ctx = extract(ctx, cfg.Propagators)
- name, attr := telemetryAttributes(info.FullMethod, peerFromCtx(ctx))
+ name, attr, _ := telemetryAttributes(info.FullMethod, peerFromCtx(ctx))
startOpts := append([]trace.SpanStartOption{
trace.WithSpanKind(trace.SpanKindServer),
@@ -305,32 +449,47 @@ func StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor {
// telemetryAttributes returns a span name and span and metric attributes from
// the gRPC method and peer address.
-func telemetryAttributes(fullMethod, sererAddr string) (string, []attribute.KeyValue) {
+func telemetryAttributes(fullMethod, peerAddress string) (string, []attribute.KeyValue, []attribute.KeyValue) {
name, methodAttrs := internal.ParseFullMethod(fullMethod)
- srvAttrs := serverAddrAttrs(sererAddr)
+ peerAttrs := peerAttr(peerAddress)
- attrs := make([]attribute.KeyValue, 0, 1+len(methodAttrs)+len(srvAttrs))
- attrs = append(attrs, semconv.RPCSystemGRPC)
+ attrs := make([]attribute.KeyValue, 0, 1+len(methodAttrs)+len(peerAttrs))
+ attrs = append(attrs, RPCSystemGRPC)
attrs = append(attrs, methodAttrs...)
- attrs = append(attrs, srvAttrs...)
- return name, attrs
+ metricAttrs := attrs[:1+len(methodAttrs)]
+ attrs = append(attrs, peerAttrs...)
+ return name, attrs, metricAttrs
}
-// serverAddrAttrs returns the server address attributes for the hostport.
-func serverAddrAttrs(hostport string) []attribute.KeyValue {
- h, pStr, err := net.SplitHostPort(hostport)
+// peerAttr returns attributes about the peer address.
+func peerAttr(addr string) []attribute.KeyValue {
+ host, p, err := net.SplitHostPort(addr)
if err != nil {
- // The server.address attribute is required.
- return []attribute.KeyValue{semconv.ServerAddress(hostport)}
+ return nil
}
- p, err := strconv.Atoi(pStr)
+
+ if host == "" {
+ host = "127.0.0.1"
+ }
+ port, err := strconv.Atoi(p)
if err != nil {
- return []attribute.KeyValue{semconv.ServerAddress(h)}
+ return nil
}
- return []attribute.KeyValue{
- semconv.ServerAddress(h),
- semconv.ServerPort(p),
+
+ var attr []attribute.KeyValue
+ if ip := net.ParseIP(host); ip != nil {
+ attr = []attribute.KeyValue{
+ semconv.NetSockPeerAddr(host),
+ semconv.NetSockPeerPort(port),
+ }
+ } else {
+ attr = []attribute.KeyValue{
+ semconv.NetPeerName(host),
+ semconv.NetPeerPort(port),
+ }
}
+
+ return attr
}
// peerFromCtx returns a peer address from a context, if one exists.
@@ -344,7 +503,7 @@ func peerFromCtx(ctx context.Context) string {
// statusCodeAttr returns status code attribute based on given gRPC code.
func statusCodeAttr(c grpc_codes.Code) attribute.KeyValue {
- return semconv.RPCGRPCStatusCodeKey.Int64(int64(c))
+ return GRPCStatusCodeKey.Int64(int64(c))
}
// serverStatus returns a span status code and message for a given gRPC
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go
index 1fa73c2f9..bef07b7a3 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go
@@ -1,14 +1,13 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-// Package internal provides internal functionality for the otelgrpc package.
package internal // import "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal"
import (
"strings"
"go.opentelemetry.io/otel/attribute"
- semconv "go.opentelemetry.io/otel/semconv/v1.30.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
)
// ParseFullMethod returns a span name following the OpenTelemetry semantic
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/metadata_supplier.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/metadata_supplier.go
index 6e67f0216..3aa37915d 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/metadata_supplier.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/metadata_supplier.go
@@ -45,7 +45,7 @@ func (s *metadataSupplier) Keys() []string {
// requests.
// Deprecated: Unnecessary public func.
func Inject(ctx context.Context, md *metadata.MD, opts ...Option) {
- c := newConfig(opts)
+ c := newConfig(opts, "")
c.Propagators.Inject(ctx, &metadataSupplier{
metadata: md,
})
@@ -67,7 +67,7 @@ func inject(ctx context.Context, propagators propagation.TextMapPropagator) cont
// This function is meant to be used on incoming requests.
// Deprecated: Unnecessary public func.
func Extract(ctx context.Context, md *metadata.MD, opts ...Option) (baggage.Baggage, trace.SpanContext) {
- c := newConfig(opts)
+ c := newConfig(opts, "")
ctx = c.Propagators.Extract(ctx, &metadataSupplier{
metadata: md,
})
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/semconv.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/semconv.go
new file mode 100644
index 000000000..409c621b7
--- /dev/null
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/semconv.go
@@ -0,0 +1,41 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package otelgrpc // import "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
+
+import (
+ "go.opentelemetry.io/otel/attribute"
+ semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
+)
+
+// Semantic conventions for attribute keys for gRPC.
+const (
+ // Name of message transmitted or received.
+ RPCNameKey = attribute.Key("name")
+
+ // Type of message transmitted or received.
+ RPCMessageTypeKey = attribute.Key("message.type")
+
+ // Identifier of message transmitted or received.
+ RPCMessageIDKey = attribute.Key("message.id")
+
+ // The compressed size of the message transmitted or received in bytes.
+ RPCMessageCompressedSizeKey = attribute.Key("message.compressed_size")
+
+ // The uncompressed size of the message transmitted or received in
+ // bytes.
+ RPCMessageUncompressedSizeKey = attribute.Key("message.uncompressed_size")
+)
+
+// Semantic conventions for common RPC attributes.
+var (
+ // Semantic convention for gRPC as the remoting system.
+ RPCSystemGRPC = semconv.RPCSystemGRPC
+
+ // Semantic convention for a message named message.
+ RPCNameMessage = RPCNameKey.String("message")
+
+ // Semantic conventions for RPC message types.
+ RPCMessageTypeSent = RPCMessageTypeKey.String("SENT")
+ RPCMessageTypeReceived = RPCMessageTypeKey.String("RECEIVED")
+)
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/stats_handler.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/stats_handler.go
index 9bec51df3..201867a86 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/stats_handler.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/stats_handler.go
@@ -13,113 +13,31 @@ import (
"google.golang.org/grpc/stats"
"google.golang.org/grpc/status"
- "go.opentelemetry.io/otel"
+ "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/metric"
- "go.opentelemetry.io/otel/metric/noop"
- semconv "go.opentelemetry.io/otel/semconv/v1.30.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
"go.opentelemetry.io/otel/trace"
-
- "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal"
)
type gRPCContextKey struct{}
type gRPCContext struct {
- inMessages int64
- outMessages int64
- metricAttrs []attribute.KeyValue
- record bool
+ messagesReceived int64
+ messagesSent int64
+ metricAttrs []attribute.KeyValue
+ record bool
}
type serverHandler struct {
*config
-
- tracer trace.Tracer
-
- duration metric.Float64Histogram
- inSize metric.Int64Histogram
- outSize metric.Int64Histogram
- inMsg metric.Int64Histogram
- outMsg metric.Int64Histogram
}
// NewServerHandler creates a stats.Handler for a gRPC server.
func NewServerHandler(opts ...Option) stats.Handler {
- c := newConfig(opts)
- h := &serverHandler{config: c}
-
- h.tracer = c.TracerProvider.Tracer(
- ScopeName,
- trace.WithInstrumentationVersion(Version()),
- )
-
- meter := c.MeterProvider.Meter(
- ScopeName,
- metric.WithInstrumentationVersion(Version()),
- metric.WithSchemaURL(semconv.SchemaURL),
- )
-
- var err error
- h.duration, err = meter.Float64Histogram(
- semconv.RPCServerDurationName,
- metric.WithDescription(semconv.RPCServerDurationDescription),
- metric.WithUnit(semconv.RPCServerDurationUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.duration == nil {
- h.duration = noop.Float64Histogram{}
- }
- }
-
- h.inSize, err = meter.Int64Histogram(
- semconv.RPCServerRequestSizeName,
- metric.WithDescription(semconv.RPCServerRequestSizeDescription),
- metric.WithUnit(semconv.RPCServerRequestSizeUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.inSize == nil {
- h.inSize = noop.Int64Histogram{}
- }
- }
-
- h.outSize, err = meter.Int64Histogram(
- semconv.RPCServerResponseSizeName,
- metric.WithDescription(semconv.RPCServerResponseSizeDescription),
- metric.WithUnit(semconv.RPCServerResponseSizeUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.outSize == nil {
- h.outSize = noop.Int64Histogram{}
- }
- }
-
- h.inMsg, err = meter.Int64Histogram(
- semconv.RPCServerRequestsPerRPCName,
- metric.WithDescription(semconv.RPCServerRequestsPerRPCDescription),
- metric.WithUnit(semconv.RPCServerRequestsPerRPCUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.inMsg == nil {
- h.inMsg = noop.Int64Histogram{}
- }
- }
-
- h.outMsg, err = meter.Int64Histogram(
- semconv.RPCServerResponsesPerRPCName,
- metric.WithDescription(semconv.RPCServerResponsesPerRPCDescription),
- metric.WithUnit(semconv.RPCServerResponsesPerRPCUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.outMsg == nil {
- h.outMsg = noop.Int64Histogram{}
- }
+ h := &serverHandler{
+ config: newConfig(opts, "server"),
}
return h
@@ -136,125 +54,41 @@ func (h *serverHandler) HandleConn(ctx context.Context, info stats.ConnStats) {
// TagRPC can attach some information to the given context.
func (h *serverHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context {
- ctx = extract(ctx, h.Propagators)
+ ctx = extract(ctx, h.config.Propagators)
name, attrs := internal.ParseFullMethod(info.FullMethodName)
- attrs = append(attrs, semconv.RPCSystemGRPC)
-
- record := true
- if h.Filter != nil {
- record = h.Filter(info)
- }
-
- if record {
- ctx, _ = h.tracer.Start(
- trace.ContextWithRemoteSpanContext(ctx, trace.SpanContextFromContext(ctx)),
- name,
- trace.WithSpanKind(trace.SpanKindServer),
- trace.WithAttributes(append(attrs, h.SpanAttributes...)...),
- )
- }
+ attrs = append(attrs, RPCSystemGRPC)
+ ctx, _ = h.tracer.Start(
+ trace.ContextWithRemoteSpanContext(ctx, trace.SpanContextFromContext(ctx)),
+ name,
+ trace.WithSpanKind(trace.SpanKindServer),
+ trace.WithAttributes(attrs...),
+ )
gctx := gRPCContext{
- metricAttrs: append(attrs, h.MetricAttributes...),
- record: record,
+ metricAttrs: attrs,
+ record: true,
+ }
+ if h.config.Filter != nil {
+ gctx.record = h.config.Filter(info)
}
-
return context.WithValue(ctx, gRPCContextKey{}, &gctx)
}
// HandleRPC processes the RPC stats.
func (h *serverHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) {
- h.handleRPC(ctx, rs, h.duration, h.inSize, h.outSize, h.inMsg, h.outMsg, serverStatus)
+ isServer := true
+ h.handleRPC(ctx, rs, isServer)
}
type clientHandler struct {
*config
-
- tracer trace.Tracer
-
- duration metric.Float64Histogram
- inSize metric.Int64Histogram
- outSize metric.Int64Histogram
- inMsg metric.Int64Histogram
- outMsg metric.Int64Histogram
}
// NewClientHandler creates a stats.Handler for a gRPC client.
func NewClientHandler(opts ...Option) stats.Handler {
- c := newConfig(opts)
- h := &clientHandler{config: c}
-
- h.tracer = c.TracerProvider.Tracer(
- ScopeName,
- trace.WithInstrumentationVersion(Version()),
- )
-
- meter := c.MeterProvider.Meter(
- ScopeName,
- metric.WithInstrumentationVersion(Version()),
- metric.WithSchemaURL(semconv.SchemaURL),
- )
-
- var err error
- h.duration, err = meter.Float64Histogram(
- semconv.RPCClientDurationName,
- metric.WithDescription(semconv.RPCClientDurationDescription),
- metric.WithUnit(semconv.RPCClientDurationUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.duration == nil {
- h.duration = noop.Float64Histogram{}
- }
- }
-
- h.outSize, err = meter.Int64Histogram(
- semconv.RPCClientRequestSizeName,
- metric.WithDescription(semconv.RPCClientRequestSizeDescription),
- metric.WithUnit(semconv.RPCClientRequestSizeUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.outSize == nil {
- h.outSize = noop.Int64Histogram{}
- }
- }
-
- h.inSize, err = meter.Int64Histogram(
- semconv.RPCClientResponseSizeName,
- metric.WithDescription(semconv.RPCClientResponseSizeDescription),
- metric.WithUnit(semconv.RPCClientResponseSizeUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.inSize == nil {
- h.inSize = noop.Int64Histogram{}
- }
- }
-
- h.outMsg, err = meter.Int64Histogram(
- semconv.RPCClientRequestsPerRPCName,
- metric.WithDescription(semconv.RPCClientRequestsPerRPCDescription),
- metric.WithUnit(semconv.RPCClientRequestsPerRPCUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.outMsg == nil {
- h.outMsg = noop.Int64Histogram{}
- }
- }
-
- h.inMsg, err = meter.Int64Histogram(
- semconv.RPCClientResponsesPerRPCName,
- metric.WithDescription(semconv.RPCClientResponsesPerRPCDescription),
- metric.WithUnit(semconv.RPCClientResponsesPerRPCUnit),
- )
- if err != nil {
- otel.Handle(err)
- if h.inMsg == nil {
- h.inMsg = noop.Int64Histogram{}
- }
+ h := &clientHandler{
+ config: newConfig(opts, "client"),
}
return h
@@ -263,38 +97,29 @@ func NewClientHandler(opts ...Option) stats.Handler {
// TagRPC can attach some information to the given context.
func (h *clientHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context {
name, attrs := internal.ParseFullMethod(info.FullMethodName)
- attrs = append(attrs, semconv.RPCSystemGRPC)
-
- record := true
- if h.Filter != nil {
- record = h.Filter(info)
- }
-
- if record {
- ctx, _ = h.tracer.Start(
- ctx,
- name,
- trace.WithSpanKind(trace.SpanKindClient),
- trace.WithAttributes(append(attrs, h.SpanAttributes...)...),
- )
- }
+ attrs = append(attrs, RPCSystemGRPC)
+ ctx, _ = h.tracer.Start(
+ ctx,
+ name,
+ trace.WithSpanKind(trace.SpanKindClient),
+ trace.WithAttributes(attrs...),
+ )
gctx := gRPCContext{
- metricAttrs: append(attrs, h.MetricAttributes...),
- record: record,
+ metricAttrs: attrs,
+ record: true,
+ }
+ if h.config.Filter != nil {
+ gctx.record = h.config.Filter(info)
}
- return inject(context.WithValue(ctx, gRPCContextKey{}, &gctx), h.Propagators)
+ return inject(context.WithValue(ctx, gRPCContextKey{}, &gctx), h.config.Propagators)
}
// HandleRPC processes the RPC stats.
func (h *clientHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) {
- h.handleRPC(
- ctx, rs, h.duration, h.inSize, h.outSize, h.inMsg, h.outMsg,
- func(s *status.Status) (codes.Code, string) {
- return codes.Error, s.Message()
- },
- )
+ isServer := false
+ h.handleRPC(ctx, rs, isServer)
}
// TagConn can attach some information to the given context.
@@ -307,86 +132,77 @@ func (h *clientHandler) HandleConn(context.Context, stats.ConnStats) {
// no-op
}
-func (c *config) handleRPC(
- ctx context.Context,
- rs stats.RPCStats,
- duration metric.Float64Histogram,
- inSize, outSize, inMsg, outMsg metric.Int64Histogram,
- recordStatus func(*status.Status) (codes.Code, string),
-) {
- gctx, _ := ctx.Value(gRPCContextKey{}).(*gRPCContext)
- if gctx != nil && !gctx.record {
- return
- }
-
+func (c *config) handleRPC(ctx context.Context, rs stats.RPCStats, isServer bool) { // nolint: revive // isServer is not a control flag.
span := trace.SpanFromContext(ctx)
+ var metricAttrs []attribute.KeyValue
var messageId int64
+ gctx, _ := ctx.Value(gRPCContextKey{}).(*gRPCContext)
+ if gctx != nil {
+ if !gctx.record {
+ return
+ }
+ metricAttrs = make([]attribute.KeyValue, 0, len(gctx.metricAttrs)+1)
+ metricAttrs = append(metricAttrs, gctx.metricAttrs...)
+ }
+
switch rs := rs.(type) {
case *stats.Begin:
case *stats.InPayload:
if gctx != nil {
- messageId = atomic.AddInt64(&gctx.inMessages, 1)
- inSize.Record(ctx, int64(rs.Length), metric.WithAttributes(gctx.metricAttrs...))
+ messageId = atomic.AddInt64(&gctx.messagesReceived, 1)
+ c.rpcRequestSize.Record(ctx, int64(rs.Length), metric.WithAttributeSet(attribute.NewSet(metricAttrs...)))
}
- if c.ReceivedEvent && span.IsRecording() {
+ if c.ReceivedEvent {
span.AddEvent("message",
trace.WithAttributes(
- semconv.RPCMessageTypeReceived,
- semconv.RPCMessageIDKey.Int64(messageId),
- semconv.RPCMessageCompressedSizeKey.Int(rs.CompressedLength),
- semconv.RPCMessageUncompressedSizeKey.Int(rs.Length),
+ semconv.MessageTypeReceived,
+ semconv.MessageIDKey.Int64(messageId),
+ semconv.MessageCompressedSizeKey.Int(rs.CompressedLength),
+ semconv.MessageUncompressedSizeKey.Int(rs.Length),
),
)
}
case *stats.OutPayload:
if gctx != nil {
- messageId = atomic.AddInt64(&gctx.outMessages, 1)
- outSize.Record(ctx, int64(rs.Length), metric.WithAttributes(gctx.metricAttrs...))
+ messageId = atomic.AddInt64(&gctx.messagesSent, 1)
+ c.rpcResponseSize.Record(ctx, int64(rs.Length), metric.WithAttributeSet(attribute.NewSet(metricAttrs...)))
}
- if c.SentEvent && span.IsRecording() {
+ if c.SentEvent {
span.AddEvent("message",
trace.WithAttributes(
- semconv.RPCMessageTypeSent,
- semconv.RPCMessageIDKey.Int64(messageId),
- semconv.RPCMessageCompressedSizeKey.Int(rs.CompressedLength),
- semconv.RPCMessageUncompressedSizeKey.Int(rs.Length),
+ semconv.MessageTypeSent,
+ semconv.MessageIDKey.Int64(messageId),
+ semconv.MessageCompressedSizeKey.Int(rs.CompressedLength),
+ semconv.MessageUncompressedSizeKey.Int(rs.Length),
),
)
}
case *stats.OutTrailer:
case *stats.OutHeader:
- if span.IsRecording() {
- if p, ok := peer.FromContext(ctx); ok {
- span.SetAttributes(serverAddrAttrs(p.Addr.String())...)
- }
+ if p, ok := peer.FromContext(ctx); ok {
+ span.SetAttributes(peerAttr(p.Addr.String())...)
}
case *stats.End:
var rpcStatusAttr attribute.KeyValue
- var s *status.Status
if rs.Error != nil {
- s, _ = status.FromError(rs.Error)
+ s, _ := status.FromError(rs.Error)
+ if isServer {
+ statusCode, msg := serverStatus(s)
+ span.SetStatus(statusCode, msg)
+ } else {
+ span.SetStatus(codes.Error, s.Message())
+ }
rpcStatusAttr = semconv.RPCGRPCStatusCodeKey.Int(int(s.Code()))
} else {
rpcStatusAttr = semconv.RPCGRPCStatusCodeKey.Int(int(grpc_codes.OK))
}
- if span.IsRecording() {
- if s != nil {
- c, m := recordStatus(s)
- span.SetStatus(c, m)
- }
- span.SetAttributes(rpcStatusAttr)
- span.End()
- }
+ span.SetAttributes(rpcStatusAttr)
+ span.End()
- var metricAttrs []attribute.KeyValue
- if gctx != nil {
- metricAttrs = make([]attribute.KeyValue, 0, len(gctx.metricAttrs)+1)
- metricAttrs = append(metricAttrs, gctx.metricAttrs...)
- }
metricAttrs = append(metricAttrs, rpcStatusAttr)
// Allocate vararg slice once.
recordOpts := []metric.RecordOption{metric.WithAttributeSet(attribute.NewSet(metricAttrs...))}
@@ -395,10 +211,10 @@ func (c *config) handleRPC(
// Measure right before calling Record() to capture as much elapsed time as possible.
elapsedTime := float64(rs.EndTime.Sub(rs.BeginTime)) / float64(time.Millisecond)
- duration.Record(ctx, elapsedTime, recordOpts...)
+ c.rpcDuration.Record(ctx, elapsedTime, recordOpts...)
if gctx != nil {
- inMsg.Record(ctx, atomic.LoadInt64(&gctx.inMessages), recordOpts...)
- outMsg.Record(ctx, atomic.LoadInt64(&gctx.outMessages), recordOpts...)
+ c.rpcRequestsPerRPC.Record(ctx, atomic.LoadInt64(&gctx.messagesReceived), recordOpts...)
+ c.rpcResponsesPerRPC.Record(ctx, atomic.LoadInt64(&gctx.messagesSent), recordOpts...)
}
default:
return
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/version.go b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/version.go
index b1feeca49..a15d06cb0 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/version.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/version.go
@@ -5,6 +5,13 @@ package otelgrpc // import "go.opentelemetry.io/contrib/instrumentation/google.g
// Version is the current release version of the gRPC instrumentation.
func Version() string {
- return "0.61.0"
+ return "0.53.0"
// This string is updated by the pre_release.sh script during release
}
+
+// SemVersion is the semantic version to be supplied to tracer/meter creation.
+//
+// Deprecated: Use [Version] instead.
+func SemVersion() string {
+ return Version()
+}
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/MIGRATION.md b/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/MIGRATION.md
deleted file mode 100644
index 8a11ea28d..000000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/MIGRATION.md
+++ /dev/null
@@ -1,155 +0,0 @@
-# Semantic Convention Changes
-
-The `go.opentelemetry.io/otel/semconv/v1.30.0` should be a drop-in replacement for `go.opentelemetry.io/otel/semconv/v1.28.0` with the following exceptions.
-
-Note: `go.opentelemetry.io/otel/semconv/v1.29.0` does not exist due to bugs from the upstream [OpenTelemetry Semantic Conventions].
-
-## Dropped deprecations
-
-The following declarations have been deprecated in the [OpenTelemetry Semantic Conventions].
-Refer to the respective documentation in that repository for deprecation instructions for each type.
-
-- `CodeColumn`
-- `CodeColumnKey`
-- `CodeFunction`
-- `CodeFunctionKey`
-- `DBCassandraConsistencyLevelAll`
-- `DBCassandraConsistencyLevelAny`
-- `DBCassandraConsistencyLevelEachQuorum`
-- `DBCassandraConsistencyLevelKey`
-- `DBCassandraConsistencyLevelLocalOne`
-- `DBCassandraConsistencyLevelLocalQuorum`
-- `DBCassandraConsistencyLevelLocalSerial`
-- `DBCassandraConsistencyLevelOne`
-- `DBCassandraConsistencyLevelQuorum`
-- `DBCassandraConsistencyLevelSerial`
-- `DBCassandraConsistencyLevelThree`
-- `DBCassandraConsistencyLevelTwo`
-- `DBCassandraCoordinatorDC`
-- `DBCassandraCoordinatorDCKey`
-- `DBCassandraCoordinatorID`
-- `DBCassandraCoordinatorIDKey`
-- `DBCassandraIdempotence`
-- `DBCassandraIdempotenceKey`
-- `DBCassandraPageSize`
-- `DBCassandraPageSizeKey`
-- `DBCassandraSpeculativeExecutionCount`
-- `DBCassandraSpeculativeExecutionCountKey`
-- `DBCosmosDBClientID`
-- `DBCosmosDBClientIDKey`
-- `DBCosmosDBConnectionModeDirect`
-- `DBCosmosDBConnectionModeGateway`
-- `DBCosmosDBConnectionModeKey`
-- `DBCosmosDBOperationTypeBatch`
-- `DBCosmosDBOperationTypeCreate`
-- `DBCosmosDBOperationTypeDelete`
-- `DBCosmosDBOperationTypeExecute`
-- `DBCosmosDBOperationTypeExecuteJavascript`
-- `DBCosmosDBOperationTypeHead`
-- `DBCosmosDBOperationTypeHeadFeed`
-- `DBCosmosDBOperationTypeInvalid`
-- `DBCosmosDBOperationTypeKey`
-- `DBCosmosDBOperationTypePatch`
-- `DBCosmosDBOperationTypeQuery`
-- `DBCosmosDBOperationTypeQueryPlan`
-- `DBCosmosDBOperationTypeRead`
-- `DBCosmosDBOperationTypeReadFeed`
-- `DBCosmosDBOperationTypeReplace`
-- `DBCosmosDBOperationTypeUpsert`
-- `DBCosmosDBRequestCharge`
-- `DBCosmosDBRequestChargeKey`
-- `DBCosmosDBRequestContentLength`
-- `DBCosmosDBRequestContentLengthKey`
-- `DBCosmosDBSubStatusCode`
-- `DBCosmosDBSubStatusCodeKey`
-- `DBElasticsearchNodeName`
-- `DBElasticsearchNodeNameKey`
-- `DBSystemAdabas`
-- `DBSystemCache`
-- `DBSystemCassandra`
-- `DBSystemClickhouse`
-- `DBSystemCloudscape`
-- `DBSystemCockroachdb`
-- `DBSystemColdfusion`
-- `DBSystemCosmosDB`
-- `DBSystemCouchDB`
-- `DBSystemCouchbase`
-- `DBSystemDb2`
-- `DBSystemDerby`
-- `DBSystemDynamoDB`
-- `DBSystemEDB`
-- `DBSystemElasticsearch`
-- `DBSystemFilemaker`
-- `DBSystemFirebird`
-- `DBSystemFirstSQL`
-- `DBSystemGeode`
-- `DBSystemH2`
-- `DBSystemHBase`
-- `DBSystemHSQLDB`
-- `DBSystemHanaDB`
-- `DBSystemHive`
-- `DBSystemInfluxdb`
-- `DBSystemInformix`
-- `DBSystemIngres`
-- `DBSystemInstantDB`
-- `DBSystemInterbase`
-- `DBSystemIntersystemsCache`
-- `DBSystemKey`
-- `DBSystemMSSQL`
-- `DBSystemMariaDB`
-- `DBSystemMaxDB`
-- `DBSystemMemcached`
-- `DBSystemMongoDB`
-- `DBSystemMssqlcompact`
-- `DBSystemMySQL`
-- `DBSystemNeo4j`
-- `DBSystemNetezza`
-- `DBSystemOpensearch`
-- `DBSystemOracle`
-- `DBSystemOtherSQL`
-- `DBSystemPervasive`
-- `DBSystemPointbase`
-- `DBSystemPostgreSQL`
-- `DBSystemProgress`
-- `DBSystemRedis`
-- `DBSystemRedshift`
-- `DBSystemSpanner`
-- `DBSystemSqlite`
-- `DBSystemSybase`
-- `DBSystemTeradata`
-- `DBSystemTrino`
-- `DBSystemVertica`
-- `EventName`
-- `EventNameKey`
-- `ExceptionEscaped`
-- `ExceptionEscapedKey`
-- `GenAIOpenaiRequestSeed`
-- `GenAIOpenaiRequestSeedKey`
-- `ProcessExecutableBuildIDProfiling`
-- `ProcessExecutableBuildIDProfilingKey`
-- `SystemNetworkStateClose`
-- `SystemNetworkStateCloseWait`
-- `SystemNetworkStateClosing`
-- `SystemNetworkStateDelete`
-- `SystemNetworkStateEstablished`
-- `SystemNetworkStateFinWait1`
-- `SystemNetworkStateFinWait2`
-- `SystemNetworkStateKey`
-- `SystemNetworkStateLastAck`
-- `SystemNetworkStateListen`
-- `SystemNetworkStateSynRecv`
-- `SystemNetworkStateSynSent`
-- `SystemNetworkStateTimeWait`
-- `VCSRepositoryChangeID`
-- `VCSRepositoryChangeIDKey`
-- `VCSRepositoryChangeTitle`
-- `VCSRepositoryChangeTitleKey`
-- `VCSRepositoryRefName`
-- `VCSRepositoryRefNameKey`
-- `VCSRepositoryRefRevision`
-- `VCSRepositoryRefRevisionKey`
-- `VCSRepositoryRefTypeBranch`
-- `VCSRepositoryRefTypeKey`
-- `VCSRepositoryRefTypeTag`
-
-[OpenTelemetry Semantic Conventions]: https://github.com/open-telemetry/semantic-conventions
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/README.md
deleted file mode 100644
index 072ea6928..000000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Semconv v1.30.0
-
-[](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.30.0)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/attribute_group.go b/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/attribute_group.go
deleted file mode 100644
index 60f3df0db..000000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/attribute_group.go
+++ /dev/null
@@ -1,12333 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.30.0"
-
-import "go.opentelemetry.io/otel/attribute"
-
-// Namespace: android
-const (
- // AndroidOSAPILevelKey is the attribute Key conforming to the
- // "android.os.api_level" semantic conventions. It represents the uniquely
- // identifies the framework API revision offered by a version (`os.version`) of
- // the android operating system. More information can be found [here].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "33", "32"
- //
- // [here]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels
- AndroidOSAPILevelKey = attribute.Key("android.os.api_level")
-)
-
-// AndroidOSAPILevel returns an attribute KeyValue conforming to the
-// "android.os.api_level" semantic conventions. It represents the uniquely
-// identifies the framework API revision offered by a version (`os.version`) of
-// the android operating system. More information can be found [here].
-//
-// [here]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels
-func AndroidOSAPILevel(val string) attribute.KeyValue {
- return AndroidOSAPILevelKey.String(val)
-}
-
-// Namespace: artifact
-const (
- // ArtifactAttestationFilenameKey is the attribute Key conforming to the
- // "artifact.attestation.filename" semantic conventions. It represents the
- // provenance filename of the built attestation which directly relates to the
- // build artifact filename. This filename SHOULD accompany the artifact at
- // publish time. See the [SLSA Relationship] specification for more information.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "golang-binary-amd64-v0.1.0.attestation",
- // "docker-image-amd64-v0.1.0.intoto.json1", "release-1.tar.gz.attestation",
- // "file-name-package.tar.gz.intoto.json1"
- //
- // [SLSA Relationship]: https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations
- ArtifactAttestationFilenameKey = attribute.Key("artifact.attestation.filename")
-
- // ArtifactAttestationHashKey is the attribute Key conforming to the
- // "artifact.attestation.hash" semantic conventions. It represents the full
- // [hash value (see glossary)], of the built attestation. Some envelopes in the
- // [software attestation space] also refer to this as the **digest**.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408"
- //
- // [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
- // [software attestation space]: https://github.com/in-toto/attestation/tree/main/spec
- ArtifactAttestationHashKey = attribute.Key("artifact.attestation.hash")
-
- // ArtifactAttestationIDKey is the attribute Key conforming to the
- // "artifact.attestation.id" semantic conventions. It represents the id of the
- // build [software attestation].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "123"
- //
- // [software attestation]: https://slsa.dev/attestation-model
- ArtifactAttestationIDKey = attribute.Key("artifact.attestation.id")
-
- // ArtifactFilenameKey is the attribute Key conforming to the
- // "artifact.filename" semantic conventions. It represents the human readable
- // file name of the artifact, typically generated during build and release
- // processes. Often includes the package name and version in the file name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "golang-binary-amd64-v0.1.0", "docker-image-amd64-v0.1.0",
- // "release-1.tar.gz", "file-name-package.tar.gz"
- // Note: This file name can also act as the [Package Name]
- // in cases where the package ecosystem maps accordingly.
- // Additionally, the artifact [can be published]
- // for others, but that is not a guarantee.
- //
- // [Package Name]: https://slsa.dev/spec/v1.0/terminology#package-model
- // [can be published]: https://slsa.dev/spec/v1.0/terminology#software-supply-chain
- ArtifactFilenameKey = attribute.Key("artifact.filename")
-
- // ArtifactHashKey is the attribute Key conforming to the "artifact.hash"
- // semantic conventions. It represents the full [hash value (see glossary)],
- // often found in checksum.txt on a release of the artifact and used to verify
- // package integrity.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9"
- // Note: The specific algorithm used to create the cryptographic hash value is
- // not defined. In situations where an artifact has multiple
- // cryptographic hashes, it is up to the implementer to choose which
- // hash value to set here; this should be the most secure hash algorithm
- // that is suitable for the situation and consistent with the
- // corresponding attestation. The implementer can then provide the other
- // hash values through an additional set of attribute extensions as they
- // deem necessary.
- //
- // [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
- ArtifactHashKey = attribute.Key("artifact.hash")
-
- // ArtifactPurlKey is the attribute Key conforming to the "artifact.purl"
- // semantic conventions. It represents the [Package URL] of the
- // [package artifact] provides a standard way to identify and locate the
- // packaged artifact.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pkg:github/package-url/purl-spec@1209109710924",
- // "pkg:npm/foo@12.12.3"
- //
- // [Package URL]: https://github.com/package-url/purl-spec
- // [package artifact]: https://slsa.dev/spec/v1.0/terminology#package-model
- ArtifactPurlKey = attribute.Key("artifact.purl")
-
- // ArtifactVersionKey is the attribute Key conforming to the "artifact.version"
- // semantic conventions. It represents the version of the artifact.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "v0.1.0", "1.2.1", "122691-build"
- ArtifactVersionKey = attribute.Key("artifact.version")
-)
-
-// ArtifactAttestationFilename returns an attribute KeyValue conforming to the
-// "artifact.attestation.filename" semantic conventions. It represents the
-// provenance filename of the built attestation which directly relates to the
-// build artifact filename. This filename SHOULD accompany the artifact at
-// publish time. See the [SLSA Relationship] specification for more information.
-//
-// [SLSA Relationship]: https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations
-func ArtifactAttestationFilename(val string) attribute.KeyValue {
- return ArtifactAttestationFilenameKey.String(val)
-}
-
-// ArtifactAttestationHash returns an attribute KeyValue conforming to the
-// "artifact.attestation.hash" semantic conventions. It represents the full
-// [hash value (see glossary)], of the built attestation. Some envelopes in the
-// [software attestation space] also refer to this as the **digest**.
-//
-// [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
-// [software attestation space]: https://github.com/in-toto/attestation/tree/main/spec
-func ArtifactAttestationHash(val string) attribute.KeyValue {
- return ArtifactAttestationHashKey.String(val)
-}
-
-// ArtifactAttestationID returns an attribute KeyValue conforming to the
-// "artifact.attestation.id" semantic conventions. It represents the id of the
-// build [software attestation].
-//
-// [software attestation]: https://slsa.dev/attestation-model
-func ArtifactAttestationID(val string) attribute.KeyValue {
- return ArtifactAttestationIDKey.String(val)
-}
-
-// ArtifactFilename returns an attribute KeyValue conforming to the
-// "artifact.filename" semantic conventions. It represents the human readable
-// file name of the artifact, typically generated during build and release
-// processes. Often includes the package name and version in the file name.
-func ArtifactFilename(val string) attribute.KeyValue {
- return ArtifactFilenameKey.String(val)
-}
-
-// ArtifactHash returns an attribute KeyValue conforming to the "artifact.hash"
-// semantic conventions. It represents the full [hash value (see glossary)],
-// often found in checksum.txt on a release of the artifact and used to verify
-// package integrity.
-//
-// [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
-func ArtifactHash(val string) attribute.KeyValue {
- return ArtifactHashKey.String(val)
-}
-
-// ArtifactPurl returns an attribute KeyValue conforming to the "artifact.purl"
-// semantic conventions. It represents the [Package URL] of the
-// [package artifact] provides a standard way to identify and locate the packaged
-// artifact.
-//
-// [Package URL]: https://github.com/package-url/purl-spec
-// [package artifact]: https://slsa.dev/spec/v1.0/terminology#package-model
-func ArtifactPurl(val string) attribute.KeyValue {
- return ArtifactPurlKey.String(val)
-}
-
-// ArtifactVersion returns an attribute KeyValue conforming to the
-// "artifact.version" semantic conventions. It represents the version of the
-// artifact.
-func ArtifactVersion(val string) attribute.KeyValue {
- return ArtifactVersionKey.String(val)
-}
-
-// Namespace: aws
-const (
- // AWSDynamoDBAttributeDefinitionsKey is the attribute Key conforming to the
- // "aws.dynamodb.attribute_definitions" semantic conventions. It represents the
- // JSON-serialized value of each item in the `AttributeDefinitions` request
- // field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "AttributeName": "string", "AttributeType": "string" }"
- AWSDynamoDBAttributeDefinitionsKey = attribute.Key("aws.dynamodb.attribute_definitions")
-
- // AWSDynamoDBAttributesToGetKey is the attribute Key conforming to the
- // "aws.dynamodb.attributes_to_get" semantic conventions. It represents the
- // value of the `AttributesToGet` request parameter.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "lives", "id"
- AWSDynamoDBAttributesToGetKey = attribute.Key("aws.dynamodb.attributes_to_get")
-
- // AWSDynamoDBConsistentReadKey is the attribute Key conforming to the
- // "aws.dynamodb.consistent_read" semantic conventions. It represents the value
- // of the `ConsistentRead` request parameter.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- AWSDynamoDBConsistentReadKey = attribute.Key("aws.dynamodb.consistent_read")
-
- // AWSDynamoDBConsumedCapacityKey is the attribute Key conforming to the
- // "aws.dynamodb.consumed_capacity" semantic conventions. It represents the
- // JSON-serialized value of each item in the `ConsumedCapacity` response field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" :
- // { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits":
- // number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number,
- // "ReadCapacityUnits": number, "WriteCapacityUnits": number } },
- // "ReadCapacityUnits": number, "Table": { "CapacityUnits": number,
- // "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName":
- // "string", "WriteCapacityUnits": number }"
- AWSDynamoDBConsumedCapacityKey = attribute.Key("aws.dynamodb.consumed_capacity")
-
- // AWSDynamoDBCountKey is the attribute Key conforming to the
- // "aws.dynamodb.count" semantic conventions. It represents the value of the
- // `Count` response parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 10
- AWSDynamoDBCountKey = attribute.Key("aws.dynamodb.count")
-
- // AWSDynamoDBExclusiveStartTableKey is the attribute Key conforming to the
- // "aws.dynamodb.exclusive_start_table" semantic conventions. It represents the
- // value of the `ExclusiveStartTableName` request parameter.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Users", "CatsTable"
- AWSDynamoDBExclusiveStartTableKey = attribute.Key("aws.dynamodb.exclusive_start_table")
-
- // AWSDynamoDBGlobalSecondaryIndexUpdatesKey is the attribute Key conforming to
- // the "aws.dynamodb.global_secondary_index_updates" semantic conventions. It
- // represents the JSON-serialized value of each item in the
- // `GlobalSecondaryIndexUpdates` request field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "Create": { "IndexName": "string", "KeySchema": [ {
- // "AttributeName": "string", "KeyType": "string" } ], "Projection": {
- // "NonKeyAttributes": [ "string" ], "ProjectionType": "string" },
- // "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits":
- // number } }"
- AWSDynamoDBGlobalSecondaryIndexUpdatesKey = attribute.Key("aws.dynamodb.global_secondary_index_updates")
-
- // AWSDynamoDBGlobalSecondaryIndexesKey is the attribute Key conforming to the
- // "aws.dynamodb.global_secondary_indexes" semantic conventions. It represents
- // the JSON-serialized value of each item of the `GlobalSecondaryIndexes`
- // request field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "IndexName": "string", "KeySchema": [ { "AttributeName":
- // "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [
- // "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": {
- // "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"
- AWSDynamoDBGlobalSecondaryIndexesKey = attribute.Key("aws.dynamodb.global_secondary_indexes")
-
- // AWSDynamoDBIndexNameKey is the attribute Key conforming to the
- // "aws.dynamodb.index_name" semantic conventions. It represents the value of
- // the `IndexName` request parameter.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "name_to_group"
- AWSDynamoDBIndexNameKey = attribute.Key("aws.dynamodb.index_name")
-
- // AWSDynamoDBItemCollectionMetricsKey is the attribute Key conforming to the
- // "aws.dynamodb.item_collection_metrics" semantic conventions. It represents
- // the JSON-serialized value of the `ItemCollectionMetrics` response field.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob,
- // "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" :
- // "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S":
- // "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }"
- AWSDynamoDBItemCollectionMetricsKey = attribute.Key("aws.dynamodb.item_collection_metrics")
-
- // AWSDynamoDBLimitKey is the attribute Key conforming to the
- // "aws.dynamodb.limit" semantic conventions. It represents the value of the
- // `Limit` request parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 10
- AWSDynamoDBLimitKey = attribute.Key("aws.dynamodb.limit")
-
- // AWSDynamoDBLocalSecondaryIndexesKey is the attribute Key conforming to the
- // "aws.dynamodb.local_secondary_indexes" semantic conventions. It represents
- // the JSON-serialized value of each item of the `LocalSecondaryIndexes` request
- // field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes":
- // number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string",
- // "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ],
- // "ProjectionType": "string" } }"
- AWSDynamoDBLocalSecondaryIndexesKey = attribute.Key("aws.dynamodb.local_secondary_indexes")
-
- // AWSDynamoDBProjectionKey is the attribute Key conforming to the
- // "aws.dynamodb.projection" semantic conventions. It represents the value of
- // the `ProjectionExpression` request parameter.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Title", "Title, Price, Color", "Title, Description, RelatedItems,
- // ProductReviews"
- AWSDynamoDBProjectionKey = attribute.Key("aws.dynamodb.projection")
-
- // AWSDynamoDBProvisionedReadCapacityKey is the attribute Key conforming to the
- // "aws.dynamodb.provisioned_read_capacity" semantic conventions. It represents
- // the value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0, 2.0
- AWSDynamoDBProvisionedReadCapacityKey = attribute.Key("aws.dynamodb.provisioned_read_capacity")
-
- // AWSDynamoDBProvisionedWriteCapacityKey is the attribute Key conforming to the
- // "aws.dynamodb.provisioned_write_capacity" semantic conventions. It represents
- // the value of the `ProvisionedThroughput.WriteCapacityUnits` request
- // parameter.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0, 2.0
- AWSDynamoDBProvisionedWriteCapacityKey = attribute.Key("aws.dynamodb.provisioned_write_capacity")
-
- // AWSDynamoDBScanForwardKey is the attribute Key conforming to the
- // "aws.dynamodb.scan_forward" semantic conventions. It represents the value of
- // the `ScanIndexForward` request parameter.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- AWSDynamoDBScanForwardKey = attribute.Key("aws.dynamodb.scan_forward")
-
- // AWSDynamoDBScannedCountKey is the attribute Key conforming to the
- // "aws.dynamodb.scanned_count" semantic conventions. It represents the value of
- // the `ScannedCount` response parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 50
- AWSDynamoDBScannedCountKey = attribute.Key("aws.dynamodb.scanned_count")
-
- // AWSDynamoDBSegmentKey is the attribute Key conforming to the
- // "aws.dynamodb.segment" semantic conventions. It represents the value of the
- // `Segment` request parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 10
- AWSDynamoDBSegmentKey = attribute.Key("aws.dynamodb.segment")
-
- // AWSDynamoDBSelectKey is the attribute Key conforming to the
- // "aws.dynamodb.select" semantic conventions. It represents the value of the
- // `Select` request parameter.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ALL_ATTRIBUTES", "COUNT"
- AWSDynamoDBSelectKey = attribute.Key("aws.dynamodb.select")
-
- // AWSDynamoDBTableCountKey is the attribute Key conforming to the
- // "aws.dynamodb.table_count" semantic conventions. It represents the number of
- // items in the `TableNames` response parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 20
- AWSDynamoDBTableCountKey = attribute.Key("aws.dynamodb.table_count")
-
- // AWSDynamoDBTableNamesKey is the attribute Key conforming to the
- // "aws.dynamodb.table_names" semantic conventions. It represents the keys in
- // the `RequestItems` object field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Users", "Cats"
- AWSDynamoDBTableNamesKey = attribute.Key("aws.dynamodb.table_names")
-
- // AWSDynamoDBTotalSegmentsKey is the attribute Key conforming to the
- // "aws.dynamodb.total_segments" semantic conventions. It represents the value
- // of the `TotalSegments` request parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 100
- AWSDynamoDBTotalSegmentsKey = attribute.Key("aws.dynamodb.total_segments")
-
- // AWSECSClusterARNKey is the attribute Key conforming to the
- // "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an
- // [ECS cluster].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster"
- //
- // [ECS cluster]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html
- AWSECSClusterARNKey = attribute.Key("aws.ecs.cluster.arn")
-
- // AWSECSContainerARNKey is the attribute Key conforming to the
- // "aws.ecs.container.arn" semantic conventions. It represents the Amazon
- // Resource Name (ARN) of an [ECS container instance].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9"
- //
- // [ECS container instance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html
- AWSECSContainerARNKey = attribute.Key("aws.ecs.container.arn")
-
- // AWSECSLaunchtypeKey is the attribute Key conforming to the
- // "aws.ecs.launchtype" semantic conventions. It represents the [launch type]
- // for an ECS task.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [launch type]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html
- AWSECSLaunchtypeKey = attribute.Key("aws.ecs.launchtype")
-
- // AWSECSTaskARNKey is the attribute Key conforming to the "aws.ecs.task.arn"
- // semantic conventions. It represents the ARN of a running [ECS task].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b",
- // "arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd"
- //
- // [ECS task]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids
- AWSECSTaskARNKey = attribute.Key("aws.ecs.task.arn")
-
- // AWSECSTaskFamilyKey is the attribute Key conforming to the
- // "aws.ecs.task.family" semantic conventions. It represents the family name of
- // the [ECS task definition] used to create the ECS task.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry-family"
- //
- // [ECS task definition]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html
- AWSECSTaskFamilyKey = attribute.Key("aws.ecs.task.family")
-
- // AWSECSTaskIDKey is the attribute Key conforming to the "aws.ecs.task.id"
- // semantic conventions. It represents the ID of a running ECS task. The ID MUST
- // be extracted from `task.arn`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "10838bed-421f-43ef-870a-f43feacbbb5b",
- // "23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd"
- AWSECSTaskIDKey = attribute.Key("aws.ecs.task.id")
-
- // AWSECSTaskRevisionKey is the attribute Key conforming to the
- // "aws.ecs.task.revision" semantic conventions. It represents the revision for
- // the task definition used to create the ECS task.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "8", "26"
- AWSECSTaskRevisionKey = attribute.Key("aws.ecs.task.revision")
-
- // AWSEKSClusterARNKey is the attribute Key conforming to the
- // "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS
- // cluster.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster"
- AWSEKSClusterARNKey = attribute.Key("aws.eks.cluster.arn")
-
- // AWSExtendedRequestIDKey is the attribute Key conforming to the
- // "aws.extended_request_id" semantic conventions. It represents the AWS
- // extended request ID as returned in the response header `x-amz-id-2`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ="
- AWSExtendedRequestIDKey = attribute.Key("aws.extended_request_id")
-
- // AWSLambdaInvokedARNKey is the attribute Key conforming to the
- // "aws.lambda.invoked_arn" semantic conventions. It represents the full invoked
- // ARN as provided on the `Context` passed to the function (
- // `Lambda-Runtime-Invoked-Function-Arn` header on the
- // `/runtime/invocation/next` applicable).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:lambda:us-east-1:123456:function:myfunction:myalias"
- // Note: This may be different from `cloud.resource_id` if an alias is involved.
- AWSLambdaInvokedARNKey = attribute.Key("aws.lambda.invoked_arn")
-
- // AWSLogGroupARNsKey is the attribute Key conforming to the
- // "aws.log.group.arns" semantic conventions. It represents the Amazon Resource
- // Name(s) (ARN) of the AWS log group(s).
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*"
- // Note: See the [log group ARN format documentation].
- //
- // [log group ARN format documentation]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format
- AWSLogGroupARNsKey = attribute.Key("aws.log.group.arns")
-
- // AWSLogGroupNamesKey is the attribute Key conforming to the
- // "aws.log.group.names" semantic conventions. It represents the name(s) of the
- // AWS log group(s) an application is writing to.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/aws/lambda/my-function", "opentelemetry-service"
- // Note: Multiple log groups must be supported for cases like multi-container
- // applications, where a single application has sidecar containers, and each
- // write to their own log group.
- AWSLogGroupNamesKey = attribute.Key("aws.log.group.names")
-
- // AWSLogStreamARNsKey is the attribute Key conforming to the
- // "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the
- // AWS log stream(s).
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"
- // Note: See the [log stream ARN format documentation]. One log group can
- // contain several log streams, so these ARNs necessarily identify both a log
- // group and a log stream.
- //
- // [log stream ARN format documentation]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format
- AWSLogStreamARNsKey = attribute.Key("aws.log.stream.arns")
-
- // AWSLogStreamNamesKey is the attribute Key conforming to the
- // "aws.log.stream.names" semantic conventions. It represents the name(s) of the
- // AWS log stream(s) an application is writing to.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"
- AWSLogStreamNamesKey = attribute.Key("aws.log.stream.names")
-
- // AWSRequestIDKey is the attribute Key conforming to the "aws.request_id"
- // semantic conventions. It represents the AWS request ID as returned in the
- // response headers `x-amzn-requestid`, `x-amzn-request-id` or
- // `x-amz-request-id`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "79b9da39-b7ae-508a-a6bc-864b2829c622", "C9ER4AJX75574TDJ"
- AWSRequestIDKey = attribute.Key("aws.request_id")
-
- // AWSS3BucketKey is the attribute Key conforming to the "aws.s3.bucket"
- // semantic conventions. It represents the S3 bucket name the request refers to.
- // Corresponds to the `--bucket` parameter of the [S3 API] operations.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "some-bucket-name"
- // Note: The `bucket` attribute is applicable to all S3 operations that
- // reference a bucket, i.e. that require the bucket name as a mandatory
- // parameter.
- // This applies to almost all S3 operations except `list-buckets`.
- //
- // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
- AWSS3BucketKey = attribute.Key("aws.s3.bucket")
-
- // AWSS3CopySourceKey is the attribute Key conforming to the
- // "aws.s3.copy_source" semantic conventions. It represents the source object
- // (in the form `bucket`/`key`) for the copy operation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "someFile.yml"
- // Note: The `copy_source` attribute applies to S3 copy operations and
- // corresponds to the `--copy-source` parameter
- // of the [copy-object operation within the S3 API].
- // This applies in particular to the following operations:
- //
- // - [copy-object]
- // - [upload-part-copy]
- //
- //
- // [copy-object operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html
- // [copy-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html
- // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html
- AWSS3CopySourceKey = attribute.Key("aws.s3.copy_source")
-
- // AWSS3DeleteKey is the attribute Key conforming to the "aws.s3.delete"
- // semantic conventions. It represents the delete request container that
- // specifies the objects to be deleted.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean"
- // Note: The `delete` attribute is only applicable to the [delete-object]
- // operation.
- // The `delete` attribute corresponds to the `--delete` parameter of the
- // [delete-objects operation within the S3 API].
- //
- // [delete-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html
- // [delete-objects operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html
- AWSS3DeleteKey = attribute.Key("aws.s3.delete")
-
- // AWSS3KeyKey is the attribute Key conforming to the "aws.s3.key" semantic
- // conventions. It represents the S3 object key the request refers to.
- // Corresponds to the `--key` parameter of the [S3 API] operations.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "someFile.yml"
- // Note: The `key` attribute is applicable to all object-related S3 operations,
- // i.e. that require the object key as a mandatory parameter.
- // This applies in particular to the following operations:
- //
- // - [copy-object]
- // - [delete-object]
- // - [get-object]
- // - [head-object]
- // - [put-object]
- // - [restore-object]
- // - [select-object-content]
- // - [abort-multipart-upload]
- // - [complete-multipart-upload]
- // - [create-multipart-upload]
- // - [list-parts]
- // - [upload-part]
- // - [upload-part-copy]
- //
- //
- // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
- // [copy-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html
- // [delete-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html
- // [get-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html
- // [head-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html
- // [put-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html
- // [restore-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html
- // [select-object-content]: https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html
- // [abort-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html
- // [complete-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html
- // [create-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html
- // [list-parts]: https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html
- // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html
- // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html
- AWSS3KeyKey = attribute.Key("aws.s3.key")
-
- // AWSS3PartNumberKey is the attribute Key conforming to the
- // "aws.s3.part_number" semantic conventions. It represents the part number of
- // the part being uploaded in a multipart-upload operation. This is a positive
- // integer between 1 and 10,000.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 3456
- // Note: The `part_number` attribute is only applicable to the [upload-part]
- // and [upload-part-copy] operations.
- // The `part_number` attribute corresponds to the `--part-number` parameter of
- // the
- // [upload-part operation within the S3 API].
- //
- // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html
- // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html
- // [upload-part operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html
- AWSS3PartNumberKey = attribute.Key("aws.s3.part_number")
-
- // AWSS3UploadIDKey is the attribute Key conforming to the "aws.s3.upload_id"
- // semantic conventions. It represents the upload ID that identifies the
- // multipart upload.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ"
- // Note: The `upload_id` attribute applies to S3 multipart-upload operations and
- // corresponds to the `--upload-id` parameter
- // of the [S3 API] multipart operations.
- // This applies in particular to the following operations:
- //
- // - [abort-multipart-upload]
- // - [complete-multipart-upload]
- // - [list-parts]
- // - [upload-part]
- // - [upload-part-copy]
- //
- //
- // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
- // [abort-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html
- // [complete-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html
- // [list-parts]: https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html
- // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html
- // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html
- AWSS3UploadIDKey = attribute.Key("aws.s3.upload_id")
-)
-
-// AWSDynamoDBAttributeDefinitions returns an attribute KeyValue conforming to
-// the "aws.dynamodb.attribute_definitions" semantic conventions. It represents
-// the JSON-serialized value of each item in the `AttributeDefinitions` request
-// field.
-func AWSDynamoDBAttributeDefinitions(val ...string) attribute.KeyValue {
- return AWSDynamoDBAttributeDefinitionsKey.StringSlice(val)
-}
-
-// AWSDynamoDBAttributesToGet returns an attribute KeyValue conforming to the
-// "aws.dynamodb.attributes_to_get" semantic conventions. It represents the value
-// of the `AttributesToGet` request parameter.
-func AWSDynamoDBAttributesToGet(val ...string) attribute.KeyValue {
- return AWSDynamoDBAttributesToGetKey.StringSlice(val)
-}
-
-// AWSDynamoDBConsistentRead returns an attribute KeyValue conforming to the
-// "aws.dynamodb.consistent_read" semantic conventions. It represents the value
-// of the `ConsistentRead` request parameter.
-func AWSDynamoDBConsistentRead(val bool) attribute.KeyValue {
- return AWSDynamoDBConsistentReadKey.Bool(val)
-}
-
-// AWSDynamoDBConsumedCapacity returns an attribute KeyValue conforming to the
-// "aws.dynamodb.consumed_capacity" semantic conventions. It represents the
-// JSON-serialized value of each item in the `ConsumedCapacity` response field.
-func AWSDynamoDBConsumedCapacity(val ...string) attribute.KeyValue {
- return AWSDynamoDBConsumedCapacityKey.StringSlice(val)
-}
-
-// AWSDynamoDBCount returns an attribute KeyValue conforming to the
-// "aws.dynamodb.count" semantic conventions. It represents the value of the
-// `Count` response parameter.
-func AWSDynamoDBCount(val int) attribute.KeyValue {
- return AWSDynamoDBCountKey.Int(val)
-}
-
-// AWSDynamoDBExclusiveStartTable returns an attribute KeyValue conforming to the
-// "aws.dynamodb.exclusive_start_table" semantic conventions. It represents the
-// value of the `ExclusiveStartTableName` request parameter.
-func AWSDynamoDBExclusiveStartTable(val string) attribute.KeyValue {
- return AWSDynamoDBExclusiveStartTableKey.String(val)
-}
-
-// AWSDynamoDBGlobalSecondaryIndexUpdates returns an attribute KeyValue
-// conforming to the "aws.dynamodb.global_secondary_index_updates" semantic
-// conventions. It represents the JSON-serialized value of each item in the
-// `GlobalSecondaryIndexUpdates` request field.
-func AWSDynamoDBGlobalSecondaryIndexUpdates(val ...string) attribute.KeyValue {
- return AWSDynamoDBGlobalSecondaryIndexUpdatesKey.StringSlice(val)
-}
-
-// AWSDynamoDBGlobalSecondaryIndexes returns an attribute KeyValue conforming to
-// the "aws.dynamodb.global_secondary_indexes" semantic conventions. It
-// represents the JSON-serialized value of each item of the
-// `GlobalSecondaryIndexes` request field.
-func AWSDynamoDBGlobalSecondaryIndexes(val ...string) attribute.KeyValue {
- return AWSDynamoDBGlobalSecondaryIndexesKey.StringSlice(val)
-}
-
-// AWSDynamoDBIndexName returns an attribute KeyValue conforming to the
-// "aws.dynamodb.index_name" semantic conventions. It represents the value of the
-// `IndexName` request parameter.
-func AWSDynamoDBIndexName(val string) attribute.KeyValue {
- return AWSDynamoDBIndexNameKey.String(val)
-}
-
-// AWSDynamoDBItemCollectionMetrics returns an attribute KeyValue conforming to
-// the "aws.dynamodb.item_collection_metrics" semantic conventions. It represents
-// the JSON-serialized value of the `ItemCollectionMetrics` response field.
-func AWSDynamoDBItemCollectionMetrics(val string) attribute.KeyValue {
- return AWSDynamoDBItemCollectionMetricsKey.String(val)
-}
-
-// AWSDynamoDBLimit returns an attribute KeyValue conforming to the
-// "aws.dynamodb.limit" semantic conventions. It represents the value of the
-// `Limit` request parameter.
-func AWSDynamoDBLimit(val int) attribute.KeyValue {
- return AWSDynamoDBLimitKey.Int(val)
-}
-
-// AWSDynamoDBLocalSecondaryIndexes returns an attribute KeyValue conforming to
-// the "aws.dynamodb.local_secondary_indexes" semantic conventions. It represents
-// the JSON-serialized value of each item of the `LocalSecondaryIndexes` request
-// field.
-func AWSDynamoDBLocalSecondaryIndexes(val ...string) attribute.KeyValue {
- return AWSDynamoDBLocalSecondaryIndexesKey.StringSlice(val)
-}
-
-// AWSDynamoDBProjection returns an attribute KeyValue conforming to the
-// "aws.dynamodb.projection" semantic conventions. It represents the value of the
-// `ProjectionExpression` request parameter.
-func AWSDynamoDBProjection(val string) attribute.KeyValue {
- return AWSDynamoDBProjectionKey.String(val)
-}
-
-// AWSDynamoDBProvisionedReadCapacity returns an attribute KeyValue conforming to
-// the "aws.dynamodb.provisioned_read_capacity" semantic conventions. It
-// represents the value of the `ProvisionedThroughput.ReadCapacityUnits` request
-// parameter.
-func AWSDynamoDBProvisionedReadCapacity(val float64) attribute.KeyValue {
- return AWSDynamoDBProvisionedReadCapacityKey.Float64(val)
-}
-
-// AWSDynamoDBProvisionedWriteCapacity returns an attribute KeyValue conforming
-// to the "aws.dynamodb.provisioned_write_capacity" semantic conventions. It
-// represents the value of the `ProvisionedThroughput.WriteCapacityUnits` request
-// parameter.
-func AWSDynamoDBProvisionedWriteCapacity(val float64) attribute.KeyValue {
- return AWSDynamoDBProvisionedWriteCapacityKey.Float64(val)
-}
-
-// AWSDynamoDBScanForward returns an attribute KeyValue conforming to the
-// "aws.dynamodb.scan_forward" semantic conventions. It represents the value of
-// the `ScanIndexForward` request parameter.
-func AWSDynamoDBScanForward(val bool) attribute.KeyValue {
- return AWSDynamoDBScanForwardKey.Bool(val)
-}
-
-// AWSDynamoDBScannedCount returns an attribute KeyValue conforming to the
-// "aws.dynamodb.scanned_count" semantic conventions. It represents the value of
-// the `ScannedCount` response parameter.
-func AWSDynamoDBScannedCount(val int) attribute.KeyValue {
- return AWSDynamoDBScannedCountKey.Int(val)
-}
-
-// AWSDynamoDBSegment returns an attribute KeyValue conforming to the
-// "aws.dynamodb.segment" semantic conventions. It represents the value of the
-// `Segment` request parameter.
-func AWSDynamoDBSegment(val int) attribute.KeyValue {
- return AWSDynamoDBSegmentKey.Int(val)
-}
-
-// AWSDynamoDBSelect returns an attribute KeyValue conforming to the
-// "aws.dynamodb.select" semantic conventions. It represents the value of the
-// `Select` request parameter.
-func AWSDynamoDBSelect(val string) attribute.KeyValue {
- return AWSDynamoDBSelectKey.String(val)
-}
-
-// AWSDynamoDBTableCount returns an attribute KeyValue conforming to the
-// "aws.dynamodb.table_count" semantic conventions. It represents the number of
-// items in the `TableNames` response parameter.
-func AWSDynamoDBTableCount(val int) attribute.KeyValue {
- return AWSDynamoDBTableCountKey.Int(val)
-}
-
-// AWSDynamoDBTableNames returns an attribute KeyValue conforming to the
-// "aws.dynamodb.table_names" semantic conventions. It represents the keys in the
-// `RequestItems` object field.
-func AWSDynamoDBTableNames(val ...string) attribute.KeyValue {
- return AWSDynamoDBTableNamesKey.StringSlice(val)
-}
-
-// AWSDynamoDBTotalSegments returns an attribute KeyValue conforming to the
-// "aws.dynamodb.total_segments" semantic conventions. It represents the value of
-// the `TotalSegments` request parameter.
-func AWSDynamoDBTotalSegments(val int) attribute.KeyValue {
- return AWSDynamoDBTotalSegmentsKey.Int(val)
-}
-
-// AWSECSClusterARN returns an attribute KeyValue conforming to the
-// "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an
-// [ECS cluster].
-//
-// [ECS cluster]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html
-func AWSECSClusterARN(val string) attribute.KeyValue {
- return AWSECSClusterARNKey.String(val)
-}
-
-// AWSECSContainerARN returns an attribute KeyValue conforming to the
-// "aws.ecs.container.arn" semantic conventions. It represents the Amazon
-// Resource Name (ARN) of an [ECS container instance].
-//
-// [ECS container instance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html
-func AWSECSContainerARN(val string) attribute.KeyValue {
- return AWSECSContainerARNKey.String(val)
-}
-
-// AWSECSTaskARN returns an attribute KeyValue conforming to the
-// "aws.ecs.task.arn" semantic conventions. It represents the ARN of a running
-// [ECS task].
-//
-// [ECS task]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids
-func AWSECSTaskARN(val string) attribute.KeyValue {
- return AWSECSTaskARNKey.String(val)
-}
-
-// AWSECSTaskFamily returns an attribute KeyValue conforming to the
-// "aws.ecs.task.family" semantic conventions. It represents the family name of
-// the [ECS task definition] used to create the ECS task.
-//
-// [ECS task definition]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html
-func AWSECSTaskFamily(val string) attribute.KeyValue {
- return AWSECSTaskFamilyKey.String(val)
-}
-
-// AWSECSTaskID returns an attribute KeyValue conforming to the "aws.ecs.task.id"
-// semantic conventions. It represents the ID of a running ECS task. The ID MUST
-// be extracted from `task.arn`.
-func AWSECSTaskID(val string) attribute.KeyValue {
- return AWSECSTaskIDKey.String(val)
-}
-
-// AWSECSTaskRevision returns an attribute KeyValue conforming to the
-// "aws.ecs.task.revision" semantic conventions. It represents the revision for
-// the task definition used to create the ECS task.
-func AWSECSTaskRevision(val string) attribute.KeyValue {
- return AWSECSTaskRevisionKey.String(val)
-}
-
-// AWSEKSClusterARN returns an attribute KeyValue conforming to the
-// "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS
-// cluster.
-func AWSEKSClusterARN(val string) attribute.KeyValue {
- return AWSEKSClusterARNKey.String(val)
-}
-
-// AWSExtendedRequestID returns an attribute KeyValue conforming to the
-// "aws.extended_request_id" semantic conventions. It represents the AWS extended
-// request ID as returned in the response header `x-amz-id-2`.
-func AWSExtendedRequestID(val string) attribute.KeyValue {
- return AWSExtendedRequestIDKey.String(val)
-}
-
-// AWSLambdaInvokedARN returns an attribute KeyValue conforming to the
-// "aws.lambda.invoked_arn" semantic conventions. It represents the full invoked
-// ARN as provided on the `Context` passed to the function (
-// `Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next`
-// applicable).
-func AWSLambdaInvokedARN(val string) attribute.KeyValue {
- return AWSLambdaInvokedARNKey.String(val)
-}
-
-// AWSLogGroupARNs returns an attribute KeyValue conforming to the
-// "aws.log.group.arns" semantic conventions. It represents the Amazon Resource
-// Name(s) (ARN) of the AWS log group(s).
-func AWSLogGroupARNs(val ...string) attribute.KeyValue {
- return AWSLogGroupARNsKey.StringSlice(val)
-}
-
-// AWSLogGroupNames returns an attribute KeyValue conforming to the
-// "aws.log.group.names" semantic conventions. It represents the name(s) of the
-// AWS log group(s) an application is writing to.
-func AWSLogGroupNames(val ...string) attribute.KeyValue {
- return AWSLogGroupNamesKey.StringSlice(val)
-}
-
-// AWSLogStreamARNs returns an attribute KeyValue conforming to the
-// "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the
-// AWS log stream(s).
-func AWSLogStreamARNs(val ...string) attribute.KeyValue {
- return AWSLogStreamARNsKey.StringSlice(val)
-}
-
-// AWSLogStreamNames returns an attribute KeyValue conforming to the
-// "aws.log.stream.names" semantic conventions. It represents the name(s) of the
-// AWS log stream(s) an application is writing to.
-func AWSLogStreamNames(val ...string) attribute.KeyValue {
- return AWSLogStreamNamesKey.StringSlice(val)
-}
-
-// AWSRequestID returns an attribute KeyValue conforming to the "aws.request_id"
-// semantic conventions. It represents the AWS request ID as returned in the
-// response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`
-// .
-func AWSRequestID(val string) attribute.KeyValue {
- return AWSRequestIDKey.String(val)
-}
-
-// AWSS3Bucket returns an attribute KeyValue conforming to the "aws.s3.bucket"
-// semantic conventions. It represents the S3 bucket name the request refers to.
-// Corresponds to the `--bucket` parameter of the [S3 API] operations.
-//
-// [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
-func AWSS3Bucket(val string) attribute.KeyValue {
- return AWSS3BucketKey.String(val)
-}
-
-// AWSS3CopySource returns an attribute KeyValue conforming to the
-// "aws.s3.copy_source" semantic conventions. It represents the source object (in
-// the form `bucket`/`key`) for the copy operation.
-func AWSS3CopySource(val string) attribute.KeyValue {
- return AWSS3CopySourceKey.String(val)
-}
-
-// AWSS3Delete returns an attribute KeyValue conforming to the "aws.s3.delete"
-// semantic conventions. It represents the delete request container that
-// specifies the objects to be deleted.
-func AWSS3Delete(val string) attribute.KeyValue {
- return AWSS3DeleteKey.String(val)
-}
-
-// AWSS3Key returns an attribute KeyValue conforming to the "aws.s3.key" semantic
-// conventions. It represents the S3 object key the request refers to.
-// Corresponds to the `--key` parameter of the [S3 API] operations.
-//
-// [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
-func AWSS3Key(val string) attribute.KeyValue {
- return AWSS3KeyKey.String(val)
-}
-
-// AWSS3PartNumber returns an attribute KeyValue conforming to the
-// "aws.s3.part_number" semantic conventions. It represents the part number of
-// the part being uploaded in a multipart-upload operation. This is a positive
-// integer between 1 and 10,000.
-func AWSS3PartNumber(val int) attribute.KeyValue {
- return AWSS3PartNumberKey.Int(val)
-}
-
-// AWSS3UploadID returns an attribute KeyValue conforming to the
-// "aws.s3.upload_id" semantic conventions. It represents the upload ID that
-// identifies the multipart upload.
-func AWSS3UploadID(val string) attribute.KeyValue {
- return AWSS3UploadIDKey.String(val)
-}
-
-// Enum values for aws.ecs.launchtype
-var (
- // ec2
- // Stability: development
- AWSECSLaunchtypeEC2 = AWSECSLaunchtypeKey.String("ec2")
- // fargate
- // Stability: development
- AWSECSLaunchtypeFargate = AWSECSLaunchtypeKey.String("fargate")
-)
-
-// Namespace: az
-const (
- // AzNamespaceKey is the attribute Key conforming to the "az.namespace" semantic
- // conventions. It represents the [Azure Resource Provider Namespace] as
- // recognized by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Microsoft.Storage", "Microsoft.KeyVault", "Microsoft.ServiceBus"
- //
- // [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers
- AzNamespaceKey = attribute.Key("az.namespace")
-
- // AzServiceRequestIDKey is the attribute Key conforming to the
- // "az.service_request_id" semantic conventions. It represents the unique
- // identifier of the service request. It's generated by the Azure service and
- // returned with the response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "00000000-0000-0000-0000-000000000000"
- AzServiceRequestIDKey = attribute.Key("az.service_request_id")
-)
-
-// AzNamespace returns an attribute KeyValue conforming to the "az.namespace"
-// semantic conventions. It represents the [Azure Resource Provider Namespace] as
-// recognized by the client.
-//
-// [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers
-func AzNamespace(val string) attribute.KeyValue {
- return AzNamespaceKey.String(val)
-}
-
-// AzServiceRequestID returns an attribute KeyValue conforming to the
-// "az.service_request_id" semantic conventions. It represents the unique
-// identifier of the service request. It's generated by the Azure service and
-// returned with the response.
-func AzServiceRequestID(val string) attribute.KeyValue {
- return AzServiceRequestIDKey.String(val)
-}
-
-// Namespace: azure
-const (
- // AzureClientIDKey is the attribute Key conforming to the "azure.client.id"
- // semantic conventions. It represents the unique identifier of the client
- // instance.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "3ba4827d-4422-483f-b59f-85b74211c11d", "storage-client-1"
- AzureClientIDKey = attribute.Key("azure.client.id")
-
- // AzureCosmosDBConnectionModeKey is the attribute Key conforming to the
- // "azure.cosmosdb.connection.mode" semantic conventions. It represents the
- // cosmos client connection mode.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- AzureCosmosDBConnectionModeKey = attribute.Key("azure.cosmosdb.connection.mode")
-
- // AzureCosmosDBConsistencyLevelKey is the attribute Key conforming to the
- // "azure.cosmosdb.consistency.level" semantic conventions. It represents the
- // account or request [consistency level].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Eventual", "ConsistentPrefix", "BoundedStaleness", "Strong",
- // "Session"
- //
- // [consistency level]: https://learn.microsoft.com/azure/cosmos-db/consistency-levels
- AzureCosmosDBConsistencyLevelKey = attribute.Key("azure.cosmosdb.consistency.level")
-
- // AzureCosmosDBOperationContactedRegionsKey is the attribute Key conforming to
- // the "azure.cosmosdb.operation.contacted_regions" semantic conventions. It
- // represents the list of regions contacted during operation in the order that
- // they were contacted. If there is more than one region listed, it indicates
- // that the operation was performed on multiple regions i.e. cross-regional
- // call.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "North Central US", "Australia East", "Australia Southeast"
- // Note: Region name matches the format of `displayName` in [Azure Location API]
- //
- // [Azure Location API]: https://learn.microsoft.com/rest/api/subscription/subscriptions/list-locations?view=rest-subscription-2021-10-01&tabs=HTTP#location
- AzureCosmosDBOperationContactedRegionsKey = attribute.Key("azure.cosmosdb.operation.contacted_regions")
-
- // AzureCosmosDBOperationRequestChargeKey is the attribute Key conforming to the
- // "azure.cosmosdb.operation.request_charge" semantic conventions. It represents
- // the number of request units consumed by the operation.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 46.18, 1.0
- AzureCosmosDBOperationRequestChargeKey = attribute.Key("azure.cosmosdb.operation.request_charge")
-
- // AzureCosmosDBRequestBodySizeKey is the attribute Key conforming to the
- // "azure.cosmosdb.request.body.size" semantic conventions. It represents the
- // request payload size in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- AzureCosmosDBRequestBodySizeKey = attribute.Key("azure.cosmosdb.request.body.size")
-
- // AzureCosmosDBResponseSubStatusCodeKey is the attribute Key conforming to the
- // "azure.cosmosdb.response.sub_status_code" semantic conventions. It represents
- // the cosmos DB sub status code.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1000, 1002
- AzureCosmosDBResponseSubStatusCodeKey = attribute.Key("azure.cosmosdb.response.sub_status_code")
-)
-
-// AzureClientID returns an attribute KeyValue conforming to the
-// "azure.client.id" semantic conventions. It represents the unique identifier of
-// the client instance.
-func AzureClientID(val string) attribute.KeyValue {
- return AzureClientIDKey.String(val)
-}
-
-// AzureCosmosDBOperationContactedRegions returns an attribute KeyValue
-// conforming to the "azure.cosmosdb.operation.contacted_regions" semantic
-// conventions. It represents the list of regions contacted during operation in
-// the order that they were contacted. If there is more than one region listed,
-// it indicates that the operation was performed on multiple regions i.e.
-// cross-regional call.
-func AzureCosmosDBOperationContactedRegions(val ...string) attribute.KeyValue {
- return AzureCosmosDBOperationContactedRegionsKey.StringSlice(val)
-}
-
-// AzureCosmosDBOperationRequestCharge returns an attribute KeyValue conforming
-// to the "azure.cosmosdb.operation.request_charge" semantic conventions. It
-// represents the number of request units consumed by the operation.
-func AzureCosmosDBOperationRequestCharge(val float64) attribute.KeyValue {
- return AzureCosmosDBOperationRequestChargeKey.Float64(val)
-}
-
-// AzureCosmosDBRequestBodySize returns an attribute KeyValue conforming to the
-// "azure.cosmosdb.request.body.size" semantic conventions. It represents the
-// request payload size in bytes.
-func AzureCosmosDBRequestBodySize(val int) attribute.KeyValue {
- return AzureCosmosDBRequestBodySizeKey.Int(val)
-}
-
-// AzureCosmosDBResponseSubStatusCode returns an attribute KeyValue conforming to
-// the "azure.cosmosdb.response.sub_status_code" semantic conventions. It
-// represents the cosmos DB sub status code.
-func AzureCosmosDBResponseSubStatusCode(val int) attribute.KeyValue {
- return AzureCosmosDBResponseSubStatusCodeKey.Int(val)
-}
-
-// Enum values for azure.cosmosdb.connection.mode
-var (
- // Gateway (HTTP) connection.
- // Stability: development
- AzureCosmosDBConnectionModeGateway = AzureCosmosDBConnectionModeKey.String("gateway")
- // Direct connection.
- // Stability: development
- AzureCosmosDBConnectionModeDirect = AzureCosmosDBConnectionModeKey.String("direct")
-)
-
-// Enum values for azure.cosmosdb.consistency.level
-var (
- // strong
- // Stability: development
- AzureCosmosDBConsistencyLevelStrong = AzureCosmosDBConsistencyLevelKey.String("Strong")
- // bounded_staleness
- // Stability: development
- AzureCosmosDBConsistencyLevelBoundedStaleness = AzureCosmosDBConsistencyLevelKey.String("BoundedStaleness")
- // session
- // Stability: development
- AzureCosmosDBConsistencyLevelSession = AzureCosmosDBConsistencyLevelKey.String("Session")
- // eventual
- // Stability: development
- AzureCosmosDBConsistencyLevelEventual = AzureCosmosDBConsistencyLevelKey.String("Eventual")
- // consistent_prefix
- // Stability: development
- AzureCosmosDBConsistencyLevelConsistentPrefix = AzureCosmosDBConsistencyLevelKey.String("ConsistentPrefix")
-)
-
-// Namespace: browser
-const (
- // BrowserBrandsKey is the attribute Key conforming to the "browser.brands"
- // semantic conventions. It represents the array of brand name and version
- // separated by a space.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: " Not A;Brand 99", "Chromium 99", "Chrome 99"
- // Note: This value is intended to be taken from the [UA client hints API] (
- // `navigator.userAgentData.brands`).
- //
- // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface
- BrowserBrandsKey = attribute.Key("browser.brands")
-
- // BrowserLanguageKey is the attribute Key conforming to the "browser.language"
- // semantic conventions. It represents the preferred language of the user using
- // the browser.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "en", "en-US", "fr", "fr-FR"
- // Note: This value is intended to be taken from the Navigator API
- // `navigator.language`.
- BrowserLanguageKey = attribute.Key("browser.language")
-
- // BrowserMobileKey is the attribute Key conforming to the "browser.mobile"
- // semantic conventions. It represents a boolean that is true if the browser is
- // running on a mobile device.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: This value is intended to be taken from the [UA client hints API] (
- // `navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be
- // left unset.
- //
- // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface
- BrowserMobileKey = attribute.Key("browser.mobile")
-
- // BrowserPlatformKey is the attribute Key conforming to the "browser.platform"
- // semantic conventions. It represents the platform on which the browser is
- // running.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Windows", "macOS", "Android"
- // Note: This value is intended to be taken from the [UA client hints API] (
- // `navigator.userAgentData.platform`). If unavailable, the legacy
- // `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD
- // be left unset in order for the values to be consistent.
- // The list of possible values is defined in the
- // [W3C User-Agent Client Hints specification]. Note that some (but not all) of
- // these values can overlap with values in the
- // [`os.type` and `os.name` attributes]. However, for consistency, the values in
- // the `browser.platform` attribute should capture the exact value that the user
- // agent provides.
- //
- // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface
- // [W3C User-Agent Client Hints specification]: https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform
- // [`os.type` and `os.name` attributes]: ./os.md
- BrowserPlatformKey = attribute.Key("browser.platform")
-)
-
-// BrowserBrands returns an attribute KeyValue conforming to the "browser.brands"
-// semantic conventions. It represents the array of brand name and version
-// separated by a space.
-func BrowserBrands(val ...string) attribute.KeyValue {
- return BrowserBrandsKey.StringSlice(val)
-}
-
-// BrowserLanguage returns an attribute KeyValue conforming to the
-// "browser.language" semantic conventions. It represents the preferred language
-// of the user using the browser.
-func BrowserLanguage(val string) attribute.KeyValue {
- return BrowserLanguageKey.String(val)
-}
-
-// BrowserMobile returns an attribute KeyValue conforming to the "browser.mobile"
-// semantic conventions. It represents a boolean that is true if the browser is
-// running on a mobile device.
-func BrowserMobile(val bool) attribute.KeyValue {
- return BrowserMobileKey.Bool(val)
-}
-
-// BrowserPlatform returns an attribute KeyValue conforming to the
-// "browser.platform" semantic conventions. It represents the platform on which
-// the browser is running.
-func BrowserPlatform(val string) attribute.KeyValue {
- return BrowserPlatformKey.String(val)
-}
-
-// Namespace: cassandra
-const (
- // CassandraConsistencyLevelKey is the attribute Key conforming to the
- // "cassandra.consistency.level" semantic conventions. It represents the
- // consistency level of the query. Based on consistency values from [CQL].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [CQL]: https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html
- CassandraConsistencyLevelKey = attribute.Key("cassandra.consistency.level")
-
- // CassandraCoordinatorDCKey is the attribute Key conforming to the
- // "cassandra.coordinator.dc" semantic conventions. It represents the data
- // center of the coordinating node for a query.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: us-west-2
- CassandraCoordinatorDCKey = attribute.Key("cassandra.coordinator.dc")
-
- // CassandraCoordinatorIDKey is the attribute Key conforming to the
- // "cassandra.coordinator.id" semantic conventions. It represents the ID of the
- // coordinating node for a query.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: be13faa2-8574-4d71-926d-27f16cf8a7af
- CassandraCoordinatorIDKey = attribute.Key("cassandra.coordinator.id")
-
- // CassandraPageSizeKey is the attribute Key conforming to the
- // "cassandra.page.size" semantic conventions. It represents the fetch size used
- // for paging, i.e. how many rows will be returned at once.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 5000
- CassandraPageSizeKey = attribute.Key("cassandra.page.size")
-
- // CassandraQueryIdempotentKey is the attribute Key conforming to the
- // "cassandra.query.idempotent" semantic conventions. It represents the whether
- // or not the query is idempotent.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- CassandraQueryIdempotentKey = attribute.Key("cassandra.query.idempotent")
-
- // CassandraSpeculativeExecutionCountKey is the attribute Key conforming to the
- // "cassandra.speculative_execution.count" semantic conventions. It represents
- // the number of times a query was speculatively executed. Not set or `0` if the
- // query was not executed speculatively.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0, 2
- CassandraSpeculativeExecutionCountKey = attribute.Key("cassandra.speculative_execution.count")
-)
-
-// CassandraCoordinatorDC returns an attribute KeyValue conforming to the
-// "cassandra.coordinator.dc" semantic conventions. It represents the data center
-// of the coordinating node for a query.
-func CassandraCoordinatorDC(val string) attribute.KeyValue {
- return CassandraCoordinatorDCKey.String(val)
-}
-
-// CassandraCoordinatorID returns an attribute KeyValue conforming to the
-// "cassandra.coordinator.id" semantic conventions. It represents the ID of the
-// coordinating node for a query.
-func CassandraCoordinatorID(val string) attribute.KeyValue {
- return CassandraCoordinatorIDKey.String(val)
-}
-
-// CassandraPageSize returns an attribute KeyValue conforming to the
-// "cassandra.page.size" semantic conventions. It represents the fetch size used
-// for paging, i.e. how many rows will be returned at once.
-func CassandraPageSize(val int) attribute.KeyValue {
- return CassandraPageSizeKey.Int(val)
-}
-
-// CassandraQueryIdempotent returns an attribute KeyValue conforming to the
-// "cassandra.query.idempotent" semantic conventions. It represents the whether
-// or not the query is idempotent.
-func CassandraQueryIdempotent(val bool) attribute.KeyValue {
- return CassandraQueryIdempotentKey.Bool(val)
-}
-
-// CassandraSpeculativeExecutionCount returns an attribute KeyValue conforming to
-// the "cassandra.speculative_execution.count" semantic conventions. It
-// represents the number of times a query was speculatively executed. Not set or
-// `0` if the query was not executed speculatively.
-func CassandraSpeculativeExecutionCount(val int) attribute.KeyValue {
- return CassandraSpeculativeExecutionCountKey.Int(val)
-}
-
-// Enum values for cassandra.consistency.level
-var (
- // all
- // Stability: development
- CassandraConsistencyLevelAll = CassandraConsistencyLevelKey.String("all")
- // each_quorum
- // Stability: development
- CassandraConsistencyLevelEachQuorum = CassandraConsistencyLevelKey.String("each_quorum")
- // quorum
- // Stability: development
- CassandraConsistencyLevelQuorum = CassandraConsistencyLevelKey.String("quorum")
- // local_quorum
- // Stability: development
- CassandraConsistencyLevelLocalQuorum = CassandraConsistencyLevelKey.String("local_quorum")
- // one
- // Stability: development
- CassandraConsistencyLevelOne = CassandraConsistencyLevelKey.String("one")
- // two
- // Stability: development
- CassandraConsistencyLevelTwo = CassandraConsistencyLevelKey.String("two")
- // three
- // Stability: development
- CassandraConsistencyLevelThree = CassandraConsistencyLevelKey.String("three")
- // local_one
- // Stability: development
- CassandraConsistencyLevelLocalOne = CassandraConsistencyLevelKey.String("local_one")
- // any
- // Stability: development
- CassandraConsistencyLevelAny = CassandraConsistencyLevelKey.String("any")
- // serial
- // Stability: development
- CassandraConsistencyLevelSerial = CassandraConsistencyLevelKey.String("serial")
- // local_serial
- // Stability: development
- CassandraConsistencyLevelLocalSerial = CassandraConsistencyLevelKey.String("local_serial")
-)
-
-// Namespace: cicd
-const (
- // CICDPipelineNameKey is the attribute Key conforming to the
- // "cicd.pipeline.name" semantic conventions. It represents the human readable
- // name of the pipeline within a CI/CD system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Build and Test", "Lint", "Deploy Go Project",
- // "deploy_to_environment"
- CICDPipelineNameKey = attribute.Key("cicd.pipeline.name")
-
- // CICDPipelineResultKey is the attribute Key conforming to the
- // "cicd.pipeline.result" semantic conventions. It represents the result of a
- // pipeline run.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "success", "failure", "timeout", "skipped"
- CICDPipelineResultKey = attribute.Key("cicd.pipeline.result")
-
- // CICDPipelineRunIDKey is the attribute Key conforming to the
- // "cicd.pipeline.run.id" semantic conventions. It represents the unique
- // identifier of a pipeline run within a CI/CD system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "120912"
- CICDPipelineRunIDKey = attribute.Key("cicd.pipeline.run.id")
-
- // CICDPipelineRunStateKey is the attribute Key conforming to the
- // "cicd.pipeline.run.state" semantic conventions. It represents the pipeline
- // run goes through these states during its lifecycle.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pending", "executing", "finalizing"
- CICDPipelineRunStateKey = attribute.Key("cicd.pipeline.run.state")
-
- // CICDPipelineTaskNameKey is the attribute Key conforming to the
- // "cicd.pipeline.task.name" semantic conventions. It represents the human
- // readable name of a task within a pipeline. Task here most closely aligns with
- // a [computing process] in a pipeline. Other terms for tasks include commands,
- // steps, and procedures.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Run GoLang Linter", "Go Build", "go-test", "deploy_binary"
- //
- // [computing process]: https://wikipedia.org/wiki/Pipeline_(computing)
- CICDPipelineTaskNameKey = attribute.Key("cicd.pipeline.task.name")
-
- // CICDPipelineTaskRunIDKey is the attribute Key conforming to the
- // "cicd.pipeline.task.run.id" semantic conventions. It represents the unique
- // identifier of a task run within a pipeline.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "12097"
- CICDPipelineTaskRunIDKey = attribute.Key("cicd.pipeline.task.run.id")
-
- // CICDPipelineTaskRunURLFullKey is the attribute Key conforming to the
- // "cicd.pipeline.task.run.url.full" semantic conventions. It represents the
- // [URL] of the pipeline run providing the complete address in order to locate
- // and identify the pipeline run.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075"
- //
- // [URL]: https://wikipedia.org/wiki/URL
- CICDPipelineTaskRunURLFullKey = attribute.Key("cicd.pipeline.task.run.url.full")
-
- // CICDPipelineTaskTypeKey is the attribute Key conforming to the
- // "cicd.pipeline.task.type" semantic conventions. It represents the type of the
- // task within a pipeline.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "build", "test", "deploy"
- CICDPipelineTaskTypeKey = attribute.Key("cicd.pipeline.task.type")
-
- // CICDSystemComponentKey is the attribute Key conforming to the
- // "cicd.system.component" semantic conventions. It represents the name of a
- // component of the CICD system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "controller", "scheduler", "agent"
- CICDSystemComponentKey = attribute.Key("cicd.system.component")
-
- // CICDWorkerStateKey is the attribute Key conforming to the "cicd.worker.state"
- // semantic conventions. It represents the state of a CICD worker / agent.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "idle", "busy", "down"
- CICDWorkerStateKey = attribute.Key("cicd.worker.state")
-)
-
-// CICDPipelineName returns an attribute KeyValue conforming to the
-// "cicd.pipeline.name" semantic conventions. It represents the human readable
-// name of the pipeline within a CI/CD system.
-func CICDPipelineName(val string) attribute.KeyValue {
- return CICDPipelineNameKey.String(val)
-}
-
-// CICDPipelineRunID returns an attribute KeyValue conforming to the
-// "cicd.pipeline.run.id" semantic conventions. It represents the unique
-// identifier of a pipeline run within a CI/CD system.
-func CICDPipelineRunID(val string) attribute.KeyValue {
- return CICDPipelineRunIDKey.String(val)
-}
-
-// CICDPipelineTaskName returns an attribute KeyValue conforming to the
-// "cicd.pipeline.task.name" semantic conventions. It represents the human
-// readable name of a task within a pipeline. Task here most closely aligns with
-// a [computing process] in a pipeline. Other terms for tasks include commands,
-// steps, and procedures.
-//
-// [computing process]: https://wikipedia.org/wiki/Pipeline_(computing)
-func CICDPipelineTaskName(val string) attribute.KeyValue {
- return CICDPipelineTaskNameKey.String(val)
-}
-
-// CICDPipelineTaskRunID returns an attribute KeyValue conforming to the
-// "cicd.pipeline.task.run.id" semantic conventions. It represents the unique
-// identifier of a task run within a pipeline.
-func CICDPipelineTaskRunID(val string) attribute.KeyValue {
- return CICDPipelineTaskRunIDKey.String(val)
-}
-
-// CICDPipelineTaskRunURLFull returns an attribute KeyValue conforming to the
-// "cicd.pipeline.task.run.url.full" semantic conventions. It represents the
-// [URL] of the pipeline run providing the complete address in order to locate
-// and identify the pipeline run.
-//
-// [URL]: https://wikipedia.org/wiki/URL
-func CICDPipelineTaskRunURLFull(val string) attribute.KeyValue {
- return CICDPipelineTaskRunURLFullKey.String(val)
-}
-
-// CICDSystemComponent returns an attribute KeyValue conforming to the
-// "cicd.system.component" semantic conventions. It represents the name of a
-// component of the CICD system.
-func CICDSystemComponent(val string) attribute.KeyValue {
- return CICDSystemComponentKey.String(val)
-}
-
-// Enum values for cicd.pipeline.result
-var (
- // The pipeline run finished successfully.
- // Stability: development
- CICDPipelineResultSuccess = CICDPipelineResultKey.String("success")
- // The pipeline run did not finish successfully, eg. due to a compile error or a
- // failing test. Such failures are usually detected by non-zero exit codes of
- // the tools executed in the pipeline run.
- // Stability: development
- CICDPipelineResultFailure = CICDPipelineResultKey.String("failure")
- // The pipeline run failed due to an error in the CICD system, eg. due to the
- // worker being killed.
- // Stability: development
- CICDPipelineResultError = CICDPipelineResultKey.String("error")
- // A timeout caused the pipeline run to be interrupted.
- // Stability: development
- CICDPipelineResultTimeout = CICDPipelineResultKey.String("timeout")
- // The pipeline run was cancelled, eg. by a user manually cancelling the
- // pipeline run.
- // Stability: development
- CICDPipelineResultCancellation = CICDPipelineResultKey.String("cancellation")
- // The pipeline run was skipped, eg. due to a precondition not being met.
- // Stability: development
- CICDPipelineResultSkip = CICDPipelineResultKey.String("skip")
-)
-
-// Enum values for cicd.pipeline.run.state
-var (
- // The run pending state spans from the event triggering the pipeline run until
- // the execution of the run starts (eg. time spent in a queue, provisioning
- // agents, creating run resources).
- //
- // Stability: development
- CICDPipelineRunStatePending = CICDPipelineRunStateKey.String("pending")
- // The executing state spans the execution of any run tasks (eg. build, test).
- // Stability: development
- CICDPipelineRunStateExecuting = CICDPipelineRunStateKey.String("executing")
- // The finalizing state spans from when the run has finished executing (eg.
- // cleanup of run resources).
- // Stability: development
- CICDPipelineRunStateFinalizing = CICDPipelineRunStateKey.String("finalizing")
-)
-
-// Enum values for cicd.pipeline.task.type
-var (
- // build
- // Stability: development
- CICDPipelineTaskTypeBuild = CICDPipelineTaskTypeKey.String("build")
- // test
- // Stability: development
- CICDPipelineTaskTypeTest = CICDPipelineTaskTypeKey.String("test")
- // deploy
- // Stability: development
- CICDPipelineTaskTypeDeploy = CICDPipelineTaskTypeKey.String("deploy")
-)
-
-// Enum values for cicd.worker.state
-var (
- // The worker is not performing work for the CICD system. It is available to the
- // CICD system to perform work on (online / idle).
- // Stability: development
- CICDWorkerStateAvailable = CICDWorkerStateKey.String("available")
- // The worker is performing work for the CICD system.
- // Stability: development
- CICDWorkerStateBusy = CICDWorkerStateKey.String("busy")
- // The worker is not available to the CICD system (disconnected / down).
- // Stability: development
- CICDWorkerStateOffline = CICDWorkerStateKey.String("offline")
-)
-
-// Namespace: client
-const (
- // ClientAddressKey is the attribute Key conforming to the "client.address"
- // semantic conventions. It represents the client address - domain name if
- // available without reverse DNS lookup; otherwise, IP address or Unix domain
- // socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "client.example.com", "10.1.2.80", "/tmp/my.sock"
- // Note: When observed from the server side, and when communicating through an
- // intermediary, `client.address` SHOULD represent the client address behind any
- // intermediaries, for example proxies, if it's available.
- ClientAddressKey = attribute.Key("client.address")
-
- // ClientPortKey is the attribute Key conforming to the "client.port" semantic
- // conventions. It represents the client port number.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 65123
- // Note: When observed from the server side, and when communicating through an
- // intermediary, `client.port` SHOULD represent the client port behind any
- // intermediaries, for example proxies, if it's available.
- ClientPortKey = attribute.Key("client.port")
-)
-
-// ClientAddress returns an attribute KeyValue conforming to the "client.address"
-// semantic conventions. It represents the client address - domain name if
-// available without reverse DNS lookup; otherwise, IP address or Unix domain
-// socket name.
-func ClientAddress(val string) attribute.KeyValue {
- return ClientAddressKey.String(val)
-}
-
-// ClientPort returns an attribute KeyValue conforming to the "client.port"
-// semantic conventions. It represents the client port number.
-func ClientPort(val int) attribute.KeyValue {
- return ClientPortKey.Int(val)
-}
-
-// Namespace: cloud
-const (
- // CloudAccountIDKey is the attribute Key conforming to the "cloud.account.id"
- // semantic conventions. It represents the cloud account ID the resource is
- // assigned to.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "111111111111", "opentelemetry"
- CloudAccountIDKey = attribute.Key("cloud.account.id")
-
- // CloudAvailabilityZoneKey is the attribute Key conforming to the
- // "cloud.availability_zone" semantic conventions. It represents the cloud
- // regions often have multiple, isolated locations known as zones to increase
- // availability. Availability zone represents the zone where the resource is
- // running.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "us-east-1c"
- // Note: Availability zones are called "zones" on Alibaba Cloud and Google
- // Cloud.
- CloudAvailabilityZoneKey = attribute.Key("cloud.availability_zone")
-
- // CloudPlatformKey is the attribute Key conforming to the "cloud.platform"
- // semantic conventions. It represents the cloud platform in use.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: The prefix of the service SHOULD match the one specified in
- // `cloud.provider`.
- CloudPlatformKey = attribute.Key("cloud.platform")
-
- // CloudProviderKey is the attribute Key conforming to the "cloud.provider"
- // semantic conventions. It represents the name of the cloud provider.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- CloudProviderKey = attribute.Key("cloud.provider")
-
- // CloudRegionKey is the attribute Key conforming to the "cloud.region" semantic
- // conventions. It represents the geographical region the resource is running.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "us-central1", "us-east-1"
- // Note: Refer to your provider's docs to see the available regions, for example
- // [Alibaba Cloud regions], [AWS regions], [Azure regions],
- // [Google Cloud regions], or [Tencent Cloud regions].
- //
- // [Alibaba Cloud regions]: https://www.alibabacloud.com/help/doc-detail/40654.htm
- // [AWS regions]: https://aws.amazon.com/about-aws/global-infrastructure/regions_az/
- // [Azure regions]: https://azure.microsoft.com/global-infrastructure/geographies/
- // [Google Cloud regions]: https://cloud.google.com/about/locations
- // [Tencent Cloud regions]: https://www.tencentcloud.com/document/product/213/6091
- CloudRegionKey = attribute.Key("cloud.region")
-
- // CloudResourceIDKey is the attribute Key conforming to the "cloud.resource_id"
- // semantic conventions. It represents the cloud provider-specific native
- // identifier of the monitored cloud resource (e.g. an [ARN] on AWS, a
- // [fully qualified resource ID] on Azure, a [full resource name] on GCP).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function",
- // "//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID",
- // "/subscriptions//resourceGroups/
- // /providers/Microsoft.Web/sites//functions/"
- // Note: On some cloud providers, it may not be possible to determine the full
- // ID at startup,
- // so it may be necessary to set `cloud.resource_id` as a span attribute
- // instead.
- //
- // The exact value to use for `cloud.resource_id` depends on the cloud provider.
- // The following well-known definitions MUST be used if you set this attribute
- // and they apply:
- //
- // - **AWS Lambda:** The function [ARN].
- // Take care not to use the "invoked ARN" directly but replace any
- // [alias suffix]
- // with the resolved function version, as the same runtime instance may be
- // invocable with
- // multiple different aliases.
- // - **GCP:** The [URI of the resource]
- // - **Azure:** The [Fully Qualified Resource ID] of the invoked function,
- // *not* the function app, having the form
- //
- // `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`
- // .
- // This means that a span attribute MUST be used, as an Azure function app
- // can host multiple functions that would usually share
- // a TracerProvider.
- //
- //
- // [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
- // [fully qualified resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id
- // [full resource name]: https://cloud.google.com/apis/design/resource_names#full_resource_name
- // [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
- // [alias suffix]: https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html
- // [URI of the resource]: https://cloud.google.com/iam/docs/full-resource-names
- // [Fully Qualified Resource ID]: https://docs.microsoft.com/rest/api/resources/resources/get-by-id
- CloudResourceIDKey = attribute.Key("cloud.resource_id")
-)
-
-// CloudAccountID returns an attribute KeyValue conforming to the
-// "cloud.account.id" semantic conventions. It represents the cloud account ID
-// the resource is assigned to.
-func CloudAccountID(val string) attribute.KeyValue {
- return CloudAccountIDKey.String(val)
-}
-
-// CloudAvailabilityZone returns an attribute KeyValue conforming to the
-// "cloud.availability_zone" semantic conventions. It represents the cloud
-// regions often have multiple, isolated locations known as zones to increase
-// availability. Availability zone represents the zone where the resource is
-// running.
-func CloudAvailabilityZone(val string) attribute.KeyValue {
- return CloudAvailabilityZoneKey.String(val)
-}
-
-// CloudRegion returns an attribute KeyValue conforming to the "cloud.region"
-// semantic conventions. It represents the geographical region the resource is
-// running.
-func CloudRegion(val string) attribute.KeyValue {
- return CloudRegionKey.String(val)
-}
-
-// CloudResourceID returns an attribute KeyValue conforming to the
-// "cloud.resource_id" semantic conventions. It represents the cloud
-// provider-specific native identifier of the monitored cloud resource (e.g. an
-// [ARN] on AWS, a [fully qualified resource ID] on Azure, a [full resource name]
-// on GCP).
-//
-// [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
-// [fully qualified resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id
-// [full resource name]: https://cloud.google.com/apis/design/resource_names#full_resource_name
-func CloudResourceID(val string) attribute.KeyValue {
- return CloudResourceIDKey.String(val)
-}
-
-// Enum values for cloud.platform
-var (
- // Alibaba Cloud Elastic Compute Service
- // Stability: development
- CloudPlatformAlibabaCloudECS = CloudPlatformKey.String("alibaba_cloud_ecs")
- // Alibaba Cloud Function Compute
- // Stability: development
- CloudPlatformAlibabaCloudFc = CloudPlatformKey.String("alibaba_cloud_fc")
- // Red Hat OpenShift on Alibaba Cloud
- // Stability: development
- CloudPlatformAlibabaCloudOpenshift = CloudPlatformKey.String("alibaba_cloud_openshift")
- // AWS Elastic Compute Cloud
- // Stability: development
- CloudPlatformAWSEC2 = CloudPlatformKey.String("aws_ec2")
- // AWS Elastic Container Service
- // Stability: development
- CloudPlatformAWSECS = CloudPlatformKey.String("aws_ecs")
- // AWS Elastic Kubernetes Service
- // Stability: development
- CloudPlatformAWSEKS = CloudPlatformKey.String("aws_eks")
- // AWS Lambda
- // Stability: development
- CloudPlatformAWSLambda = CloudPlatformKey.String("aws_lambda")
- // AWS Elastic Beanstalk
- // Stability: development
- CloudPlatformAWSElasticBeanstalk = CloudPlatformKey.String("aws_elastic_beanstalk")
- // AWS App Runner
- // Stability: development
- CloudPlatformAWSAppRunner = CloudPlatformKey.String("aws_app_runner")
- // Red Hat OpenShift on AWS (ROSA)
- // Stability: development
- CloudPlatformAWSOpenshift = CloudPlatformKey.String("aws_openshift")
- // Azure Virtual Machines
- // Stability: development
- CloudPlatformAzureVM = CloudPlatformKey.String("azure_vm")
- // Azure Container Apps
- // Stability: development
- CloudPlatformAzureContainerApps = CloudPlatformKey.String("azure_container_apps")
- // Azure Container Instances
- // Stability: development
- CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure_container_instances")
- // Azure Kubernetes Service
- // Stability: development
- CloudPlatformAzureAKS = CloudPlatformKey.String("azure_aks")
- // Azure Functions
- // Stability: development
- CloudPlatformAzureFunctions = CloudPlatformKey.String("azure_functions")
- // Azure App Service
- // Stability: development
- CloudPlatformAzureAppService = CloudPlatformKey.String("azure_app_service")
- // Azure Red Hat OpenShift
- // Stability: development
- CloudPlatformAzureOpenshift = CloudPlatformKey.String("azure_openshift")
- // Google Bare Metal Solution (BMS)
- // Stability: development
- CloudPlatformGCPBareMetalSolution = CloudPlatformKey.String("gcp_bare_metal_solution")
- // Google Cloud Compute Engine (GCE)
- // Stability: development
- CloudPlatformGCPComputeEngine = CloudPlatformKey.String("gcp_compute_engine")
- // Google Cloud Run
- // Stability: development
- CloudPlatformGCPCloudRun = CloudPlatformKey.String("gcp_cloud_run")
- // Google Cloud Kubernetes Engine (GKE)
- // Stability: development
- CloudPlatformGCPKubernetesEngine = CloudPlatformKey.String("gcp_kubernetes_engine")
- // Google Cloud Functions (GCF)
- // Stability: development
- CloudPlatformGCPCloudFunctions = CloudPlatformKey.String("gcp_cloud_functions")
- // Google Cloud App Engine (GAE)
- // Stability: development
- CloudPlatformGCPAppEngine = CloudPlatformKey.String("gcp_app_engine")
- // Red Hat OpenShift on Google Cloud
- // Stability: development
- CloudPlatformGCPOpenshift = CloudPlatformKey.String("gcp_openshift")
- // Red Hat OpenShift on IBM Cloud
- // Stability: development
- CloudPlatformIbmCloudOpenshift = CloudPlatformKey.String("ibm_cloud_openshift")
- // Compute on Oracle Cloud Infrastructure (OCI)
- // Stability: development
- CloudPlatformOracleCloudCompute = CloudPlatformKey.String("oracle_cloud_compute")
- // Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI)
- // Stability: development
- CloudPlatformOracleCloudOke = CloudPlatformKey.String("oracle_cloud_oke")
- // Tencent Cloud Cloud Virtual Machine (CVM)
- // Stability: development
- CloudPlatformTencentCloudCvm = CloudPlatformKey.String("tencent_cloud_cvm")
- // Tencent Cloud Elastic Kubernetes Service (EKS)
- // Stability: development
- CloudPlatformTencentCloudEKS = CloudPlatformKey.String("tencent_cloud_eks")
- // Tencent Cloud Serverless Cloud Function (SCF)
- // Stability: development
- CloudPlatformTencentCloudScf = CloudPlatformKey.String("tencent_cloud_scf")
-)
-
-// Enum values for cloud.provider
-var (
- // Alibaba Cloud
- // Stability: development
- CloudProviderAlibabaCloud = CloudProviderKey.String("alibaba_cloud")
- // Amazon Web Services
- // Stability: development
- CloudProviderAWS = CloudProviderKey.String("aws")
- // Microsoft Azure
- // Stability: development
- CloudProviderAzure = CloudProviderKey.String("azure")
- // Google Cloud Platform
- // Stability: development
- CloudProviderGCP = CloudProviderKey.String("gcp")
- // Heroku Platform as a Service
- // Stability: development
- CloudProviderHeroku = CloudProviderKey.String("heroku")
- // IBM Cloud
- // Stability: development
- CloudProviderIbmCloud = CloudProviderKey.String("ibm_cloud")
- // Oracle Cloud Infrastructure (OCI)
- // Stability: development
- CloudProviderOracleCloud = CloudProviderKey.String("oracle_cloud")
- // Tencent Cloud
- // Stability: development
- CloudProviderTencentCloud = CloudProviderKey.String("tencent_cloud")
-)
-
-// Namespace: cloudevents
-const (
- // CloudeventsEventIDKey is the attribute Key conforming to the
- // "cloudevents.event_id" semantic conventions. It represents the [event_id]
- // uniquely identifies the event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "123e4567-e89b-12d3-a456-426614174000", "0001"
- //
- // [event_id]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id
- CloudeventsEventIDKey = attribute.Key("cloudevents.event_id")
-
- // CloudeventsEventSourceKey is the attribute Key conforming to the
- // "cloudevents.event_source" semantic conventions. It represents the [source]
- // identifies the context in which an event happened.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "https://github.com/cloudevents", "/cloudevents/spec/pull/123",
- // "my-service"
- //
- // [source]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1
- CloudeventsEventSourceKey = attribute.Key("cloudevents.event_source")
-
- // CloudeventsEventSpecVersionKey is the attribute Key conforming to the
- // "cloudevents.event_spec_version" semantic conventions. It represents the
- // [version of the CloudEvents specification] which the event uses.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0
- //
- // [version of the CloudEvents specification]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion
- CloudeventsEventSpecVersionKey = attribute.Key("cloudevents.event_spec_version")
-
- // CloudeventsEventSubjectKey is the attribute Key conforming to the
- // "cloudevents.event_subject" semantic conventions. It represents the [subject]
- // of the event in the context of the event producer (identified by source).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: mynewfile.jpg
- //
- // [subject]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject
- CloudeventsEventSubjectKey = attribute.Key("cloudevents.event_subject")
-
- // CloudeventsEventTypeKey is the attribute Key conforming to the
- // "cloudevents.event_type" semantic conventions. It represents the [event_type]
- // contains a value describing the type of event related to the originating
- // occurrence.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "com.github.pull_request.opened", "com.example.object.deleted.v2"
- //
- // [event_type]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type
- CloudeventsEventTypeKey = attribute.Key("cloudevents.event_type")
-)
-
-// CloudeventsEventID returns an attribute KeyValue conforming to the
-// "cloudevents.event_id" semantic conventions. It represents the [event_id]
-// uniquely identifies the event.
-//
-// [event_id]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id
-func CloudeventsEventID(val string) attribute.KeyValue {
- return CloudeventsEventIDKey.String(val)
-}
-
-// CloudeventsEventSource returns an attribute KeyValue conforming to the
-// "cloudevents.event_source" semantic conventions. It represents the [source]
-// identifies the context in which an event happened.
-//
-// [source]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1
-func CloudeventsEventSource(val string) attribute.KeyValue {
- return CloudeventsEventSourceKey.String(val)
-}
-
-// CloudeventsEventSpecVersion returns an attribute KeyValue conforming to the
-// "cloudevents.event_spec_version" semantic conventions. It represents the
-// [version of the CloudEvents specification] which the event uses.
-//
-// [version of the CloudEvents specification]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion
-func CloudeventsEventSpecVersion(val string) attribute.KeyValue {
- return CloudeventsEventSpecVersionKey.String(val)
-}
-
-// CloudeventsEventSubject returns an attribute KeyValue conforming to the
-// "cloudevents.event_subject" semantic conventions. It represents the [subject]
-// of the event in the context of the event producer (identified by source).
-//
-// [subject]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject
-func CloudeventsEventSubject(val string) attribute.KeyValue {
- return CloudeventsEventSubjectKey.String(val)
-}
-
-// CloudeventsEventType returns an attribute KeyValue conforming to the
-// "cloudevents.event_type" semantic conventions. It represents the [event_type]
-// contains a value describing the type of event related to the originating
-// occurrence.
-//
-// [event_type]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type
-func CloudeventsEventType(val string) attribute.KeyValue {
- return CloudeventsEventTypeKey.String(val)
-}
-
-// Namespace: cloudfoundry
-const (
- // CloudfoundryAppIDKey is the attribute Key conforming to the
- // "cloudfoundry.app.id" semantic conventions. It represents the guid of the
- // application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.application_id`. This is the same value as
- // reported by `cf app --guid`.
- CloudfoundryAppIDKey = attribute.Key("cloudfoundry.app.id")
-
- // CloudfoundryAppInstanceIDKey is the attribute Key conforming to the
- // "cloudfoundry.app.instance.id" semantic conventions. It represents the index
- // of the application instance. 0 when just one instance is active.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0", "1"
- // Note: CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope]
- // .
- // It is used for logs and metrics emitted by CloudFoundry. It is
- // supposed to contain the application instance index for applications
- // deployed on the runtime.
- //
- // Application instrumentation should use the value from environment
- // variable `CF_INSTANCE_INDEX`.
- //
- // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope
- CloudfoundryAppInstanceIDKey = attribute.Key("cloudfoundry.app.instance.id")
-
- // CloudfoundryAppNameKey is the attribute Key conforming to the
- // "cloudfoundry.app.name" semantic conventions. It represents the name of the
- // application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-app-name"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.application_name`. This is the same value
- // as reported by `cf apps`.
- CloudfoundryAppNameKey = attribute.Key("cloudfoundry.app.name")
-
- // CloudfoundryOrgIDKey is the attribute Key conforming to the
- // "cloudfoundry.org.id" semantic conventions. It represents the guid of the
- // CloudFoundry org the application is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.org_id`. This is the same value as
- // reported by `cf org --guid`.
- CloudfoundryOrgIDKey = attribute.Key("cloudfoundry.org.id")
-
- // CloudfoundryOrgNameKey is the attribute Key conforming to the
- // "cloudfoundry.org.name" semantic conventions. It represents the name of the
- // CloudFoundry organization the app is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-org-name"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.org_name`. This is the same value as
- // reported by `cf orgs`.
- CloudfoundryOrgNameKey = attribute.Key("cloudfoundry.org.name")
-
- // CloudfoundryProcessIDKey is the attribute Key conforming to the
- // "cloudfoundry.process.id" semantic conventions. It represents the UID
- // identifying the process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to
- // `VCAP_APPLICATION.app_id` for applications deployed to the runtime.
- // For system components, this could be the actual PID.
- CloudfoundryProcessIDKey = attribute.Key("cloudfoundry.process.id")
-
- // CloudfoundryProcessTypeKey is the attribute Key conforming to the
- // "cloudfoundry.process.type" semantic conventions. It represents the type of
- // process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "web"
- // Note: CloudFoundry applications can consist of multiple jobs. Usually the
- // main process will be of type `web`. There can be additional background
- // tasks or side-cars with different process types.
- CloudfoundryProcessTypeKey = attribute.Key("cloudfoundry.process.type")
-
- // CloudfoundrySpaceIDKey is the attribute Key conforming to the
- // "cloudfoundry.space.id" semantic conventions. It represents the guid of the
- // CloudFoundry space the application is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.space_id`. This is the same value as
- // reported by `cf space --guid`.
- CloudfoundrySpaceIDKey = attribute.Key("cloudfoundry.space.id")
-
- // CloudfoundrySpaceNameKey is the attribute Key conforming to the
- // "cloudfoundry.space.name" semantic conventions. It represents the name of the
- // CloudFoundry space the application is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-space-name"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.space_name`. This is the same value as
- // reported by `cf spaces`.
- CloudfoundrySpaceNameKey = attribute.Key("cloudfoundry.space.name")
-
- // CloudfoundrySystemIDKey is the attribute Key conforming to the
- // "cloudfoundry.system.id" semantic conventions. It represents a guid or
- // another name describing the event source.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cf/gorouter"
- // Note: CloudFoundry defines the `source_id` in the [Loggregator v2 envelope].
- // It is used for logs and metrics emitted by CloudFoundry. It is
- // supposed to contain the component name, e.g. "gorouter", for
- // CloudFoundry components.
- //
- // When system components are instrumented, values from the
- // [Bosh spec]
- // should be used. The `system.id` should be set to
- // `spec.deployment/spec.name`.
- //
- // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope
- // [Bosh spec]: https://bosh.io/docs/jobs/#properties-spec
- CloudfoundrySystemIDKey = attribute.Key("cloudfoundry.system.id")
-
- // CloudfoundrySystemInstanceIDKey is the attribute Key conforming to the
- // "cloudfoundry.system.instance.id" semantic conventions. It represents a guid
- // describing the concrete instance of the event source.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope]
- // .
- // It is used for logs and metrics emitted by CloudFoundry. It is
- // supposed to contain the vm id for CloudFoundry components.
- //
- // When system components are instrumented, values from the
- // [Bosh spec]
- // should be used. The `system.instance.id` should be set to `spec.id`.
- //
- // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope
- // [Bosh spec]: https://bosh.io/docs/jobs/#properties-spec
- CloudfoundrySystemInstanceIDKey = attribute.Key("cloudfoundry.system.instance.id")
-)
-
-// CloudfoundryAppID returns an attribute KeyValue conforming to the
-// "cloudfoundry.app.id" semantic conventions. It represents the guid of the
-// application.
-func CloudfoundryAppID(val string) attribute.KeyValue {
- return CloudfoundryAppIDKey.String(val)
-}
-
-// CloudfoundryAppInstanceID returns an attribute KeyValue conforming to the
-// "cloudfoundry.app.instance.id" semantic conventions. It represents the index
-// of the application instance. 0 when just one instance is active.
-func CloudfoundryAppInstanceID(val string) attribute.KeyValue {
- return CloudfoundryAppInstanceIDKey.String(val)
-}
-
-// CloudfoundryAppName returns an attribute KeyValue conforming to the
-// "cloudfoundry.app.name" semantic conventions. It represents the name of the
-// application.
-func CloudfoundryAppName(val string) attribute.KeyValue {
- return CloudfoundryAppNameKey.String(val)
-}
-
-// CloudfoundryOrgID returns an attribute KeyValue conforming to the
-// "cloudfoundry.org.id" semantic conventions. It represents the guid of the
-// CloudFoundry org the application is running in.
-func CloudfoundryOrgID(val string) attribute.KeyValue {
- return CloudfoundryOrgIDKey.String(val)
-}
-
-// CloudfoundryOrgName returns an attribute KeyValue conforming to the
-// "cloudfoundry.org.name" semantic conventions. It represents the name of the
-// CloudFoundry organization the app is running in.
-func CloudfoundryOrgName(val string) attribute.KeyValue {
- return CloudfoundryOrgNameKey.String(val)
-}
-
-// CloudfoundryProcessID returns an attribute KeyValue conforming to the
-// "cloudfoundry.process.id" semantic conventions. It represents the UID
-// identifying the process.
-func CloudfoundryProcessID(val string) attribute.KeyValue {
- return CloudfoundryProcessIDKey.String(val)
-}
-
-// CloudfoundryProcessType returns an attribute KeyValue conforming to the
-// "cloudfoundry.process.type" semantic conventions. It represents the type of
-// process.
-func CloudfoundryProcessType(val string) attribute.KeyValue {
- return CloudfoundryProcessTypeKey.String(val)
-}
-
-// CloudfoundrySpaceID returns an attribute KeyValue conforming to the
-// "cloudfoundry.space.id" semantic conventions. It represents the guid of the
-// CloudFoundry space the application is running in.
-func CloudfoundrySpaceID(val string) attribute.KeyValue {
- return CloudfoundrySpaceIDKey.String(val)
-}
-
-// CloudfoundrySpaceName returns an attribute KeyValue conforming to the
-// "cloudfoundry.space.name" semantic conventions. It represents the name of the
-// CloudFoundry space the application is running in.
-func CloudfoundrySpaceName(val string) attribute.KeyValue {
- return CloudfoundrySpaceNameKey.String(val)
-}
-
-// CloudfoundrySystemID returns an attribute KeyValue conforming to the
-// "cloudfoundry.system.id" semantic conventions. It represents a guid or another
-// name describing the event source.
-func CloudfoundrySystemID(val string) attribute.KeyValue {
- return CloudfoundrySystemIDKey.String(val)
-}
-
-// CloudfoundrySystemInstanceID returns an attribute KeyValue conforming to the
-// "cloudfoundry.system.instance.id" semantic conventions. It represents a guid
-// describing the concrete instance of the event source.
-func CloudfoundrySystemInstanceID(val string) attribute.KeyValue {
- return CloudfoundrySystemInstanceIDKey.String(val)
-}
-
-// Namespace: code
-const (
- // CodeColumnNumberKey is the attribute Key conforming to the
- // "code.column.number" semantic conventions. It represents the column number in
- // `code.file.path` best representing the operation. It SHOULD point within the
- // code unit named in `code.function.name`.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- CodeColumnNumberKey = attribute.Key("code.column.number")
-
- // CodeFilePathKey is the attribute Key conforming to the "code.file.path"
- // semantic conventions. It represents the source code file name that identifies
- // the code unit as uniquely as possible (preferably an absolute file path).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: /usr/local/MyApplication/content_root/app/index.php
- CodeFilePathKey = attribute.Key("code.file.path")
-
- // CodeFilepathKey is the attribute Key conforming to the "code.filepath"
- // semantic conventions. It represents the deprecated, use `code.file.path`
- // instead.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: /usr/local/MyApplication/content_root/app/index.php
- CodeFilepathKey = attribute.Key("code.filepath")
-
- // CodeFunctionNameKey is the attribute Key conforming to the
- // "code.function.name" semantic conventions. It represents the method or
- // function name, or equivalent (usually rightmost part of the code unit's
- // name).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: serveRequest
- CodeFunctionNameKey = attribute.Key("code.function.name")
-
- // CodeLineNumberKey is the attribute Key conforming to the "code.line.number"
- // semantic conventions. It represents the line number in `code.file.path` best
- // representing the operation. It SHOULD point within the code unit named in
- // `code.function.name`.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- CodeLineNumberKey = attribute.Key("code.line.number")
-
- // CodeNamespaceKey is the attribute Key conforming to the "code.namespace"
- // semantic conventions. It represents the "namespace" within which
- // `code.function.name` is defined. Usually the qualified class or module name,
- // such that `code.namespace` + some separator + `code.function.name` form a
- // unique identifier for the code unit.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: com.example.MyHttpService
- CodeNamespaceKey = attribute.Key("code.namespace")
-
- // CodeStacktraceKey is the attribute Key conforming to the "code.stacktrace"
- // semantic conventions. It represents a stacktrace as a string in the natural
- // representation for the language runtime. The representation is to be
- // determined and documented by each language SIG.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at
- // com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at
- // com.example.GenerateTrace.main(GenerateTrace.java:5)
- CodeStacktraceKey = attribute.Key("code.stacktrace")
-)
-
-// CodeColumnNumber returns an attribute KeyValue conforming to the
-// "code.column.number" semantic conventions. It represents the column number in
-// `code.file.path` best representing the operation. It SHOULD point within the
-// code unit named in `code.function.name`.
-func CodeColumnNumber(val int) attribute.KeyValue {
- return CodeColumnNumberKey.Int(val)
-}
-
-// CodeFilePath returns an attribute KeyValue conforming to the "code.file.path"
-// semantic conventions. It represents the source code file name that identifies
-// the code unit as uniquely as possible (preferably an absolute file path).
-func CodeFilePath(val string) attribute.KeyValue {
- return CodeFilePathKey.String(val)
-}
-
-// CodeFilepath returns an attribute KeyValue conforming to the "code.filepath"
-// semantic conventions. It represents the deprecated, use `code.file.path`
-// instead.
-func CodeFilepath(val string) attribute.KeyValue {
- return CodeFilepathKey.String(val)
-}
-
-// CodeFunctionName returns an attribute KeyValue conforming to the
-// "code.function.name" semantic conventions. It represents the method or
-// function name, or equivalent (usually rightmost part of the code unit's name).
-func CodeFunctionName(val string) attribute.KeyValue {
- return CodeFunctionNameKey.String(val)
-}
-
-// CodeLineNumber returns an attribute KeyValue conforming to the
-// "code.line.number" semantic conventions. It represents the line number in
-// `code.file.path` best representing the operation. It SHOULD point within the
-// code unit named in `code.function.name`.
-func CodeLineNumber(val int) attribute.KeyValue {
- return CodeLineNumberKey.Int(val)
-}
-
-// CodeNamespace returns an attribute KeyValue conforming to the "code.namespace"
-// semantic conventions. It represents the "namespace" within which
-// `code.function.name` is defined. Usually the qualified class or module name,
-// such that `code.namespace` + some separator + `code.function.name` form a
-// unique identifier for the code unit.
-func CodeNamespace(val string) attribute.KeyValue {
- return CodeNamespaceKey.String(val)
-}
-
-// CodeStacktrace returns an attribute KeyValue conforming to the
-// "code.stacktrace" semantic conventions. It represents a stacktrace as a string
-// in the natural representation for the language runtime. The representation is
-// to be determined and documented by each language SIG.
-func CodeStacktrace(val string) attribute.KeyValue {
- return CodeStacktraceKey.String(val)
-}
-
-// Namespace: container
-const (
- // ContainerCommandKey is the attribute Key conforming to the
- // "container.command" semantic conventions. It represents the command used to
- // run the container (i.e. the command name).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "otelcontribcol"
- // Note: If using embedded credentials or sensitive data, it is recommended to
- // remove them to prevent potential leakage.
- ContainerCommandKey = attribute.Key("container.command")
-
- // ContainerCommandArgsKey is the attribute Key conforming to the
- // "container.command_args" semantic conventions. It represents the all the
- // command arguments (including the command/executable itself) run by the
- // container.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "otelcontribcol", "--config", "config.yaml"
- ContainerCommandArgsKey = attribute.Key("container.command_args")
-
- // ContainerCommandLineKey is the attribute Key conforming to the
- // "container.command_line" semantic conventions. It represents the full command
- // run by the container as a single string representing the full command.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "otelcontribcol --config config.yaml"
- ContainerCommandLineKey = attribute.Key("container.command_line")
-
- // ContainerCsiPluginNameKey is the attribute Key conforming to the
- // "container.csi.plugin.name" semantic conventions. It represents the name of
- // the CSI ([Container Storage Interface]) plugin used by the volume.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pd.csi.storage.gke.io"
- // Note: This can sometimes be referred to as a "driver" in CSI implementations.
- // This should represent the `name` field of the GetPluginInfo RPC.
- //
- // [Container Storage Interface]: https://github.com/container-storage-interface/spec
- ContainerCsiPluginNameKey = attribute.Key("container.csi.plugin.name")
-
- // ContainerCsiVolumeIDKey is the attribute Key conforming to the
- // "container.csi.volume.id" semantic conventions. It represents the unique
- // volume ID returned by the CSI ([Container Storage Interface]) plugin.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk"
- // Note: This can sometimes be referred to as a "volume handle" in CSI
- // implementations. This should represent the `Volume.volume_id` field in CSI
- // spec.
- //
- // [Container Storage Interface]: https://github.com/container-storage-interface/spec
- ContainerCsiVolumeIDKey = attribute.Key("container.csi.volume.id")
-
- // ContainerIDKey is the attribute Key conforming to the "container.id" semantic
- // conventions. It represents the container ID. Usually a UUID, as for example
- // used to [identify Docker containers]. The UUID might be abbreviated.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "a3bf90e006b2"
- //
- // [identify Docker containers]: https://docs.docker.com/engine/containers/run/#container-identification
- ContainerIDKey = attribute.Key("container.id")
-
- // ContainerImageIDKey is the attribute Key conforming to the
- // "container.image.id" semantic conventions. It represents the runtime specific
- // image identifier. Usually a hash algorithm followed by a UUID.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f"
- // Note: Docker defines a sha256 of the image id; `container.image.id`
- // corresponds to the `Image` field from the Docker container inspect [API]
- // endpoint.
- // K8s defines a link to the container registry repository with digest
- // `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`
- // .
- // The ID is assigned by the container runtime and can vary in different
- // environments. Consider using `oci.manifest.digest` if it is important to
- // identify the same image in different environments/runtimes.
- //
- // [API]: https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect
- ContainerImageIDKey = attribute.Key("container.image.id")
-
- // ContainerImageNameKey is the attribute Key conforming to the
- // "container.image.name" semantic conventions. It represents the name of the
- // image the container was built on.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "gcr.io/opentelemetry/operator"
- ContainerImageNameKey = attribute.Key("container.image.name")
-
- // ContainerImageRepoDigestsKey is the attribute Key conforming to the
- // "container.image.repo_digests" semantic conventions. It represents the repo
- // digests of the container image as provided by the container runtime.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb",
- // "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578"
- // Note: [Docker] and [CRI] report those under the `RepoDigests` field.
- //
- // [Docker]: https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect
- // [CRI]: https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238
- ContainerImageRepoDigestsKey = attribute.Key("container.image.repo_digests")
-
- // ContainerImageTagsKey is the attribute Key conforming to the
- // "container.image.tags" semantic conventions. It represents the container
- // image tags. An example can be found in [Docker Image Inspect]. Should be only
- // the `` section of the full name for example from
- // `registry.example.com/my-org/my-image:`.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "v1.27.1", "3.5.7-0"
- //
- // [Docker Image Inspect]: https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect
- ContainerImageTagsKey = attribute.Key("container.image.tags")
-
- // ContainerNameKey is the attribute Key conforming to the "container.name"
- // semantic conventions. It represents the container name used by container
- // runtime.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry-autoconf"
- ContainerNameKey = attribute.Key("container.name")
-
- // ContainerRuntimeKey is the attribute Key conforming to the
- // "container.runtime" semantic conventions. It represents the container runtime
- // managing this container.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "docker", "containerd", "rkt"
- ContainerRuntimeKey = attribute.Key("container.runtime")
-)
-
-// ContainerCommand returns an attribute KeyValue conforming to the
-// "container.command" semantic conventions. It represents the command used to
-// run the container (i.e. the command name).
-func ContainerCommand(val string) attribute.KeyValue {
- return ContainerCommandKey.String(val)
-}
-
-// ContainerCommandArgs returns an attribute KeyValue conforming to the
-// "container.command_args" semantic conventions. It represents the all the
-// command arguments (including the command/executable itself) run by the
-// container.
-func ContainerCommandArgs(val ...string) attribute.KeyValue {
- return ContainerCommandArgsKey.StringSlice(val)
-}
-
-// ContainerCommandLine returns an attribute KeyValue conforming to the
-// "container.command_line" semantic conventions. It represents the full command
-// run by the container as a single string representing the full command.
-func ContainerCommandLine(val string) attribute.KeyValue {
- return ContainerCommandLineKey.String(val)
-}
-
-// ContainerCsiPluginName returns an attribute KeyValue conforming to the
-// "container.csi.plugin.name" semantic conventions. It represents the name of
-// the CSI ([Container Storage Interface]) plugin used by the volume.
-//
-// [Container Storage Interface]: https://github.com/container-storage-interface/spec
-func ContainerCsiPluginName(val string) attribute.KeyValue {
- return ContainerCsiPluginNameKey.String(val)
-}
-
-// ContainerCsiVolumeID returns an attribute KeyValue conforming to the
-// "container.csi.volume.id" semantic conventions. It represents the unique
-// volume ID returned by the CSI ([Container Storage Interface]) plugin.
-//
-// [Container Storage Interface]: https://github.com/container-storage-interface/spec
-func ContainerCsiVolumeID(val string) attribute.KeyValue {
- return ContainerCsiVolumeIDKey.String(val)
-}
-
-// ContainerID returns an attribute KeyValue conforming to the "container.id"
-// semantic conventions. It represents the container ID. Usually a UUID, as for
-// example used to [identify Docker containers]. The UUID might be abbreviated.
-//
-// [identify Docker containers]: https://docs.docker.com/engine/containers/run/#container-identification
-func ContainerID(val string) attribute.KeyValue {
- return ContainerIDKey.String(val)
-}
-
-// ContainerImageID returns an attribute KeyValue conforming to the
-// "container.image.id" semantic conventions. It represents the runtime specific
-// image identifier. Usually a hash algorithm followed by a UUID.
-func ContainerImageID(val string) attribute.KeyValue {
- return ContainerImageIDKey.String(val)
-}
-
-// ContainerImageName returns an attribute KeyValue conforming to the
-// "container.image.name" semantic conventions. It represents the name of the
-// image the container was built on.
-func ContainerImageName(val string) attribute.KeyValue {
- return ContainerImageNameKey.String(val)
-}
-
-// ContainerImageRepoDigests returns an attribute KeyValue conforming to the
-// "container.image.repo_digests" semantic conventions. It represents the repo
-// digests of the container image as provided by the container runtime.
-func ContainerImageRepoDigests(val ...string) attribute.KeyValue {
- return ContainerImageRepoDigestsKey.StringSlice(val)
-}
-
-// ContainerImageTags returns an attribute KeyValue conforming to the
-// "container.image.tags" semantic conventions. It represents the container image
-// tags. An example can be found in [Docker Image Inspect]. Should be only the
-// `` section of the full name for example from
-// `registry.example.com/my-org/my-image:`.
-//
-// [Docker Image Inspect]: https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect
-func ContainerImageTags(val ...string) attribute.KeyValue {
- return ContainerImageTagsKey.StringSlice(val)
-}
-
-// ContainerName returns an attribute KeyValue conforming to the "container.name"
-// semantic conventions. It represents the container name used by container
-// runtime.
-func ContainerName(val string) attribute.KeyValue {
- return ContainerNameKey.String(val)
-}
-
-// ContainerRuntime returns an attribute KeyValue conforming to the
-// "container.runtime" semantic conventions. It represents the container runtime
-// managing this container.
-func ContainerRuntime(val string) attribute.KeyValue {
- return ContainerRuntimeKey.String(val)
-}
-
-// Namespace: cpu
-const (
- // CPUModeKey is the attribute Key conforming to the "cpu.mode" semantic
- // conventions. It represents the mode of the CPU.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "user", "system"
- CPUModeKey = attribute.Key("cpu.mode")
-)
-
-// Enum values for cpu.mode
-var (
- // user
- // Stability: development
- CPUModeUser = CPUModeKey.String("user")
- // system
- // Stability: development
- CPUModeSystem = CPUModeKey.String("system")
- // nice
- // Stability: development
- CPUModeNice = CPUModeKey.String("nice")
- // idle
- // Stability: development
- CPUModeIdle = CPUModeKey.String("idle")
- // iowait
- // Stability: development
- CPUModeIowait = CPUModeKey.String("iowait")
- // interrupt
- // Stability: development
- CPUModeInterrupt = CPUModeKey.String("interrupt")
- // steal
- // Stability: development
- CPUModeSteal = CPUModeKey.String("steal")
- // kernel
- // Stability: development
- CPUModeKernel = CPUModeKey.String("kernel")
-)
-
-// Namespace: db
-const (
- // DBClientConnectionPoolNameKey is the attribute Key conforming to the
- // "db.client.connection.pool.name" semantic conventions. It represents the name
- // of the connection pool; unique within the instrumented application. In case
- // the connection pool implementation doesn't provide a name, instrumentation
- // SHOULD use a combination of parameters that would make the name unique, for
- // example, combining attributes `server.address`, `server.port`, and
- // `db.namespace`, formatted as `server.address:server.port/db.namespace`.
- // Instrumentations that generate connection pool name following different
- // patterns SHOULD document it.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "myDataSource"
- DBClientConnectionPoolNameKey = attribute.Key("db.client.connection.pool.name")
-
- // DBClientConnectionStateKey is the attribute Key conforming to the
- // "db.client.connection.state" semantic conventions. It represents the state of
- // a connection in the pool.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "idle"
- DBClientConnectionStateKey = attribute.Key("db.client.connection.state")
-
- // DBCollectionNameKey is the attribute Key conforming to the
- // "db.collection.name" semantic conventions. It represents the name of a
- // collection (table, container) within the database.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "public.users", "customers"
- // Note: It is RECOMMENDED to capture the value as provided by the application
- // without attempting to do any case normalization.
- //
- // The collection name SHOULD NOT be extracted from `db.query.text`,
- // unless the query format is known to only ever have a single collection name
- // present.
- //
- // For batch operations, if the individual operations are known to have the same
- // collection name
- // then that collection name SHOULD be used.
- DBCollectionNameKey = attribute.Key("db.collection.name")
-
- // DBNamespaceKey is the attribute Key conforming to the "db.namespace" semantic
- // conventions. It represents the name of the database, fully qualified within
- // the server address and port.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "customers", "test.users"
- // Note: If a database system has multiple namespace components, they SHOULD be
- // concatenated (potentially using database system specific conventions) from
- // most general to most specific namespace component, and more specific
- // namespaces SHOULD NOT be captured without the more general namespaces, to
- // ensure that "startswith" queries for the more general namespaces will be
- // valid.
- // Semantic conventions for individual database systems SHOULD document what
- // `db.namespace` means in the context of that system.
- // It is RECOMMENDED to capture the value as provided by the application without
- // attempting to do any case normalization.
- DBNamespaceKey = attribute.Key("db.namespace")
-
- // DBOperationBatchSizeKey is the attribute Key conforming to the
- // "db.operation.batch.size" semantic conventions. It represents the number of
- // queries included in a batch operation.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: 2, 3, 4
- // Note: Operations are only considered batches when they contain two or more
- // operations, and so `db.operation.batch.size` SHOULD never be `1`.
- DBOperationBatchSizeKey = attribute.Key("db.operation.batch.size")
-
- // DBOperationNameKey is the attribute Key conforming to the "db.operation.name"
- // semantic conventions. It represents the name of the operation or command
- // being executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "findAndModify", "HMSET", "SELECT"
- // Note: It is RECOMMENDED to capture the value as provided by the application
- // without attempting to do any case normalization.
- //
- // The operation name SHOULD NOT be extracted from `db.query.text`,
- // unless the query format is known to only ever have a single operation name
- // present.
- //
- // For batch operations, if the individual operations are known to have the same
- // operation name
- // then that operation name SHOULD be used prepended by `BATCH `,
- // otherwise `db.operation.name` SHOULD be `BATCH` or some other database
- // system specific term if more applicable.
- DBOperationNameKey = attribute.Key("db.operation.name")
-
- // DBQuerySummaryKey is the attribute Key conforming to the "db.query.summary"
- // semantic conventions. It represents the low cardinality representation of a
- // database query text.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "SELECT wuser_table", "INSERT shipping_details SELECT orders", "get
- // user by id"
- // Note: `db.query.summary` provides static summary of the query text. It
- // describes a class of database queries and is useful as a grouping key,
- // especially when analyzing telemetry for database calls involving complex
- // queries.
- // Summary may be available to the instrumentation through instrumentation hooks
- // or other means. If it is not available, instrumentations that support query
- // parsing SHOULD generate a summary following [Generating query summary]
- // section.
- //
- // [Generating query summary]: ../../docs/database/database-spans.md#generating-a-summary-of-the-query-text
- DBQuerySummaryKey = attribute.Key("db.query.summary")
-
- // DBQueryTextKey is the attribute Key conforming to the "db.query.text"
- // semantic conventions. It represents the database query being executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "SELECT * FROM wuser_table where username = ?", "SET mykey ?"
- // Note: For sanitization see [Sanitization of `db.query.text`].
- // For batch operations, if the individual operations are known to have the same
- // query text then that query text SHOULD be used, otherwise all of the
- // individual query texts SHOULD be concatenated with separator `; ` or some
- // other database system specific separator if more applicable.
- // Even though parameterized query text can potentially have sensitive data, by
- // using a parameterized query the user is giving a strong signal that any
- // sensitive data will be passed as parameter values, and the benefit to
- // observability of capturing the static part of the query text by default
- // outweighs the risk.
- //
- // [Sanitization of `db.query.text`]: ../../docs/database/database-spans.md#sanitization-of-dbquerytext
- DBQueryTextKey = attribute.Key("db.query.text")
-
- // DBResponseReturnedRowsKey is the attribute Key conforming to the
- // "db.response.returned_rows" semantic conventions. It represents the number of
- // rows returned by the operation.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 10, 30, 1000
- DBResponseReturnedRowsKey = attribute.Key("db.response.returned_rows")
-
- // DBResponseStatusCodeKey is the attribute Key conforming to the
- // "db.response.status_code" semantic conventions. It represents the database
- // response status code.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "102", "ORA-17002", "08P01", "404"
- // Note: The status code returned by the database. Usually it represents an
- // error code, but may also represent partial success, warning, or differentiate
- // between various types of successful outcomes.
- // Semantic conventions for individual database systems SHOULD document what
- // `db.response.status_code` means in the context of that system.
- DBResponseStatusCodeKey = attribute.Key("db.response.status_code")
-
- // DBSystemNameKey is the attribute Key conforming to the "db.system.name"
- // semantic conventions. It represents the database management system (DBMS)
- // product as identified by the client instrumentation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples:
- // Note: The actual DBMS may differ from the one identified by the client. For
- // example, when using PostgreSQL client libraries to connect to a CockroachDB,
- // the `db.system.name` is set to `postgresql` based on the instrumentation's
- // best knowledge.
- DBSystemNameKey = attribute.Key("db.system.name")
-)
-
-// DBClientConnectionPoolName returns an attribute KeyValue conforming to the
-// "db.client.connection.pool.name" semantic conventions. It represents the name
-// of the connection pool; unique within the instrumented application. In case
-// the connection pool implementation doesn't provide a name, instrumentation
-// SHOULD use a combination of parameters that would make the name unique, for
-// example, combining attributes `server.address`, `server.port`, and
-// `db.namespace`, formatted as `server.address:server.port/db.namespace`.
-// Instrumentations that generate connection pool name following different
-// patterns SHOULD document it.
-func DBClientConnectionPoolName(val string) attribute.KeyValue {
- return DBClientConnectionPoolNameKey.String(val)
-}
-
-// DBCollectionName returns an attribute KeyValue conforming to the
-// "db.collection.name" semantic conventions. It represents the name of a
-// collection (table, container) within the database.
-func DBCollectionName(val string) attribute.KeyValue {
- return DBCollectionNameKey.String(val)
-}
-
-// DBNamespace returns an attribute KeyValue conforming to the "db.namespace"
-// semantic conventions. It represents the name of the database, fully qualified
-// within the server address and port.
-func DBNamespace(val string) attribute.KeyValue {
- return DBNamespaceKey.String(val)
-}
-
-// DBOperationBatchSize returns an attribute KeyValue conforming to the
-// "db.operation.batch.size" semantic conventions. It represents the number of
-// queries included in a batch operation.
-func DBOperationBatchSize(val int) attribute.KeyValue {
- return DBOperationBatchSizeKey.Int(val)
-}
-
-// DBOperationName returns an attribute KeyValue conforming to the
-// "db.operation.name" semantic conventions. It represents the name of the
-// operation or command being executed.
-func DBOperationName(val string) attribute.KeyValue {
- return DBOperationNameKey.String(val)
-}
-
-// DBQuerySummary returns an attribute KeyValue conforming to the
-// "db.query.summary" semantic conventions. It represents the low cardinality
-// representation of a database query text.
-func DBQuerySummary(val string) attribute.KeyValue {
- return DBQuerySummaryKey.String(val)
-}
-
-// DBQueryText returns an attribute KeyValue conforming to the "db.query.text"
-// semantic conventions. It represents the database query being executed.
-func DBQueryText(val string) attribute.KeyValue {
- return DBQueryTextKey.String(val)
-}
-
-// DBResponseReturnedRows returns an attribute KeyValue conforming to the
-// "db.response.returned_rows" semantic conventions. It represents the number of
-// rows returned by the operation.
-func DBResponseReturnedRows(val int) attribute.KeyValue {
- return DBResponseReturnedRowsKey.Int(val)
-}
-
-// DBResponseStatusCode returns an attribute KeyValue conforming to the
-// "db.response.status_code" semantic conventions. It represents the database
-// response status code.
-func DBResponseStatusCode(val string) attribute.KeyValue {
- return DBResponseStatusCodeKey.String(val)
-}
-
-// Enum values for db.client.connection.state
-var (
- // idle
- // Stability: development
- DBClientConnectionStateIdle = DBClientConnectionStateKey.String("idle")
- // used
- // Stability: development
- DBClientConnectionStateUsed = DBClientConnectionStateKey.String("used")
-)
-
-// Enum values for db.system.name
-var (
- // Some other SQL database. Fallback only.
- // Stability: development
- DBSystemNameOtherSQL = DBSystemNameKey.String("other_sql")
- // [Adabas (Adaptable Database System)]
- // Stability: development
- //
- // [Adabas (Adaptable Database System)]: https://documentation.softwareag.com/?pf=adabas
- DBSystemNameSoftwareagAdabas = DBSystemNameKey.String("softwareag.adabas")
- // [Actian Ingres]
- // Stability: development
- //
- // [Actian Ingres]: https://www.actian.com/databases/ingres/
- DBSystemNameActianIngres = DBSystemNameKey.String("actian.ingres")
- // [Amazon DynamoDB]
- // Stability: development
- //
- // [Amazon DynamoDB]: https://aws.amazon.com/pm/dynamodb/
- DBSystemNameAWSDynamoDB = DBSystemNameKey.String("aws.dynamodb")
- // [Amazon Redshift]
- // Stability: development
- //
- // [Amazon Redshift]: https://aws.amazon.com/redshift/
- DBSystemNameAWSRedshift = DBSystemNameKey.String("aws.redshift")
- // [Azure Cosmos DB]
- // Stability: development
- //
- // [Azure Cosmos DB]: https://learn.microsoft.com/azure/cosmos-db
- DBSystemNameAzureCosmosDB = DBSystemNameKey.String("azure.cosmosdb")
- // [InterSystems Caché]
- // Stability: development
- //
- // [InterSystems Caché]: https://www.intersystems.com/products/cache/
- DBSystemNameIntersystemsCache = DBSystemNameKey.String("intersystems.cache")
- // [Apache Cassandra]
- // Stability: development
- //
- // [Apache Cassandra]: https://cassandra.apache.org/
- DBSystemNameCassandra = DBSystemNameKey.String("cassandra")
- // [ClickHouse]
- // Stability: development
- //
- // [ClickHouse]: https://clickhouse.com/
- DBSystemNameClickhouse = DBSystemNameKey.String("clickhouse")
- // [CockroachDB]
- // Stability: development
- //
- // [CockroachDB]: https://www.cockroachlabs.com/
- DBSystemNameCockroachdb = DBSystemNameKey.String("cockroachdb")
- // [Couchbase]
- // Stability: development
- //
- // [Couchbase]: https://www.couchbase.com/
- DBSystemNameCouchbase = DBSystemNameKey.String("couchbase")
- // [Apache CouchDB]
- // Stability: development
- //
- // [Apache CouchDB]: https://couchdb.apache.org/
- DBSystemNameCouchDB = DBSystemNameKey.String("couchdb")
- // [Apache Derby]
- // Stability: development
- //
- // [Apache Derby]: https://db.apache.org/derby/
- DBSystemNameDerby = DBSystemNameKey.String("derby")
- // [Elasticsearch]
- // Stability: development
- //
- // [Elasticsearch]: https://www.elastic.co/elasticsearch
- DBSystemNameElasticsearch = DBSystemNameKey.String("elasticsearch")
- // [Firebird]
- // Stability: development
- //
- // [Firebird]: https://www.firebirdsql.org/
- DBSystemNameFirebirdsql = DBSystemNameKey.String("firebirdsql")
- // [Google Cloud Spanner]
- // Stability: development
- //
- // [Google Cloud Spanner]: https://cloud.google.com/spanner
- DBSystemNameGCPSpanner = DBSystemNameKey.String("gcp.spanner")
- // [Apache Geode]
- // Stability: development
- //
- // [Apache Geode]: https://geode.apache.org/
- DBSystemNameGeode = DBSystemNameKey.String("geode")
- // [H2 Database]
- // Stability: development
- //
- // [H2 Database]: https://h2database.com/
- DBSystemNameH2database = DBSystemNameKey.String("h2database")
- // [Apache HBase]
- // Stability: development
- //
- // [Apache HBase]: https://hbase.apache.org/
- DBSystemNameHBase = DBSystemNameKey.String("hbase")
- // [Apache Hive]
- // Stability: development
- //
- // [Apache Hive]: https://hive.apache.org/
- DBSystemNameHive = DBSystemNameKey.String("hive")
- // [HyperSQL Database]
- // Stability: development
- //
- // [HyperSQL Database]: https://hsqldb.org/
- DBSystemNameHSQLDB = DBSystemNameKey.String("hsqldb")
- // [IBM Db2]
- // Stability: development
- //
- // [IBM Db2]: https://www.ibm.com/db2
- DBSystemNameIbmDb2 = DBSystemNameKey.String("ibm.db2")
- // [IBM Informix]
- // Stability: development
- //
- // [IBM Informix]: https://www.ibm.com/products/informix
- DBSystemNameIbmInformix = DBSystemNameKey.String("ibm.informix")
- // [IBM Netezza]
- // Stability: development
- //
- // [IBM Netezza]: https://www.ibm.com/products/netezza
- DBSystemNameIbmNetezza = DBSystemNameKey.String("ibm.netezza")
- // [InfluxDB]
- // Stability: development
- //
- // [InfluxDB]: https://www.influxdata.com/
- DBSystemNameInfluxdb = DBSystemNameKey.String("influxdb")
- // [Instant]
- // Stability: development
- //
- // [Instant]: https://www.instantdb.com/
- DBSystemNameInstantDB = DBSystemNameKey.String("instantdb")
- // [MariaDB]
- // Stability: release_candidate
- //
- // [MariaDB]: https://mariadb.org/
- DBSystemNameMariaDB = DBSystemNameKey.String("mariadb")
- // [Memcached]
- // Stability: development
- //
- // [Memcached]: https://memcached.org/
- DBSystemNameMemcached = DBSystemNameKey.String("memcached")
- // [MongoDB]
- // Stability: development
- //
- // [MongoDB]: https://www.mongodb.com/
- DBSystemNameMongoDB = DBSystemNameKey.String("mongodb")
- // [Microsoft SQL Server]
- // Stability: release_candidate
- //
- // [Microsoft SQL Server]: https://www.microsoft.com/sql-server
- DBSystemNameMicrosoftSQLServer = DBSystemNameKey.String("microsoft.sql_server")
- // [MySQL]
- // Stability: release_candidate
- //
- // [MySQL]: https://www.mysql.com/
- DBSystemNameMySQL = DBSystemNameKey.String("mysql")
- // [Neo4j]
- // Stability: development
- //
- // [Neo4j]: https://neo4j.com/
- DBSystemNameNeo4j = DBSystemNameKey.String("neo4j")
- // [OpenSearch]
- // Stability: development
- //
- // [OpenSearch]: https://opensearch.org/
- DBSystemNameOpensearch = DBSystemNameKey.String("opensearch")
- // [Oracle Database]
- // Stability: development
- //
- // [Oracle Database]: https://www.oracle.com/database/
- DBSystemNameOracleDB = DBSystemNameKey.String("oracle.db")
- // [PostgreSQL]
- // Stability: release_candidate
- //
- // [PostgreSQL]: https://www.postgresql.org/
- DBSystemNamePostgreSQL = DBSystemNameKey.String("postgresql")
- // [Redis]
- // Stability: development
- //
- // [Redis]: https://redis.io/
- DBSystemNameRedis = DBSystemNameKey.String("redis")
- // [SAP HANA]
- // Stability: development
- //
- // [SAP HANA]: https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html
- DBSystemNameSapHana = DBSystemNameKey.String("sap.hana")
- // [SAP MaxDB]
- // Stability: development
- //
- // [SAP MaxDB]: https://maxdb.sap.com/
- DBSystemNameSapMaxDB = DBSystemNameKey.String("sap.maxdb")
- // [SQLite]
- // Stability: development
- //
- // [SQLite]: https://www.sqlite.org/
- DBSystemNameSqlite = DBSystemNameKey.String("sqlite")
- // [Teradata]
- // Stability: development
- //
- // [Teradata]: https://www.teradata.com/
- DBSystemNameTeradata = DBSystemNameKey.String("teradata")
- // [Trino]
- // Stability: development
- //
- // [Trino]: https://trino.io/
- DBSystemNameTrino = DBSystemNameKey.String("trino")
-)
-
-// Namespace: deployment
-const (
- // DeploymentEnvironmentNameKey is the attribute Key conforming to the
- // "deployment.environment.name" semantic conventions. It represents the name of
- // the [deployment environment] (aka deployment tier).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "staging", "production"
- // Note: `deployment.environment.name` does not affect the uniqueness
- // constraints defined through
- // the `service.namespace`, `service.name` and `service.instance.id` resource
- // attributes.
- // This implies that resources carrying the following attribute combinations
- // MUST be
- // considered to be identifying the same service:
- //
- // - `service.name=frontend`, `deployment.environment.name=production`
- // - `service.name=frontend`, `deployment.environment.name=staging`.
- //
- //
- // [deployment environment]: https://wikipedia.org/wiki/Deployment_environment
- DeploymentEnvironmentNameKey = attribute.Key("deployment.environment.name")
-
- // DeploymentIDKey is the attribute Key conforming to the "deployment.id"
- // semantic conventions. It represents the id of the deployment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1208"
- DeploymentIDKey = attribute.Key("deployment.id")
-
- // DeploymentNameKey is the attribute Key conforming to the "deployment.name"
- // semantic conventions. It represents the name of the deployment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "deploy my app", "deploy-frontend"
- DeploymentNameKey = attribute.Key("deployment.name")
-
- // DeploymentStatusKey is the attribute Key conforming to the
- // "deployment.status" semantic conventions. It represents the status of the
- // deployment.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- DeploymentStatusKey = attribute.Key("deployment.status")
-)
-
-// DeploymentEnvironmentName returns an attribute KeyValue conforming to the
-// "deployment.environment.name" semantic conventions. It represents the name of
-// the [deployment environment] (aka deployment tier).
-//
-// [deployment environment]: https://wikipedia.org/wiki/Deployment_environment
-func DeploymentEnvironmentName(val string) attribute.KeyValue {
- return DeploymentEnvironmentNameKey.String(val)
-}
-
-// DeploymentID returns an attribute KeyValue conforming to the "deployment.id"
-// semantic conventions. It represents the id of the deployment.
-func DeploymentID(val string) attribute.KeyValue {
- return DeploymentIDKey.String(val)
-}
-
-// DeploymentName returns an attribute KeyValue conforming to the
-// "deployment.name" semantic conventions. It represents the name of the
-// deployment.
-func DeploymentName(val string) attribute.KeyValue {
- return DeploymentNameKey.String(val)
-}
-
-// Enum values for deployment.status
-var (
- // failed
- // Stability: development
- DeploymentStatusFailed = DeploymentStatusKey.String("failed")
- // succeeded
- // Stability: development
- DeploymentStatusSucceeded = DeploymentStatusKey.String("succeeded")
-)
-
-// Namespace: destination
-const (
- // DestinationAddressKey is the attribute Key conforming to the
- // "destination.address" semantic conventions. It represents the destination
- // address - domain name if available without reverse DNS lookup; otherwise, IP
- // address or Unix domain socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "destination.example.com", "10.1.2.80", "/tmp/my.sock"
- // Note: When observed from the source side, and when communicating through an
- // intermediary, `destination.address` SHOULD represent the destination address
- // behind any intermediaries, for example proxies, if it's available.
- DestinationAddressKey = attribute.Key("destination.address")
-
- // DestinationPortKey is the attribute Key conforming to the "destination.port"
- // semantic conventions. It represents the destination port number.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 3389, 2888
- DestinationPortKey = attribute.Key("destination.port")
-)
-
-// DestinationAddress returns an attribute KeyValue conforming to the
-// "destination.address" semantic conventions. It represents the destination
-// address - domain name if available without reverse DNS lookup; otherwise, IP
-// address or Unix domain socket name.
-func DestinationAddress(val string) attribute.KeyValue {
- return DestinationAddressKey.String(val)
-}
-
-// DestinationPort returns an attribute KeyValue conforming to the
-// "destination.port" semantic conventions. It represents the destination port
-// number.
-func DestinationPort(val int) attribute.KeyValue {
- return DestinationPortKey.Int(val)
-}
-
-// Namespace: device
-const (
- // DeviceIDKey is the attribute Key conforming to the "device.id" semantic
- // conventions. It represents a unique identifier representing the device.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2ab2916d-a51f-4ac8-80ee-45ac31a28092"
- // Note: The device identifier MUST only be defined using the values outlined
- // below. This value is not an advertising identifier and MUST NOT be used as
- // such. On iOS (Swift or Objective-C), this value MUST be equal to the
- // [vendor identifier]. On Android (Java or Kotlin), this value MUST be equal to
- // the Firebase Installation ID or a globally unique UUID which is persisted
- // across sessions in your application. More information can be found [here] on
- // best practices and exact implementation details. Caution should be taken when
- // storing personal data or anything which can identify a user. GDPR and data
- // protection laws may apply, ensure you do your own due diligence.
- //
- // [vendor identifier]: https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor
- // [here]: https://developer.android.com/training/articles/user-data-ids
- DeviceIDKey = attribute.Key("device.id")
-
- // DeviceManufacturerKey is the attribute Key conforming to the
- // "device.manufacturer" semantic conventions. It represents the name of the
- // device manufacturer.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Apple", "Samsung"
- // Note: The Android OS provides this field via [Build]. iOS apps SHOULD
- // hardcode the value `Apple`.
- //
- // [Build]: https://developer.android.com/reference/android/os/Build#MANUFACTURER
- DeviceManufacturerKey = attribute.Key("device.manufacturer")
-
- // DeviceModelIdentifierKey is the attribute Key conforming to the
- // "device.model.identifier" semantic conventions. It represents the model
- // identifier for the device.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "iPhone3,4", "SM-G920F"
- // Note: It's recommended this value represents a machine-readable version of
- // the model identifier rather than the market or consumer-friendly name of the
- // device.
- DeviceModelIdentifierKey = attribute.Key("device.model.identifier")
-
- // DeviceModelNameKey is the attribute Key conforming to the "device.model.name"
- // semantic conventions. It represents the marketing name for the device model.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "iPhone 6s Plus", "Samsung Galaxy S6"
- // Note: It's recommended this value represents a human-readable version of the
- // device model rather than a machine-readable alternative.
- DeviceModelNameKey = attribute.Key("device.model.name")
-)
-
-// DeviceID returns an attribute KeyValue conforming to the "device.id" semantic
-// conventions. It represents a unique identifier representing the device.
-func DeviceID(val string) attribute.KeyValue {
- return DeviceIDKey.String(val)
-}
-
-// DeviceManufacturer returns an attribute KeyValue conforming to the
-// "device.manufacturer" semantic conventions. It represents the name of the
-// device manufacturer.
-func DeviceManufacturer(val string) attribute.KeyValue {
- return DeviceManufacturerKey.String(val)
-}
-
-// DeviceModelIdentifier returns an attribute KeyValue conforming to the
-// "device.model.identifier" semantic conventions. It represents the model
-// identifier for the device.
-func DeviceModelIdentifier(val string) attribute.KeyValue {
- return DeviceModelIdentifierKey.String(val)
-}
-
-// DeviceModelName returns an attribute KeyValue conforming to the
-// "device.model.name" semantic conventions. It represents the marketing name for
-// the device model.
-func DeviceModelName(val string) attribute.KeyValue {
- return DeviceModelNameKey.String(val)
-}
-
-// Namespace: disk
-const (
- // DiskIoDirectionKey is the attribute Key conforming to the "disk.io.direction"
- // semantic conventions. It represents the disk IO operation direction.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "read"
- DiskIoDirectionKey = attribute.Key("disk.io.direction")
-)
-
-// Enum values for disk.io.direction
-var (
- // read
- // Stability: development
- DiskIoDirectionRead = DiskIoDirectionKey.String("read")
- // write
- // Stability: development
- DiskIoDirectionWrite = DiskIoDirectionKey.String("write")
-)
-
-// Namespace: dns
-const (
- // DNSQuestionNameKey is the attribute Key conforming to the "dns.question.name"
- // semantic conventions. It represents the name being queried.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "www.example.com", "opentelemetry.io"
- // Note: If the name field contains non-printable characters (below 32 or above
- // 126), those characters should be represented as escaped base 10 integers
- // (\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns,
- // and line feeds should be converted to \t, \r, and \n respectively.
- DNSQuestionNameKey = attribute.Key("dns.question.name")
-)
-
-// DNSQuestionName returns an attribute KeyValue conforming to the
-// "dns.question.name" semantic conventions. It represents the name being
-// queried.
-func DNSQuestionName(val string) attribute.KeyValue {
- return DNSQuestionNameKey.String(val)
-}
-
-// Namespace: elasticsearch
-const (
- // ElasticsearchNodeNameKey is the attribute Key conforming to the
- // "elasticsearch.node.name" semantic conventions. It represents the represents
- // the human-readable identifier of the node/instance to which a request was
- // routed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "instance-0000000001"
- ElasticsearchNodeNameKey = attribute.Key("elasticsearch.node.name")
-)
-
-// ElasticsearchNodeName returns an attribute KeyValue conforming to the
-// "elasticsearch.node.name" semantic conventions. It represents the represents
-// the human-readable identifier of the node/instance to which a request was
-// routed.
-func ElasticsearchNodeName(val string) attribute.KeyValue {
- return ElasticsearchNodeNameKey.String(val)
-}
-
-// Namespace: error
-const (
- // ErrorTypeKey is the attribute Key conforming to the "error.type" semantic
- // conventions. It represents the describes a class of error the operation ended
- // with.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "timeout", "java.net.UnknownHostException",
- // "server_certificate_invalid", "500"
- // Note: The `error.type` SHOULD be predictable, and SHOULD have low
- // cardinality.
- //
- // When `error.type` is set to a type (e.g., an exception type), its
- // canonical class name identifying the type within the artifact SHOULD be used.
- //
- // Instrumentations SHOULD document the list of errors they report.
- //
- // The cardinality of `error.type` within one instrumentation library SHOULD be
- // low.
- // Telemetry consumers that aggregate data from multiple instrumentation
- // libraries and applications
- // should be prepared for `error.type` to have high cardinality at query time
- // when no
- // additional filters are applied.
- //
- // If the operation has completed successfully, instrumentations SHOULD NOT set
- // `error.type`.
- //
- // If a specific domain defines its own set of error identifiers (such as HTTP
- // or gRPC status codes),
- // it's RECOMMENDED to:
- //
- // - Use a domain-specific attribute
- // - Set `error.type` to capture all errors, regardless of whether they are
- // defined within the domain-specific set or not.
- ErrorTypeKey = attribute.Key("error.type")
-)
-
-// Enum values for error.type
-var (
- // A fallback error value to be used when the instrumentation doesn't define a
- // custom value.
- //
- // Stability: stable
- ErrorTypeOther = ErrorTypeKey.String("_OTHER")
-)
-
-// Namespace: exception
-const (
- // ExceptionMessageKey is the attribute Key conforming to the
- // "exception.message" semantic conventions. It represents the exception
- // message.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "Division by zero", "Can't convert 'int' object to str implicitly"
- ExceptionMessageKey = attribute.Key("exception.message")
-
- // ExceptionStacktraceKey is the attribute Key conforming to the
- // "exception.stacktrace" semantic conventions. It represents a stacktrace as a
- // string in the natural representation for the language runtime. The
- // representation is to be determined and documented by each language SIG.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: Exception in thread "main" java.lang.RuntimeException: Test
- // exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at
- // com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at
- // com.example.GenerateTrace.main(GenerateTrace.java:5)
- ExceptionStacktraceKey = attribute.Key("exception.stacktrace")
-
- // ExceptionTypeKey is the attribute Key conforming to the "exception.type"
- // semantic conventions. It represents the type of the exception (its
- // fully-qualified class name, if applicable). The dynamic type of the exception
- // should be preferred over the static type in languages that support it.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "java.net.ConnectException", "OSError"
- ExceptionTypeKey = attribute.Key("exception.type")
-)
-
-// ExceptionMessage returns an attribute KeyValue conforming to the
-// "exception.message" semantic conventions. It represents the exception message.
-func ExceptionMessage(val string) attribute.KeyValue {
- return ExceptionMessageKey.String(val)
-}
-
-// ExceptionStacktrace returns an attribute KeyValue conforming to the
-// "exception.stacktrace" semantic conventions. It represents a stacktrace as a
-// string in the natural representation for the language runtime. The
-// representation is to be determined and documented by each language SIG.
-func ExceptionStacktrace(val string) attribute.KeyValue {
- return ExceptionStacktraceKey.String(val)
-}
-
-// ExceptionType returns an attribute KeyValue conforming to the "exception.type"
-// semantic conventions. It represents the type of the exception (its
-// fully-qualified class name, if applicable). The dynamic type of the exception
-// should be preferred over the static type in languages that support it.
-func ExceptionType(val string) attribute.KeyValue {
- return ExceptionTypeKey.String(val)
-}
-
-// Namespace: faas
-const (
- // FaaSColdstartKey is the attribute Key conforming to the "faas.coldstart"
- // semantic conventions. It represents a boolean that is true if the serverless
- // function is executed for the first time (aka cold-start).
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- FaaSColdstartKey = attribute.Key("faas.coldstart")
-
- // FaaSCronKey is the attribute Key conforming to the "faas.cron" semantic
- // conventions. It represents a string containing the schedule period as
- // [Cron Expression].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0/5 * * * ? *
- //
- // [Cron Expression]: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
- FaaSCronKey = attribute.Key("faas.cron")
-
- // FaaSDocumentCollectionKey is the attribute Key conforming to the
- // "faas.document.collection" semantic conventions. It represents the name of
- // the source on which the triggering operation was performed. For example, in
- // Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the
- // database name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "myBucketName", "myDbName"
- FaaSDocumentCollectionKey = attribute.Key("faas.document.collection")
-
- // FaaSDocumentNameKey is the attribute Key conforming to the
- // "faas.document.name" semantic conventions. It represents the document
- // name/table subjected to the operation. For example, in Cloud Storage or S3 is
- // the name of the file, and in Cosmos DB the table name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "myFile.txt", "myTableName"
- FaaSDocumentNameKey = attribute.Key("faas.document.name")
-
- // FaaSDocumentOperationKey is the attribute Key conforming to the
- // "faas.document.operation" semantic conventions. It represents the describes
- // the type of the operation that was performed on the data.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- FaaSDocumentOperationKey = attribute.Key("faas.document.operation")
-
- // FaaSDocumentTimeKey is the attribute Key conforming to the
- // "faas.document.time" semantic conventions. It represents a string containing
- // the time when the data was accessed in the [ISO 8601] format expressed in
- // [UTC].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 2020-01-23T13:47:06Z
- //
- // [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html
- // [UTC]: https://www.w3.org/TR/NOTE-datetime
- FaaSDocumentTimeKey = attribute.Key("faas.document.time")
-
- // FaaSInstanceKey is the attribute Key conforming to the "faas.instance"
- // semantic conventions. It represents the execution environment ID as a string,
- // that will be potentially reused for other invocations to the same
- // function/function version.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de"
- // Note: - **AWS Lambda:** Use the (full) log stream name.
- FaaSInstanceKey = attribute.Key("faas.instance")
-
- // FaaSInvocationIDKey is the attribute Key conforming to the
- // "faas.invocation_id" semantic conventions. It represents the invocation ID of
- // the current function invocation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: af9d5aa4-a685-4c5f-a22b-444f80b3cc28
- FaaSInvocationIDKey = attribute.Key("faas.invocation_id")
-
- // FaaSInvokedNameKey is the attribute Key conforming to the "faas.invoked_name"
- // semantic conventions. It represents the name of the invoked function.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: my-function
- // Note: SHOULD be equal to the `faas.name` resource attribute of the invoked
- // function.
- FaaSInvokedNameKey = attribute.Key("faas.invoked_name")
-
- // FaaSInvokedProviderKey is the attribute Key conforming to the
- // "faas.invoked_provider" semantic conventions. It represents the cloud
- // provider of the invoked function.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: SHOULD be equal to the `cloud.provider` resource attribute of the
- // invoked function.
- FaaSInvokedProviderKey = attribute.Key("faas.invoked_provider")
-
- // FaaSInvokedRegionKey is the attribute Key conforming to the
- // "faas.invoked_region" semantic conventions. It represents the cloud region of
- // the invoked function.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: eu-central-1
- // Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked
- // function.
- FaaSInvokedRegionKey = attribute.Key("faas.invoked_region")
-
- // FaaSMaxMemoryKey is the attribute Key conforming to the "faas.max_memory"
- // semantic conventions. It represents the amount of memory available to the
- // serverless function converted to Bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Note: It's recommended to set this attribute since e.g. too little memory can
- // easily stop a Java AWS Lambda function from working correctly. On AWS Lambda,
- // the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this
- // information (which must be multiplied by 1,048,576).
- FaaSMaxMemoryKey = attribute.Key("faas.max_memory")
-
- // FaaSNameKey is the attribute Key conforming to the "faas.name" semantic
- // conventions. It represents the name of the single function that this runtime
- // instance executes.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-function", "myazurefunctionapp/some-function-name"
- // Note: This is the name of the function as configured/deployed on the FaaS
- // platform and is usually different from the name of the callback
- // function (which may be stored in the
- // [`code.namespace`/`code.function.name`]
- // span attributes).
- //
- // For some cloud providers, the above definition is ambiguous. The following
- // definition of function name MUST be used for this attribute
- // (and consequently the span name) for the listed cloud providers/products:
- //
- // - **Azure:** The full name `/`, i.e., function app name
- // followed by a forward slash followed by the function name (this form
- // can also be seen in the resource JSON for the function).
- // This means that a span attribute MUST be used, as an Azure function
- // app can host multiple functions that would usually share
- // a TracerProvider (see also the `cloud.resource_id` attribute).
- //
- //
- // [`code.namespace`/`code.function.name`]: /docs/general/attributes.md#source-code-attributes
- FaaSNameKey = attribute.Key("faas.name")
-
- // FaaSTimeKey is the attribute Key conforming to the "faas.time" semantic
- // conventions. It represents a string containing the function invocation time
- // in the [ISO 8601] format expressed in [UTC].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 2020-01-23T13:47:06Z
- //
- // [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html
- // [UTC]: https://www.w3.org/TR/NOTE-datetime
- FaaSTimeKey = attribute.Key("faas.time")
-
- // FaaSTriggerKey is the attribute Key conforming to the "faas.trigger" semantic
- // conventions. It represents the type of the trigger which caused this function
- // invocation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- FaaSTriggerKey = attribute.Key("faas.trigger")
-
- // FaaSVersionKey is the attribute Key conforming to the "faas.version" semantic
- // conventions. It represents the immutable version of the function being
- // executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "26", "pinkfroid-00002"
- // Note: Depending on the cloud provider and platform, use:
- //
- // - **AWS Lambda:** The [function version]
- // (an integer represented as a decimal string).
- // - **Google Cloud Run (Services):** The [revision]
- // (i.e., the function name plus the revision suffix).
- // - **Google Cloud Functions:** The value of the
- // [`K_REVISION` environment variable].
- // - **Azure Functions:** Not applicable. Do not set this attribute.
- //
- //
- // [function version]: https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html
- // [revision]: https://cloud.google.com/run/docs/managing/revisions
- // [`K_REVISION` environment variable]: https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically
- FaaSVersionKey = attribute.Key("faas.version")
-)
-
-// FaaSColdstart returns an attribute KeyValue conforming to the "faas.coldstart"
-// semantic conventions. It represents a boolean that is true if the serverless
-// function is executed for the first time (aka cold-start).
-func FaaSColdstart(val bool) attribute.KeyValue {
- return FaaSColdstartKey.Bool(val)
-}
-
-// FaaSCron returns an attribute KeyValue conforming to the "faas.cron" semantic
-// conventions. It represents a string containing the schedule period as
-// [Cron Expression].
-//
-// [Cron Expression]: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
-func FaaSCron(val string) attribute.KeyValue {
- return FaaSCronKey.String(val)
-}
-
-// FaaSDocumentCollection returns an attribute KeyValue conforming to the
-// "faas.document.collection" semantic conventions. It represents the name of the
-// source on which the triggering operation was performed. For example, in Cloud
-// Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database
-// name.
-func FaaSDocumentCollection(val string) attribute.KeyValue {
- return FaaSDocumentCollectionKey.String(val)
-}
-
-// FaaSDocumentName returns an attribute KeyValue conforming to the
-// "faas.document.name" semantic conventions. It represents the document
-// name/table subjected to the operation. For example, in Cloud Storage or S3 is
-// the name of the file, and in Cosmos DB the table name.
-func FaaSDocumentName(val string) attribute.KeyValue {
- return FaaSDocumentNameKey.String(val)
-}
-
-// FaaSDocumentTime returns an attribute KeyValue conforming to the
-// "faas.document.time" semantic conventions. It represents a string containing
-// the time when the data was accessed in the [ISO 8601] format expressed in
-// [UTC].
-//
-// [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html
-// [UTC]: https://www.w3.org/TR/NOTE-datetime
-func FaaSDocumentTime(val string) attribute.KeyValue {
- return FaaSDocumentTimeKey.String(val)
-}
-
-// FaaSInstance returns an attribute KeyValue conforming to the "faas.instance"
-// semantic conventions. It represents the execution environment ID as a string,
-// that will be potentially reused for other invocations to the same
-// function/function version.
-func FaaSInstance(val string) attribute.KeyValue {
- return FaaSInstanceKey.String(val)
-}
-
-// FaaSInvocationID returns an attribute KeyValue conforming to the
-// "faas.invocation_id" semantic conventions. It represents the invocation ID of
-// the current function invocation.
-func FaaSInvocationID(val string) attribute.KeyValue {
- return FaaSInvocationIDKey.String(val)
-}
-
-// FaaSInvokedName returns an attribute KeyValue conforming to the
-// "faas.invoked_name" semantic conventions. It represents the name of the
-// invoked function.
-func FaaSInvokedName(val string) attribute.KeyValue {
- return FaaSInvokedNameKey.String(val)
-}
-
-// FaaSInvokedRegion returns an attribute KeyValue conforming to the
-// "faas.invoked_region" semantic conventions. It represents the cloud region of
-// the invoked function.
-func FaaSInvokedRegion(val string) attribute.KeyValue {
- return FaaSInvokedRegionKey.String(val)
-}
-
-// FaaSMaxMemory returns an attribute KeyValue conforming to the
-// "faas.max_memory" semantic conventions. It represents the amount of memory
-// available to the serverless function converted to Bytes.
-func FaaSMaxMemory(val int) attribute.KeyValue {
- return FaaSMaxMemoryKey.Int(val)
-}
-
-// FaaSName returns an attribute KeyValue conforming to the "faas.name" semantic
-// conventions. It represents the name of the single function that this runtime
-// instance executes.
-func FaaSName(val string) attribute.KeyValue {
- return FaaSNameKey.String(val)
-}
-
-// FaaSTime returns an attribute KeyValue conforming to the "faas.time" semantic
-// conventions. It represents a string containing the function invocation time in
-// the [ISO 8601] format expressed in [UTC].
-//
-// [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html
-// [UTC]: https://www.w3.org/TR/NOTE-datetime
-func FaaSTime(val string) attribute.KeyValue {
- return FaaSTimeKey.String(val)
-}
-
-// FaaSVersion returns an attribute KeyValue conforming to the "faas.version"
-// semantic conventions. It represents the immutable version of the function
-// being executed.
-func FaaSVersion(val string) attribute.KeyValue {
- return FaaSVersionKey.String(val)
-}
-
-// Enum values for faas.document.operation
-var (
- // When a new object is created.
- // Stability: development
- FaaSDocumentOperationInsert = FaaSDocumentOperationKey.String("insert")
- // When an object is modified.
- // Stability: development
- FaaSDocumentOperationEdit = FaaSDocumentOperationKey.String("edit")
- // When an object is deleted.
- // Stability: development
- FaaSDocumentOperationDelete = FaaSDocumentOperationKey.String("delete")
-)
-
-// Enum values for faas.invoked_provider
-var (
- // Alibaba Cloud
- // Stability: development
- FaaSInvokedProviderAlibabaCloud = FaaSInvokedProviderKey.String("alibaba_cloud")
- // Amazon Web Services
- // Stability: development
- FaaSInvokedProviderAWS = FaaSInvokedProviderKey.String("aws")
- // Microsoft Azure
- // Stability: development
- FaaSInvokedProviderAzure = FaaSInvokedProviderKey.String("azure")
- // Google Cloud Platform
- // Stability: development
- FaaSInvokedProviderGCP = FaaSInvokedProviderKey.String("gcp")
- // Tencent Cloud
- // Stability: development
- FaaSInvokedProviderTencentCloud = FaaSInvokedProviderKey.String("tencent_cloud")
-)
-
-// Enum values for faas.trigger
-var (
- // A response to some data source operation such as a database or filesystem
- // read/write
- // Stability: development
- FaaSTriggerDatasource = FaaSTriggerKey.String("datasource")
- // To provide an answer to an inbound HTTP request
- // Stability: development
- FaaSTriggerHTTP = FaaSTriggerKey.String("http")
- // A function is set to be executed when messages are sent to a messaging system
- // Stability: development
- FaaSTriggerPubsub = FaaSTriggerKey.String("pubsub")
- // A function is scheduled to be executed regularly
- // Stability: development
- FaaSTriggerTimer = FaaSTriggerKey.String("timer")
- // If none of the others apply
- // Stability: development
- FaaSTriggerOther = FaaSTriggerKey.String("other")
-)
-
-// Namespace: feature_flag
-const (
- // FeatureFlagContextIDKey is the attribute Key conforming to the
- // "feature_flag.context.id" semantic conventions. It represents the unique
- // identifier for the flag evaluation context. For example, the targeting key.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "5157782b-2203-4c80-a857-dbbd5e7761db"
- FeatureFlagContextIDKey = attribute.Key("feature_flag.context.id")
-
- // FeatureFlagEvaluationErrorMessageKey is the attribute Key conforming to the
- // "feature_flag.evaluation.error.message" semantic conventions. It represents a
- // message explaining the nature of an error occurring during flag evaluation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Flag `header-color` expected type `string` but found type `number`
- // "
- FeatureFlagEvaluationErrorMessageKey = attribute.Key("feature_flag.evaluation.error.message")
-
- // FeatureFlagEvaluationReasonKey is the attribute Key conforming to the
- // "feature_flag.evaluation.reason" semantic conventions. It represents the
- // reason code which shows how a feature flag value was determined.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "static", "targeting_match", "error", "default"
- FeatureFlagEvaluationReasonKey = attribute.Key("feature_flag.evaluation.reason")
-
- // FeatureFlagKeyKey is the attribute Key conforming to the "feature_flag.key"
- // semantic conventions. It represents the lookup key of the feature flag.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "logo-color"
- FeatureFlagKeyKey = attribute.Key("feature_flag.key")
-
- // FeatureFlagProviderNameKey is the attribute Key conforming to the
- // "feature_flag.provider_name" semantic conventions. It represents the
- // identifies the feature flag provider.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Flag Manager"
- FeatureFlagProviderNameKey = attribute.Key("feature_flag.provider_name")
-
- // FeatureFlagSetIDKey is the attribute Key conforming to the
- // "feature_flag.set.id" semantic conventions. It represents the identifier of
- // the [flag set] to which the feature flag belongs.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "proj-1", "ab98sgs", "service1/dev"
- //
- // [flag set]: https://openfeature.dev/specification/glossary/#flag-set
- FeatureFlagSetIDKey = attribute.Key("feature_flag.set.id")
-
- // FeatureFlagVariantKey is the attribute Key conforming to the
- // "feature_flag.variant" semantic conventions. It represents a semantic
- // identifier for an evaluated flag value.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "red", "true", "on"
- // Note: A semantic identifier, commonly referred to as a variant, provides a
- // means
- // for referring to a value without including the value itself. This can
- // provide additional context for understanding the meaning behind a value.
- // For example, the variant `red` maybe be used for the value `#c05543`.
- FeatureFlagVariantKey = attribute.Key("feature_flag.variant")
-
- // FeatureFlagVersionKey is the attribute Key conforming to the
- // "feature_flag.version" semantic conventions. It represents the version of the
- // ruleset used during the evaluation. This may be any stable value which
- // uniquely identifies the ruleset.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1", "01ABCDEF"
- FeatureFlagVersionKey = attribute.Key("feature_flag.version")
-)
-
-// FeatureFlagContextID returns an attribute KeyValue conforming to the
-// "feature_flag.context.id" semantic conventions. It represents the unique
-// identifier for the flag evaluation context. For example, the targeting key.
-func FeatureFlagContextID(val string) attribute.KeyValue {
- return FeatureFlagContextIDKey.String(val)
-}
-
-// FeatureFlagEvaluationErrorMessage returns an attribute KeyValue conforming to
-// the "feature_flag.evaluation.error.message" semantic conventions. It
-// represents a message explaining the nature of an error occurring during flag
-// evaluation.
-func FeatureFlagEvaluationErrorMessage(val string) attribute.KeyValue {
- return FeatureFlagEvaluationErrorMessageKey.String(val)
-}
-
-// FeatureFlagKey returns an attribute KeyValue conforming to the
-// "feature_flag.key" semantic conventions. It represents the lookup key of the
-// feature flag.
-func FeatureFlagKey(val string) attribute.KeyValue {
- return FeatureFlagKeyKey.String(val)
-}
-
-// FeatureFlagProviderName returns an attribute KeyValue conforming to the
-// "feature_flag.provider_name" semantic conventions. It represents the
-// identifies the feature flag provider.
-func FeatureFlagProviderName(val string) attribute.KeyValue {
- return FeatureFlagProviderNameKey.String(val)
-}
-
-// FeatureFlagSetID returns an attribute KeyValue conforming to the
-// "feature_flag.set.id" semantic conventions. It represents the identifier of
-// the [flag set] to which the feature flag belongs.
-//
-// [flag set]: https://openfeature.dev/specification/glossary/#flag-set
-func FeatureFlagSetID(val string) attribute.KeyValue {
- return FeatureFlagSetIDKey.String(val)
-}
-
-// FeatureFlagVariant returns an attribute KeyValue conforming to the
-// "feature_flag.variant" semantic conventions. It represents a semantic
-// identifier for an evaluated flag value.
-func FeatureFlagVariant(val string) attribute.KeyValue {
- return FeatureFlagVariantKey.String(val)
-}
-
-// FeatureFlagVersion returns an attribute KeyValue conforming to the
-// "feature_flag.version" semantic conventions. It represents the version of the
-// ruleset used during the evaluation. This may be any stable value which
-// uniquely identifies the ruleset.
-func FeatureFlagVersion(val string) attribute.KeyValue {
- return FeatureFlagVersionKey.String(val)
-}
-
-// Enum values for feature_flag.evaluation.reason
-var (
- // The resolved value is static (no dynamic evaluation).
- // Stability: development
- FeatureFlagEvaluationReasonStatic = FeatureFlagEvaluationReasonKey.String("static")
- // The resolved value fell back to a pre-configured value (no dynamic evaluation
- // occurred or dynamic evaluation yielded no result).
- // Stability: development
- FeatureFlagEvaluationReasonDefault = FeatureFlagEvaluationReasonKey.String("default")
- // The resolved value was the result of a dynamic evaluation, such as a rule or
- // specific user-targeting.
- // Stability: development
- FeatureFlagEvaluationReasonTargetingMatch = FeatureFlagEvaluationReasonKey.String("targeting_match")
- // The resolved value was the result of pseudorandom assignment.
- // Stability: development
- FeatureFlagEvaluationReasonSplit = FeatureFlagEvaluationReasonKey.String("split")
- // The resolved value was retrieved from cache.
- // Stability: development
- FeatureFlagEvaluationReasonCached = FeatureFlagEvaluationReasonKey.String("cached")
- // The resolved value was the result of the flag being disabled in the
- // management system.
- // Stability: development
- FeatureFlagEvaluationReasonDisabled = FeatureFlagEvaluationReasonKey.String("disabled")
- // The reason for the resolved value could not be determined.
- // Stability: development
- FeatureFlagEvaluationReasonUnknown = FeatureFlagEvaluationReasonKey.String("unknown")
- // The resolved value is non-authoritative or possibly out of date
- // Stability: development
- FeatureFlagEvaluationReasonStale = FeatureFlagEvaluationReasonKey.String("stale")
- // The resolved value was the result of an error.
- // Stability: development
- FeatureFlagEvaluationReasonError = FeatureFlagEvaluationReasonKey.String("error")
-)
-
-// Namespace: file
-const (
- // FileAccessedKey is the attribute Key conforming to the "file.accessed"
- // semantic conventions. It represents the time when the file was last accessed,
- // in ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T12:00:00Z"
- // Note: This attribute might not be supported by some file systems — NFS,
- // FAT32, in embedded OS, etc.
- FileAccessedKey = attribute.Key("file.accessed")
-
- // FileAttributesKey is the attribute Key conforming to the "file.attributes"
- // semantic conventions. It represents the array of file attributes.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "readonly", "hidden"
- // Note: Attributes names depend on the OS or file system. Here’s a
- // non-exhaustive list of values expected for this attribute: `archive`,
- // `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`,
- // `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`,
- // `write`.
- FileAttributesKey = attribute.Key("file.attributes")
-
- // FileChangedKey is the attribute Key conforming to the "file.changed" semantic
- // conventions. It represents the time when the file attributes or metadata was
- // last changed, in ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T12:00:00Z"
- // Note: `file.changed` captures the time when any of the file's properties or
- // attributes (including the content) are changed, while `file.modified`
- // captures the timestamp when the file content is modified.
- FileChangedKey = attribute.Key("file.changed")
-
- // FileCreatedKey is the attribute Key conforming to the "file.created" semantic
- // conventions. It represents the time when the file was created, in ISO 8601
- // format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T12:00:00Z"
- // Note: This attribute might not be supported by some file systems — NFS,
- // FAT32, in embedded OS, etc.
- FileCreatedKey = attribute.Key("file.created")
-
- // FileDirectoryKey is the attribute Key conforming to the "file.directory"
- // semantic conventions. It represents the directory where the file is located.
- // It should include the drive letter, when appropriate.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/home/user", "C:\Program Files\MyApp"
- FileDirectoryKey = attribute.Key("file.directory")
-
- // FileExtensionKey is the attribute Key conforming to the "file.extension"
- // semantic conventions. It represents the file extension, excluding the leading
- // dot.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "png", "gz"
- // Note: When the file name has multiple extensions (example.tar.gz), only the
- // last one should be captured ("gz", not "tar.gz").
- FileExtensionKey = attribute.Key("file.extension")
-
- // FileForkNameKey is the attribute Key conforming to the "file.fork_name"
- // semantic conventions. It represents the name of the fork. A fork is
- // additional data associated with a filesystem object.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Zone.Identifer"
- // Note: On Linux, a resource fork is used to store additional data with a
- // filesystem object. A file always has at least one fork for the data portion,
- // and additional forks may exist.
- // On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default
- // data stream for a file is just called $DATA. Zone.Identifier is commonly used
- // by Windows to track contents downloaded from the Internet. An ADS is
- // typically of the form: C:\path\to\filename.extension:some_fork_name, and
- // some_fork_name is the value that should populate `fork_name`.
- // `filename.extension` should populate `file.name`, and `extension` should
- // populate `file.extension`. The full path, `file.path`, will include the fork
- // name.
- FileForkNameKey = attribute.Key("file.fork_name")
-
- // FileGroupIDKey is the attribute Key conforming to the "file.group.id"
- // semantic conventions. It represents the primary Group ID (GID) of the file.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1000"
- FileGroupIDKey = attribute.Key("file.group.id")
-
- // FileGroupNameKey is the attribute Key conforming to the "file.group.name"
- // semantic conventions. It represents the primary group name of the file.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "users"
- FileGroupNameKey = attribute.Key("file.group.name")
-
- // FileInodeKey is the attribute Key conforming to the "file.inode" semantic
- // conventions. It represents the inode representing the file in the filesystem.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "256383"
- FileInodeKey = attribute.Key("file.inode")
-
- // FileModeKey is the attribute Key conforming to the "file.mode" semantic
- // conventions. It represents the mode of the file in octal representation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0640"
- FileModeKey = attribute.Key("file.mode")
-
- // FileModifiedKey is the attribute Key conforming to the "file.modified"
- // semantic conventions. It represents the time when the file content was last
- // modified, in ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T12:00:00Z"
- FileModifiedKey = attribute.Key("file.modified")
-
- // FileNameKey is the attribute Key conforming to the "file.name" semantic
- // conventions. It represents the name of the file including the extension,
- // without the directory.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "example.png"
- FileNameKey = attribute.Key("file.name")
-
- // FileOwnerIDKey is the attribute Key conforming to the "file.owner.id"
- // semantic conventions. It represents the user ID (UID) or security identifier
- // (SID) of the file owner.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1000"
- FileOwnerIDKey = attribute.Key("file.owner.id")
-
- // FileOwnerNameKey is the attribute Key conforming to the "file.owner.name"
- // semantic conventions. It represents the username of the file owner.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "root"
- FileOwnerNameKey = attribute.Key("file.owner.name")
-
- // FilePathKey is the attribute Key conforming to the "file.path" semantic
- // conventions. It represents the full path to the file, including the file
- // name. It should include the drive letter, when appropriate.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/home/alice/example.png", "C:\Program Files\MyApp\myapp.exe"
- FilePathKey = attribute.Key("file.path")
-
- // FileSizeKey is the attribute Key conforming to the "file.size" semantic
- // conventions. It represents the file size in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- FileSizeKey = attribute.Key("file.size")
-
- // FileSymbolicLinkTargetPathKey is the attribute Key conforming to the
- // "file.symbolic_link.target_path" semantic conventions. It represents the path
- // to the target of a symbolic link.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/usr/bin/python3"
- // Note: This attribute is only applicable to symbolic links.
- FileSymbolicLinkTargetPathKey = attribute.Key("file.symbolic_link.target_path")
-)
-
-// FileAccessed returns an attribute KeyValue conforming to the "file.accessed"
-// semantic conventions. It represents the time when the file was last accessed,
-// in ISO 8601 format.
-func FileAccessed(val string) attribute.KeyValue {
- return FileAccessedKey.String(val)
-}
-
-// FileAttributes returns an attribute KeyValue conforming to the
-// "file.attributes" semantic conventions. It represents the array of file
-// attributes.
-func FileAttributes(val ...string) attribute.KeyValue {
- return FileAttributesKey.StringSlice(val)
-}
-
-// FileChanged returns an attribute KeyValue conforming to the "file.changed"
-// semantic conventions. It represents the time when the file attributes or
-// metadata was last changed, in ISO 8601 format.
-func FileChanged(val string) attribute.KeyValue {
- return FileChangedKey.String(val)
-}
-
-// FileCreated returns an attribute KeyValue conforming to the "file.created"
-// semantic conventions. It represents the time when the file was created, in ISO
-// 8601 format.
-func FileCreated(val string) attribute.KeyValue {
- return FileCreatedKey.String(val)
-}
-
-// FileDirectory returns an attribute KeyValue conforming to the "file.directory"
-// semantic conventions. It represents the directory where the file is located.
-// It should include the drive letter, when appropriate.
-func FileDirectory(val string) attribute.KeyValue {
- return FileDirectoryKey.String(val)
-}
-
-// FileExtension returns an attribute KeyValue conforming to the "file.extension"
-// semantic conventions. It represents the file extension, excluding the leading
-// dot.
-func FileExtension(val string) attribute.KeyValue {
- return FileExtensionKey.String(val)
-}
-
-// FileForkName returns an attribute KeyValue conforming to the "file.fork_name"
-// semantic conventions. It represents the name of the fork. A fork is additional
-// data associated with a filesystem object.
-func FileForkName(val string) attribute.KeyValue {
- return FileForkNameKey.String(val)
-}
-
-// FileGroupID returns an attribute KeyValue conforming to the "file.group.id"
-// semantic conventions. It represents the primary Group ID (GID) of the file.
-func FileGroupID(val string) attribute.KeyValue {
- return FileGroupIDKey.String(val)
-}
-
-// FileGroupName returns an attribute KeyValue conforming to the
-// "file.group.name" semantic conventions. It represents the primary group name
-// of the file.
-func FileGroupName(val string) attribute.KeyValue {
- return FileGroupNameKey.String(val)
-}
-
-// FileInode returns an attribute KeyValue conforming to the "file.inode"
-// semantic conventions. It represents the inode representing the file in the
-// filesystem.
-func FileInode(val string) attribute.KeyValue {
- return FileInodeKey.String(val)
-}
-
-// FileMode returns an attribute KeyValue conforming to the "file.mode" semantic
-// conventions. It represents the mode of the file in octal representation.
-func FileMode(val string) attribute.KeyValue {
- return FileModeKey.String(val)
-}
-
-// FileModified returns an attribute KeyValue conforming to the "file.modified"
-// semantic conventions. It represents the time when the file content was last
-// modified, in ISO 8601 format.
-func FileModified(val string) attribute.KeyValue {
- return FileModifiedKey.String(val)
-}
-
-// FileName returns an attribute KeyValue conforming to the "file.name" semantic
-// conventions. It represents the name of the file including the extension,
-// without the directory.
-func FileName(val string) attribute.KeyValue {
- return FileNameKey.String(val)
-}
-
-// FileOwnerID returns an attribute KeyValue conforming to the "file.owner.id"
-// semantic conventions. It represents the user ID (UID) or security identifier
-// (SID) of the file owner.
-func FileOwnerID(val string) attribute.KeyValue {
- return FileOwnerIDKey.String(val)
-}
-
-// FileOwnerName returns an attribute KeyValue conforming to the
-// "file.owner.name" semantic conventions. It represents the username of the file
-// owner.
-func FileOwnerName(val string) attribute.KeyValue {
- return FileOwnerNameKey.String(val)
-}
-
-// FilePath returns an attribute KeyValue conforming to the "file.path" semantic
-// conventions. It represents the full path to the file, including the file name.
-// It should include the drive letter, when appropriate.
-func FilePath(val string) attribute.KeyValue {
- return FilePathKey.String(val)
-}
-
-// FileSize returns an attribute KeyValue conforming to the "file.size" semantic
-// conventions. It represents the file size in bytes.
-func FileSize(val int) attribute.KeyValue {
- return FileSizeKey.Int(val)
-}
-
-// FileSymbolicLinkTargetPath returns an attribute KeyValue conforming to the
-// "file.symbolic_link.target_path" semantic conventions. It represents the path
-// to the target of a symbolic link.
-func FileSymbolicLinkTargetPath(val string) attribute.KeyValue {
- return FileSymbolicLinkTargetPathKey.String(val)
-}
-
-// Namespace: gcp
-const (
- // GCPClientServiceKey is the attribute Key conforming to the
- // "gcp.client.service" semantic conventions. It represents the identifies the
- // Google Cloud service for which the official client library is intended.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "appengine", "run", "firestore", "alloydb", "spanner"
- // Note: Intended to be a stable identifier for Google Cloud client libraries
- // that is uniform across implementation languages. The value should be derived
- // from the canonical service domain for the service; for example,
- // 'foo.googleapis.com' should result in a value of 'foo'.
- GCPClientServiceKey = attribute.Key("gcp.client.service")
-
- // GCPCloudRunJobExecutionKey is the attribute Key conforming to the
- // "gcp.cloud_run.job.execution" semantic conventions. It represents the name of
- // the Cloud Run [execution] being run for the Job, as set by the
- // [`CLOUD_RUN_EXECUTION`] environment variable.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "job-name-xxxx", "sample-job-mdw84"
- //
- // [execution]: https://cloud.google.com/run/docs/managing/job-executions
- // [`CLOUD_RUN_EXECUTION`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars
- GCPCloudRunJobExecutionKey = attribute.Key("gcp.cloud_run.job.execution")
-
- // GCPCloudRunJobTaskIndexKey is the attribute Key conforming to the
- // "gcp.cloud_run.job.task_index" semantic conventions. It represents the index
- // for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`]
- // environment variable.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0, 1
- //
- // [`CLOUD_RUN_TASK_INDEX`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars
- GCPCloudRunJobTaskIndexKey = attribute.Key("gcp.cloud_run.job.task_index")
-
- // GCPGceInstanceHostnameKey is the attribute Key conforming to the
- // "gcp.gce.instance.hostname" semantic conventions. It represents the hostname
- // of a GCE instance. This is the full value of the default or [custom hostname]
- // .
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-host1234.example.com",
- // "sample-vm.us-west1-b.c.my-project.internal"
- //
- // [custom hostname]: https://cloud.google.com/compute/docs/instances/custom-hostname-vm
- GCPGceInstanceHostnameKey = attribute.Key("gcp.gce.instance.hostname")
-
- // GCPGceInstanceNameKey is the attribute Key conforming to the
- // "gcp.gce.instance.name" semantic conventions. It represents the instance name
- // of a GCE instance. This is the value provided by `host.name`, the visible
- // name of the instance in the Cloud Console UI, and the prefix for the default
- // hostname of the instance as defined by the [default internal DNS name].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "instance-1", "my-vm-name"
- //
- // [default internal DNS name]: https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names
- GCPGceInstanceNameKey = attribute.Key("gcp.gce.instance.name")
-)
-
-// GCPClientService returns an attribute KeyValue conforming to the
-// "gcp.client.service" semantic conventions. It represents the identifies the
-// Google Cloud service for which the official client library is intended.
-func GCPClientService(val string) attribute.KeyValue {
- return GCPClientServiceKey.String(val)
-}
-
-// GCPCloudRunJobExecution returns an attribute KeyValue conforming to the
-// "gcp.cloud_run.job.execution" semantic conventions. It represents the name of
-// the Cloud Run [execution] being run for the Job, as set by the
-// [`CLOUD_RUN_EXECUTION`] environment variable.
-//
-// [execution]: https://cloud.google.com/run/docs/managing/job-executions
-// [`CLOUD_RUN_EXECUTION`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars
-func GCPCloudRunJobExecution(val string) attribute.KeyValue {
- return GCPCloudRunJobExecutionKey.String(val)
-}
-
-// GCPCloudRunJobTaskIndex returns an attribute KeyValue conforming to the
-// "gcp.cloud_run.job.task_index" semantic conventions. It represents the index
-// for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`]
-// environment variable.
-//
-// [`CLOUD_RUN_TASK_INDEX`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars
-func GCPCloudRunJobTaskIndex(val int) attribute.KeyValue {
- return GCPCloudRunJobTaskIndexKey.Int(val)
-}
-
-// GCPGceInstanceHostname returns an attribute KeyValue conforming to the
-// "gcp.gce.instance.hostname" semantic conventions. It represents the hostname
-// of a GCE instance. This is the full value of the default or [custom hostname]
-// .
-//
-// [custom hostname]: https://cloud.google.com/compute/docs/instances/custom-hostname-vm
-func GCPGceInstanceHostname(val string) attribute.KeyValue {
- return GCPGceInstanceHostnameKey.String(val)
-}
-
-// GCPGceInstanceName returns an attribute KeyValue conforming to the
-// "gcp.gce.instance.name" semantic conventions. It represents the instance name
-// of a GCE instance. This is the value provided by `host.name`, the visible name
-// of the instance in the Cloud Console UI, and the prefix for the default
-// hostname of the instance as defined by the [default internal DNS name].
-//
-// [default internal DNS name]: https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names
-func GCPGceInstanceName(val string) attribute.KeyValue {
- return GCPGceInstanceNameKey.String(val)
-}
-
-// Namespace: gen_ai
-const (
- // GenAIOpenaiRequestResponseFormatKey is the attribute Key conforming to the
- // "gen_ai.openai.request.response_format" semantic conventions. It represents
- // the response format that is requested.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "json"
- GenAIOpenaiRequestResponseFormatKey = attribute.Key("gen_ai.openai.request.response_format")
-
- // GenAIOpenaiRequestServiceTierKey is the attribute Key conforming to the
- // "gen_ai.openai.request.service_tier" semantic conventions. It represents the
- // service tier requested. May be a specific tier, default, or auto.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "auto", "default"
- GenAIOpenaiRequestServiceTierKey = attribute.Key("gen_ai.openai.request.service_tier")
-
- // GenAIOpenaiResponseServiceTierKey is the attribute Key conforming to the
- // "gen_ai.openai.response.service_tier" semantic conventions. It represents the
- // service tier used for the response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "scale", "default"
- GenAIOpenaiResponseServiceTierKey = attribute.Key("gen_ai.openai.response.service_tier")
-
- // GenAIOpenaiResponseSystemFingerprintKey is the attribute Key conforming to
- // the "gen_ai.openai.response.system_fingerprint" semantic conventions. It
- // represents a fingerprint to track any eventual change in the Generative AI
- // environment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "fp_44709d6fcb"
- GenAIOpenaiResponseSystemFingerprintKey = attribute.Key("gen_ai.openai.response.system_fingerprint")
-
- // GenAIOperationNameKey is the attribute Key conforming to the
- // "gen_ai.operation.name" semantic conventions. It represents the name of the
- // operation being performed.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: If one of the predefined values applies, but specific system uses a
- // different name it's RECOMMENDED to document it in the semantic conventions
- // for specific GenAI system and use system-specific name in the
- // instrumentation. If a different name is not documented, instrumentation
- // libraries SHOULD use applicable predefined value.
- GenAIOperationNameKey = attribute.Key("gen_ai.operation.name")
-
- // GenAIRequestEncodingFormatsKey is the attribute Key conforming to the
- // "gen_ai.request.encoding_formats" semantic conventions. It represents the
- // encoding formats requested in an embeddings operation, if specified.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "base64"], ["float", "binary"
- // Note: In some GenAI systems the encoding formats are called embedding types.
- // Also, some GenAI systems only accept a single format per request.
- GenAIRequestEncodingFormatsKey = attribute.Key("gen_ai.request.encoding_formats")
-
- // GenAIRequestFrequencyPenaltyKey is the attribute Key conforming to the
- // "gen_ai.request.frequency_penalty" semantic conventions. It represents the
- // frequency penalty setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0.1
- GenAIRequestFrequencyPenaltyKey = attribute.Key("gen_ai.request.frequency_penalty")
-
- // GenAIRequestMaxTokensKey is the attribute Key conforming to the
- // "gen_ai.request.max_tokens" semantic conventions. It represents the maximum
- // number of tokens the model generates for a request.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 100
- GenAIRequestMaxTokensKey = attribute.Key("gen_ai.request.max_tokens")
-
- // GenAIRequestModelKey is the attribute Key conforming to the
- // "gen_ai.request.model" semantic conventions. It represents the name of the
- // GenAI model a request is being made to.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: gpt-4
- GenAIRequestModelKey = attribute.Key("gen_ai.request.model")
-
- // GenAIRequestPresencePenaltyKey is the attribute Key conforming to the
- // "gen_ai.request.presence_penalty" semantic conventions. It represents the
- // presence penalty setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0.1
- GenAIRequestPresencePenaltyKey = attribute.Key("gen_ai.request.presence_penalty")
-
- // GenAIRequestSeedKey is the attribute Key conforming to the
- // "gen_ai.request.seed" semantic conventions. It represents the requests with
- // same seed value more likely to return same result.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 100
- GenAIRequestSeedKey = attribute.Key("gen_ai.request.seed")
-
- // GenAIRequestStopSequencesKey is the attribute Key conforming to the
- // "gen_ai.request.stop_sequences" semantic conventions. It represents the list
- // of sequences that the model will use to stop generating further tokens.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "forest", "lived"
- GenAIRequestStopSequencesKey = attribute.Key("gen_ai.request.stop_sequences")
-
- // GenAIRequestTemperatureKey is the attribute Key conforming to the
- // "gen_ai.request.temperature" semantic conventions. It represents the
- // temperature setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0.0
- GenAIRequestTemperatureKey = attribute.Key("gen_ai.request.temperature")
-
- // GenAIRequestTopKKey is the attribute Key conforming to the
- // "gen_ai.request.top_k" semantic conventions. It represents the top_k sampling
- // setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0
- GenAIRequestTopKKey = attribute.Key("gen_ai.request.top_k")
-
- // GenAIRequestTopPKey is the attribute Key conforming to the
- // "gen_ai.request.top_p" semantic conventions. It represents the top_p sampling
- // setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0
- GenAIRequestTopPKey = attribute.Key("gen_ai.request.top_p")
-
- // GenAIResponseFinishReasonsKey is the attribute Key conforming to the
- // "gen_ai.response.finish_reasons" semantic conventions. It represents the
- // array of reasons the model stopped generating tokens, corresponding to each
- // generation received.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "stop"], ["stop", "length"
- GenAIResponseFinishReasonsKey = attribute.Key("gen_ai.response.finish_reasons")
-
- // GenAIResponseIDKey is the attribute Key conforming to the
- // "gen_ai.response.id" semantic conventions. It represents the unique
- // identifier for the completion.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "chatcmpl-123"
- GenAIResponseIDKey = attribute.Key("gen_ai.response.id")
-
- // GenAIResponseModelKey is the attribute Key conforming to the
- // "gen_ai.response.model" semantic conventions. It represents the name of the
- // model that generated the response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "gpt-4-0613"
- GenAIResponseModelKey = attribute.Key("gen_ai.response.model")
-
- // GenAISystemKey is the attribute Key conforming to the "gen_ai.system"
- // semantic conventions. It represents the Generative AI product as identified
- // by the client or server instrumentation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: openai
- // Note: The `gen_ai.system` describes a family of GenAI models with specific
- // model identified
- // by `gen_ai.request.model` and `gen_ai.response.model` attributes.
- //
- // The actual GenAI product may differ from the one identified by the client.
- // Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI
- // client
- // libraries. In such cases, the `gen_ai.system` is set to `openai` based on the
- // instrumentation's best knowledge, instead of the actual system. The
- // `server.address`
- // attribute may help identify the actual system in use for `openai`.
- //
- // For custom model, a custom friendly name SHOULD be used.
- // If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`
- // .
- GenAISystemKey = attribute.Key("gen_ai.system")
-
- // GenAITokenTypeKey is the attribute Key conforming to the "gen_ai.token.type"
- // semantic conventions. It represents the type of token being counted.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "input", "output"
- GenAITokenTypeKey = attribute.Key("gen_ai.token.type")
-
- // GenAIUsageInputTokensKey is the attribute Key conforming to the
- // "gen_ai.usage.input_tokens" semantic conventions. It represents the number of
- // tokens used in the GenAI input (prompt).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 100
- GenAIUsageInputTokensKey = attribute.Key("gen_ai.usage.input_tokens")
-
- // GenAIUsageOutputTokensKey is the attribute Key conforming to the
- // "gen_ai.usage.output_tokens" semantic conventions. It represents the number
- // of tokens used in the GenAI response (completion).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 180
- GenAIUsageOutputTokensKey = attribute.Key("gen_ai.usage.output_tokens")
-)
-
-// GenAIOpenaiResponseServiceTier returns an attribute KeyValue conforming to the
-// "gen_ai.openai.response.service_tier" semantic conventions. It represents the
-// service tier used for the response.
-func GenAIOpenaiResponseServiceTier(val string) attribute.KeyValue {
- return GenAIOpenaiResponseServiceTierKey.String(val)
-}
-
-// GenAIOpenaiResponseSystemFingerprint returns an attribute KeyValue conforming
-// to the "gen_ai.openai.response.system_fingerprint" semantic conventions. It
-// represents a fingerprint to track any eventual change in the Generative AI
-// environment.
-func GenAIOpenaiResponseSystemFingerprint(val string) attribute.KeyValue {
- return GenAIOpenaiResponseSystemFingerprintKey.String(val)
-}
-
-// GenAIRequestEncodingFormats returns an attribute KeyValue conforming to the
-// "gen_ai.request.encoding_formats" semantic conventions. It represents the
-// encoding formats requested in an embeddings operation, if specified.
-func GenAIRequestEncodingFormats(val ...string) attribute.KeyValue {
- return GenAIRequestEncodingFormatsKey.StringSlice(val)
-}
-
-// GenAIRequestFrequencyPenalty returns an attribute KeyValue conforming to the
-// "gen_ai.request.frequency_penalty" semantic conventions. It represents the
-// frequency penalty setting for the GenAI request.
-func GenAIRequestFrequencyPenalty(val float64) attribute.KeyValue {
- return GenAIRequestFrequencyPenaltyKey.Float64(val)
-}
-
-// GenAIRequestMaxTokens returns an attribute KeyValue conforming to the
-// "gen_ai.request.max_tokens" semantic conventions. It represents the maximum
-// number of tokens the model generates for a request.
-func GenAIRequestMaxTokens(val int) attribute.KeyValue {
- return GenAIRequestMaxTokensKey.Int(val)
-}
-
-// GenAIRequestModel returns an attribute KeyValue conforming to the
-// "gen_ai.request.model" semantic conventions. It represents the name of the
-// GenAI model a request is being made to.
-func GenAIRequestModel(val string) attribute.KeyValue {
- return GenAIRequestModelKey.String(val)
-}
-
-// GenAIRequestPresencePenalty returns an attribute KeyValue conforming to the
-// "gen_ai.request.presence_penalty" semantic conventions. It represents the
-// presence penalty setting for the GenAI request.
-func GenAIRequestPresencePenalty(val float64) attribute.KeyValue {
- return GenAIRequestPresencePenaltyKey.Float64(val)
-}
-
-// GenAIRequestSeed returns an attribute KeyValue conforming to the
-// "gen_ai.request.seed" semantic conventions. It represents the requests with
-// same seed value more likely to return same result.
-func GenAIRequestSeed(val int) attribute.KeyValue {
- return GenAIRequestSeedKey.Int(val)
-}
-
-// GenAIRequestStopSequences returns an attribute KeyValue conforming to the
-// "gen_ai.request.stop_sequences" semantic conventions. It represents the list
-// of sequences that the model will use to stop generating further tokens.
-func GenAIRequestStopSequences(val ...string) attribute.KeyValue {
- return GenAIRequestStopSequencesKey.StringSlice(val)
-}
-
-// GenAIRequestTemperature returns an attribute KeyValue conforming to the
-// "gen_ai.request.temperature" semantic conventions. It represents the
-// temperature setting for the GenAI request.
-func GenAIRequestTemperature(val float64) attribute.KeyValue {
- return GenAIRequestTemperatureKey.Float64(val)
-}
-
-// GenAIRequestTopK returns an attribute KeyValue conforming to the
-// "gen_ai.request.top_k" semantic conventions. It represents the top_k sampling
-// setting for the GenAI request.
-func GenAIRequestTopK(val float64) attribute.KeyValue {
- return GenAIRequestTopKKey.Float64(val)
-}
-
-// GenAIRequestTopP returns an attribute KeyValue conforming to the
-// "gen_ai.request.top_p" semantic conventions. It represents the top_p sampling
-// setting for the GenAI request.
-func GenAIRequestTopP(val float64) attribute.KeyValue {
- return GenAIRequestTopPKey.Float64(val)
-}
-
-// GenAIResponseFinishReasons returns an attribute KeyValue conforming to the
-// "gen_ai.response.finish_reasons" semantic conventions. It represents the array
-// of reasons the model stopped generating tokens, corresponding to each
-// generation received.
-func GenAIResponseFinishReasons(val ...string) attribute.KeyValue {
- return GenAIResponseFinishReasonsKey.StringSlice(val)
-}
-
-// GenAIResponseID returns an attribute KeyValue conforming to the
-// "gen_ai.response.id" semantic conventions. It represents the unique identifier
-// for the completion.
-func GenAIResponseID(val string) attribute.KeyValue {
- return GenAIResponseIDKey.String(val)
-}
-
-// GenAIResponseModel returns an attribute KeyValue conforming to the
-// "gen_ai.response.model" semantic conventions. It represents the name of the
-// model that generated the response.
-func GenAIResponseModel(val string) attribute.KeyValue {
- return GenAIResponseModelKey.String(val)
-}
-
-// GenAIUsageInputTokens returns an attribute KeyValue conforming to the
-// "gen_ai.usage.input_tokens" semantic conventions. It represents the number of
-// tokens used in the GenAI input (prompt).
-func GenAIUsageInputTokens(val int) attribute.KeyValue {
- return GenAIUsageInputTokensKey.Int(val)
-}
-
-// GenAIUsageOutputTokens returns an attribute KeyValue conforming to the
-// "gen_ai.usage.output_tokens" semantic conventions. It represents the number of
-// tokens used in the GenAI response (completion).
-func GenAIUsageOutputTokens(val int) attribute.KeyValue {
- return GenAIUsageOutputTokensKey.Int(val)
-}
-
-// Enum values for gen_ai.openai.request.response_format
-var (
- // Text response format
- // Stability: development
- GenAIOpenaiRequestResponseFormatText = GenAIOpenaiRequestResponseFormatKey.String("text")
- // JSON object response format
- // Stability: development
- GenAIOpenaiRequestResponseFormatJSONObject = GenAIOpenaiRequestResponseFormatKey.String("json_object")
- // JSON schema response format
- // Stability: development
- GenAIOpenaiRequestResponseFormatJSONSchema = GenAIOpenaiRequestResponseFormatKey.String("json_schema")
-)
-
-// Enum values for gen_ai.openai.request.service_tier
-var (
- // The system will utilize scale tier credits until they are exhausted.
- // Stability: development
- GenAIOpenaiRequestServiceTierAuto = GenAIOpenaiRequestServiceTierKey.String("auto")
- // The system will utilize the default scale tier.
- // Stability: development
- GenAIOpenaiRequestServiceTierDefault = GenAIOpenaiRequestServiceTierKey.String("default")
-)
-
-// Enum values for gen_ai.operation.name
-var (
- // Chat completion operation such as [OpenAI Chat API]
- // Stability: development
- //
- // [OpenAI Chat API]: https://platform.openai.com/docs/api-reference/chat
- GenAIOperationNameChat = GenAIOperationNameKey.String("chat")
- // Text completions operation such as [OpenAI Completions API (Legacy)]
- // Stability: development
- //
- // [OpenAI Completions API (Legacy)]: https://platform.openai.com/docs/api-reference/completions
- GenAIOperationNameTextCompletion = GenAIOperationNameKey.String("text_completion")
- // Embeddings operation such as [OpenAI Create embeddings API]
- // Stability: development
- //
- // [OpenAI Create embeddings API]: https://platform.openai.com/docs/api-reference/embeddings/create
- GenAIOperationNameEmbeddings = GenAIOperationNameKey.String("embeddings")
-)
-
-// Enum values for gen_ai.system
-var (
- // OpenAI
- // Stability: development
- GenAISystemOpenai = GenAISystemKey.String("openai")
- // Vertex AI
- // Stability: development
- GenAISystemVertexAI = GenAISystemKey.String("vertex_ai")
- // Gemini
- // Stability: development
- GenAISystemGemini = GenAISystemKey.String("gemini")
- // Anthropic
- // Stability: development
- GenAISystemAnthropic = GenAISystemKey.String("anthropic")
- // Cohere
- // Stability: development
- GenAISystemCohere = GenAISystemKey.String("cohere")
- // Azure AI Inference
- // Stability: development
- GenAISystemAzAIInference = GenAISystemKey.String("az.ai.inference")
- // Azure OpenAI
- // Stability: development
- GenAISystemAzAIOpenai = GenAISystemKey.String("az.ai.openai")
- // IBM Watsonx AI
- // Stability: development
- GenAISystemIbmWatsonxAI = GenAISystemKey.String("ibm.watsonx.ai")
- // AWS Bedrock
- // Stability: development
- GenAISystemAWSBedrock = GenAISystemKey.String("aws.bedrock")
- // Perplexity
- // Stability: development
- GenAISystemPerplexity = GenAISystemKey.String("perplexity")
- // xAI
- // Stability: development
- GenAISystemXai = GenAISystemKey.String("xai")
- // DeepSeek
- // Stability: development
- GenAISystemDeepseek = GenAISystemKey.String("deepseek")
- // Groq
- // Stability: development
- GenAISystemGroq = GenAISystemKey.String("groq")
- // Mistral AI
- // Stability: development
- GenAISystemMistralAI = GenAISystemKey.String("mistral_ai")
-)
-
-// Enum values for gen_ai.token.type
-var (
- // Input tokens (prompt, input, etc.)
- // Stability: development
- GenAITokenTypeInput = GenAITokenTypeKey.String("input")
- // Output tokens (completion, response, etc.)
- // Stability: development
- GenAITokenTypeCompletion = GenAITokenTypeKey.String("output")
-)
-
-// Namespace: geo
-const (
- // GeoContinentCodeKey is the attribute Key conforming to the
- // "geo.continent.code" semantic conventions. It represents the two-letter code
- // representing continent’s name.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- GeoContinentCodeKey = attribute.Key("geo.continent.code")
-
- // GeoCountryIsoCodeKey is the attribute Key conforming to the
- // "geo.country.iso_code" semantic conventions. It represents the two-letter ISO
- // Country Code ([ISO 3166-1 alpha2]).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CA"
- //
- // [ISO 3166-1 alpha2]: https://wikipedia.org/wiki/ISO_3166-1#Codes
- GeoCountryIsoCodeKey = attribute.Key("geo.country.iso_code")
-
- // GeoLocalityNameKey is the attribute Key conforming to the "geo.locality.name"
- // semantic conventions. It represents the locality name. Represents the name of
- // a city, town, village, or similar populated place.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Montreal", "Berlin"
- GeoLocalityNameKey = attribute.Key("geo.locality.name")
-
- // GeoLocationLatKey is the attribute Key conforming to the "geo.location.lat"
- // semantic conventions. It represents the latitude of the geo location in
- // [WGS84].
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 45.505918
- //
- // [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84
- GeoLocationLatKey = attribute.Key("geo.location.lat")
-
- // GeoLocationLonKey is the attribute Key conforming to the "geo.location.lon"
- // semantic conventions. It represents the longitude of the geo location in
- // [WGS84].
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: -73.61483
- //
- // [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84
- GeoLocationLonKey = attribute.Key("geo.location.lon")
-
- // GeoPostalCodeKey is the attribute Key conforming to the "geo.postal_code"
- // semantic conventions. It represents the postal code associated with the
- // location. Values appropriate for this field may also be known as a postcode
- // or ZIP code and will vary widely from country to country.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "94040"
- GeoPostalCodeKey = attribute.Key("geo.postal_code")
-
- // GeoRegionIsoCodeKey is the attribute Key conforming to the
- // "geo.region.iso_code" semantic conventions. It represents the region ISO code
- // ([ISO 3166-2]).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CA-QC"
- //
- // [ISO 3166-2]: https://wikipedia.org/wiki/ISO_3166-2
- GeoRegionIsoCodeKey = attribute.Key("geo.region.iso_code")
-)
-
-// GeoCountryIsoCode returns an attribute KeyValue conforming to the
-// "geo.country.iso_code" semantic conventions. It represents the two-letter ISO
-// Country Code ([ISO 3166-1 alpha2]).
-//
-// [ISO 3166-1 alpha2]: https://wikipedia.org/wiki/ISO_3166-1#Codes
-func GeoCountryIsoCode(val string) attribute.KeyValue {
- return GeoCountryIsoCodeKey.String(val)
-}
-
-// GeoLocalityName returns an attribute KeyValue conforming to the
-// "geo.locality.name" semantic conventions. It represents the locality name.
-// Represents the name of a city, town, village, or similar populated place.
-func GeoLocalityName(val string) attribute.KeyValue {
- return GeoLocalityNameKey.String(val)
-}
-
-// GeoLocationLat returns an attribute KeyValue conforming to the
-// "geo.location.lat" semantic conventions. It represents the latitude of the geo
-// location in [WGS84].
-//
-// [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84
-func GeoLocationLat(val float64) attribute.KeyValue {
- return GeoLocationLatKey.Float64(val)
-}
-
-// GeoLocationLon returns an attribute KeyValue conforming to the
-// "geo.location.lon" semantic conventions. It represents the longitude of the
-// geo location in [WGS84].
-//
-// [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84
-func GeoLocationLon(val float64) attribute.KeyValue {
- return GeoLocationLonKey.Float64(val)
-}
-
-// GeoPostalCode returns an attribute KeyValue conforming to the
-// "geo.postal_code" semantic conventions. It represents the postal code
-// associated with the location. Values appropriate for this field may also be
-// known as a postcode or ZIP code and will vary widely from country to country.
-func GeoPostalCode(val string) attribute.KeyValue {
- return GeoPostalCodeKey.String(val)
-}
-
-// GeoRegionIsoCode returns an attribute KeyValue conforming to the
-// "geo.region.iso_code" semantic conventions. It represents the region ISO code
-// ([ISO 3166-2]).
-//
-// [ISO 3166-2]: https://wikipedia.org/wiki/ISO_3166-2
-func GeoRegionIsoCode(val string) attribute.KeyValue {
- return GeoRegionIsoCodeKey.String(val)
-}
-
-// Enum values for geo.continent.code
-var (
- // Africa
- // Stability: development
- GeoContinentCodeAf = GeoContinentCodeKey.String("AF")
- // Antarctica
- // Stability: development
- GeoContinentCodeAn = GeoContinentCodeKey.String("AN")
- // Asia
- // Stability: development
- GeoContinentCodeAs = GeoContinentCodeKey.String("AS")
- // Europe
- // Stability: development
- GeoContinentCodeEu = GeoContinentCodeKey.String("EU")
- // North America
- // Stability: development
- GeoContinentCodeNa = GeoContinentCodeKey.String("NA")
- // Oceania
- // Stability: development
- GeoContinentCodeOc = GeoContinentCodeKey.String("OC")
- // South America
- // Stability: development
- GeoContinentCodeSa = GeoContinentCodeKey.String("SA")
-)
-
-// Namespace: go
-const (
- // GoMemoryTypeKey is the attribute Key conforming to the "go.memory.type"
- // semantic conventions. It represents the type of memory.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "other", "stack"
- GoMemoryTypeKey = attribute.Key("go.memory.type")
-)
-
-// Enum values for go.memory.type
-var (
- // Memory allocated from the heap that is reserved for stack space, whether or
- // not it is currently in-use.
- // Stability: development
- GoMemoryTypeStack = GoMemoryTypeKey.String("stack")
- // Memory used by the Go runtime, excluding other categories of memory usage
- // described in this enumeration.
- // Stability: development
- GoMemoryTypeOther = GoMemoryTypeKey.String("other")
-)
-
-// Namespace: graphql
-const (
- // GraphqlDocumentKey is the attribute Key conforming to the "graphql.document"
- // semantic conventions. It represents the GraphQL document being executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: query findBookById { bookById(id: ?) { name } }
- // Note: The value may be sanitized to exclude sensitive information.
- GraphqlDocumentKey = attribute.Key("graphql.document")
-
- // GraphqlOperationNameKey is the attribute Key conforming to the
- // "graphql.operation.name" semantic conventions. It represents the name of the
- // operation being executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: findBookById
- GraphqlOperationNameKey = attribute.Key("graphql.operation.name")
-
- // GraphqlOperationTypeKey is the attribute Key conforming to the
- // "graphql.operation.type" semantic conventions. It represents the type of the
- // operation being executed.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "query", "mutation", "subscription"
- GraphqlOperationTypeKey = attribute.Key("graphql.operation.type")
-)
-
-// GraphqlDocument returns an attribute KeyValue conforming to the
-// "graphql.document" semantic conventions. It represents the GraphQL document
-// being executed.
-func GraphqlDocument(val string) attribute.KeyValue {
- return GraphqlDocumentKey.String(val)
-}
-
-// GraphqlOperationName returns an attribute KeyValue conforming to the
-// "graphql.operation.name" semantic conventions. It represents the name of the
-// operation being executed.
-func GraphqlOperationName(val string) attribute.KeyValue {
- return GraphqlOperationNameKey.String(val)
-}
-
-// Enum values for graphql.operation.type
-var (
- // GraphQL query
- // Stability: development
- GraphqlOperationTypeQuery = GraphqlOperationTypeKey.String("query")
- // GraphQL mutation
- // Stability: development
- GraphqlOperationTypeMutation = GraphqlOperationTypeKey.String("mutation")
- // GraphQL subscription
- // Stability: development
- GraphqlOperationTypeSubscription = GraphqlOperationTypeKey.String("subscription")
-)
-
-// Namespace: heroku
-const (
- // HerokuAppIDKey is the attribute Key conforming to the "heroku.app.id"
- // semantic conventions. It represents the unique identifier for the
- // application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2daa2797-e42b-4624-9322-ec3f968df4da"
- HerokuAppIDKey = attribute.Key("heroku.app.id")
-
- // HerokuReleaseCommitKey is the attribute Key conforming to the
- // "heroku.release.commit" semantic conventions. It represents the commit hash
- // for the current release.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "e6134959463efd8966b20e75b913cafe3f5ec"
- HerokuReleaseCommitKey = attribute.Key("heroku.release.commit")
-
- // HerokuReleaseCreationTimestampKey is the attribute Key conforming to the
- // "heroku.release.creation_timestamp" semantic conventions. It represents the
- // time and date the release was created.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2022-10-23T18:00:42Z"
- HerokuReleaseCreationTimestampKey = attribute.Key("heroku.release.creation_timestamp")
-)
-
-// HerokuAppID returns an attribute KeyValue conforming to the "heroku.app.id"
-// semantic conventions. It represents the unique identifier for the application.
-func HerokuAppID(val string) attribute.KeyValue {
- return HerokuAppIDKey.String(val)
-}
-
-// HerokuReleaseCommit returns an attribute KeyValue conforming to the
-// "heroku.release.commit" semantic conventions. It represents the commit hash
-// for the current release.
-func HerokuReleaseCommit(val string) attribute.KeyValue {
- return HerokuReleaseCommitKey.String(val)
-}
-
-// HerokuReleaseCreationTimestamp returns an attribute KeyValue conforming to the
-// "heroku.release.creation_timestamp" semantic conventions. It represents the
-// time and date the release was created.
-func HerokuReleaseCreationTimestamp(val string) attribute.KeyValue {
- return HerokuReleaseCreationTimestampKey.String(val)
-}
-
-// Namespace: host
-const (
- // HostArchKey is the attribute Key conforming to the "host.arch" semantic
- // conventions. It represents the CPU architecture the host system is running
- // on.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HostArchKey = attribute.Key("host.arch")
-
- // HostCPUCacheL2SizeKey is the attribute Key conforming to the
- // "host.cpu.cache.l2.size" semantic conventions. It represents the amount of
- // level 2 memory cache available to the processor (in Bytes).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 12288000
- HostCPUCacheL2SizeKey = attribute.Key("host.cpu.cache.l2.size")
-
- // HostCPUFamilyKey is the attribute Key conforming to the "host.cpu.family"
- // semantic conventions. It represents the family or generation of the CPU.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "6", "PA-RISC 1.1e"
- HostCPUFamilyKey = attribute.Key("host.cpu.family")
-
- // HostCPUModelIDKey is the attribute Key conforming to the "host.cpu.model.id"
- // semantic conventions. It represents the model identifier. It provides more
- // granular information about the CPU, distinguishing it from other CPUs within
- // the same family.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "6", "9000/778/B180L"
- HostCPUModelIDKey = attribute.Key("host.cpu.model.id")
-
- // HostCPUModelNameKey is the attribute Key conforming to the
- // "host.cpu.model.name" semantic conventions. It represents the model
- // designation of the processor.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz"
- HostCPUModelNameKey = attribute.Key("host.cpu.model.name")
-
- // HostCPUSteppingKey is the attribute Key conforming to the "host.cpu.stepping"
- // semantic conventions. It represents the stepping or core revisions.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1", "r1p1"
- HostCPUSteppingKey = attribute.Key("host.cpu.stepping")
-
- // HostCPUVendorIDKey is the attribute Key conforming to the
- // "host.cpu.vendor.id" semantic conventions. It represents the processor
- // manufacturer identifier. A maximum 12-character string.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "GenuineIntel"
- // Note: [CPUID] command returns the vendor ID string in EBX, EDX and ECX
- // registers. Writing these to memory in this order results in a 12-character
- // string.
- //
- // [CPUID]: https://wiki.osdev.org/CPUID
- HostCPUVendorIDKey = attribute.Key("host.cpu.vendor.id")
-
- // HostIDKey is the attribute Key conforming to the "host.id" semantic
- // conventions. It represents the unique host ID. For Cloud, this must be the
- // instance_id assigned by the cloud provider. For non-containerized systems,
- // this should be the `machine-id`. See the table below for the sources to use
- // to determine the `machine-id` based on operating system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "fdbf79e8af94cb7f9e8df36789187052"
- HostIDKey = attribute.Key("host.id")
-
- // HostImageIDKey is the attribute Key conforming to the "host.image.id"
- // semantic conventions. It represents the vM image ID or host OS image ID. For
- // Cloud, this value is from the provider.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ami-07b06b442921831e5"
- HostImageIDKey = attribute.Key("host.image.id")
-
- // HostImageNameKey is the attribute Key conforming to the "host.image.name"
- // semantic conventions. It represents the name of the VM image or OS install
- // the host was instantiated from.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "infra-ami-eks-worker-node-7d4ec78312", "CentOS-8-x86_64-1905"
- HostImageNameKey = attribute.Key("host.image.name")
-
- // HostImageVersionKey is the attribute Key conforming to the
- // "host.image.version" semantic conventions. It represents the version string
- // of the VM image or host OS as defined in [Version Attributes].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0.1"
- //
- // [Version Attributes]: /docs/resource/README.md#version-attributes
- HostImageVersionKey = attribute.Key("host.image.version")
-
- // HostIPKey is the attribute Key conforming to the "host.ip" semantic
- // conventions. It represents the available IP addresses of the host, excluding
- // loopback interfaces.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "192.168.1.140", "fe80::abc2:4a28:737a:609e"
- // Note: IPv4 Addresses MUST be specified in dotted-quad notation. IPv6
- // addresses MUST be specified in the [RFC 5952] format.
- //
- // [RFC 5952]: https://www.rfc-editor.org/rfc/rfc5952.html
- HostIPKey = attribute.Key("host.ip")
-
- // HostMacKey is the attribute Key conforming to the "host.mac" semantic
- // conventions. It represents the available MAC addresses of the host, excluding
- // loopback interfaces.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F"
- // Note: MAC Addresses MUST be represented in [IEEE RA hexadecimal form]: as
- // hyphen-separated octets in uppercase hexadecimal form from most to least
- // significant.
- //
- // [IEEE RA hexadecimal form]: https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf
- HostMacKey = attribute.Key("host.mac")
-
- // HostNameKey is the attribute Key conforming to the "host.name" semantic
- // conventions. It represents the name of the host. On Unix systems, it may
- // contain what the hostname command returns, or the fully qualified hostname,
- // or another name specified by the user.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry-test"
- HostNameKey = attribute.Key("host.name")
-
- // HostTypeKey is the attribute Key conforming to the "host.type" semantic
- // conventions. It represents the type of host. For Cloud, this must be the
- // machine type.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "n1-standard-1"
- HostTypeKey = attribute.Key("host.type")
-)
-
-// HostCPUCacheL2Size returns an attribute KeyValue conforming to the
-// "host.cpu.cache.l2.size" semantic conventions. It represents the amount of
-// level 2 memory cache available to the processor (in Bytes).
-func HostCPUCacheL2Size(val int) attribute.KeyValue {
- return HostCPUCacheL2SizeKey.Int(val)
-}
-
-// HostCPUFamily returns an attribute KeyValue conforming to the
-// "host.cpu.family" semantic conventions. It represents the family or generation
-// of the CPU.
-func HostCPUFamily(val string) attribute.KeyValue {
- return HostCPUFamilyKey.String(val)
-}
-
-// HostCPUModelID returns an attribute KeyValue conforming to the
-// "host.cpu.model.id" semantic conventions. It represents the model identifier.
-// It provides more granular information about the CPU, distinguishing it from
-// other CPUs within the same family.
-func HostCPUModelID(val string) attribute.KeyValue {
- return HostCPUModelIDKey.String(val)
-}
-
-// HostCPUModelName returns an attribute KeyValue conforming to the
-// "host.cpu.model.name" semantic conventions. It represents the model
-// designation of the processor.
-func HostCPUModelName(val string) attribute.KeyValue {
- return HostCPUModelNameKey.String(val)
-}
-
-// HostCPUStepping returns an attribute KeyValue conforming to the
-// "host.cpu.stepping" semantic conventions. It represents the stepping or core
-// revisions.
-func HostCPUStepping(val string) attribute.KeyValue {
- return HostCPUSteppingKey.String(val)
-}
-
-// HostCPUVendorID returns an attribute KeyValue conforming to the
-// "host.cpu.vendor.id" semantic conventions. It represents the processor
-// manufacturer identifier. A maximum 12-character string.
-func HostCPUVendorID(val string) attribute.KeyValue {
- return HostCPUVendorIDKey.String(val)
-}
-
-// HostID returns an attribute KeyValue conforming to the "host.id" semantic
-// conventions. It represents the unique host ID. For Cloud, this must be the
-// instance_id assigned by the cloud provider. For non-containerized systems,
-// this should be the `machine-id`. See the table below for the sources to use to
-// determine the `machine-id` based on operating system.
-func HostID(val string) attribute.KeyValue {
- return HostIDKey.String(val)
-}
-
-// HostImageID returns an attribute KeyValue conforming to the "host.image.id"
-// semantic conventions. It represents the vM image ID or host OS image ID. For
-// Cloud, this value is from the provider.
-func HostImageID(val string) attribute.KeyValue {
- return HostImageIDKey.String(val)
-}
-
-// HostImageName returns an attribute KeyValue conforming to the
-// "host.image.name" semantic conventions. It represents the name of the VM image
-// or OS install the host was instantiated from.
-func HostImageName(val string) attribute.KeyValue {
- return HostImageNameKey.String(val)
-}
-
-// HostImageVersion returns an attribute KeyValue conforming to the
-// "host.image.version" semantic conventions. It represents the version string of
-// the VM image or host OS as defined in [Version Attributes].
-//
-// [Version Attributes]: /docs/resource/README.md#version-attributes
-func HostImageVersion(val string) attribute.KeyValue {
- return HostImageVersionKey.String(val)
-}
-
-// HostIP returns an attribute KeyValue conforming to the "host.ip" semantic
-// conventions. It represents the available IP addresses of the host, excluding
-// loopback interfaces.
-func HostIP(val ...string) attribute.KeyValue {
- return HostIPKey.StringSlice(val)
-}
-
-// HostMac returns an attribute KeyValue conforming to the "host.mac" semantic
-// conventions. It represents the available MAC addresses of the host, excluding
-// loopback interfaces.
-func HostMac(val ...string) attribute.KeyValue {
- return HostMacKey.StringSlice(val)
-}
-
-// HostName returns an attribute KeyValue conforming to the "host.name" semantic
-// conventions. It represents the name of the host. On Unix systems, it may
-// contain what the hostname command returns, or the fully qualified hostname, or
-// another name specified by the user.
-func HostName(val string) attribute.KeyValue {
- return HostNameKey.String(val)
-}
-
-// HostType returns an attribute KeyValue conforming to the "host.type" semantic
-// conventions. It represents the type of host. For Cloud, this must be the
-// machine type.
-func HostType(val string) attribute.KeyValue {
- return HostTypeKey.String(val)
-}
-
-// Enum values for host.arch
-var (
- // AMD64
- // Stability: development
- HostArchAMD64 = HostArchKey.String("amd64")
- // ARM32
- // Stability: development
- HostArchARM32 = HostArchKey.String("arm32")
- // ARM64
- // Stability: development
- HostArchARM64 = HostArchKey.String("arm64")
- // Itanium
- // Stability: development
- HostArchIA64 = HostArchKey.String("ia64")
- // 32-bit PowerPC
- // Stability: development
- HostArchPPC32 = HostArchKey.String("ppc32")
- // 64-bit PowerPC
- // Stability: development
- HostArchPPC64 = HostArchKey.String("ppc64")
- // IBM z/Architecture
- // Stability: development
- HostArchS390x = HostArchKey.String("s390x")
- // 32-bit x86
- // Stability: development
- HostArchX86 = HostArchKey.String("x86")
-)
-
-// Namespace: http
-const (
- // HTTPConnectionStateKey is the attribute Key conforming to the
- // "http.connection.state" semantic conventions. It represents the state of the
- // HTTP connection in the HTTP connection pool.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "active", "idle"
- HTTPConnectionStateKey = attribute.Key("http.connection.state")
-
- // HTTPRequestBodySizeKey is the attribute Key conforming to the
- // "http.request.body.size" semantic conventions. It represents the size of the
- // request payload body in bytes. This is the number of bytes transferred
- // excluding headers and is often, but not always, present as the
- // [Content-Length] header. For requests using transport encoding, this should
- // be the compressed size.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length
- HTTPRequestBodySizeKey = attribute.Key("http.request.body.size")
-
- // HTTPRequestMethodKey is the attribute Key conforming to the
- // "http.request.method" semantic conventions. It represents the hTTP request
- // method.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "GET", "POST", "HEAD"
- // Note: HTTP request method value SHOULD be "known" to the instrumentation.
- // By default, this convention defines "known" methods as the ones listed in
- // [RFC9110]
- // and the PATCH method defined in [RFC5789].
- //
- // If the HTTP request method is not known to instrumentation, it MUST set the
- // `http.request.method` attribute to `_OTHER`.
- //
- // If the HTTP instrumentation could end up converting valid HTTP request
- // methods to `_OTHER`, then it MUST provide a way to override
- // the list of known HTTP methods. If this override is done via environment
- // variable, then the environment variable MUST be named
- // OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of
- // case-sensitive known HTTP methods
- // (this list MUST be a full override of the default known method, it is not a
- // list of known methods in addition to the defaults).
- //
- // HTTP method names are case-sensitive and `http.request.method` attribute
- // value MUST match a known HTTP method name exactly.
- // Instrumentations for specific web frameworks that consider HTTP methods to be
- // case insensitive, SHOULD populate a canonical equivalent.
- // Tracing instrumentations that do so, MUST also set
- // `http.request.method_original` to the original value.
- //
- // [RFC9110]: https://www.rfc-editor.org/rfc/rfc9110.html#name-methods
- // [RFC5789]: https://www.rfc-editor.org/rfc/rfc5789.html
- HTTPRequestMethodKey = attribute.Key("http.request.method")
-
- // HTTPRequestMethodOriginalKey is the attribute Key conforming to the
- // "http.request.method_original" semantic conventions. It represents the
- // original HTTP method sent by the client in the request line.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "GeT", "ACL", "foo"
- HTTPRequestMethodOriginalKey = attribute.Key("http.request.method_original")
-
- // HTTPRequestResendCountKey is the attribute Key conforming to the
- // "http.request.resend_count" semantic conventions. It represents the ordinal
- // number of request resending attempt (for any reason, including redirects).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Note: The resend count SHOULD be updated each time an HTTP request gets
- // resent by the client, regardless of what was the cause of the resending (e.g.
- // redirection, authorization failure, 503 Server Unavailable, network issues,
- // or any other).
- HTTPRequestResendCountKey = attribute.Key("http.request.resend_count")
-
- // HTTPRequestSizeKey is the attribute Key conforming to the "http.request.size"
- // semantic conventions. It represents the total size of the request in bytes.
- // This should be the total number of bytes sent over the wire, including the
- // request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request
- // body if any.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- HTTPRequestSizeKey = attribute.Key("http.request.size")
-
- // HTTPResponseBodySizeKey is the attribute Key conforming to the
- // "http.response.body.size" semantic conventions. It represents the size of the
- // response payload body in bytes. This is the number of bytes transferred
- // excluding headers and is often, but not always, present as the
- // [Content-Length] header. For requests using transport encoding, this should
- // be the compressed size.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length
- HTTPResponseBodySizeKey = attribute.Key("http.response.body.size")
-
- // HTTPResponseSizeKey is the attribute Key conforming to the
- // "http.response.size" semantic conventions. It represents the total size of
- // the response in bytes. This should be the total number of bytes sent over the
- // wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3),
- // headers, and response body and trailers if any.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- HTTPResponseSizeKey = attribute.Key("http.response.size")
-
- // HTTPResponseStatusCodeKey is the attribute Key conforming to the
- // "http.response.status_code" semantic conventions. It represents the
- // [HTTP response status code].
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 200
- //
- // [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6
- HTTPResponseStatusCodeKey = attribute.Key("http.response.status_code")
-
- // HTTPRouteKey is the attribute Key conforming to the "http.route" semantic
- // conventions. It represents the matched route, that is, the path template in
- // the format used by the respective server framework.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "/users/:userID?", "{controller}/{action}/{id?}"
- // Note: MUST NOT be populated when this is not supported by the HTTP server
- // framework as the route attribute should have low-cardinality and the URI path
- // can NOT substitute it.
- // SHOULD include the [application root] if there is one.
- //
- // [application root]: /docs/http/http-spans.md#http-server-definitions
- HTTPRouteKey = attribute.Key("http.route")
-)
-
-// HTTPRequestBodySize returns an attribute KeyValue conforming to the
-// "http.request.body.size" semantic conventions. It represents the size of the
-// request payload body in bytes. This is the number of bytes transferred
-// excluding headers and is often, but not always, present as the
-// [Content-Length] header. For requests using transport encoding, this should be
-// the compressed size.
-//
-// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length
-func HTTPRequestBodySize(val int) attribute.KeyValue {
- return HTTPRequestBodySizeKey.Int(val)
-}
-
-// HTTPRequestMethodOriginal returns an attribute KeyValue conforming to the
-// "http.request.method_original" semantic conventions. It represents the
-// original HTTP method sent by the client in the request line.
-func HTTPRequestMethodOriginal(val string) attribute.KeyValue {
- return HTTPRequestMethodOriginalKey.String(val)
-}
-
-// HTTPRequestResendCount returns an attribute KeyValue conforming to the
-// "http.request.resend_count" semantic conventions. It represents the ordinal
-// number of request resending attempt (for any reason, including redirects).
-func HTTPRequestResendCount(val int) attribute.KeyValue {
- return HTTPRequestResendCountKey.Int(val)
-}
-
-// HTTPRequestSize returns an attribute KeyValue conforming to the
-// "http.request.size" semantic conventions. It represents the total size of the
-// request in bytes. This should be the total number of bytes sent over the wire,
-// including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers,
-// and request body if any.
-func HTTPRequestSize(val int) attribute.KeyValue {
- return HTTPRequestSizeKey.Int(val)
-}
-
-// HTTPResponseBodySize returns an attribute KeyValue conforming to the
-// "http.response.body.size" semantic conventions. It represents the size of the
-// response payload body in bytes. This is the number of bytes transferred
-// excluding headers and is often, but not always, present as the
-// [Content-Length] header. For requests using transport encoding, this should be
-// the compressed size.
-//
-// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length
-func HTTPResponseBodySize(val int) attribute.KeyValue {
- return HTTPResponseBodySizeKey.Int(val)
-}
-
-// HTTPResponseSize returns an attribute KeyValue conforming to the
-// "http.response.size" semantic conventions. It represents the total size of the
-// response in bytes. This should be the total number of bytes sent over the
-// wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3),
-// headers, and response body and trailers if any.
-func HTTPResponseSize(val int) attribute.KeyValue {
- return HTTPResponseSizeKey.Int(val)
-}
-
-// HTTPResponseStatusCode returns an attribute KeyValue conforming to the
-// "http.response.status_code" semantic conventions. It represents the
-// [HTTP response status code].
-//
-// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6
-func HTTPResponseStatusCode(val int) attribute.KeyValue {
- return HTTPResponseStatusCodeKey.Int(val)
-}
-
-// HTTPRoute returns an attribute KeyValue conforming to the "http.route"
-// semantic conventions. It represents the matched route, that is, the path
-// template in the format used by the respective server framework.
-func HTTPRoute(val string) attribute.KeyValue {
- return HTTPRouteKey.String(val)
-}
-
-// Enum values for http.connection.state
-var (
- // active state.
- // Stability: development
- HTTPConnectionStateActive = HTTPConnectionStateKey.String("active")
- // idle state.
- // Stability: development
- HTTPConnectionStateIdle = HTTPConnectionStateKey.String("idle")
-)
-
-// Enum values for http.request.method
-var (
- // CONNECT method.
- // Stability: stable
- HTTPRequestMethodConnect = HTTPRequestMethodKey.String("CONNECT")
- // DELETE method.
- // Stability: stable
- HTTPRequestMethodDelete = HTTPRequestMethodKey.String("DELETE")
- // GET method.
- // Stability: stable
- HTTPRequestMethodGet = HTTPRequestMethodKey.String("GET")
- // HEAD method.
- // Stability: stable
- HTTPRequestMethodHead = HTTPRequestMethodKey.String("HEAD")
- // OPTIONS method.
- // Stability: stable
- HTTPRequestMethodOptions = HTTPRequestMethodKey.String("OPTIONS")
- // PATCH method.
- // Stability: stable
- HTTPRequestMethodPatch = HTTPRequestMethodKey.String("PATCH")
- // POST method.
- // Stability: stable
- HTTPRequestMethodPost = HTTPRequestMethodKey.String("POST")
- // PUT method.
- // Stability: stable
- HTTPRequestMethodPut = HTTPRequestMethodKey.String("PUT")
- // TRACE method.
- // Stability: stable
- HTTPRequestMethodTrace = HTTPRequestMethodKey.String("TRACE")
- // Any HTTP method that the instrumentation has no prior knowledge of.
- // Stability: stable
- HTTPRequestMethodOther = HTTPRequestMethodKey.String("_OTHER")
-)
-
-// Namespace: hw
-const (
- // HwIDKey is the attribute Key conforming to the "hw.id" semantic conventions.
- // It represents an identifier for the hardware component, unique within the
- // monitored host.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "win32battery_battery_testsysa33_1"
- HwIDKey = attribute.Key("hw.id")
-
- // HwNameKey is the attribute Key conforming to the "hw.name" semantic
- // conventions. It represents an easily-recognizable name for the hardware
- // component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "eth0"
- HwNameKey = attribute.Key("hw.name")
-
- // HwParentKey is the attribute Key conforming to the "hw.parent" semantic
- // conventions. It represents the unique identifier of the parent component
- // (typically the `hw.id` attribute of the enclosure, or disk controller).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "dellStorage_perc_0"
- HwParentKey = attribute.Key("hw.parent")
-
- // HwStateKey is the attribute Key conforming to the "hw.state" semantic
- // conventions. It represents the current state of the component.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HwStateKey = attribute.Key("hw.state")
-
- // HwTypeKey is the attribute Key conforming to the "hw.type" semantic
- // conventions. It represents the type of the component.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: Describes the category of the hardware component for which `hw.state`
- // is being reported. For example, `hw.type=temperature` along with
- // `hw.state=degraded` would indicate that the temperature of the hardware
- // component has been reported as `degraded`.
- HwTypeKey = attribute.Key("hw.type")
-)
-
-// HwID returns an attribute KeyValue conforming to the "hw.id" semantic
-// conventions. It represents an identifier for the hardware component, unique
-// within the monitored host.
-func HwID(val string) attribute.KeyValue {
- return HwIDKey.String(val)
-}
-
-// HwName returns an attribute KeyValue conforming to the "hw.name" semantic
-// conventions. It represents an easily-recognizable name for the hardware
-// component.
-func HwName(val string) attribute.KeyValue {
- return HwNameKey.String(val)
-}
-
-// HwParent returns an attribute KeyValue conforming to the "hw.parent" semantic
-// conventions. It represents the unique identifier of the parent component
-// (typically the `hw.id` attribute of the enclosure, or disk controller).
-func HwParent(val string) attribute.KeyValue {
- return HwParentKey.String(val)
-}
-
-// Enum values for hw.state
-var (
- // Ok
- // Stability: development
- HwStateOk = HwStateKey.String("ok")
- // Degraded
- // Stability: development
- HwStateDegraded = HwStateKey.String("degraded")
- // Failed
- // Stability: development
- HwStateFailed = HwStateKey.String("failed")
-)
-
-// Enum values for hw.type
-var (
- // Battery
- // Stability: development
- HwTypeBattery = HwTypeKey.String("battery")
- // CPU
- // Stability: development
- HwTypeCPU = HwTypeKey.String("cpu")
- // Disk controller
- // Stability: development
- HwTypeDiskController = HwTypeKey.String("disk_controller")
- // Enclosure
- // Stability: development
- HwTypeEnclosure = HwTypeKey.String("enclosure")
- // Fan
- // Stability: development
- HwTypeFan = HwTypeKey.String("fan")
- // GPU
- // Stability: development
- HwTypeGpu = HwTypeKey.String("gpu")
- // Logical disk
- // Stability: development
- HwTypeLogicalDisk = HwTypeKey.String("logical_disk")
- // Memory
- // Stability: development
- HwTypeMemory = HwTypeKey.String("memory")
- // Network
- // Stability: development
- HwTypeNetwork = HwTypeKey.String("network")
- // Physical disk
- // Stability: development
- HwTypePhysicalDisk = HwTypeKey.String("physical_disk")
- // Power supply
- // Stability: development
- HwTypePowerSupply = HwTypeKey.String("power_supply")
- // Tape drive
- // Stability: development
- HwTypeTapeDrive = HwTypeKey.String("tape_drive")
- // Temperature
- // Stability: development
- HwTypeTemperature = HwTypeKey.String("temperature")
- // Voltage
- // Stability: development
- HwTypeVoltage = HwTypeKey.String("voltage")
-)
-
-// Namespace: k8s
-const (
- // K8SClusterNameKey is the attribute Key conforming to the "k8s.cluster.name"
- // semantic conventions. It represents the name of the cluster.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry-cluster"
- K8SClusterNameKey = attribute.Key("k8s.cluster.name")
-
- // K8SClusterUIDKey is the attribute Key conforming to the "k8s.cluster.uid"
- // semantic conventions. It represents a pseudo-ID for the cluster, set to the
- // UID of the `kube-system` namespace.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: K8s doesn't have support for obtaining a cluster ID. If this is ever
- // added, we will recommend collecting the `k8s.cluster.uid` through the
- // official APIs. In the meantime, we are able to use the `uid` of the
- // `kube-system` namespace as a proxy for cluster ID. Read on for the
- // rationale.
- //
- // Every object created in a K8s cluster is assigned a distinct UID. The
- // `kube-system` namespace is used by Kubernetes itself and will exist
- // for the lifetime of the cluster. Using the `uid` of the `kube-system`
- // namespace is a reasonable proxy for the K8s ClusterID as it will only
- // change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are
- // UUIDs as standardized by
- // [ISO/IEC 9834-8 and ITU-T X.667].
- // Which states:
- //
- // > If generated according to one of the mechanisms defined in Rec.
- // > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be
- // > different from all other UUIDs generated before 3603 A.D., or is
- // > extremely likely to be different (depending on the mechanism chosen).
- //
- // Therefore, UIDs between clusters should be extremely unlikely to
- // conflict.
- //
- // [ISO/IEC 9834-8 and ITU-T X.667]: https://www.itu.int/ITU-T/studygroups/com17/oid.html
- K8SClusterUIDKey = attribute.Key("k8s.cluster.uid")
-
- // K8SContainerNameKey is the attribute Key conforming to the
- // "k8s.container.name" semantic conventions. It represents the name of the
- // Container from Pod specification, must be unique within a Pod. Container
- // runtime usually uses different globally unique name (`container.name`).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "redis"
- K8SContainerNameKey = attribute.Key("k8s.container.name")
-
- // K8SContainerRestartCountKey is the attribute Key conforming to the
- // "k8s.container.restart_count" semantic conventions. It represents the number
- // of times the container was restarted. This attribute can be used to identify
- // a particular container (running or stopped) within a container spec.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- K8SContainerRestartCountKey = attribute.Key("k8s.container.restart_count")
-
- // K8SContainerStatusLastTerminatedReasonKey is the attribute Key conforming to
- // the "k8s.container.status.last_terminated_reason" semantic conventions. It
- // represents the last terminated reason of the Container.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Evicted", "Error"
- K8SContainerStatusLastTerminatedReasonKey = attribute.Key("k8s.container.status.last_terminated_reason")
-
- // K8SCronJobNameKey is the attribute Key conforming to the "k8s.cronjob.name"
- // semantic conventions. It represents the name of the CronJob.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- K8SCronJobNameKey = attribute.Key("k8s.cronjob.name")
-
- // K8SCronJobUIDKey is the attribute Key conforming to the "k8s.cronjob.uid"
- // semantic conventions. It represents the UID of the CronJob.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SCronJobUIDKey = attribute.Key("k8s.cronjob.uid")
-
- // K8SDaemonSetNameKey is the attribute Key conforming to the
- // "k8s.daemonset.name" semantic conventions. It represents the name of the
- // DaemonSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- K8SDaemonSetNameKey = attribute.Key("k8s.daemonset.name")
-
- // K8SDaemonSetUIDKey is the attribute Key conforming to the "k8s.daemonset.uid"
- // semantic conventions. It represents the UID of the DaemonSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SDaemonSetUIDKey = attribute.Key("k8s.daemonset.uid")
-
- // K8SDeploymentNameKey is the attribute Key conforming to the
- // "k8s.deployment.name" semantic conventions. It represents the name of the
- // Deployment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- K8SDeploymentNameKey = attribute.Key("k8s.deployment.name")
-
- // K8SDeploymentUIDKey is the attribute Key conforming to the
- // "k8s.deployment.uid" semantic conventions. It represents the UID of the
- // Deployment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SDeploymentUIDKey = attribute.Key("k8s.deployment.uid")
-
- // K8SJobNameKey is the attribute Key conforming to the "k8s.job.name" semantic
- // conventions. It represents the name of the Job.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- K8SJobNameKey = attribute.Key("k8s.job.name")
-
- // K8SJobUIDKey is the attribute Key conforming to the "k8s.job.uid" semantic
- // conventions. It represents the UID of the Job.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SJobUIDKey = attribute.Key("k8s.job.uid")
-
- // K8SNamespaceNameKey is the attribute Key conforming to the
- // "k8s.namespace.name" semantic conventions. It represents the name of the
- // namespace that the pod is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "default"
- K8SNamespaceNameKey = attribute.Key("k8s.namespace.name")
-
- // K8SNamespacePhaseKey is the attribute Key conforming to the
- // "k8s.namespace.phase" semantic conventions. It represents the phase of the
- // K8s namespace.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "active", "terminating"
- // Note: This attribute aligns with the `phase` field of the
- // [K8s NamespaceStatus]
- //
- // [K8s NamespaceStatus]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core
- K8SNamespacePhaseKey = attribute.Key("k8s.namespace.phase")
-
- // K8SNodeNameKey is the attribute Key conforming to the "k8s.node.name"
- // semantic conventions. It represents the name of the Node.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "node-1"
- K8SNodeNameKey = attribute.Key("k8s.node.name")
-
- // K8SNodeUIDKey is the attribute Key conforming to the "k8s.node.uid" semantic
- // conventions. It represents the UID of the Node.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2"
- K8SNodeUIDKey = attribute.Key("k8s.node.uid")
-
- // K8SPodNameKey is the attribute Key conforming to the "k8s.pod.name" semantic
- // conventions. It represents the name of the Pod.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry-pod-autoconf"
- K8SPodNameKey = attribute.Key("k8s.pod.name")
-
- // K8SPodUIDKey is the attribute Key conforming to the "k8s.pod.uid" semantic
- // conventions. It represents the UID of the Pod.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SPodUIDKey = attribute.Key("k8s.pod.uid")
-
- // K8SReplicaSetNameKey is the attribute Key conforming to the
- // "k8s.replicaset.name" semantic conventions. It represents the name of the
- // ReplicaSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- K8SReplicaSetNameKey = attribute.Key("k8s.replicaset.name")
-
- // K8SReplicaSetUIDKey is the attribute Key conforming to the
- // "k8s.replicaset.uid" semantic conventions. It represents the UID of the
- // ReplicaSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SReplicaSetUIDKey = attribute.Key("k8s.replicaset.uid")
-
- // K8SStatefulSetNameKey is the attribute Key conforming to the
- // "k8s.statefulset.name" semantic conventions. It represents the name of the
- // StatefulSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- K8SStatefulSetNameKey = attribute.Key("k8s.statefulset.name")
-
- // K8SStatefulSetUIDKey is the attribute Key conforming to the
- // "k8s.statefulset.uid" semantic conventions. It represents the UID of the
- // StatefulSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SStatefulSetUIDKey = attribute.Key("k8s.statefulset.uid")
-
- // K8SVolumeNameKey is the attribute Key conforming to the "k8s.volume.name"
- // semantic conventions. It represents the name of the K8s volume.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "volume0"
- K8SVolumeNameKey = attribute.Key("k8s.volume.name")
-
- // K8SVolumeTypeKey is the attribute Key conforming to the "k8s.volume.type"
- // semantic conventions. It represents the type of the K8s volume.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "emptyDir", "persistentVolumeClaim"
- K8SVolumeTypeKey = attribute.Key("k8s.volume.type")
-)
-
-// K8SClusterName returns an attribute KeyValue conforming to the
-// "k8s.cluster.name" semantic conventions. It represents the name of the
-// cluster.
-func K8SClusterName(val string) attribute.KeyValue {
- return K8SClusterNameKey.String(val)
-}
-
-// K8SClusterUID returns an attribute KeyValue conforming to the
-// "k8s.cluster.uid" semantic conventions. It represents a pseudo-ID for the
-// cluster, set to the UID of the `kube-system` namespace.
-func K8SClusterUID(val string) attribute.KeyValue {
- return K8SClusterUIDKey.String(val)
-}
-
-// K8SContainerName returns an attribute KeyValue conforming to the
-// "k8s.container.name" semantic conventions. It represents the name of the
-// Container from Pod specification, must be unique within a Pod. Container
-// runtime usually uses different globally unique name (`container.name`).
-func K8SContainerName(val string) attribute.KeyValue {
- return K8SContainerNameKey.String(val)
-}
-
-// K8SContainerRestartCount returns an attribute KeyValue conforming to the
-// "k8s.container.restart_count" semantic conventions. It represents the number
-// of times the container was restarted. This attribute can be used to identify a
-// particular container (running or stopped) within a container spec.
-func K8SContainerRestartCount(val int) attribute.KeyValue {
- return K8SContainerRestartCountKey.Int(val)
-}
-
-// K8SContainerStatusLastTerminatedReason returns an attribute KeyValue
-// conforming to the "k8s.container.status.last_terminated_reason" semantic
-// conventions. It represents the last terminated reason of the Container.
-func K8SContainerStatusLastTerminatedReason(val string) attribute.KeyValue {
- return K8SContainerStatusLastTerminatedReasonKey.String(val)
-}
-
-// K8SCronJobName returns an attribute KeyValue conforming to the
-// "k8s.cronjob.name" semantic conventions. It represents the name of the
-// CronJob.
-func K8SCronJobName(val string) attribute.KeyValue {
- return K8SCronJobNameKey.String(val)
-}
-
-// K8SCronJobUID returns an attribute KeyValue conforming to the
-// "k8s.cronjob.uid" semantic conventions. It represents the UID of the CronJob.
-func K8SCronJobUID(val string) attribute.KeyValue {
- return K8SCronJobUIDKey.String(val)
-}
-
-// K8SDaemonSetName returns an attribute KeyValue conforming to the
-// "k8s.daemonset.name" semantic conventions. It represents the name of the
-// DaemonSet.
-func K8SDaemonSetName(val string) attribute.KeyValue {
- return K8SDaemonSetNameKey.String(val)
-}
-
-// K8SDaemonSetUID returns an attribute KeyValue conforming to the
-// "k8s.daemonset.uid" semantic conventions. It represents the UID of the
-// DaemonSet.
-func K8SDaemonSetUID(val string) attribute.KeyValue {
- return K8SDaemonSetUIDKey.String(val)
-}
-
-// K8SDeploymentName returns an attribute KeyValue conforming to the
-// "k8s.deployment.name" semantic conventions. It represents the name of the
-// Deployment.
-func K8SDeploymentName(val string) attribute.KeyValue {
- return K8SDeploymentNameKey.String(val)
-}
-
-// K8SDeploymentUID returns an attribute KeyValue conforming to the
-// "k8s.deployment.uid" semantic conventions. It represents the UID of the
-// Deployment.
-func K8SDeploymentUID(val string) attribute.KeyValue {
- return K8SDeploymentUIDKey.String(val)
-}
-
-// K8SJobName returns an attribute KeyValue conforming to the "k8s.job.name"
-// semantic conventions. It represents the name of the Job.
-func K8SJobName(val string) attribute.KeyValue {
- return K8SJobNameKey.String(val)
-}
-
-// K8SJobUID returns an attribute KeyValue conforming to the "k8s.job.uid"
-// semantic conventions. It represents the UID of the Job.
-func K8SJobUID(val string) attribute.KeyValue {
- return K8SJobUIDKey.String(val)
-}
-
-// K8SNamespaceName returns an attribute KeyValue conforming to the
-// "k8s.namespace.name" semantic conventions. It represents the name of the
-// namespace that the pod is running in.
-func K8SNamespaceName(val string) attribute.KeyValue {
- return K8SNamespaceNameKey.String(val)
-}
-
-// K8SNodeName returns an attribute KeyValue conforming to the "k8s.node.name"
-// semantic conventions. It represents the name of the Node.
-func K8SNodeName(val string) attribute.KeyValue {
- return K8SNodeNameKey.String(val)
-}
-
-// K8SNodeUID returns an attribute KeyValue conforming to the "k8s.node.uid"
-// semantic conventions. It represents the UID of the Node.
-func K8SNodeUID(val string) attribute.KeyValue {
- return K8SNodeUIDKey.String(val)
-}
-
-// K8SPodName returns an attribute KeyValue conforming to the "k8s.pod.name"
-// semantic conventions. It represents the name of the Pod.
-func K8SPodName(val string) attribute.KeyValue {
- return K8SPodNameKey.String(val)
-}
-
-// K8SPodUID returns an attribute KeyValue conforming to the "k8s.pod.uid"
-// semantic conventions. It represents the UID of the Pod.
-func K8SPodUID(val string) attribute.KeyValue {
- return K8SPodUIDKey.String(val)
-}
-
-// K8SReplicaSetName returns an attribute KeyValue conforming to the
-// "k8s.replicaset.name" semantic conventions. It represents the name of the
-// ReplicaSet.
-func K8SReplicaSetName(val string) attribute.KeyValue {
- return K8SReplicaSetNameKey.String(val)
-}
-
-// K8SReplicaSetUID returns an attribute KeyValue conforming to the
-// "k8s.replicaset.uid" semantic conventions. It represents the UID of the
-// ReplicaSet.
-func K8SReplicaSetUID(val string) attribute.KeyValue {
- return K8SReplicaSetUIDKey.String(val)
-}
-
-// K8SStatefulSetName returns an attribute KeyValue conforming to the
-// "k8s.statefulset.name" semantic conventions. It represents the name of the
-// StatefulSet.
-func K8SStatefulSetName(val string) attribute.KeyValue {
- return K8SStatefulSetNameKey.String(val)
-}
-
-// K8SStatefulSetUID returns an attribute KeyValue conforming to the
-// "k8s.statefulset.uid" semantic conventions. It represents the UID of the
-// StatefulSet.
-func K8SStatefulSetUID(val string) attribute.KeyValue {
- return K8SStatefulSetUIDKey.String(val)
-}
-
-// K8SVolumeName returns an attribute KeyValue conforming to the
-// "k8s.volume.name" semantic conventions. It represents the name of the K8s
-// volume.
-func K8SVolumeName(val string) attribute.KeyValue {
- return K8SVolumeNameKey.String(val)
-}
-
-// Enum values for k8s.namespace.phase
-var (
- // Active namespace phase as described by [K8s API]
- // Stability: development
- //
- // [K8s API]: https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase
- K8SNamespacePhaseActive = K8SNamespacePhaseKey.String("active")
- // Terminating namespace phase as described by [K8s API]
- // Stability: development
- //
- // [K8s API]: https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase
- K8SNamespacePhaseTerminating = K8SNamespacePhaseKey.String("terminating")
-)
-
-// Enum values for k8s.volume.type
-var (
- // A [persistentVolumeClaim] volume
- // Stability: development
- //
- // [persistentVolumeClaim]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim
- K8SVolumeTypePersistentVolumeClaim = K8SVolumeTypeKey.String("persistentVolumeClaim")
- // A [configMap] volume
- // Stability: development
- //
- // [configMap]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap
- K8SVolumeTypeConfigMap = K8SVolumeTypeKey.String("configMap")
- // A [downwardAPI] volume
- // Stability: development
- //
- // [downwardAPI]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi
- K8SVolumeTypeDownwardAPI = K8SVolumeTypeKey.String("downwardAPI")
- // An [emptyDir] volume
- // Stability: development
- //
- // [emptyDir]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir
- K8SVolumeTypeEmptyDir = K8SVolumeTypeKey.String("emptyDir")
- // A [secret] volume
- // Stability: development
- //
- // [secret]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret
- K8SVolumeTypeSecret = K8SVolumeTypeKey.String("secret")
- // A [local] volume
- // Stability: development
- //
- // [local]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local
- K8SVolumeTypeLocal = K8SVolumeTypeKey.String("local")
-)
-
-// Namespace: linux
-const (
- // LinuxMemorySlabStateKey is the attribute Key conforming to the
- // "linux.memory.slab.state" semantic conventions. It represents the Linux Slab
- // memory state.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "reclaimable", "unreclaimable"
- LinuxMemorySlabStateKey = attribute.Key("linux.memory.slab.state")
-)
-
-// Enum values for linux.memory.slab.state
-var (
- // reclaimable
- // Stability: development
- LinuxMemorySlabStateReclaimable = LinuxMemorySlabStateKey.String("reclaimable")
- // unreclaimable
- // Stability: development
- LinuxMemorySlabStateUnreclaimable = LinuxMemorySlabStateKey.String("unreclaimable")
-)
-
-// Namespace: log
-const (
- // LogFileNameKey is the attribute Key conforming to the "log.file.name"
- // semantic conventions. It represents the basename of the file.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "audit.log"
- LogFileNameKey = attribute.Key("log.file.name")
-
- // LogFileNameResolvedKey is the attribute Key conforming to the
- // "log.file.name_resolved" semantic conventions. It represents the basename of
- // the file, with symlinks resolved.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "uuid.log"
- LogFileNameResolvedKey = attribute.Key("log.file.name_resolved")
-
- // LogFilePathKey is the attribute Key conforming to the "log.file.path"
- // semantic conventions. It represents the full path to the file.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/var/log/mysql/audit.log"
- LogFilePathKey = attribute.Key("log.file.path")
-
- // LogFilePathResolvedKey is the attribute Key conforming to the
- // "log.file.path_resolved" semantic conventions. It represents the full path to
- // the file, with symlinks resolved.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/var/lib/docker/uuid.log"
- LogFilePathResolvedKey = attribute.Key("log.file.path_resolved")
-
- // LogIostreamKey is the attribute Key conforming to the "log.iostream" semantic
- // conventions. It represents the stream associated with the log. See below for
- // a list of well-known values.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- LogIostreamKey = attribute.Key("log.iostream")
-
- // LogRecordOriginalKey is the attribute Key conforming to the
- // "log.record.original" semantic conventions. It represents the complete
- // original Log Record.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - -
- // Something happened", "[INFO] 8/3/24 12:34:56 Something happened"
- // Note: This value MAY be added when processing a Log Record which was
- // originally transmitted as a string or equivalent data type AND the Body field
- // of the Log Record does not contain the same value. (e.g. a syslog or a log
- // record read from a file.)
- LogRecordOriginalKey = attribute.Key("log.record.original")
-
- // LogRecordUIDKey is the attribute Key conforming to the "log.record.uid"
- // semantic conventions. It represents a unique identifier for the Log Record.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "01ARZ3NDEKTSV4RRFFQ69G5FAV"
- // Note: If an id is provided, other log records with the same id will be
- // considered duplicates and can be removed safely. This means, that two
- // distinguishable log records MUST have different values.
- // The id MAY be an
- // [Universally Unique Lexicographically Sortable Identifier (ULID)], but other
- // identifiers (e.g. UUID) may be used as needed.
- //
- // [Universally Unique Lexicographically Sortable Identifier (ULID)]: https://github.com/ulid/spec
- LogRecordUIDKey = attribute.Key("log.record.uid")
-)
-
-// LogFileName returns an attribute KeyValue conforming to the "log.file.name"
-// semantic conventions. It represents the basename of the file.
-func LogFileName(val string) attribute.KeyValue {
- return LogFileNameKey.String(val)
-}
-
-// LogFileNameResolved returns an attribute KeyValue conforming to the
-// "log.file.name_resolved" semantic conventions. It represents the basename of
-// the file, with symlinks resolved.
-func LogFileNameResolved(val string) attribute.KeyValue {
- return LogFileNameResolvedKey.String(val)
-}
-
-// LogFilePath returns an attribute KeyValue conforming to the "log.file.path"
-// semantic conventions. It represents the full path to the file.
-func LogFilePath(val string) attribute.KeyValue {
- return LogFilePathKey.String(val)
-}
-
-// LogFilePathResolved returns an attribute KeyValue conforming to the
-// "log.file.path_resolved" semantic conventions. It represents the full path to
-// the file, with symlinks resolved.
-func LogFilePathResolved(val string) attribute.KeyValue {
- return LogFilePathResolvedKey.String(val)
-}
-
-// LogRecordOriginal returns an attribute KeyValue conforming to the
-// "log.record.original" semantic conventions. It represents the complete
-// original Log Record.
-func LogRecordOriginal(val string) attribute.KeyValue {
- return LogRecordOriginalKey.String(val)
-}
-
-// LogRecordUID returns an attribute KeyValue conforming to the "log.record.uid"
-// semantic conventions. It represents a unique identifier for the Log Record.
-func LogRecordUID(val string) attribute.KeyValue {
- return LogRecordUIDKey.String(val)
-}
-
-// Enum values for log.iostream
-var (
- // Logs from stdout stream
- // Stability: development
- LogIostreamStdout = LogIostreamKey.String("stdout")
- // Events from stderr stream
- // Stability: development
- LogIostreamStderr = LogIostreamKey.String("stderr")
-)
-
-// Namespace: messaging
-const (
- // MessagingBatchMessageCountKey is the attribute Key conforming to the
- // "messaging.batch.message_count" semantic conventions. It represents the
- // number of messages sent, received, or processed in the scope of the batching
- // operation.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0, 1, 2
- // Note: Instrumentations SHOULD NOT set `messaging.batch.message_count` on
- // spans that operate with a single message. When a messaging client library
- // supports both batch and single-message API for the same operation,
- // instrumentations SHOULD use `messaging.batch.message_count` for batching APIs
- // and SHOULD NOT use it for single-message APIs.
- MessagingBatchMessageCountKey = attribute.Key("messaging.batch.message_count")
-
- // MessagingClientIDKey is the attribute Key conforming to the
- // "messaging.client.id" semantic conventions. It represents a unique identifier
- // for the client that consumes or produces a message.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "client-5", "myhost@8742@s8083jm"
- MessagingClientIDKey = attribute.Key("messaging.client.id")
-
- // MessagingConsumerGroupNameKey is the attribute Key conforming to the
- // "messaging.consumer.group.name" semantic conventions. It represents the name
- // of the consumer group with which a consumer is associated.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-group", "indexer"
- // Note: Semantic conventions for individual messaging systems SHOULD document
- // whether `messaging.consumer.group.name` is applicable and what it means in
- // the context of that system.
- MessagingConsumerGroupNameKey = attribute.Key("messaging.consumer.group.name")
-
- // MessagingDestinationAnonymousKey is the attribute Key conforming to the
- // "messaging.destination.anonymous" semantic conventions. It represents a
- // boolean that is true if the message destination is anonymous (could be
- // unnamed or have auto-generated name).
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingDestinationAnonymousKey = attribute.Key("messaging.destination.anonymous")
-
- // MessagingDestinationNameKey is the attribute Key conforming to the
- // "messaging.destination.name" semantic conventions. It represents the message
- // destination name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MyQueue", "MyTopic"
- // Note: Destination name SHOULD uniquely identify a specific queue, topic or
- // other entity within the broker. If
- // the broker doesn't have such notion, the destination name SHOULD uniquely
- // identify the broker.
- MessagingDestinationNameKey = attribute.Key("messaging.destination.name")
-
- // MessagingDestinationPartitionIDKey is the attribute Key conforming to the
- // "messaging.destination.partition.id" semantic conventions. It represents the
- // identifier of the partition messages are sent to or received from, unique
- // within the `messaging.destination.name`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1
- MessagingDestinationPartitionIDKey = attribute.Key("messaging.destination.partition.id")
-
- // MessagingDestinationSubscriptionNameKey is the attribute Key conforming to
- // the "messaging.destination.subscription.name" semantic conventions. It
- // represents the name of the destination subscription from which a message is
- // consumed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "subscription-a"
- // Note: Semantic conventions for individual messaging systems SHOULD document
- // whether `messaging.destination.subscription.name` is applicable and what it
- // means in the context of that system.
- MessagingDestinationSubscriptionNameKey = attribute.Key("messaging.destination.subscription.name")
-
- // MessagingDestinationTemplateKey is the attribute Key conforming to the
- // "messaging.destination.template" semantic conventions. It represents the low
- // cardinality representation of the messaging destination name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/customers/{customerId}"
- // Note: Destination names could be constructed from templates. An example would
- // be a destination name involving a user name or product id. Although the
- // destination name in this case is of high cardinality, the underlying template
- // is of low cardinality and can be effectively used for grouping and
- // aggregation.
- MessagingDestinationTemplateKey = attribute.Key("messaging.destination.template")
-
- // MessagingDestinationTemporaryKey is the attribute Key conforming to the
- // "messaging.destination.temporary" semantic conventions. It represents a
- // boolean that is true if the message destination is temporary and might not
- // exist anymore after messages are processed.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingDestinationTemporaryKey = attribute.Key("messaging.destination.temporary")
-
- // MessagingEventhubsMessageEnqueuedTimeKey is the attribute Key conforming to
- // the "messaging.eventhubs.message.enqueued_time" semantic conventions. It
- // represents the UTC epoch seconds at which the message has been accepted and
- // stored in the entity.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingEventhubsMessageEnqueuedTimeKey = attribute.Key("messaging.eventhubs.message.enqueued_time")
-
- // MessagingGCPPubsubMessageAckDeadlineKey is the attribute Key conforming to
- // the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions. It
- // represents the ack deadline in seconds set for the modify ack deadline
- // request.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingGCPPubsubMessageAckDeadlineKey = attribute.Key("messaging.gcp_pubsub.message.ack_deadline")
-
- // MessagingGCPPubsubMessageAckIDKey is the attribute Key conforming to the
- // "messaging.gcp_pubsub.message.ack_id" semantic conventions. It represents the
- // ack id for a given message.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: ack_id
- MessagingGCPPubsubMessageAckIDKey = attribute.Key("messaging.gcp_pubsub.message.ack_id")
-
- // MessagingGCPPubsubMessageDeliveryAttemptKey is the attribute Key conforming
- // to the "messaging.gcp_pubsub.message.delivery_attempt" semantic conventions.
- // It represents the delivery attempt for a given message.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingGCPPubsubMessageDeliveryAttemptKey = attribute.Key("messaging.gcp_pubsub.message.delivery_attempt")
-
- // MessagingGCPPubsubMessageOrderingKeyKey is the attribute Key conforming to
- // the "messaging.gcp_pubsub.message.ordering_key" semantic conventions. It
- // represents the ordering key for a given message. If the attribute is not
- // present, the message does not have an ordering key.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: ordering_key
- MessagingGCPPubsubMessageOrderingKeyKey = attribute.Key("messaging.gcp_pubsub.message.ordering_key")
-
- // MessagingKafkaMessageKeyKey is the attribute Key conforming to the
- // "messaging.kafka.message.key" semantic conventions. It represents the message
- // keys in Kafka are used for grouping alike messages to ensure they're
- // processed on the same partition. They differ from `messaging.message.id` in
- // that they're not unique. If the key is `null`, the attribute MUST NOT be set.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: myKey
- // Note: If the key type is not string, it's string representation has to be
- // supplied for the attribute. If the key has no unambiguous, canonical string
- // form, don't include its value.
- MessagingKafkaMessageKeyKey = attribute.Key("messaging.kafka.message.key")
-
- // MessagingKafkaMessageTombstoneKey is the attribute Key conforming to the
- // "messaging.kafka.message.tombstone" semantic conventions. It represents a
- // boolean that is true if the message is a tombstone.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingKafkaMessageTombstoneKey = attribute.Key("messaging.kafka.message.tombstone")
-
- // MessagingKafkaOffsetKey is the attribute Key conforming to the
- // "messaging.kafka.offset" semantic conventions. It represents the offset of a
- // record in the corresponding Kafka partition.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingKafkaOffsetKey = attribute.Key("messaging.kafka.offset")
-
- // MessagingMessageBodySizeKey is the attribute Key conforming to the
- // "messaging.message.body.size" semantic conventions. It represents the size of
- // the message body in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Note: This can refer to both the compressed or uncompressed body size. If
- // both sizes are known, the uncompressed
- // body size should be used.
- MessagingMessageBodySizeKey = attribute.Key("messaging.message.body.size")
-
- // MessagingMessageConversationIDKey is the attribute Key conforming to the
- // "messaging.message.conversation_id" semantic conventions. It represents the
- // conversation ID identifying the conversation to which the message belongs,
- // represented as a string. Sometimes called "Correlation ID".
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: MyConversationId
- MessagingMessageConversationIDKey = attribute.Key("messaging.message.conversation_id")
-
- // MessagingMessageEnvelopeSizeKey is the attribute Key conforming to the
- // "messaging.message.envelope.size" semantic conventions. It represents the
- // size of the message body and metadata in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Note: This can refer to both the compressed or uncompressed size. If both
- // sizes are known, the uncompressed
- // size should be used.
- MessagingMessageEnvelopeSizeKey = attribute.Key("messaging.message.envelope.size")
-
- // MessagingMessageIDKey is the attribute Key conforming to the
- // "messaging.message.id" semantic conventions. It represents a value used by
- // the messaging system as an identifier for the message, represented as a
- // string.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 452a7c7c7c7048c2f887f61572b18fc2
- MessagingMessageIDKey = attribute.Key("messaging.message.id")
-
- // MessagingOperationNameKey is the attribute Key conforming to the
- // "messaging.operation.name" semantic conventions. It represents the
- // system-specific name of the messaging operation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ack", "nack", "send"
- MessagingOperationNameKey = attribute.Key("messaging.operation.name")
-
- // MessagingOperationTypeKey is the attribute Key conforming to the
- // "messaging.operation.type" semantic conventions. It represents a string
- // identifying the type of the messaging operation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: If a custom value is used, it MUST be of low cardinality.
- MessagingOperationTypeKey = attribute.Key("messaging.operation.type")
-
- // MessagingRabbitmqDestinationRoutingKeyKey is the attribute Key conforming to
- // the "messaging.rabbitmq.destination.routing_key" semantic conventions. It
- // represents the rabbitMQ message routing key.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: myKey
- MessagingRabbitmqDestinationRoutingKeyKey = attribute.Key("messaging.rabbitmq.destination.routing_key")
-
- // MessagingRabbitmqMessageDeliveryTagKey is the attribute Key conforming to the
- // "messaging.rabbitmq.message.delivery_tag" semantic conventions. It represents
- // the rabbitMQ message delivery tag.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingRabbitmqMessageDeliveryTagKey = attribute.Key("messaging.rabbitmq.message.delivery_tag")
-
- // MessagingRocketmqConsumptionModelKey is the attribute Key conforming to the
- // "messaging.rocketmq.consumption_model" semantic conventions. It represents
- // the model of message consumption. This only applies to consumer spans.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingRocketmqConsumptionModelKey = attribute.Key("messaging.rocketmq.consumption_model")
-
- // MessagingRocketmqMessageDelayTimeLevelKey is the attribute Key conforming to
- // the "messaging.rocketmq.message.delay_time_level" semantic conventions. It
- // represents the delay time level for delay message, which determines the
- // message delay time.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingRocketmqMessageDelayTimeLevelKey = attribute.Key("messaging.rocketmq.message.delay_time_level")
-
- // MessagingRocketmqMessageDeliveryTimestampKey is the attribute Key conforming
- // to the "messaging.rocketmq.message.delivery_timestamp" semantic conventions.
- // It represents the timestamp in milliseconds that the delay message is
- // expected to be delivered to consumer.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingRocketmqMessageDeliveryTimestampKey = attribute.Key("messaging.rocketmq.message.delivery_timestamp")
-
- // MessagingRocketmqMessageGroupKey is the attribute Key conforming to the
- // "messaging.rocketmq.message.group" semantic conventions. It represents the it
- // is essential for FIFO message. Messages that belong to the same message group
- // are always processed one by one within the same consumer group.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: myMessageGroup
- MessagingRocketmqMessageGroupKey = attribute.Key("messaging.rocketmq.message.group")
-
- // MessagingRocketmqMessageKeysKey is the attribute Key conforming to the
- // "messaging.rocketmq.message.keys" semantic conventions. It represents the
- // key(s) of message, another way to mark message besides message id.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "keyA", "keyB"
- MessagingRocketmqMessageKeysKey = attribute.Key("messaging.rocketmq.message.keys")
-
- // MessagingRocketmqMessageTagKey is the attribute Key conforming to the
- // "messaging.rocketmq.message.tag" semantic conventions. It represents the
- // secondary classifier of message besides topic.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: tagA
- MessagingRocketmqMessageTagKey = attribute.Key("messaging.rocketmq.message.tag")
-
- // MessagingRocketmqMessageTypeKey is the attribute Key conforming to the
- // "messaging.rocketmq.message.type" semantic conventions. It represents the
- // type of message.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingRocketmqMessageTypeKey = attribute.Key("messaging.rocketmq.message.type")
-
- // MessagingRocketmqNamespaceKey is the attribute Key conforming to the
- // "messaging.rocketmq.namespace" semantic conventions. It represents the
- // namespace of RocketMQ resources, resources in different namespaces are
- // individual.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: myNamespace
- MessagingRocketmqNamespaceKey = attribute.Key("messaging.rocketmq.namespace")
-
- // MessagingServicebusDispositionStatusKey is the attribute Key conforming to
- // the "messaging.servicebus.disposition_status" semantic conventions. It
- // represents the describes the [settlement type].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [settlement type]: https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock
- MessagingServicebusDispositionStatusKey = attribute.Key("messaging.servicebus.disposition_status")
-
- // MessagingServicebusMessageDeliveryCountKey is the attribute Key conforming to
- // the "messaging.servicebus.message.delivery_count" semantic conventions. It
- // represents the number of deliveries that have been attempted for this
- // message.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingServicebusMessageDeliveryCountKey = attribute.Key("messaging.servicebus.message.delivery_count")
-
- // MessagingServicebusMessageEnqueuedTimeKey is the attribute Key conforming to
- // the "messaging.servicebus.message.enqueued_time" semantic conventions. It
- // represents the UTC epoch seconds at which the message has been accepted and
- // stored in the entity.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingServicebusMessageEnqueuedTimeKey = attribute.Key("messaging.servicebus.message.enqueued_time")
-
- // MessagingSystemKey is the attribute Key conforming to the "messaging.system"
- // semantic conventions. It represents the messaging system as identified by the
- // client instrumentation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: The actual messaging system may differ from the one known by the
- // client. For example, when using Kafka client libraries to communicate with
- // Azure Event Hubs, the `messaging.system` is set to `kafka` based on the
- // instrumentation's best knowledge.
- MessagingSystemKey = attribute.Key("messaging.system")
-)
-
-// MessagingBatchMessageCount returns an attribute KeyValue conforming to the
-// "messaging.batch.message_count" semantic conventions. It represents the number
-// of messages sent, received, or processed in the scope of the batching
-// operation.
-func MessagingBatchMessageCount(val int) attribute.KeyValue {
- return MessagingBatchMessageCountKey.Int(val)
-}
-
-// MessagingClientID returns an attribute KeyValue conforming to the
-// "messaging.client.id" semantic conventions. It represents a unique identifier
-// for the client that consumes or produces a message.
-func MessagingClientID(val string) attribute.KeyValue {
- return MessagingClientIDKey.String(val)
-}
-
-// MessagingConsumerGroupName returns an attribute KeyValue conforming to the
-// "messaging.consumer.group.name" semantic conventions. It represents the name
-// of the consumer group with which a consumer is associated.
-func MessagingConsumerGroupName(val string) attribute.KeyValue {
- return MessagingConsumerGroupNameKey.String(val)
-}
-
-// MessagingDestinationAnonymous returns an attribute KeyValue conforming to the
-// "messaging.destination.anonymous" semantic conventions. It represents a
-// boolean that is true if the message destination is anonymous (could be unnamed
-// or have auto-generated name).
-func MessagingDestinationAnonymous(val bool) attribute.KeyValue {
- return MessagingDestinationAnonymousKey.Bool(val)
-}
-
-// MessagingDestinationName returns an attribute KeyValue conforming to the
-// "messaging.destination.name" semantic conventions. It represents the message
-// destination name.
-func MessagingDestinationName(val string) attribute.KeyValue {
- return MessagingDestinationNameKey.String(val)
-}
-
-// MessagingDestinationPartitionID returns an attribute KeyValue conforming to
-// the "messaging.destination.partition.id" semantic conventions. It represents
-// the identifier of the partition messages are sent to or received from, unique
-// within the `messaging.destination.name`.
-func MessagingDestinationPartitionID(val string) attribute.KeyValue {
- return MessagingDestinationPartitionIDKey.String(val)
-}
-
-// MessagingDestinationSubscriptionName returns an attribute KeyValue conforming
-// to the "messaging.destination.subscription.name" semantic conventions. It
-// represents the name of the destination subscription from which a message is
-// consumed.
-func MessagingDestinationSubscriptionName(val string) attribute.KeyValue {
- return MessagingDestinationSubscriptionNameKey.String(val)
-}
-
-// MessagingDestinationTemplate returns an attribute KeyValue conforming to the
-// "messaging.destination.template" semantic conventions. It represents the low
-// cardinality representation of the messaging destination name.
-func MessagingDestinationTemplate(val string) attribute.KeyValue {
- return MessagingDestinationTemplateKey.String(val)
-}
-
-// MessagingDestinationTemporary returns an attribute KeyValue conforming to the
-// "messaging.destination.temporary" semantic conventions. It represents a
-// boolean that is true if the message destination is temporary and might not
-// exist anymore after messages are processed.
-func MessagingDestinationTemporary(val bool) attribute.KeyValue {
- return MessagingDestinationTemporaryKey.Bool(val)
-}
-
-// MessagingEventhubsMessageEnqueuedTime returns an attribute KeyValue conforming
-// to the "messaging.eventhubs.message.enqueued_time" semantic conventions. It
-// represents the UTC epoch seconds at which the message has been accepted and
-// stored in the entity.
-func MessagingEventhubsMessageEnqueuedTime(val int) attribute.KeyValue {
- return MessagingEventhubsMessageEnqueuedTimeKey.Int(val)
-}
-
-// MessagingGCPPubsubMessageAckDeadline returns an attribute KeyValue conforming
-// to the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions. It
-// represents the ack deadline in seconds set for the modify ack deadline
-// request.
-func MessagingGCPPubsubMessageAckDeadline(val int) attribute.KeyValue {
- return MessagingGCPPubsubMessageAckDeadlineKey.Int(val)
-}
-
-// MessagingGCPPubsubMessageAckID returns an attribute KeyValue conforming to the
-// "messaging.gcp_pubsub.message.ack_id" semantic conventions. It represents the
-// ack id for a given message.
-func MessagingGCPPubsubMessageAckID(val string) attribute.KeyValue {
- return MessagingGCPPubsubMessageAckIDKey.String(val)
-}
-
-// MessagingGCPPubsubMessageDeliveryAttempt returns an attribute KeyValue
-// conforming to the "messaging.gcp_pubsub.message.delivery_attempt" semantic
-// conventions. It represents the delivery attempt for a given message.
-func MessagingGCPPubsubMessageDeliveryAttempt(val int) attribute.KeyValue {
- return MessagingGCPPubsubMessageDeliveryAttemptKey.Int(val)
-}
-
-// MessagingGCPPubsubMessageOrderingKey returns an attribute KeyValue conforming
-// to the "messaging.gcp_pubsub.message.ordering_key" semantic conventions. It
-// represents the ordering key for a given message. If the attribute is not
-// present, the message does not have an ordering key.
-func MessagingGCPPubsubMessageOrderingKey(val string) attribute.KeyValue {
- return MessagingGCPPubsubMessageOrderingKeyKey.String(val)
-}
-
-// MessagingKafkaMessageKey returns an attribute KeyValue conforming to the
-// "messaging.kafka.message.key" semantic conventions. It represents the message
-// keys in Kafka are used for grouping alike messages to ensure they're processed
-// on the same partition. They differ from `messaging.message.id` in that they're
-// not unique. If the key is `null`, the attribute MUST NOT be set.
-func MessagingKafkaMessageKey(val string) attribute.KeyValue {
- return MessagingKafkaMessageKeyKey.String(val)
-}
-
-// MessagingKafkaMessageTombstone returns an attribute KeyValue conforming to the
-// "messaging.kafka.message.tombstone" semantic conventions. It represents a
-// boolean that is true if the message is a tombstone.
-func MessagingKafkaMessageTombstone(val bool) attribute.KeyValue {
- return MessagingKafkaMessageTombstoneKey.Bool(val)
-}
-
-// MessagingKafkaOffset returns an attribute KeyValue conforming to the
-// "messaging.kafka.offset" semantic conventions. It represents the offset of a
-// record in the corresponding Kafka partition.
-func MessagingKafkaOffset(val int) attribute.KeyValue {
- return MessagingKafkaOffsetKey.Int(val)
-}
-
-// MessagingMessageBodySize returns an attribute KeyValue conforming to the
-// "messaging.message.body.size" semantic conventions. It represents the size of
-// the message body in bytes.
-func MessagingMessageBodySize(val int) attribute.KeyValue {
- return MessagingMessageBodySizeKey.Int(val)
-}
-
-// MessagingMessageConversationID returns an attribute KeyValue conforming to the
-// "messaging.message.conversation_id" semantic conventions. It represents the
-// conversation ID identifying the conversation to which the message belongs,
-// represented as a string. Sometimes called "Correlation ID".
-func MessagingMessageConversationID(val string) attribute.KeyValue {
- return MessagingMessageConversationIDKey.String(val)
-}
-
-// MessagingMessageEnvelopeSize returns an attribute KeyValue conforming to the
-// "messaging.message.envelope.size" semantic conventions. It represents the size
-// of the message body and metadata in bytes.
-func MessagingMessageEnvelopeSize(val int) attribute.KeyValue {
- return MessagingMessageEnvelopeSizeKey.Int(val)
-}
-
-// MessagingMessageID returns an attribute KeyValue conforming to the
-// "messaging.message.id" semantic conventions. It represents a value used by the
-// messaging system as an identifier for the message, represented as a string.
-func MessagingMessageID(val string) attribute.KeyValue {
- return MessagingMessageIDKey.String(val)
-}
-
-// MessagingOperationName returns an attribute KeyValue conforming to the
-// "messaging.operation.name" semantic conventions. It represents the
-// system-specific name of the messaging operation.
-func MessagingOperationName(val string) attribute.KeyValue {
- return MessagingOperationNameKey.String(val)
-}
-
-// MessagingRabbitmqDestinationRoutingKey returns an attribute KeyValue
-// conforming to the "messaging.rabbitmq.destination.routing_key" semantic
-// conventions. It represents the rabbitMQ message routing key.
-func MessagingRabbitmqDestinationRoutingKey(val string) attribute.KeyValue {
- return MessagingRabbitmqDestinationRoutingKeyKey.String(val)
-}
-
-// MessagingRabbitmqMessageDeliveryTag returns an attribute KeyValue conforming
-// to the "messaging.rabbitmq.message.delivery_tag" semantic conventions. It
-// represents the rabbitMQ message delivery tag.
-func MessagingRabbitmqMessageDeliveryTag(val int) attribute.KeyValue {
- return MessagingRabbitmqMessageDeliveryTagKey.Int(val)
-}
-
-// MessagingRocketmqMessageDelayTimeLevel returns an attribute KeyValue
-// conforming to the "messaging.rocketmq.message.delay_time_level" semantic
-// conventions. It represents the delay time level for delay message, which
-// determines the message delay time.
-func MessagingRocketmqMessageDelayTimeLevel(val int) attribute.KeyValue {
- return MessagingRocketmqMessageDelayTimeLevelKey.Int(val)
-}
-
-// MessagingRocketmqMessageDeliveryTimestamp returns an attribute KeyValue
-// conforming to the "messaging.rocketmq.message.delivery_timestamp" semantic
-// conventions. It represents the timestamp in milliseconds that the delay
-// message is expected to be delivered to consumer.
-func MessagingRocketmqMessageDeliveryTimestamp(val int) attribute.KeyValue {
- return MessagingRocketmqMessageDeliveryTimestampKey.Int(val)
-}
-
-// MessagingRocketmqMessageGroup returns an attribute KeyValue conforming to the
-// "messaging.rocketmq.message.group" semantic conventions. It represents the it
-// is essential for FIFO message. Messages that belong to the same message group
-// are always processed one by one within the same consumer group.
-func MessagingRocketmqMessageGroup(val string) attribute.KeyValue {
- return MessagingRocketmqMessageGroupKey.String(val)
-}
-
-// MessagingRocketmqMessageKeys returns an attribute KeyValue conforming to the
-// "messaging.rocketmq.message.keys" semantic conventions. It represents the
-// key(s) of message, another way to mark message besides message id.
-func MessagingRocketmqMessageKeys(val ...string) attribute.KeyValue {
- return MessagingRocketmqMessageKeysKey.StringSlice(val)
-}
-
-// MessagingRocketmqMessageTag returns an attribute KeyValue conforming to the
-// "messaging.rocketmq.message.tag" semantic conventions. It represents the
-// secondary classifier of message besides topic.
-func MessagingRocketmqMessageTag(val string) attribute.KeyValue {
- return MessagingRocketmqMessageTagKey.String(val)
-}
-
-// MessagingRocketmqNamespace returns an attribute KeyValue conforming to the
-// "messaging.rocketmq.namespace" semantic conventions. It represents the
-// namespace of RocketMQ resources, resources in different namespaces are
-// individual.
-func MessagingRocketmqNamespace(val string) attribute.KeyValue {
- return MessagingRocketmqNamespaceKey.String(val)
-}
-
-// MessagingServicebusMessageDeliveryCount returns an attribute KeyValue
-// conforming to the "messaging.servicebus.message.delivery_count" semantic
-// conventions. It represents the number of deliveries that have been attempted
-// for this message.
-func MessagingServicebusMessageDeliveryCount(val int) attribute.KeyValue {
- return MessagingServicebusMessageDeliveryCountKey.Int(val)
-}
-
-// MessagingServicebusMessageEnqueuedTime returns an attribute KeyValue
-// conforming to the "messaging.servicebus.message.enqueued_time" semantic
-// conventions. It represents the UTC epoch seconds at which the message has been
-// accepted and stored in the entity.
-func MessagingServicebusMessageEnqueuedTime(val int) attribute.KeyValue {
- return MessagingServicebusMessageEnqueuedTimeKey.Int(val)
-}
-
-// Enum values for messaging.operation.type
-var (
- // A message is created. "Create" spans always refer to a single message and are
- // used to provide a unique creation context for messages in batch sending
- // scenarios.
- //
- // Stability: development
- MessagingOperationTypeCreate = MessagingOperationTypeKey.String("create")
- // One or more messages are provided for sending to an intermediary. If a single
- // message is sent, the context of the "Send" span can be used as the creation
- // context and no "Create" span needs to be created.
- //
- // Stability: development
- MessagingOperationTypeSend = MessagingOperationTypeKey.String("send")
- // One or more messages are requested by a consumer. This operation refers to
- // pull-based scenarios, where consumers explicitly call methods of messaging
- // SDKs to receive messages.
- //
- // Stability: development
- MessagingOperationTypeReceive = MessagingOperationTypeKey.String("receive")
- // One or more messages are processed by a consumer.
- //
- // Stability: development
- MessagingOperationTypeProcess = MessagingOperationTypeKey.String("process")
- // One or more messages are settled.
- //
- // Stability: development
- MessagingOperationTypeSettle = MessagingOperationTypeKey.String("settle")
- // Deprecated: Replaced by `process`.
- MessagingOperationTypeDeliver = MessagingOperationTypeKey.String("deliver")
- // Deprecated: Replaced by `send`.
- MessagingOperationTypePublish = MessagingOperationTypeKey.String("publish")
-)
-
-// Enum values for messaging.rocketmq.consumption_model
-var (
- // Clustering consumption model
- // Stability: development
- MessagingRocketmqConsumptionModelClustering = MessagingRocketmqConsumptionModelKey.String("clustering")
- // Broadcasting consumption model
- // Stability: development
- MessagingRocketmqConsumptionModelBroadcasting = MessagingRocketmqConsumptionModelKey.String("broadcasting")
-)
-
-// Enum values for messaging.rocketmq.message.type
-var (
- // Normal message
- // Stability: development
- MessagingRocketmqMessageTypeNormal = MessagingRocketmqMessageTypeKey.String("normal")
- // FIFO message
- // Stability: development
- MessagingRocketmqMessageTypeFifo = MessagingRocketmqMessageTypeKey.String("fifo")
- // Delay message
- // Stability: development
- MessagingRocketmqMessageTypeDelay = MessagingRocketmqMessageTypeKey.String("delay")
- // Transaction message
- // Stability: development
- MessagingRocketmqMessageTypeTransaction = MessagingRocketmqMessageTypeKey.String("transaction")
-)
-
-// Enum values for messaging.servicebus.disposition_status
-var (
- // Message is completed
- // Stability: development
- MessagingServicebusDispositionStatusComplete = MessagingServicebusDispositionStatusKey.String("complete")
- // Message is abandoned
- // Stability: development
- MessagingServicebusDispositionStatusAbandon = MessagingServicebusDispositionStatusKey.String("abandon")
- // Message is sent to dead letter queue
- // Stability: development
- MessagingServicebusDispositionStatusDeadLetter = MessagingServicebusDispositionStatusKey.String("dead_letter")
- // Message is deferred
- // Stability: development
- MessagingServicebusDispositionStatusDefer = MessagingServicebusDispositionStatusKey.String("defer")
-)
-
-// Enum values for messaging.system
-var (
- // Apache ActiveMQ
- // Stability: development
- MessagingSystemActivemq = MessagingSystemKey.String("activemq")
- // Amazon Simple Queue Service (SQS)
- // Stability: development
- MessagingSystemAWSSqs = MessagingSystemKey.String("aws_sqs")
- // Azure Event Grid
- // Stability: development
- MessagingSystemEventgrid = MessagingSystemKey.String("eventgrid")
- // Azure Event Hubs
- // Stability: development
- MessagingSystemEventhubs = MessagingSystemKey.String("eventhubs")
- // Azure Service Bus
- // Stability: development
- MessagingSystemServicebus = MessagingSystemKey.String("servicebus")
- // Google Cloud Pub/Sub
- // Stability: development
- MessagingSystemGCPPubsub = MessagingSystemKey.String("gcp_pubsub")
- // Java Message Service
- // Stability: development
- MessagingSystemJms = MessagingSystemKey.String("jms")
- // Apache Kafka
- // Stability: development
- MessagingSystemKafka = MessagingSystemKey.String("kafka")
- // RabbitMQ
- // Stability: development
- MessagingSystemRabbitmq = MessagingSystemKey.String("rabbitmq")
- // Apache RocketMQ
- // Stability: development
- MessagingSystemRocketmq = MessagingSystemKey.String("rocketmq")
- // Apache Pulsar
- // Stability: development
- MessagingSystemPulsar = MessagingSystemKey.String("pulsar")
-)
-
-// Namespace: network
-const (
- // NetworkCarrierIccKey is the attribute Key conforming to the
- // "network.carrier.icc" semantic conventions. It represents the ISO 3166-1
- // alpha-2 2-character country code associated with the mobile carrier network.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: DE
- NetworkCarrierIccKey = attribute.Key("network.carrier.icc")
-
- // NetworkCarrierMccKey is the attribute Key conforming to the
- // "network.carrier.mcc" semantic conventions. It represents the mobile carrier
- // country code.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 310
- NetworkCarrierMccKey = attribute.Key("network.carrier.mcc")
-
- // NetworkCarrierMncKey is the attribute Key conforming to the
- // "network.carrier.mnc" semantic conventions. It represents the mobile carrier
- // network code.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 001
- NetworkCarrierMncKey = attribute.Key("network.carrier.mnc")
-
- // NetworkCarrierNameKey is the attribute Key conforming to the
- // "network.carrier.name" semantic conventions. It represents the name of the
- // mobile carrier.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: sprint
- NetworkCarrierNameKey = attribute.Key("network.carrier.name")
-
- // NetworkConnectionStateKey is the attribute Key conforming to the
- // "network.connection.state" semantic conventions. It represents the state of
- // network connection.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "close_wait"
- // Note: Connection states are defined as part of the [rfc9293]
- //
- // [rfc9293]: https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2
- NetworkConnectionStateKey = attribute.Key("network.connection.state")
-
- // NetworkConnectionSubtypeKey is the attribute Key conforming to the
- // "network.connection.subtype" semantic conventions. It represents the this
- // describes more details regarding the connection.type. It may be the type of
- // cell technology connection, but it could be used for describing details about
- // a wifi connection.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: LTE
- NetworkConnectionSubtypeKey = attribute.Key("network.connection.subtype")
-
- // NetworkConnectionTypeKey is the attribute Key conforming to the
- // "network.connection.type" semantic conventions. It represents the internet
- // connection type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: wifi
- NetworkConnectionTypeKey = attribute.Key("network.connection.type")
-
- // NetworkInterfaceNameKey is the attribute Key conforming to the
- // "network.interface.name" semantic conventions. It represents the network
- // interface name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "lo", "eth0"
- NetworkInterfaceNameKey = attribute.Key("network.interface.name")
-
- // NetworkIoDirectionKey is the attribute Key conforming to the
- // "network.io.direction" semantic conventions. It represents the network IO
- // operation direction.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "transmit"
- NetworkIoDirectionKey = attribute.Key("network.io.direction")
-
- // NetworkLocalAddressKey is the attribute Key conforming to the
- // "network.local.address" semantic conventions. It represents the local address
- // of the network connection - IP address or Unix domain socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "10.1.2.80", "/tmp/my.sock"
- NetworkLocalAddressKey = attribute.Key("network.local.address")
-
- // NetworkLocalPortKey is the attribute Key conforming to the
- // "network.local.port" semantic conventions. It represents the local port
- // number of the network connection.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 65123
- NetworkLocalPortKey = attribute.Key("network.local.port")
-
- // NetworkPeerAddressKey is the attribute Key conforming to the
- // "network.peer.address" semantic conventions. It represents the peer address
- // of the network connection - IP address or Unix domain socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "10.1.2.80", "/tmp/my.sock"
- NetworkPeerAddressKey = attribute.Key("network.peer.address")
-
- // NetworkPeerPortKey is the attribute Key conforming to the "network.peer.port"
- // semantic conventions. It represents the peer port number of the network
- // connection.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 65123
- NetworkPeerPortKey = attribute.Key("network.peer.port")
-
- // NetworkProtocolNameKey is the attribute Key conforming to the
- // "network.protocol.name" semantic conventions. It represents the
- // [OSI application layer] or non-OSI equivalent.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "amqp", "http", "mqtt"
- // Note: The value SHOULD be normalized to lowercase.
- //
- // [OSI application layer]: https://wikipedia.org/wiki/Application_layer
- NetworkProtocolNameKey = attribute.Key("network.protocol.name")
-
- // NetworkProtocolVersionKey is the attribute Key conforming to the
- // "network.protocol.version" semantic conventions. It represents the actual
- // version of the protocol used for network communication.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "1.1", "2"
- // Note: If protocol version is subject to negotiation (for example using [ALPN]
- // ), this attribute SHOULD be set to the negotiated version. If the actual
- // protocol version is not known, this attribute SHOULD NOT be set.
- //
- // [ALPN]: https://www.rfc-editor.org/rfc/rfc7301.html
- NetworkProtocolVersionKey = attribute.Key("network.protocol.version")
-
- // NetworkTransportKey is the attribute Key conforming to the
- // "network.transport" semantic conventions. It represents the
- // [OSI transport layer] or [inter-process communication method].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "tcp", "udp"
- // Note: The value SHOULD be normalized to lowercase.
- //
- // Consider always setting the transport when setting a port number, since
- // a port number is ambiguous without knowing the transport. For example
- // different processes could be listening on TCP port 12345 and UDP port 12345.
- //
- // [OSI transport layer]: https://wikipedia.org/wiki/Transport_layer
- // [inter-process communication method]: https://wikipedia.org/wiki/Inter-process_communication
- NetworkTransportKey = attribute.Key("network.transport")
-
- // NetworkTypeKey is the attribute Key conforming to the "network.type" semantic
- // conventions. It represents the [OSI network layer] or non-OSI equivalent.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "ipv4", "ipv6"
- // Note: The value SHOULD be normalized to lowercase.
- //
- // [OSI network layer]: https://wikipedia.org/wiki/Network_layer
- NetworkTypeKey = attribute.Key("network.type")
-)
-
-// NetworkCarrierIcc returns an attribute KeyValue conforming to the
-// "network.carrier.icc" semantic conventions. It represents the ISO 3166-1
-// alpha-2 2-character country code associated with the mobile carrier network.
-func NetworkCarrierIcc(val string) attribute.KeyValue {
- return NetworkCarrierIccKey.String(val)
-}
-
-// NetworkCarrierMcc returns an attribute KeyValue conforming to the
-// "network.carrier.mcc" semantic conventions. It represents the mobile carrier
-// country code.
-func NetworkCarrierMcc(val string) attribute.KeyValue {
- return NetworkCarrierMccKey.String(val)
-}
-
-// NetworkCarrierMnc returns an attribute KeyValue conforming to the
-// "network.carrier.mnc" semantic conventions. It represents the mobile carrier
-// network code.
-func NetworkCarrierMnc(val string) attribute.KeyValue {
- return NetworkCarrierMncKey.String(val)
-}
-
-// NetworkCarrierName returns an attribute KeyValue conforming to the
-// "network.carrier.name" semantic conventions. It represents the name of the
-// mobile carrier.
-func NetworkCarrierName(val string) attribute.KeyValue {
- return NetworkCarrierNameKey.String(val)
-}
-
-// NetworkInterfaceName returns an attribute KeyValue conforming to the
-// "network.interface.name" semantic conventions. It represents the network
-// interface name.
-func NetworkInterfaceName(val string) attribute.KeyValue {
- return NetworkInterfaceNameKey.String(val)
-}
-
-// NetworkLocalAddress returns an attribute KeyValue conforming to the
-// "network.local.address" semantic conventions. It represents the local address
-// of the network connection - IP address or Unix domain socket name.
-func NetworkLocalAddress(val string) attribute.KeyValue {
- return NetworkLocalAddressKey.String(val)
-}
-
-// NetworkLocalPort returns an attribute KeyValue conforming to the
-// "network.local.port" semantic conventions. It represents the local port number
-// of the network connection.
-func NetworkLocalPort(val int) attribute.KeyValue {
- return NetworkLocalPortKey.Int(val)
-}
-
-// NetworkPeerAddress returns an attribute KeyValue conforming to the
-// "network.peer.address" semantic conventions. It represents the peer address of
-// the network connection - IP address or Unix domain socket name.
-func NetworkPeerAddress(val string) attribute.KeyValue {
- return NetworkPeerAddressKey.String(val)
-}
-
-// NetworkPeerPort returns an attribute KeyValue conforming to the
-// "network.peer.port" semantic conventions. It represents the peer port number
-// of the network connection.
-func NetworkPeerPort(val int) attribute.KeyValue {
- return NetworkPeerPortKey.Int(val)
-}
-
-// NetworkProtocolName returns an attribute KeyValue conforming to the
-// "network.protocol.name" semantic conventions. It represents the
-// [OSI application layer] or non-OSI equivalent.
-//
-// [OSI application layer]: https://wikipedia.org/wiki/Application_layer
-func NetworkProtocolName(val string) attribute.KeyValue {
- return NetworkProtocolNameKey.String(val)
-}
-
-// NetworkProtocolVersion returns an attribute KeyValue conforming to the
-// "network.protocol.version" semantic conventions. It represents the actual
-// version of the protocol used for network communication.
-func NetworkProtocolVersion(val string) attribute.KeyValue {
- return NetworkProtocolVersionKey.String(val)
-}
-
-// Enum values for network.connection.state
-var (
- // closed
- // Stability: development
- NetworkConnectionStateClosed = NetworkConnectionStateKey.String("closed")
- // close_wait
- // Stability: development
- NetworkConnectionStateCloseWait = NetworkConnectionStateKey.String("close_wait")
- // closing
- // Stability: development
- NetworkConnectionStateClosing = NetworkConnectionStateKey.String("closing")
- // established
- // Stability: development
- NetworkConnectionStateEstablished = NetworkConnectionStateKey.String("established")
- // fin_wait_1
- // Stability: development
- NetworkConnectionStateFinWait1 = NetworkConnectionStateKey.String("fin_wait_1")
- // fin_wait_2
- // Stability: development
- NetworkConnectionStateFinWait2 = NetworkConnectionStateKey.String("fin_wait_2")
- // last_ack
- // Stability: development
- NetworkConnectionStateLastAck = NetworkConnectionStateKey.String("last_ack")
- // listen
- // Stability: development
- NetworkConnectionStateListen = NetworkConnectionStateKey.String("listen")
- // syn_received
- // Stability: development
- NetworkConnectionStateSynReceived = NetworkConnectionStateKey.String("syn_received")
- // syn_sent
- // Stability: development
- NetworkConnectionStateSynSent = NetworkConnectionStateKey.String("syn_sent")
- // time_wait
- // Stability: development
- NetworkConnectionStateTimeWait = NetworkConnectionStateKey.String("time_wait")
-)
-
-// Enum values for network.connection.subtype
-var (
- // GPRS
- // Stability: development
- NetworkConnectionSubtypeGprs = NetworkConnectionSubtypeKey.String("gprs")
- // EDGE
- // Stability: development
- NetworkConnectionSubtypeEdge = NetworkConnectionSubtypeKey.String("edge")
- // UMTS
- // Stability: development
- NetworkConnectionSubtypeUmts = NetworkConnectionSubtypeKey.String("umts")
- // CDMA
- // Stability: development
- NetworkConnectionSubtypeCdma = NetworkConnectionSubtypeKey.String("cdma")
- // EVDO Rel. 0
- // Stability: development
- NetworkConnectionSubtypeEvdo0 = NetworkConnectionSubtypeKey.String("evdo_0")
- // EVDO Rev. A
- // Stability: development
- NetworkConnectionSubtypeEvdoA = NetworkConnectionSubtypeKey.String("evdo_a")
- // CDMA2000 1XRTT
- // Stability: development
- NetworkConnectionSubtypeCdma20001xrtt = NetworkConnectionSubtypeKey.String("cdma2000_1xrtt")
- // HSDPA
- // Stability: development
- NetworkConnectionSubtypeHsdpa = NetworkConnectionSubtypeKey.String("hsdpa")
- // HSUPA
- // Stability: development
- NetworkConnectionSubtypeHsupa = NetworkConnectionSubtypeKey.String("hsupa")
- // HSPA
- // Stability: development
- NetworkConnectionSubtypeHspa = NetworkConnectionSubtypeKey.String("hspa")
- // IDEN
- // Stability: development
- NetworkConnectionSubtypeIden = NetworkConnectionSubtypeKey.String("iden")
- // EVDO Rev. B
- // Stability: development
- NetworkConnectionSubtypeEvdoB = NetworkConnectionSubtypeKey.String("evdo_b")
- // LTE
- // Stability: development
- NetworkConnectionSubtypeLte = NetworkConnectionSubtypeKey.String("lte")
- // EHRPD
- // Stability: development
- NetworkConnectionSubtypeEhrpd = NetworkConnectionSubtypeKey.String("ehrpd")
- // HSPAP
- // Stability: development
- NetworkConnectionSubtypeHspap = NetworkConnectionSubtypeKey.String("hspap")
- // GSM
- // Stability: development
- NetworkConnectionSubtypeGsm = NetworkConnectionSubtypeKey.String("gsm")
- // TD-SCDMA
- // Stability: development
- NetworkConnectionSubtypeTdScdma = NetworkConnectionSubtypeKey.String("td_scdma")
- // IWLAN
- // Stability: development
- NetworkConnectionSubtypeIwlan = NetworkConnectionSubtypeKey.String("iwlan")
- // 5G NR (New Radio)
- // Stability: development
- NetworkConnectionSubtypeNr = NetworkConnectionSubtypeKey.String("nr")
- // 5G NRNSA (New Radio Non-Standalone)
- // Stability: development
- NetworkConnectionSubtypeNrnsa = NetworkConnectionSubtypeKey.String("nrnsa")
- // LTE CA
- // Stability: development
- NetworkConnectionSubtypeLteCa = NetworkConnectionSubtypeKey.String("lte_ca")
-)
-
-// Enum values for network.connection.type
-var (
- // wifi
- // Stability: development
- NetworkConnectionTypeWifi = NetworkConnectionTypeKey.String("wifi")
- // wired
- // Stability: development
- NetworkConnectionTypeWired = NetworkConnectionTypeKey.String("wired")
- // cell
- // Stability: development
- NetworkConnectionTypeCell = NetworkConnectionTypeKey.String("cell")
- // unavailable
- // Stability: development
- NetworkConnectionTypeUnavailable = NetworkConnectionTypeKey.String("unavailable")
- // unknown
- // Stability: development
- NetworkConnectionTypeUnknown = NetworkConnectionTypeKey.String("unknown")
-)
-
-// Enum values for network.io.direction
-var (
- // transmit
- // Stability: development
- NetworkIoDirectionTransmit = NetworkIoDirectionKey.String("transmit")
- // receive
- // Stability: development
- NetworkIoDirectionReceive = NetworkIoDirectionKey.String("receive")
-)
-
-// Enum values for network.transport
-var (
- // TCP
- // Stability: stable
- NetworkTransportTCP = NetworkTransportKey.String("tcp")
- // UDP
- // Stability: stable
- NetworkTransportUDP = NetworkTransportKey.String("udp")
- // Named or anonymous pipe.
- // Stability: stable
- NetworkTransportPipe = NetworkTransportKey.String("pipe")
- // Unix domain socket
- // Stability: stable
- NetworkTransportUnix = NetworkTransportKey.String("unix")
- // QUIC
- // Stability: development
- NetworkTransportQUIC = NetworkTransportKey.String("quic")
-)
-
-// Enum values for network.type
-var (
- // IPv4
- // Stability: stable
- NetworkTypeIpv4 = NetworkTypeKey.String("ipv4")
- // IPv6
- // Stability: stable
- NetworkTypeIpv6 = NetworkTypeKey.String("ipv6")
-)
-
-// Namespace: oci
-const (
- // OciManifestDigestKey is the attribute Key conforming to the
- // "oci.manifest.digest" semantic conventions. It represents the digest of the
- // OCI image manifest. For container images specifically is the digest by which
- // the container image is known.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4"
- // Note: Follows [OCI Image Manifest Specification], and specifically the
- // [Digest property].
- // An example can be found in [Example Image Manifest].
- //
- // [OCI Image Manifest Specification]: https://github.com/opencontainers/image-spec/blob/main/manifest.md
- // [Digest property]: https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests
- // [Example Image Manifest]: https://docs.docker.com/registry/spec/manifest-v2-2/#example-image-manifest
- OciManifestDigestKey = attribute.Key("oci.manifest.digest")
-)
-
-// OciManifestDigest returns an attribute KeyValue conforming to the
-// "oci.manifest.digest" semantic conventions. It represents the digest of the
-// OCI image manifest. For container images specifically is the digest by which
-// the container image is known.
-func OciManifestDigest(val string) attribute.KeyValue {
- return OciManifestDigestKey.String(val)
-}
-
-// Namespace: opentracing
-const (
- // OpentracingRefTypeKey is the attribute Key conforming to the
- // "opentracing.ref_type" semantic conventions. It represents the parent-child
- // Reference type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: The causal relationship between a child Span and a parent Span.
- OpentracingRefTypeKey = attribute.Key("opentracing.ref_type")
-)
-
-// Enum values for opentracing.ref_type
-var (
- // The parent Span depends on the child Span in some capacity
- // Stability: development
- OpentracingRefTypeChildOf = OpentracingRefTypeKey.String("child_of")
- // The parent Span doesn't depend in any way on the result of the child Span
- // Stability: development
- OpentracingRefTypeFollowsFrom = OpentracingRefTypeKey.String("follows_from")
-)
-
-// Namespace: os
-const (
- // OSBuildIDKey is the attribute Key conforming to the "os.build_id" semantic
- // conventions. It represents the unique identifier for a particular build or
- // compilation of the operating system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "TQ3C.230805.001.B2", "20E247", "22621"
- OSBuildIDKey = attribute.Key("os.build_id")
-
- // OSDescriptionKey is the attribute Key conforming to the "os.description"
- // semantic conventions. It represents the human readable (not intended to be
- // parsed) OS version information, like e.g. reported by `ver` or
- // `lsb_release -a` commands.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Microsoft Windows [Version 10.0.18363.778]", "Ubuntu 18.04.1 LTS"
- OSDescriptionKey = attribute.Key("os.description")
-
- // OSNameKey is the attribute Key conforming to the "os.name" semantic
- // conventions. It represents the human readable operating system name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "iOS", "Android", "Ubuntu"
- OSNameKey = attribute.Key("os.name")
-
- // OSTypeKey is the attribute Key conforming to the "os.type" semantic
- // conventions. It represents the operating system type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- OSTypeKey = attribute.Key("os.type")
-
- // OSVersionKey is the attribute Key conforming to the "os.version" semantic
- // conventions. It represents the version string of the operating system as
- // defined in [Version Attributes].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "14.2.1", "18.04.1"
- //
- // [Version Attributes]: /docs/resource/README.md#version-attributes
- OSVersionKey = attribute.Key("os.version")
-)
-
-// OSBuildID returns an attribute KeyValue conforming to the "os.build_id"
-// semantic conventions. It represents the unique identifier for a particular
-// build or compilation of the operating system.
-func OSBuildID(val string) attribute.KeyValue {
- return OSBuildIDKey.String(val)
-}
-
-// OSDescription returns an attribute KeyValue conforming to the "os.description"
-// semantic conventions. It represents the human readable (not intended to be
-// parsed) OS version information, like e.g. reported by `ver` or
-// `lsb_release -a` commands.
-func OSDescription(val string) attribute.KeyValue {
- return OSDescriptionKey.String(val)
-}
-
-// OSName returns an attribute KeyValue conforming to the "os.name" semantic
-// conventions. It represents the human readable operating system name.
-func OSName(val string) attribute.KeyValue {
- return OSNameKey.String(val)
-}
-
-// OSVersion returns an attribute KeyValue conforming to the "os.version"
-// semantic conventions. It represents the version string of the operating system
-// as defined in [Version Attributes].
-//
-// [Version Attributes]: /docs/resource/README.md#version-attributes
-func OSVersion(val string) attribute.KeyValue {
- return OSVersionKey.String(val)
-}
-
-// Enum values for os.type
-var (
- // Microsoft Windows
- // Stability: development
- OSTypeWindows = OSTypeKey.String("windows")
- // Linux
- // Stability: development
- OSTypeLinux = OSTypeKey.String("linux")
- // Apple Darwin
- // Stability: development
- OSTypeDarwin = OSTypeKey.String("darwin")
- // FreeBSD
- // Stability: development
- OSTypeFreeBSD = OSTypeKey.String("freebsd")
- // NetBSD
- // Stability: development
- OSTypeNetBSD = OSTypeKey.String("netbsd")
- // OpenBSD
- // Stability: development
- OSTypeOpenBSD = OSTypeKey.String("openbsd")
- // DragonFly BSD
- // Stability: development
- OSTypeDragonflyBSD = OSTypeKey.String("dragonflybsd")
- // HP-UX (Hewlett Packard Unix)
- // Stability: development
- OSTypeHPUX = OSTypeKey.String("hpux")
- // AIX (Advanced Interactive eXecutive)
- // Stability: development
- OSTypeAIX = OSTypeKey.String("aix")
- // SunOS, Oracle Solaris
- // Stability: development
- OSTypeSolaris = OSTypeKey.String("solaris")
- // IBM z/OS
- // Stability: development
- OSTypeZOS = OSTypeKey.String("z_os")
-)
-
-// Namespace: otel
-const (
- // OTelScopeNameKey is the attribute Key conforming to the "otel.scope.name"
- // semantic conventions. It represents the name of the instrumentation scope - (
- // `InstrumentationScope.Name` in OTLP).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "io.opentelemetry.contrib.mongodb"
- OTelScopeNameKey = attribute.Key("otel.scope.name")
-
- // OTelScopeVersionKey is the attribute Key conforming to the
- // "otel.scope.version" semantic conventions. It represents the version of the
- // instrumentation scope - (`InstrumentationScope.Version` in OTLP).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "1.0.0"
- OTelScopeVersionKey = attribute.Key("otel.scope.version")
-
- // OTelStatusCodeKey is the attribute Key conforming to the "otel.status_code"
- // semantic conventions. It represents the name of the code, either "OK" or
- // "ERROR". MUST NOT be set if the status code is UNSET.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples:
- OTelStatusCodeKey = attribute.Key("otel.status_code")
-
- // OTelStatusDescriptionKey is the attribute Key conforming to the
- // "otel.status_description" semantic conventions. It represents the description
- // of the Status if it has a value, otherwise not set.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "resource not found"
- OTelStatusDescriptionKey = attribute.Key("otel.status_description")
-)
-
-// OTelScopeName returns an attribute KeyValue conforming to the
-// "otel.scope.name" semantic conventions. It represents the name of the
-// instrumentation scope - (`InstrumentationScope.Name` in OTLP).
-func OTelScopeName(val string) attribute.KeyValue {
- return OTelScopeNameKey.String(val)
-}
-
-// OTelScopeVersion returns an attribute KeyValue conforming to the
-// "otel.scope.version" semantic conventions. It represents the version of the
-// instrumentation scope - (`InstrumentationScope.Version` in OTLP).
-func OTelScopeVersion(val string) attribute.KeyValue {
- return OTelScopeVersionKey.String(val)
-}
-
-// OTelStatusDescription returns an attribute KeyValue conforming to the
-// "otel.status_description" semantic conventions. It represents the description
-// of the Status if it has a value, otherwise not set.
-func OTelStatusDescription(val string) attribute.KeyValue {
- return OTelStatusDescriptionKey.String(val)
-}
-
-// Enum values for otel.status_code
-var (
- // The operation has been validated by an Application developer or Operator to
- // have completed successfully.
- // Stability: stable
- OTelStatusCodeOk = OTelStatusCodeKey.String("OK")
- // The operation contains an error.
- // Stability: stable
- OTelStatusCodeError = OTelStatusCodeKey.String("ERROR")
-)
-
-// Namespace: peer
-const (
- // PeerServiceKey is the attribute Key conforming to the "peer.service" semantic
- // conventions. It represents the [`service.name`] of the remote service. SHOULD
- // be equal to the actual `service.name` resource attribute of the remote
- // service if any.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: AuthTokenCache
- //
- // [`service.name`]: /docs/resource/README.md#service
- PeerServiceKey = attribute.Key("peer.service")
-)
-
-// PeerService returns an attribute KeyValue conforming to the "peer.service"
-// semantic conventions. It represents the [`service.name`] of the remote
-// service. SHOULD be equal to the actual `service.name` resource attribute of
-// the remote service if any.
-//
-// [`service.name`]: /docs/resource/README.md#service
-func PeerService(val string) attribute.KeyValue {
- return PeerServiceKey.String(val)
-}
-
-// Namespace: process
-const (
- // ProcessArgsCountKey is the attribute Key conforming to the
- // "process.args_count" semantic conventions. It represents the length of the
- // process.command_args array.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 4
- // Note: This field can be useful for querying or performing bucket analysis on
- // how many arguments were provided to start a process. More arguments may be an
- // indication of suspicious activity.
- ProcessArgsCountKey = attribute.Key("process.args_count")
-
- // ProcessCommandKey is the attribute Key conforming to the "process.command"
- // semantic conventions. It represents the command used to launch the process
- // (i.e. the command name). On Linux based systems, can be set to the zeroth
- // string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter
- // extracted from `GetCommandLineW`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cmd/otelcol"
- ProcessCommandKey = attribute.Key("process.command")
-
- // ProcessCommandArgsKey is the attribute Key conforming to the
- // "process.command_args" semantic conventions. It represents the all the
- // command arguments (including the command/executable itself) as received by
- // the process. On Linux-based systems (and some other Unixoid systems
- // supporting procfs), can be set according to the list of null-delimited
- // strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this
- // would be the full argv vector passed to `main`.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cmd/otecol", "--config=config.yaml"
- ProcessCommandArgsKey = attribute.Key("process.command_args")
-
- // ProcessCommandLineKey is the attribute Key conforming to the
- // "process.command_line" semantic conventions. It represents the full command
- // used to launch the process as a single string representing the full command.
- // On Windows, can be set to the result of `GetCommandLineW`. Do not set this if
- // you have to assemble it just for monitoring; use `process.command_args`
- // instead.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "C:\cmd\otecol --config="my directory\config.yaml""
- ProcessCommandLineKey = attribute.Key("process.command_line")
-
- // ProcessContextSwitchTypeKey is the attribute Key conforming to the
- // "process.context_switch_type" semantic conventions. It represents the
- // specifies whether the context switches for this data point were voluntary or
- // involuntary.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- ProcessContextSwitchTypeKey = attribute.Key("process.context_switch_type")
-
- // ProcessCreationTimeKey is the attribute Key conforming to the
- // "process.creation.time" semantic conventions. It represents the date and time
- // the process was created, in ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2023-11-21T09:25:34.853Z"
- ProcessCreationTimeKey = attribute.Key("process.creation.time")
-
- // ProcessExecutableBuildIDGnuKey is the attribute Key conforming to the
- // "process.executable.build_id.gnu" semantic conventions. It represents the GNU
- // build ID as found in the `.note.gnu.build-id` ELF section (hex string).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "c89b11207f6479603b0d49bf291c092c2b719293"
- ProcessExecutableBuildIDGnuKey = attribute.Key("process.executable.build_id.gnu")
-
- // ProcessExecutableBuildIDGoKey is the attribute Key conforming to the
- // "process.executable.build_id.go" semantic conventions. It represents the Go
- // build ID as retrieved by `go tool buildid `.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY"
- ProcessExecutableBuildIDGoKey = attribute.Key("process.executable.build_id.go")
-
- // ProcessExecutableBuildIDHtlhashKey is the attribute Key conforming to the
- // "process.executable.build_id.htlhash" semantic conventions. It represents the
- // profiling specific build ID for executables. See the OTel specification for
- // Profiles for more information.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "600DCAFE4A110000F2BF38C493F5FB92"
- ProcessExecutableBuildIDHtlhashKey = attribute.Key("process.executable.build_id.htlhash")
-
- // ProcessExecutableNameKey is the attribute Key conforming to the
- // "process.executable.name" semantic conventions. It represents the name of the
- // process executable. On Linux based systems, can be set to the `Name` in
- // `proc/[pid]/status`. On Windows, can be set to the base name of
- // `GetProcessImageFileNameW`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "otelcol"
- ProcessExecutableNameKey = attribute.Key("process.executable.name")
-
- // ProcessExecutablePathKey is the attribute Key conforming to the
- // "process.executable.path" semantic conventions. It represents the full path
- // to the process executable. On Linux based systems, can be set to the target
- // of `proc/[pid]/exe`. On Windows, can be set to the result of
- // `GetProcessImageFileNameW`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/usr/bin/cmd/otelcol"
- ProcessExecutablePathKey = attribute.Key("process.executable.path")
-
- // ProcessExitCodeKey is the attribute Key conforming to the "process.exit.code"
- // semantic conventions. It represents the exit code of the process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 127
- ProcessExitCodeKey = attribute.Key("process.exit.code")
-
- // ProcessExitTimeKey is the attribute Key conforming to the "process.exit.time"
- // semantic conventions. It represents the date and time the process exited, in
- // ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2023-11-21T09:26:12.315Z"
- ProcessExitTimeKey = attribute.Key("process.exit.time")
-
- // ProcessGroupLeaderPIDKey is the attribute Key conforming to the
- // "process.group_leader.pid" semantic conventions. It represents the PID of the
- // process's group leader. This is also the process group ID (PGID) of the
- // process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 23
- ProcessGroupLeaderPIDKey = attribute.Key("process.group_leader.pid")
-
- // ProcessInteractiveKey is the attribute Key conforming to the
- // "process.interactive" semantic conventions. It represents the whether the
- // process is connected to an interactive shell.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- ProcessInteractiveKey = attribute.Key("process.interactive")
-
- // ProcessLinuxCgroupKey is the attribute Key conforming to the
- // "process.linux.cgroup" semantic conventions. It represents the control group
- // associated with the process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1:name=systemd:/user.slice/user-1000.slice/session-3.scope",
- // "0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope"
- // Note: Control groups (cgroups) are a kernel feature used to organize and
- // manage process resources. This attribute provides the path(s) to the
- // cgroup(s) associated with the process, which should match the contents of the
- // [/proc/[PID]/cgroup] file.
- //
- // [/proc/[PID]/cgroup]: https://man7.org/linux/man-pages/man7/cgroups.7.html
- ProcessLinuxCgroupKey = attribute.Key("process.linux.cgroup")
-
- // ProcessOwnerKey is the attribute Key conforming to the "process.owner"
- // semantic conventions. It represents the username of the user that owns the
- // process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "root"
- ProcessOwnerKey = attribute.Key("process.owner")
-
- // ProcessPagingFaultTypeKey is the attribute Key conforming to the
- // "process.paging.fault_type" semantic conventions. It represents the type of
- // page fault for this data point. Type `major` is for major/hard page faults,
- // and `minor` is for minor/soft page faults.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- ProcessPagingFaultTypeKey = attribute.Key("process.paging.fault_type")
-
- // ProcessParentPIDKey is the attribute Key conforming to the
- // "process.parent_pid" semantic conventions. It represents the parent Process
- // identifier (PPID).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 111
- ProcessParentPIDKey = attribute.Key("process.parent_pid")
-
- // ProcessPIDKey is the attribute Key conforming to the "process.pid" semantic
- // conventions. It represents the process identifier (PID).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1234
- ProcessPIDKey = attribute.Key("process.pid")
-
- // ProcessRealUserIDKey is the attribute Key conforming to the
- // "process.real_user.id" semantic conventions. It represents the real user ID
- // (RUID) of the process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1000
- ProcessRealUserIDKey = attribute.Key("process.real_user.id")
-
- // ProcessRealUserNameKey is the attribute Key conforming to the
- // "process.real_user.name" semantic conventions. It represents the username of
- // the real user of the process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "operator"
- ProcessRealUserNameKey = attribute.Key("process.real_user.name")
-
- // ProcessRuntimeDescriptionKey is the attribute Key conforming to the
- // "process.runtime.description" semantic conventions. It represents an
- // additional description about the runtime of the process, for example a
- // specific vendor customization of the runtime environment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0
- ProcessRuntimeDescriptionKey = attribute.Key("process.runtime.description")
-
- // ProcessRuntimeNameKey is the attribute Key conforming to the
- // "process.runtime.name" semantic conventions. It represents the name of the
- // runtime of this process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "OpenJDK Runtime Environment"
- ProcessRuntimeNameKey = attribute.Key("process.runtime.name")
-
- // ProcessRuntimeVersionKey is the attribute Key conforming to the
- // "process.runtime.version" semantic conventions. It represents the version of
- // the runtime of this process, as returned by the runtime without modification.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 14.0.2
- ProcessRuntimeVersionKey = attribute.Key("process.runtime.version")
-
- // ProcessSavedUserIDKey is the attribute Key conforming to the
- // "process.saved_user.id" semantic conventions. It represents the saved user ID
- // (SUID) of the process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1002
- ProcessSavedUserIDKey = attribute.Key("process.saved_user.id")
-
- // ProcessSavedUserNameKey is the attribute Key conforming to the
- // "process.saved_user.name" semantic conventions. It represents the username of
- // the saved user.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "operator"
- ProcessSavedUserNameKey = attribute.Key("process.saved_user.name")
-
- // ProcessSessionLeaderPIDKey is the attribute Key conforming to the
- // "process.session_leader.pid" semantic conventions. It represents the PID of
- // the process's session leader. This is also the session ID (SID) of the
- // process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 14
- ProcessSessionLeaderPIDKey = attribute.Key("process.session_leader.pid")
-
- // ProcessTitleKey is the attribute Key conforming to the "process.title"
- // semantic conventions. It represents the process title (proctitle).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cat /etc/hostname", "xfce4-session", "bash"
- // Note: In many Unix-like systems, process title (proctitle), is the string
- // that represents the name or command line of a running process, displayed by
- // system monitoring tools like ps, top, and htop.
- ProcessTitleKey = attribute.Key("process.title")
-
- // ProcessUserIDKey is the attribute Key conforming to the "process.user.id"
- // semantic conventions. It represents the effective user ID (EUID) of the
- // process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1001
- ProcessUserIDKey = attribute.Key("process.user.id")
-
- // ProcessUserNameKey is the attribute Key conforming to the "process.user.name"
- // semantic conventions. It represents the username of the effective user of the
- // process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "root"
- ProcessUserNameKey = attribute.Key("process.user.name")
-
- // ProcessVpidKey is the attribute Key conforming to the "process.vpid" semantic
- // conventions. It represents the virtual process identifier.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 12
- // Note: The process ID within a PID namespace. This is not necessarily unique
- // across all processes on the host but it is unique within the process
- // namespace that the process exists within.
- ProcessVpidKey = attribute.Key("process.vpid")
-
- // ProcessWorkingDirectoryKey is the attribute Key conforming to the
- // "process.working_directory" semantic conventions. It represents the working
- // directory of the process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/root"
- ProcessWorkingDirectoryKey = attribute.Key("process.working_directory")
-)
-
-// ProcessArgsCount returns an attribute KeyValue conforming to the
-// "process.args_count" semantic conventions. It represents the length of the
-// process.command_args array.
-func ProcessArgsCount(val int) attribute.KeyValue {
- return ProcessArgsCountKey.Int(val)
-}
-
-// ProcessCommand returns an attribute KeyValue conforming to the
-// "process.command" semantic conventions. It represents the command used to
-// launch the process (i.e. the command name). On Linux based systems, can be set
-// to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the
-// first parameter extracted from `GetCommandLineW`.
-func ProcessCommand(val string) attribute.KeyValue {
- return ProcessCommandKey.String(val)
-}
-
-// ProcessCommandArgs returns an attribute KeyValue conforming to the
-// "process.command_args" semantic conventions. It represents the all the command
-// arguments (including the command/executable itself) as received by the
-// process. On Linux-based systems (and some other Unixoid systems supporting
-// procfs), can be set according to the list of null-delimited strings extracted
-// from `proc/[pid]/cmdline`. For libc-based executables, this would be the full
-// argv vector passed to `main`.
-func ProcessCommandArgs(val ...string) attribute.KeyValue {
- return ProcessCommandArgsKey.StringSlice(val)
-}
-
-// ProcessCommandLine returns an attribute KeyValue conforming to the
-// "process.command_line" semantic conventions. It represents the full command
-// used to launch the process as a single string representing the full command.
-// On Windows, can be set to the result of `GetCommandLineW`. Do not set this if
-// you have to assemble it just for monitoring; use `process.command_args`
-// instead.
-func ProcessCommandLine(val string) attribute.KeyValue {
- return ProcessCommandLineKey.String(val)
-}
-
-// ProcessCreationTime returns an attribute KeyValue conforming to the
-// "process.creation.time" semantic conventions. It represents the date and time
-// the process was created, in ISO 8601 format.
-func ProcessCreationTime(val string) attribute.KeyValue {
- return ProcessCreationTimeKey.String(val)
-}
-
-// ProcessExecutableBuildIDGnu returns an attribute KeyValue conforming to the
-// "process.executable.build_id.gnu" semantic conventions. It represents the GNU
-// build ID as found in the `.note.gnu.build-id` ELF section (hex string).
-func ProcessExecutableBuildIDGnu(val string) attribute.KeyValue {
- return ProcessExecutableBuildIDGnuKey.String(val)
-}
-
-// ProcessExecutableBuildIDGo returns an attribute KeyValue conforming to the
-// "process.executable.build_id.go" semantic conventions. It represents the Go
-// build ID as retrieved by `go tool buildid `.
-func ProcessExecutableBuildIDGo(val string) attribute.KeyValue {
- return ProcessExecutableBuildIDGoKey.String(val)
-}
-
-// ProcessExecutableBuildIDHtlhash returns an attribute KeyValue conforming to
-// the "process.executable.build_id.htlhash" semantic conventions. It represents
-// the profiling specific build ID for executables. See the OTel specification
-// for Profiles for more information.
-func ProcessExecutableBuildIDHtlhash(val string) attribute.KeyValue {
- return ProcessExecutableBuildIDHtlhashKey.String(val)
-}
-
-// ProcessExecutableName returns an attribute KeyValue conforming to the
-// "process.executable.name" semantic conventions. It represents the name of the
-// process executable. On Linux based systems, can be set to the `Name` in
-// `proc/[pid]/status`. On Windows, can be set to the base name of
-// `GetProcessImageFileNameW`.
-func ProcessExecutableName(val string) attribute.KeyValue {
- return ProcessExecutableNameKey.String(val)
-}
-
-// ProcessExecutablePath returns an attribute KeyValue conforming to the
-// "process.executable.path" semantic conventions. It represents the full path to
-// the process executable. On Linux based systems, can be set to the target of
-// `proc/[pid]/exe`. On Windows, can be set to the result of
-// `GetProcessImageFileNameW`.
-func ProcessExecutablePath(val string) attribute.KeyValue {
- return ProcessExecutablePathKey.String(val)
-}
-
-// ProcessExitCode returns an attribute KeyValue conforming to the
-// "process.exit.code" semantic conventions. It represents the exit code of the
-// process.
-func ProcessExitCode(val int) attribute.KeyValue {
- return ProcessExitCodeKey.Int(val)
-}
-
-// ProcessExitTime returns an attribute KeyValue conforming to the
-// "process.exit.time" semantic conventions. It represents the date and time the
-// process exited, in ISO 8601 format.
-func ProcessExitTime(val string) attribute.KeyValue {
- return ProcessExitTimeKey.String(val)
-}
-
-// ProcessGroupLeaderPID returns an attribute KeyValue conforming to the
-// "process.group_leader.pid" semantic conventions. It represents the PID of the
-// process's group leader. This is also the process group ID (PGID) of the
-// process.
-func ProcessGroupLeaderPID(val int) attribute.KeyValue {
- return ProcessGroupLeaderPIDKey.Int(val)
-}
-
-// ProcessInteractive returns an attribute KeyValue conforming to the
-// "process.interactive" semantic conventions. It represents the whether the
-// process is connected to an interactive shell.
-func ProcessInteractive(val bool) attribute.KeyValue {
- return ProcessInteractiveKey.Bool(val)
-}
-
-// ProcessLinuxCgroup returns an attribute KeyValue conforming to the
-// "process.linux.cgroup" semantic conventions. It represents the control group
-// associated with the process.
-func ProcessLinuxCgroup(val string) attribute.KeyValue {
- return ProcessLinuxCgroupKey.String(val)
-}
-
-// ProcessOwner returns an attribute KeyValue conforming to the "process.owner"
-// semantic conventions. It represents the username of the user that owns the
-// process.
-func ProcessOwner(val string) attribute.KeyValue {
- return ProcessOwnerKey.String(val)
-}
-
-// ProcessParentPID returns an attribute KeyValue conforming to the
-// "process.parent_pid" semantic conventions. It represents the parent Process
-// identifier (PPID).
-func ProcessParentPID(val int) attribute.KeyValue {
- return ProcessParentPIDKey.Int(val)
-}
-
-// ProcessPID returns an attribute KeyValue conforming to the "process.pid"
-// semantic conventions. It represents the process identifier (PID).
-func ProcessPID(val int) attribute.KeyValue {
- return ProcessPIDKey.Int(val)
-}
-
-// ProcessRealUserID returns an attribute KeyValue conforming to the
-// "process.real_user.id" semantic conventions. It represents the real user ID
-// (RUID) of the process.
-func ProcessRealUserID(val int) attribute.KeyValue {
- return ProcessRealUserIDKey.Int(val)
-}
-
-// ProcessRealUserName returns an attribute KeyValue conforming to the
-// "process.real_user.name" semantic conventions. It represents the username of
-// the real user of the process.
-func ProcessRealUserName(val string) attribute.KeyValue {
- return ProcessRealUserNameKey.String(val)
-}
-
-// ProcessRuntimeDescription returns an attribute KeyValue conforming to the
-// "process.runtime.description" semantic conventions. It represents an
-// additional description about the runtime of the process, for example a
-// specific vendor customization of the runtime environment.
-func ProcessRuntimeDescription(val string) attribute.KeyValue {
- return ProcessRuntimeDescriptionKey.String(val)
-}
-
-// ProcessRuntimeName returns an attribute KeyValue conforming to the
-// "process.runtime.name" semantic conventions. It represents the name of the
-// runtime of this process.
-func ProcessRuntimeName(val string) attribute.KeyValue {
- return ProcessRuntimeNameKey.String(val)
-}
-
-// ProcessRuntimeVersion returns an attribute KeyValue conforming to the
-// "process.runtime.version" semantic conventions. It represents the version of
-// the runtime of this process, as returned by the runtime without modification.
-func ProcessRuntimeVersion(val string) attribute.KeyValue {
- return ProcessRuntimeVersionKey.String(val)
-}
-
-// ProcessSavedUserID returns an attribute KeyValue conforming to the
-// "process.saved_user.id" semantic conventions. It represents the saved user ID
-// (SUID) of the process.
-func ProcessSavedUserID(val int) attribute.KeyValue {
- return ProcessSavedUserIDKey.Int(val)
-}
-
-// ProcessSavedUserName returns an attribute KeyValue conforming to the
-// "process.saved_user.name" semantic conventions. It represents the username of
-// the saved user.
-func ProcessSavedUserName(val string) attribute.KeyValue {
- return ProcessSavedUserNameKey.String(val)
-}
-
-// ProcessSessionLeaderPID returns an attribute KeyValue conforming to the
-// "process.session_leader.pid" semantic conventions. It represents the PID of
-// the process's session leader. This is also the session ID (SID) of the
-// process.
-func ProcessSessionLeaderPID(val int) attribute.KeyValue {
- return ProcessSessionLeaderPIDKey.Int(val)
-}
-
-// ProcessTitle returns an attribute KeyValue conforming to the "process.title"
-// semantic conventions. It represents the process title (proctitle).
-func ProcessTitle(val string) attribute.KeyValue {
- return ProcessTitleKey.String(val)
-}
-
-// ProcessUserID returns an attribute KeyValue conforming to the
-// "process.user.id" semantic conventions. It represents the effective user ID
-// (EUID) of the process.
-func ProcessUserID(val int) attribute.KeyValue {
- return ProcessUserIDKey.Int(val)
-}
-
-// ProcessUserName returns an attribute KeyValue conforming to the
-// "process.user.name" semantic conventions. It represents the username of the
-// effective user of the process.
-func ProcessUserName(val string) attribute.KeyValue {
- return ProcessUserNameKey.String(val)
-}
-
-// ProcessVpid returns an attribute KeyValue conforming to the "process.vpid"
-// semantic conventions. It represents the virtual process identifier.
-func ProcessVpid(val int) attribute.KeyValue {
- return ProcessVpidKey.Int(val)
-}
-
-// ProcessWorkingDirectory returns an attribute KeyValue conforming to the
-// "process.working_directory" semantic conventions. It represents the working
-// directory of the process.
-func ProcessWorkingDirectory(val string) attribute.KeyValue {
- return ProcessWorkingDirectoryKey.String(val)
-}
-
-// Enum values for process.context_switch_type
-var (
- // voluntary
- // Stability: development
- ProcessContextSwitchTypeVoluntary = ProcessContextSwitchTypeKey.String("voluntary")
- // involuntary
- // Stability: development
- ProcessContextSwitchTypeInvoluntary = ProcessContextSwitchTypeKey.String("involuntary")
-)
-
-// Enum values for process.paging.fault_type
-var (
- // major
- // Stability: development
- ProcessPagingFaultTypeMajor = ProcessPagingFaultTypeKey.String("major")
- // minor
- // Stability: development
- ProcessPagingFaultTypeMinor = ProcessPagingFaultTypeKey.String("minor")
-)
-
-// Namespace: profile
-const (
- // ProfileFrameTypeKey is the attribute Key conforming to the
- // "profile.frame.type" semantic conventions. It represents the describes the
- // interpreter or compiler of a single frame.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cpython"
- ProfileFrameTypeKey = attribute.Key("profile.frame.type")
-)
-
-// Enum values for profile.frame.type
-var (
- // [.NET]
- //
- // Stability: development
- //
- // [.NET]: https://wikipedia.org/wiki/.NET
- ProfileFrameTypeDotnet = ProfileFrameTypeKey.String("dotnet")
- // [JVM]
- //
- // Stability: development
- //
- // [JVM]: https://wikipedia.org/wiki/Java_virtual_machine
- ProfileFrameTypeJVM = ProfileFrameTypeKey.String("jvm")
- // [Kernel]
- //
- // Stability: development
- //
- // [Kernel]: https://wikipedia.org/wiki/Kernel_(operating_system)
- ProfileFrameTypeKernel = ProfileFrameTypeKey.String("kernel")
- // [C], [C++], [Go], [Rust]
- //
- // Stability: development
- //
- // [C]: https://wikipedia.org/wiki/C_(programming_language)
- // [C++]: https://wikipedia.org/wiki/C%2B%2B
- // [Go]: https://wikipedia.org/wiki/Go_(programming_language)
- // [Rust]: https://wikipedia.org/wiki/Rust_(programming_language)
- ProfileFrameTypeNative = ProfileFrameTypeKey.String("native")
- // [Perl]
- //
- // Stability: development
- //
- // [Perl]: https://wikipedia.org/wiki/Perl
- ProfileFrameTypePerl = ProfileFrameTypeKey.String("perl")
- // [PHP]
- //
- // Stability: development
- //
- // [PHP]: https://wikipedia.org/wiki/PHP
- ProfileFrameTypePHP = ProfileFrameTypeKey.String("php")
- // [Python]
- //
- // Stability: development
- //
- // [Python]: https://wikipedia.org/wiki/Python_(programming_language)
- ProfileFrameTypeCpython = ProfileFrameTypeKey.String("cpython")
- // [Ruby]
- //
- // Stability: development
- //
- // [Ruby]: https://wikipedia.org/wiki/Ruby_(programming_language)
- ProfileFrameTypeRuby = ProfileFrameTypeKey.String("ruby")
- // [V8JS]
- //
- // Stability: development
- //
- // [V8JS]: https://wikipedia.org/wiki/V8_(JavaScript_engine)
- ProfileFrameTypeV8JS = ProfileFrameTypeKey.String("v8js")
- // [Erlang]
- //
- // Stability: development
- //
- // [Erlang]: https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)
- ProfileFrameTypeBeam = ProfileFrameTypeKey.String("beam")
-)
-
-// Namespace: rpc
-const (
- // RPCConnectRPCErrorCodeKey is the attribute Key conforming to the
- // "rpc.connect_rpc.error_code" semantic conventions. It represents the
- // [error codes] of the Connect request. Error codes are always string values.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [error codes]: https://connect.build/docs/protocol/#error-codes
- RPCConnectRPCErrorCodeKey = attribute.Key("rpc.connect_rpc.error_code")
-
- // RPCGRPCStatusCodeKey is the attribute Key conforming to the
- // "rpc.grpc.status_code" semantic conventions. It represents the
- // [numeric status code] of the gRPC request.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [numeric status code]: https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md
- RPCGRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code")
-
- // RPCJsonrpcErrorCodeKey is the attribute Key conforming to the
- // "rpc.jsonrpc.error_code" semantic conventions. It represents the `error.code`
- // property of response if it is an error response.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: -32700, 100
- RPCJsonrpcErrorCodeKey = attribute.Key("rpc.jsonrpc.error_code")
-
- // RPCJsonrpcErrorMessageKey is the attribute Key conforming to the
- // "rpc.jsonrpc.error_message" semantic conventions. It represents the
- // `error.message` property of response if it is an error response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Parse error", "User already exists"
- RPCJsonrpcErrorMessageKey = attribute.Key("rpc.jsonrpc.error_message")
-
- // RPCJsonrpcRequestIDKey is the attribute Key conforming to the
- // "rpc.jsonrpc.request_id" semantic conventions. It represents the `id`
- // property of request or response. Since protocol allows id to be int, string,
- // `null` or missing (for notifications), value is expected to be cast to string
- // for simplicity. Use empty string in case of `null` value. Omit entirely if
- // this is a notification.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "10", "request-7", ""
- RPCJsonrpcRequestIDKey = attribute.Key("rpc.jsonrpc.request_id")
-
- // RPCJsonrpcVersionKey is the attribute Key conforming to the
- // "rpc.jsonrpc.version" semantic conventions. It represents the protocol
- // version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0
- // doesn't specify this, the value can be omitted.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2.0", "1.0"
- RPCJsonrpcVersionKey = attribute.Key("rpc.jsonrpc.version")
-
- // RPCMessageCompressedSizeKey is the attribute Key conforming to the
- // "rpc.message.compressed_size" semantic conventions. It represents the
- // compressed size of the message in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- RPCMessageCompressedSizeKey = attribute.Key("rpc.message.compressed_size")
-
- // RPCMessageIDKey is the attribute Key conforming to the "rpc.message.id"
- // semantic conventions. It represents the mUST be calculated as two different
- // counters starting from `1` one for sent messages and one for received
- // message.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: This way we guarantee that the values will be consistent between
- // different implementations.
- RPCMessageIDKey = attribute.Key("rpc.message.id")
-
- // RPCMessageTypeKey is the attribute Key conforming to the "rpc.message.type"
- // semantic conventions. It represents the whether this is a received or sent
- // message.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- RPCMessageTypeKey = attribute.Key("rpc.message.type")
-
- // RPCMessageUncompressedSizeKey is the attribute Key conforming to the
- // "rpc.message.uncompressed_size" semantic conventions. It represents the
- // uncompressed size of the message in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- RPCMessageUncompressedSizeKey = attribute.Key("rpc.message.uncompressed_size")
-
- // RPCMethodKey is the attribute Key conforming to the "rpc.method" semantic
- // conventions. It represents the name of the (logical) method being called,
- // must be equal to the $method part in the span name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: exampleMethod
- // Note: This is the logical name of the method from the RPC interface
- // perspective, which can be different from the name of any implementing
- // method/function. The `code.function.name` attribute may be used to store the
- // latter (e.g., method actually executing the call on the server side, RPC
- // client stub method on the client side).
- RPCMethodKey = attribute.Key("rpc.method")
-
- // RPCServiceKey is the attribute Key conforming to the "rpc.service" semantic
- // conventions. It represents the full (logical) name of the service being
- // called, including its package name, if applicable.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: myservice.EchoService
- // Note: This is the logical name of the service from the RPC interface
- // perspective, which can be different from the name of any implementing class.
- // The `code.namespace` attribute may be used to store the latter (despite the
- // attribute name, it may include a class name; e.g., class with method actually
- // executing the call on the server side, RPC client stub class on the client
- // side).
- RPCServiceKey = attribute.Key("rpc.service")
-
- // RPCSystemKey is the attribute Key conforming to the "rpc.system" semantic
- // conventions. It represents a string identifying the remoting system. See
- // below for a list of well-known identifiers.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- RPCSystemKey = attribute.Key("rpc.system")
-)
-
-// RPCJsonrpcErrorCode returns an attribute KeyValue conforming to the
-// "rpc.jsonrpc.error_code" semantic conventions. It represents the `error.code`
-// property of response if it is an error response.
-func RPCJsonrpcErrorCode(val int) attribute.KeyValue {
- return RPCJsonrpcErrorCodeKey.Int(val)
-}
-
-// RPCJsonrpcErrorMessage returns an attribute KeyValue conforming to the
-// "rpc.jsonrpc.error_message" semantic conventions. It represents the
-// `error.message` property of response if it is an error response.
-func RPCJsonrpcErrorMessage(val string) attribute.KeyValue {
- return RPCJsonrpcErrorMessageKey.String(val)
-}
-
-// RPCJsonrpcRequestID returns an attribute KeyValue conforming to the
-// "rpc.jsonrpc.request_id" semantic conventions. It represents the `id` property
-// of request or response. Since protocol allows id to be int, string, `null` or
-// missing (for notifications), value is expected to be cast to string for
-// simplicity. Use empty string in case of `null` value. Omit entirely if this is
-// a notification.
-func RPCJsonrpcRequestID(val string) attribute.KeyValue {
- return RPCJsonrpcRequestIDKey.String(val)
-}
-
-// RPCJsonrpcVersion returns an attribute KeyValue conforming to the
-// "rpc.jsonrpc.version" semantic conventions. It represents the protocol version
-// as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 doesn't
-// specify this, the value can be omitted.
-func RPCJsonrpcVersion(val string) attribute.KeyValue {
- return RPCJsonrpcVersionKey.String(val)
-}
-
-// RPCMessageCompressedSize returns an attribute KeyValue conforming to the
-// "rpc.message.compressed_size" semantic conventions. It represents the
-// compressed size of the message in bytes.
-func RPCMessageCompressedSize(val int) attribute.KeyValue {
- return RPCMessageCompressedSizeKey.Int(val)
-}
-
-// RPCMessageID returns an attribute KeyValue conforming to the "rpc.message.id"
-// semantic conventions. It represents the mUST be calculated as two different
-// counters starting from `1` one for sent messages and one for received message.
-func RPCMessageID(val int) attribute.KeyValue {
- return RPCMessageIDKey.Int(val)
-}
-
-// RPCMessageUncompressedSize returns an attribute KeyValue conforming to the
-// "rpc.message.uncompressed_size" semantic conventions. It represents the
-// uncompressed size of the message in bytes.
-func RPCMessageUncompressedSize(val int) attribute.KeyValue {
- return RPCMessageUncompressedSizeKey.Int(val)
-}
-
-// RPCMethod returns an attribute KeyValue conforming to the "rpc.method"
-// semantic conventions. It represents the name of the (logical) method being
-// called, must be equal to the $method part in the span name.
-func RPCMethod(val string) attribute.KeyValue {
- return RPCMethodKey.String(val)
-}
-
-// RPCService returns an attribute KeyValue conforming to the "rpc.service"
-// semantic conventions. It represents the full (logical) name of the service
-// being called, including its package name, if applicable.
-func RPCService(val string) attribute.KeyValue {
- return RPCServiceKey.String(val)
-}
-
-// Enum values for rpc.connect_rpc.error_code
-var (
- // cancelled
- // Stability: development
- RPCConnectRPCErrorCodeCancelled = RPCConnectRPCErrorCodeKey.String("cancelled")
- // unknown
- // Stability: development
- RPCConnectRPCErrorCodeUnknown = RPCConnectRPCErrorCodeKey.String("unknown")
- // invalid_argument
- // Stability: development
- RPCConnectRPCErrorCodeInvalidArgument = RPCConnectRPCErrorCodeKey.String("invalid_argument")
- // deadline_exceeded
- // Stability: development
- RPCConnectRPCErrorCodeDeadlineExceeded = RPCConnectRPCErrorCodeKey.String("deadline_exceeded")
- // not_found
- // Stability: development
- RPCConnectRPCErrorCodeNotFound = RPCConnectRPCErrorCodeKey.String("not_found")
- // already_exists
- // Stability: development
- RPCConnectRPCErrorCodeAlreadyExists = RPCConnectRPCErrorCodeKey.String("already_exists")
- // permission_denied
- // Stability: development
- RPCConnectRPCErrorCodePermissionDenied = RPCConnectRPCErrorCodeKey.String("permission_denied")
- // resource_exhausted
- // Stability: development
- RPCConnectRPCErrorCodeResourceExhausted = RPCConnectRPCErrorCodeKey.String("resource_exhausted")
- // failed_precondition
- // Stability: development
- RPCConnectRPCErrorCodeFailedPrecondition = RPCConnectRPCErrorCodeKey.String("failed_precondition")
- // aborted
- // Stability: development
- RPCConnectRPCErrorCodeAborted = RPCConnectRPCErrorCodeKey.String("aborted")
- // out_of_range
- // Stability: development
- RPCConnectRPCErrorCodeOutOfRange = RPCConnectRPCErrorCodeKey.String("out_of_range")
- // unimplemented
- // Stability: development
- RPCConnectRPCErrorCodeUnimplemented = RPCConnectRPCErrorCodeKey.String("unimplemented")
- // internal
- // Stability: development
- RPCConnectRPCErrorCodeInternal = RPCConnectRPCErrorCodeKey.String("internal")
- // unavailable
- // Stability: development
- RPCConnectRPCErrorCodeUnavailable = RPCConnectRPCErrorCodeKey.String("unavailable")
- // data_loss
- // Stability: development
- RPCConnectRPCErrorCodeDataLoss = RPCConnectRPCErrorCodeKey.String("data_loss")
- // unauthenticated
- // Stability: development
- RPCConnectRPCErrorCodeUnauthenticated = RPCConnectRPCErrorCodeKey.String("unauthenticated")
-)
-
-// Enum values for rpc.grpc.status_code
-var (
- // OK
- // Stability: development
- RPCGRPCStatusCodeOk = RPCGRPCStatusCodeKey.Int(0)
- // CANCELLED
- // Stability: development
- RPCGRPCStatusCodeCancelled = RPCGRPCStatusCodeKey.Int(1)
- // UNKNOWN
- // Stability: development
- RPCGRPCStatusCodeUnknown = RPCGRPCStatusCodeKey.Int(2)
- // INVALID_ARGUMENT
- // Stability: development
- RPCGRPCStatusCodeInvalidArgument = RPCGRPCStatusCodeKey.Int(3)
- // DEADLINE_EXCEEDED
- // Stability: development
- RPCGRPCStatusCodeDeadlineExceeded = RPCGRPCStatusCodeKey.Int(4)
- // NOT_FOUND
- // Stability: development
- RPCGRPCStatusCodeNotFound = RPCGRPCStatusCodeKey.Int(5)
- // ALREADY_EXISTS
- // Stability: development
- RPCGRPCStatusCodeAlreadyExists = RPCGRPCStatusCodeKey.Int(6)
- // PERMISSION_DENIED
- // Stability: development
- RPCGRPCStatusCodePermissionDenied = RPCGRPCStatusCodeKey.Int(7)
- // RESOURCE_EXHAUSTED
- // Stability: development
- RPCGRPCStatusCodeResourceExhausted = RPCGRPCStatusCodeKey.Int(8)
- // FAILED_PRECONDITION
- // Stability: development
- RPCGRPCStatusCodeFailedPrecondition = RPCGRPCStatusCodeKey.Int(9)
- // ABORTED
- // Stability: development
- RPCGRPCStatusCodeAborted = RPCGRPCStatusCodeKey.Int(10)
- // OUT_OF_RANGE
- // Stability: development
- RPCGRPCStatusCodeOutOfRange = RPCGRPCStatusCodeKey.Int(11)
- // UNIMPLEMENTED
- // Stability: development
- RPCGRPCStatusCodeUnimplemented = RPCGRPCStatusCodeKey.Int(12)
- // INTERNAL
- // Stability: development
- RPCGRPCStatusCodeInternal = RPCGRPCStatusCodeKey.Int(13)
- // UNAVAILABLE
- // Stability: development
- RPCGRPCStatusCodeUnavailable = RPCGRPCStatusCodeKey.Int(14)
- // DATA_LOSS
- // Stability: development
- RPCGRPCStatusCodeDataLoss = RPCGRPCStatusCodeKey.Int(15)
- // UNAUTHENTICATED
- // Stability: development
- RPCGRPCStatusCodeUnauthenticated = RPCGRPCStatusCodeKey.Int(16)
-)
-
-// Enum values for rpc.message.type
-var (
- // sent
- // Stability: development
- RPCMessageTypeSent = RPCMessageTypeKey.String("SENT")
- // received
- // Stability: development
- RPCMessageTypeReceived = RPCMessageTypeKey.String("RECEIVED")
-)
-
-// Enum values for rpc.system
-var (
- // gRPC
- // Stability: development
- RPCSystemGRPC = RPCSystemKey.String("grpc")
- // Java RMI
- // Stability: development
- RPCSystemJavaRmi = RPCSystemKey.String("java_rmi")
- // .NET WCF
- // Stability: development
- RPCSystemDotnetWcf = RPCSystemKey.String("dotnet_wcf")
- // Apache Dubbo
- // Stability: development
- RPCSystemApacheDubbo = RPCSystemKey.String("apache_dubbo")
- // Connect RPC
- // Stability: development
- RPCSystemConnectRPC = RPCSystemKey.String("connect_rpc")
-)
-
-// Namespace: security_rule
-const (
- // SecurityRuleCategoryKey is the attribute Key conforming to the
- // "security_rule.category" semantic conventions. It represents a categorization
- // value keyword used by the entity using the rule for detection of this event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Attempted Information Leak"
- SecurityRuleCategoryKey = attribute.Key("security_rule.category")
-
- // SecurityRuleDescriptionKey is the attribute Key conforming to the
- // "security_rule.description" semantic conventions. It represents the
- // description of the rule generating the event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Block requests to public DNS over HTTPS / TLS protocols"
- SecurityRuleDescriptionKey = attribute.Key("security_rule.description")
-
- // SecurityRuleLicenseKey is the attribute Key conforming to the
- // "security_rule.license" semantic conventions. It represents the name of the
- // license under which the rule used to generate this event is made available.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Apache 2.0"
- SecurityRuleLicenseKey = attribute.Key("security_rule.license")
-
- // SecurityRuleNameKey is the attribute Key conforming to the
- // "security_rule.name" semantic conventions. It represents the name of the rule
- // or signature generating the event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "BLOCK_DNS_over_TLS"
- SecurityRuleNameKey = attribute.Key("security_rule.name")
-
- // SecurityRuleReferenceKey is the attribute Key conforming to the
- // "security_rule.reference" semantic conventions. It represents the reference
- // URL to additional information about the rule used to generate this event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "https://en.wikipedia.org/wiki/DNS_over_TLS"
- // Note: The URL can point to the vendor’s documentation about the rule. If
- // that’s not available, it can also be a link to a more general page
- // describing this type of alert.
- SecurityRuleReferenceKey = attribute.Key("security_rule.reference")
-
- // SecurityRuleRulesetNameKey is the attribute Key conforming to the
- // "security_rule.ruleset.name" semantic conventions. It represents the name of
- // the ruleset, policy, group, or parent category in which the rule used to
- // generate this event is a member.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Standard_Protocol_Filters"
- SecurityRuleRulesetNameKey = attribute.Key("security_rule.ruleset.name")
-
- // SecurityRuleUUIDKey is the attribute Key conforming to the
- // "security_rule.uuid" semantic conventions. It represents a rule ID that is
- // unique within the scope of a set or group of agents, observers, or other
- // entities using the rule for detection of this event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "550e8400-e29b-41d4-a716-446655440000", "1100110011"
- SecurityRuleUUIDKey = attribute.Key("security_rule.uuid")
-
- // SecurityRuleVersionKey is the attribute Key conforming to the
- // "security_rule.version" semantic conventions. It represents the version /
- // revision of the rule being used for analysis.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1.0.0"
- SecurityRuleVersionKey = attribute.Key("security_rule.version")
-)
-
-// SecurityRuleCategory returns an attribute KeyValue conforming to the
-// "security_rule.category" semantic conventions. It represents a categorization
-// value keyword used by the entity using the rule for detection of this event.
-func SecurityRuleCategory(val string) attribute.KeyValue {
- return SecurityRuleCategoryKey.String(val)
-}
-
-// SecurityRuleDescription returns an attribute KeyValue conforming to the
-// "security_rule.description" semantic conventions. It represents the
-// description of the rule generating the event.
-func SecurityRuleDescription(val string) attribute.KeyValue {
- return SecurityRuleDescriptionKey.String(val)
-}
-
-// SecurityRuleLicense returns an attribute KeyValue conforming to the
-// "security_rule.license" semantic conventions. It represents the name of the
-// license under which the rule used to generate this event is made available.
-func SecurityRuleLicense(val string) attribute.KeyValue {
- return SecurityRuleLicenseKey.String(val)
-}
-
-// SecurityRuleName returns an attribute KeyValue conforming to the
-// "security_rule.name" semantic conventions. It represents the name of the rule
-// or signature generating the event.
-func SecurityRuleName(val string) attribute.KeyValue {
- return SecurityRuleNameKey.String(val)
-}
-
-// SecurityRuleReference returns an attribute KeyValue conforming to the
-// "security_rule.reference" semantic conventions. It represents the reference
-// URL to additional information about the rule used to generate this event.
-func SecurityRuleReference(val string) attribute.KeyValue {
- return SecurityRuleReferenceKey.String(val)
-}
-
-// SecurityRuleRulesetName returns an attribute KeyValue conforming to the
-// "security_rule.ruleset.name" semantic conventions. It represents the name of
-// the ruleset, policy, group, or parent category in which the rule used to
-// generate this event is a member.
-func SecurityRuleRulesetName(val string) attribute.KeyValue {
- return SecurityRuleRulesetNameKey.String(val)
-}
-
-// SecurityRuleUUID returns an attribute KeyValue conforming to the
-// "security_rule.uuid" semantic conventions. It represents a rule ID that is
-// unique within the scope of a set or group of agents, observers, or other
-// entities using the rule for detection of this event.
-func SecurityRuleUUID(val string) attribute.KeyValue {
- return SecurityRuleUUIDKey.String(val)
-}
-
-// SecurityRuleVersion returns an attribute KeyValue conforming to the
-// "security_rule.version" semantic conventions. It represents the version /
-// revision of the rule being used for analysis.
-func SecurityRuleVersion(val string) attribute.KeyValue {
- return SecurityRuleVersionKey.String(val)
-}
-
-// Namespace: server
-const (
- // ServerAddressKey is the attribute Key conforming to the "server.address"
- // semantic conventions. It represents the server domain name if available
- // without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "example.com", "10.1.2.80", "/tmp/my.sock"
- // Note: When observed from the client side, and when communicating through an
- // intermediary, `server.address` SHOULD represent the server address behind any
- // intermediaries, for example proxies, if it's available.
- ServerAddressKey = attribute.Key("server.address")
-
- // ServerPortKey is the attribute Key conforming to the "server.port" semantic
- // conventions. It represents the server port number.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 80, 8080, 443
- // Note: When observed from the client side, and when communicating through an
- // intermediary, `server.port` SHOULD represent the server port behind any
- // intermediaries, for example proxies, if it's available.
- ServerPortKey = attribute.Key("server.port")
-)
-
-// ServerAddress returns an attribute KeyValue conforming to the "server.address"
-// semantic conventions. It represents the server domain name if available
-// without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
-func ServerAddress(val string) attribute.KeyValue {
- return ServerAddressKey.String(val)
-}
-
-// ServerPort returns an attribute KeyValue conforming to the "server.port"
-// semantic conventions. It represents the server port number.
-func ServerPort(val int) attribute.KeyValue {
- return ServerPortKey.Int(val)
-}
-
-// Namespace: service
-const (
- // ServiceInstanceIDKey is the attribute Key conforming to the
- // "service.instance.id" semantic conventions. It represents the string ID of
- // the service instance.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "627cc493-f310-47de-96bd-71410b7dec09"
- // Note: MUST be unique for each instance of the same
- // `service.namespace,service.name` pair (in other words
- // `service.namespace,service.name,service.instance.id` triplet MUST be globally
- // unique). The ID helps to
- // distinguish instances of the same service that exist at the same time (e.g.
- // instances of a horizontally scaled
- // service).
- //
- // Implementations, such as SDKs, are recommended to generate a random Version 1
- // or Version 4 [RFC
- // 4122] UUID, but are free to use an inherent unique ID as
- // the source of
- // this value if stability is desirable. In that case, the ID SHOULD be used as
- // source of a UUID Version 5 and
- // SHOULD use the following UUID as the namespace:
- // `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.
- //
- // UUIDs are typically recommended, as only an opaque value for the purposes of
- // identifying a service instance is
- // needed. Similar to what can be seen in the man page for the
- // [`/etc/machine-id`] file, the underlying
- // data, such as pod name and namespace should be treated as confidential, being
- // the user's choice to expose it
- // or not via another resource attribute.
- //
- // For applications running behind an application server (like unicorn), we do
- // not recommend using one identifier
- // for all processes participating in the application. Instead, it's recommended
- // each division (e.g. a worker
- // thread in unicorn) to have its own instance.id.
- //
- // It's not recommended for a Collector to set `service.instance.id` if it can't
- // unambiguously determine the
- // service instance that is generating that telemetry. For instance, creating an
- // UUID based on `pod.name` will
- // likely be wrong, as the Collector might not know from which container within
- // that pod the telemetry originated.
- // However, Collectors can set the `service.instance.id` if they can
- // unambiguously determine the service instance
- // for that telemetry. This is typically the case for scraping receivers, as
- // they know the target address and
- // port.
- //
- // [RFC
- // 4122]: https://www.ietf.org/rfc/rfc4122.txt
- // [`/etc/machine-id`]: https://www.freedesktop.org/software/systemd/man/latest/machine-id.html
- ServiceInstanceIDKey = attribute.Key("service.instance.id")
-
- // ServiceNameKey is the attribute Key conforming to the "service.name" semantic
- // conventions. It represents the logical name of the service.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "shoppingcart"
- // Note: MUST be the same for all instances of horizontally scaled services. If
- // the value was not specified, SDKs MUST fallback to `unknown_service:`
- // concatenated with [`process.executable.name`], e.g. `unknown_service:bash`.
- // If `process.executable.name` is not available, the value MUST be set to
- // `unknown_service`.
- //
- // [`process.executable.name`]: process.md
- ServiceNameKey = attribute.Key("service.name")
-
- // ServiceNamespaceKey is the attribute Key conforming to the
- // "service.namespace" semantic conventions. It represents a namespace for
- // `service.name`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Shop"
- // Note: A string value having a meaning that helps to distinguish a group of
- // services, for example the team name that owns a group of services.
- // `service.name` is expected to be unique within the same namespace. If
- // `service.namespace` is not specified in the Resource then `service.name` is
- // expected to be unique for all services that have no explicit namespace
- // defined (so the empty/unspecified namespace is simply one more valid
- // namespace). Zero-length namespace string is assumed equal to unspecified
- // namespace.
- ServiceNamespaceKey = attribute.Key("service.namespace")
-
- // ServiceVersionKey is the attribute Key conforming to the "service.version"
- // semantic conventions. It represents the version string of the service API or
- // implementation. The format is not defined by these conventions.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "2.0.0", "a01dbef8a"
- ServiceVersionKey = attribute.Key("service.version")
-)
-
-// ServiceInstanceID returns an attribute KeyValue conforming to the
-// "service.instance.id" semantic conventions. It represents the string ID of the
-// service instance.
-func ServiceInstanceID(val string) attribute.KeyValue {
- return ServiceInstanceIDKey.String(val)
-}
-
-// ServiceName returns an attribute KeyValue conforming to the "service.name"
-// semantic conventions. It represents the logical name of the service.
-func ServiceName(val string) attribute.KeyValue {
- return ServiceNameKey.String(val)
-}
-
-// ServiceNamespace returns an attribute KeyValue conforming to the
-// "service.namespace" semantic conventions. It represents a namespace for
-// `service.name`.
-func ServiceNamespace(val string) attribute.KeyValue {
- return ServiceNamespaceKey.String(val)
-}
-
-// ServiceVersion returns an attribute KeyValue conforming to the
-// "service.version" semantic conventions. It represents the version string of
-// the service API or implementation. The format is not defined by these
-// conventions.
-func ServiceVersion(val string) attribute.KeyValue {
- return ServiceVersionKey.String(val)
-}
-
-// Namespace: session
-const (
- // SessionIDKey is the attribute Key conforming to the "session.id" semantic
- // conventions. It represents a unique id to identify a session.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 00112233-4455-6677-8899-aabbccddeeff
- SessionIDKey = attribute.Key("session.id")
-
- // SessionPreviousIDKey is the attribute Key conforming to the
- // "session.previous_id" semantic conventions. It represents the previous
- // `session.id` for this user, when known.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 00112233-4455-6677-8899-aabbccddeeff
- SessionPreviousIDKey = attribute.Key("session.previous_id")
-)
-
-// SessionID returns an attribute KeyValue conforming to the "session.id"
-// semantic conventions. It represents a unique id to identify a session.
-func SessionID(val string) attribute.KeyValue {
- return SessionIDKey.String(val)
-}
-
-// SessionPreviousID returns an attribute KeyValue conforming to the
-// "session.previous_id" semantic conventions. It represents the previous
-// `session.id` for this user, when known.
-func SessionPreviousID(val string) attribute.KeyValue {
- return SessionPreviousIDKey.String(val)
-}
-
-// Namespace: signalr
-const (
- // SignalrConnectionStatusKey is the attribute Key conforming to the
- // "signalr.connection.status" semantic conventions. It represents the signalR
- // HTTP connection closure status.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "app_shutdown", "timeout"
- SignalrConnectionStatusKey = attribute.Key("signalr.connection.status")
-
- // SignalrTransportKey is the attribute Key conforming to the
- // "signalr.transport" semantic conventions. It represents the
- // [SignalR transport type].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "web_sockets", "long_polling"
- //
- // [SignalR transport type]: https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md
- SignalrTransportKey = attribute.Key("signalr.transport")
-)
-
-// Enum values for signalr.connection.status
-var (
- // The connection was closed normally.
- // Stability: stable
- SignalrConnectionStatusNormalClosure = SignalrConnectionStatusKey.String("normal_closure")
- // The connection was closed due to a timeout.
- // Stability: stable
- SignalrConnectionStatusTimeout = SignalrConnectionStatusKey.String("timeout")
- // The connection was closed because the app is shutting down.
- // Stability: stable
- SignalrConnectionStatusAppShutdown = SignalrConnectionStatusKey.String("app_shutdown")
-)
-
-// Enum values for signalr.transport
-var (
- // ServerSentEvents protocol
- // Stability: stable
- SignalrTransportServerSentEvents = SignalrTransportKey.String("server_sent_events")
- // LongPolling protocol
- // Stability: stable
- SignalrTransportLongPolling = SignalrTransportKey.String("long_polling")
- // WebSockets protocol
- // Stability: stable
- SignalrTransportWebSockets = SignalrTransportKey.String("web_sockets")
-)
-
-// Namespace: source
-const (
- // SourceAddressKey is the attribute Key conforming to the "source.address"
- // semantic conventions. It represents the source address - domain name if
- // available without reverse DNS lookup; otherwise, IP address or Unix domain
- // socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "source.example.com", "10.1.2.80", "/tmp/my.sock"
- // Note: When observed from the destination side, and when communicating through
- // an intermediary, `source.address` SHOULD represent the source address behind
- // any intermediaries, for example proxies, if it's available.
- SourceAddressKey = attribute.Key("source.address")
-
- // SourcePortKey is the attribute Key conforming to the "source.port" semantic
- // conventions. It represents the source port number.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 3389, 2888
- SourcePortKey = attribute.Key("source.port")
-)
-
-// SourceAddress returns an attribute KeyValue conforming to the "source.address"
-// semantic conventions. It represents the source address - domain name if
-// available without reverse DNS lookup; otherwise, IP address or Unix domain
-// socket name.
-func SourceAddress(val string) attribute.KeyValue {
- return SourceAddressKey.String(val)
-}
-
-// SourcePort returns an attribute KeyValue conforming to the "source.port"
-// semantic conventions. It represents the source port number.
-func SourcePort(val int) attribute.KeyValue {
- return SourcePortKey.Int(val)
-}
-
-// Namespace: system
-const (
- // SystemCPULogicalNumberKey is the attribute Key conforming to the
- // "system.cpu.logical_number" semantic conventions. It represents the logical
- // CPU number [0..n-1].
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1
- SystemCPULogicalNumberKey = attribute.Key("system.cpu.logical_number")
-
- // SystemDeviceKey is the attribute Key conforming to the "system.device"
- // semantic conventions. It represents the device identifier.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "(identifier)"
- SystemDeviceKey = attribute.Key("system.device")
-
- // SystemFilesystemModeKey is the attribute Key conforming to the
- // "system.filesystem.mode" semantic conventions. It represents the filesystem
- // mode.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "rw, ro"
- SystemFilesystemModeKey = attribute.Key("system.filesystem.mode")
-
- // SystemFilesystemMountpointKey is the attribute Key conforming to the
- // "system.filesystem.mountpoint" semantic conventions. It represents the
- // filesystem mount path.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/mnt/data"
- SystemFilesystemMountpointKey = attribute.Key("system.filesystem.mountpoint")
-
- // SystemFilesystemStateKey is the attribute Key conforming to the
- // "system.filesystem.state" semantic conventions. It represents the filesystem
- // state.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "used"
- SystemFilesystemStateKey = attribute.Key("system.filesystem.state")
-
- // SystemFilesystemTypeKey is the attribute Key conforming to the
- // "system.filesystem.type" semantic conventions. It represents the filesystem
- // type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ext4"
- SystemFilesystemTypeKey = attribute.Key("system.filesystem.type")
-
- // SystemMemoryStateKey is the attribute Key conforming to the
- // "system.memory.state" semantic conventions. It represents the memory state.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "free", "cached"
- SystemMemoryStateKey = attribute.Key("system.memory.state")
-
- // SystemPagingDirectionKey is the attribute Key conforming to the
- // "system.paging.direction" semantic conventions. It represents the paging
- // access direction.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "in"
- SystemPagingDirectionKey = attribute.Key("system.paging.direction")
-
- // SystemPagingStateKey is the attribute Key conforming to the
- // "system.paging.state" semantic conventions. It represents the memory paging
- // state.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "free"
- SystemPagingStateKey = attribute.Key("system.paging.state")
-
- // SystemPagingTypeKey is the attribute Key conforming to the
- // "system.paging.type" semantic conventions. It represents the memory paging
- // type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "minor"
- SystemPagingTypeKey = attribute.Key("system.paging.type")
-
- // SystemProcessStatusKey is the attribute Key conforming to the
- // "system.process.status" semantic conventions. It represents the process
- // state, e.g., [Linux Process State Codes].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "running"
- //
- // [Linux Process State Codes]: https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES
- SystemProcessStatusKey = attribute.Key("system.process.status")
-)
-
-// SystemCPULogicalNumber returns an attribute KeyValue conforming to the
-// "system.cpu.logical_number" semantic conventions. It represents the logical
-// CPU number [0..n-1].
-func SystemCPULogicalNumber(val int) attribute.KeyValue {
- return SystemCPULogicalNumberKey.Int(val)
-}
-
-// SystemDevice returns an attribute KeyValue conforming to the "system.device"
-// semantic conventions. It represents the device identifier.
-func SystemDevice(val string) attribute.KeyValue {
- return SystemDeviceKey.String(val)
-}
-
-// SystemFilesystemMode returns an attribute KeyValue conforming to the
-// "system.filesystem.mode" semantic conventions. It represents the filesystem
-// mode.
-func SystemFilesystemMode(val string) attribute.KeyValue {
- return SystemFilesystemModeKey.String(val)
-}
-
-// SystemFilesystemMountpoint returns an attribute KeyValue conforming to the
-// "system.filesystem.mountpoint" semantic conventions. It represents the
-// filesystem mount path.
-func SystemFilesystemMountpoint(val string) attribute.KeyValue {
- return SystemFilesystemMountpointKey.String(val)
-}
-
-// Enum values for system.filesystem.state
-var (
- // used
- // Stability: development
- SystemFilesystemStateUsed = SystemFilesystemStateKey.String("used")
- // free
- // Stability: development
- SystemFilesystemStateFree = SystemFilesystemStateKey.String("free")
- // reserved
- // Stability: development
- SystemFilesystemStateReserved = SystemFilesystemStateKey.String("reserved")
-)
-
-// Enum values for system.filesystem.type
-var (
- // fat32
- // Stability: development
- SystemFilesystemTypeFat32 = SystemFilesystemTypeKey.String("fat32")
- // exfat
- // Stability: development
- SystemFilesystemTypeExfat = SystemFilesystemTypeKey.String("exfat")
- // ntfs
- // Stability: development
- SystemFilesystemTypeNtfs = SystemFilesystemTypeKey.String("ntfs")
- // refs
- // Stability: development
- SystemFilesystemTypeRefs = SystemFilesystemTypeKey.String("refs")
- // hfsplus
- // Stability: development
- SystemFilesystemTypeHfsplus = SystemFilesystemTypeKey.String("hfsplus")
- // ext4
- // Stability: development
- SystemFilesystemTypeExt4 = SystemFilesystemTypeKey.String("ext4")
-)
-
-// Enum values for system.memory.state
-var (
- // used
- // Stability: development
- SystemMemoryStateUsed = SystemMemoryStateKey.String("used")
- // free
- // Stability: development
- SystemMemoryStateFree = SystemMemoryStateKey.String("free")
- // Deprecated: Removed, report shared memory usage with
- // `metric.system.memory.shared` metric.
- SystemMemoryStateShared = SystemMemoryStateKey.String("shared")
- // buffers
- // Stability: development
- SystemMemoryStateBuffers = SystemMemoryStateKey.String("buffers")
- // cached
- // Stability: development
- SystemMemoryStateCached = SystemMemoryStateKey.String("cached")
-)
-
-// Enum values for system.paging.direction
-var (
- // in
- // Stability: development
- SystemPagingDirectionIn = SystemPagingDirectionKey.String("in")
- // out
- // Stability: development
- SystemPagingDirectionOut = SystemPagingDirectionKey.String("out")
-)
-
-// Enum values for system.paging.state
-var (
- // used
- // Stability: development
- SystemPagingStateUsed = SystemPagingStateKey.String("used")
- // free
- // Stability: development
- SystemPagingStateFree = SystemPagingStateKey.String("free")
-)
-
-// Enum values for system.paging.type
-var (
- // major
- // Stability: development
- SystemPagingTypeMajor = SystemPagingTypeKey.String("major")
- // minor
- // Stability: development
- SystemPagingTypeMinor = SystemPagingTypeKey.String("minor")
-)
-
-// Enum values for system.process.status
-var (
- // running
- // Stability: development
- SystemProcessStatusRunning = SystemProcessStatusKey.String("running")
- // sleeping
- // Stability: development
- SystemProcessStatusSleeping = SystemProcessStatusKey.String("sleeping")
- // stopped
- // Stability: development
- SystemProcessStatusStopped = SystemProcessStatusKey.String("stopped")
- // defunct
- // Stability: development
- SystemProcessStatusDefunct = SystemProcessStatusKey.String("defunct")
-)
-
-// Namespace: telemetry
-const (
- // TelemetryDistroNameKey is the attribute Key conforming to the
- // "telemetry.distro.name" semantic conventions. It represents the name of the
- // auto instrumentation agent or distribution, if used.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "parts-unlimited-java"
- // Note: Official auto instrumentation agents and distributions SHOULD set the
- // `telemetry.distro.name` attribute to
- // a string starting with `opentelemetry-`, e.g.
- // `opentelemetry-java-instrumentation`.
- TelemetryDistroNameKey = attribute.Key("telemetry.distro.name")
-
- // TelemetryDistroVersionKey is the attribute Key conforming to the
- // "telemetry.distro.version" semantic conventions. It represents the version
- // string of the auto instrumentation agent or distribution, if used.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1.2.3"
- TelemetryDistroVersionKey = attribute.Key("telemetry.distro.version")
-
- // TelemetrySDKLanguageKey is the attribute Key conforming to the
- // "telemetry.sdk.language" semantic conventions. It represents the language of
- // the telemetry SDK.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples:
- TelemetrySDKLanguageKey = attribute.Key("telemetry.sdk.language")
-
- // TelemetrySDKNameKey is the attribute Key conforming to the
- // "telemetry.sdk.name" semantic conventions. It represents the name of the
- // telemetry SDK as defined above.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "opentelemetry"
- // Note: The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute to
- // `opentelemetry`.
- // If another SDK, like a fork or a vendor-provided implementation, is used,
- // this SDK MUST set the
- // `telemetry.sdk.name` attribute to the fully-qualified class or module name of
- // this SDK's main entry point
- // or another suitable identifier depending on the language.
- // The identifier `opentelemetry` is reserved and MUST NOT be used in this case.
- // All custom identifiers SHOULD be stable across different versions of an
- // implementation.
- TelemetrySDKNameKey = attribute.Key("telemetry.sdk.name")
-
- // TelemetrySDKVersionKey is the attribute Key conforming to the
- // "telemetry.sdk.version" semantic conventions. It represents the version
- // string of the telemetry SDK.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "1.2.3"
- TelemetrySDKVersionKey = attribute.Key("telemetry.sdk.version")
-)
-
-// TelemetryDistroName returns an attribute KeyValue conforming to the
-// "telemetry.distro.name" semantic conventions. It represents the name of the
-// auto instrumentation agent or distribution, if used.
-func TelemetryDistroName(val string) attribute.KeyValue {
- return TelemetryDistroNameKey.String(val)
-}
-
-// TelemetryDistroVersion returns an attribute KeyValue conforming to the
-// "telemetry.distro.version" semantic conventions. It represents the version
-// string of the auto instrumentation agent or distribution, if used.
-func TelemetryDistroVersion(val string) attribute.KeyValue {
- return TelemetryDistroVersionKey.String(val)
-}
-
-// TelemetrySDKName returns an attribute KeyValue conforming to the
-// "telemetry.sdk.name" semantic conventions. It represents the name of the
-// telemetry SDK as defined above.
-func TelemetrySDKName(val string) attribute.KeyValue {
- return TelemetrySDKNameKey.String(val)
-}
-
-// TelemetrySDKVersion returns an attribute KeyValue conforming to the
-// "telemetry.sdk.version" semantic conventions. It represents the version string
-// of the telemetry SDK.
-func TelemetrySDKVersion(val string) attribute.KeyValue {
- return TelemetrySDKVersionKey.String(val)
-}
-
-// Enum values for telemetry.sdk.language
-var (
- // cpp
- // Stability: stable
- TelemetrySDKLanguageCPP = TelemetrySDKLanguageKey.String("cpp")
- // dotnet
- // Stability: stable
- TelemetrySDKLanguageDotnet = TelemetrySDKLanguageKey.String("dotnet")
- // erlang
- // Stability: stable
- TelemetrySDKLanguageErlang = TelemetrySDKLanguageKey.String("erlang")
- // go
- // Stability: stable
- TelemetrySDKLanguageGo = TelemetrySDKLanguageKey.String("go")
- // java
- // Stability: stable
- TelemetrySDKLanguageJava = TelemetrySDKLanguageKey.String("java")
- // nodejs
- // Stability: stable
- TelemetrySDKLanguageNodejs = TelemetrySDKLanguageKey.String("nodejs")
- // php
- // Stability: stable
- TelemetrySDKLanguagePHP = TelemetrySDKLanguageKey.String("php")
- // python
- // Stability: stable
- TelemetrySDKLanguagePython = TelemetrySDKLanguageKey.String("python")
- // ruby
- // Stability: stable
- TelemetrySDKLanguageRuby = TelemetrySDKLanguageKey.String("ruby")
- // rust
- // Stability: stable
- TelemetrySDKLanguageRust = TelemetrySDKLanguageKey.String("rust")
- // swift
- // Stability: stable
- TelemetrySDKLanguageSwift = TelemetrySDKLanguageKey.String("swift")
- // webjs
- // Stability: stable
- TelemetrySDKLanguageWebjs = TelemetrySDKLanguageKey.String("webjs")
-)
-
-// Namespace: test
-const (
- // TestCaseNameKey is the attribute Key conforming to the "test.case.name"
- // semantic conventions. It represents the fully qualified human readable name
- // of the [test case].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "org.example.TestCase1.test1", "example/tests/TestCase1.test1",
- // "ExampleTestCase1_test1"
- //
- // [test case]: https://wikipedia.org/wiki/Test_case
- TestCaseNameKey = attribute.Key("test.case.name")
-
- // TestCaseResultStatusKey is the attribute Key conforming to the
- // "test.case.result.status" semantic conventions. It represents the status of
- // the actual test case result from test execution.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pass", "fail"
- TestCaseResultStatusKey = attribute.Key("test.case.result.status")
-
- // TestSuiteNameKey is the attribute Key conforming to the "test.suite.name"
- // semantic conventions. It represents the human readable name of a [test suite]
- // .
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "TestSuite1"
- //
- // [test suite]: https://wikipedia.org/wiki/Test_suite
- TestSuiteNameKey = attribute.Key("test.suite.name")
-
- // TestSuiteRunStatusKey is the attribute Key conforming to the
- // "test.suite.run.status" semantic conventions. It represents the status of the
- // test suite run.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "success", "failure", "skipped", "aborted", "timed_out",
- // "in_progress"
- TestSuiteRunStatusKey = attribute.Key("test.suite.run.status")
-)
-
-// TestCaseName returns an attribute KeyValue conforming to the "test.case.name"
-// semantic conventions. It represents the fully qualified human readable name of
-// the [test case].
-//
-// [test case]: https://wikipedia.org/wiki/Test_case
-func TestCaseName(val string) attribute.KeyValue {
- return TestCaseNameKey.String(val)
-}
-
-// TestSuiteName returns an attribute KeyValue conforming to the
-// "test.suite.name" semantic conventions. It represents the human readable name
-// of a [test suite].
-//
-// [test suite]: https://wikipedia.org/wiki/Test_suite
-func TestSuiteName(val string) attribute.KeyValue {
- return TestSuiteNameKey.String(val)
-}
-
-// Enum values for test.case.result.status
-var (
- // pass
- // Stability: development
- TestCaseResultStatusPass = TestCaseResultStatusKey.String("pass")
- // fail
- // Stability: development
- TestCaseResultStatusFail = TestCaseResultStatusKey.String("fail")
-)
-
-// Enum values for test.suite.run.status
-var (
- // success
- // Stability: development
- TestSuiteRunStatusSuccess = TestSuiteRunStatusKey.String("success")
- // failure
- // Stability: development
- TestSuiteRunStatusFailure = TestSuiteRunStatusKey.String("failure")
- // skipped
- // Stability: development
- TestSuiteRunStatusSkipped = TestSuiteRunStatusKey.String("skipped")
- // aborted
- // Stability: development
- TestSuiteRunStatusAborted = TestSuiteRunStatusKey.String("aborted")
- // timed_out
- // Stability: development
- TestSuiteRunStatusTimedOut = TestSuiteRunStatusKey.String("timed_out")
- // in_progress
- // Stability: development
- TestSuiteRunStatusInProgress = TestSuiteRunStatusKey.String("in_progress")
-)
-
-// Namespace: thread
-const (
- // ThreadIDKey is the attribute Key conforming to the "thread.id" semantic
- // conventions. It represents the current "managed" thread ID (as opposed to OS
- // thread ID).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- ThreadIDKey = attribute.Key("thread.id")
-
- // ThreadNameKey is the attribute Key conforming to the "thread.name" semantic
- // conventions. It represents the current thread name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: main
- ThreadNameKey = attribute.Key("thread.name")
-)
-
-// ThreadID returns an attribute KeyValue conforming to the "thread.id" semantic
-// conventions. It represents the current "managed" thread ID (as opposed to OS
-// thread ID).
-func ThreadID(val int) attribute.KeyValue {
- return ThreadIDKey.Int(val)
-}
-
-// ThreadName returns an attribute KeyValue conforming to the "thread.name"
-// semantic conventions. It represents the current thread name.
-func ThreadName(val string) attribute.KeyValue {
- return ThreadNameKey.String(val)
-}
-
-// Namespace: tls
-const (
- // TLSCipherKey is the attribute Key conforming to the "tls.cipher" semantic
- // conventions. It represents the string indicating the [cipher] used during the
- // current connection.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
- // "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
- // Note: The values allowed for `tls.cipher` MUST be one of the `Descriptions`
- // of the [registered TLS Cipher Suits].
- //
- // [cipher]: https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5
- // [registered TLS Cipher Suits]: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4
- TLSCipherKey = attribute.Key("tls.cipher")
-
- // TLSClientCertificateKey is the attribute Key conforming to the
- // "tls.client.certificate" semantic conventions. It represents the pEM-encoded
- // stand-alone certificate offered by the client. This is usually
- // mutually-exclusive of `client.certificate_chain` since this value also exists
- // in that list.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MII..."
- TLSClientCertificateKey = attribute.Key("tls.client.certificate")
-
- // TLSClientCertificateChainKey is the attribute Key conforming to the
- // "tls.client.certificate_chain" semantic conventions. It represents the array
- // of PEM-encoded certificates that make up the certificate chain offered by the
- // client. This is usually mutually-exclusive of `client.certificate` since that
- // value should be the first certificate in the chain.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MII...", "MI..."
- TLSClientCertificateChainKey = attribute.Key("tls.client.certificate_chain")
-
- // TLSClientHashMd5Key is the attribute Key conforming to the
- // "tls.client.hash.md5" semantic conventions. It represents the certificate
- // fingerprint using the MD5 digest of DER-encoded version of certificate
- // offered by the client. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC"
- TLSClientHashMd5Key = attribute.Key("tls.client.hash.md5")
-
- // TLSClientHashSha1Key is the attribute Key conforming to the
- // "tls.client.hash.sha1" semantic conventions. It represents the certificate
- // fingerprint using the SHA1 digest of DER-encoded version of certificate
- // offered by the client. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9E393D93138888D288266C2D915214D1D1CCEB2A"
- TLSClientHashSha1Key = attribute.Key("tls.client.hash.sha1")
-
- // TLSClientHashSha256Key is the attribute Key conforming to the
- // "tls.client.hash.sha256" semantic conventions. It represents the certificate
- // fingerprint using the SHA256 digest of DER-encoded version of certificate
- // offered by the client. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0"
- TLSClientHashSha256Key = attribute.Key("tls.client.hash.sha256")
-
- // TLSClientIssuerKey is the attribute Key conforming to the "tls.client.issuer"
- // semantic conventions. It represents the distinguished name of [subject] of
- // the issuer of the x.509 certificate presented by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com"
- //
- // [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
- TLSClientIssuerKey = attribute.Key("tls.client.issuer")
-
- // TLSClientJa3Key is the attribute Key conforming to the "tls.client.ja3"
- // semantic conventions. It represents a hash that identifies clients based on
- // how they perform an SSL/TLS handshake.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "d4e5b18d6b55c71272893221c96ba240"
- TLSClientJa3Key = attribute.Key("tls.client.ja3")
-
- // TLSClientNotAfterKey is the attribute Key conforming to the
- // "tls.client.not_after" semantic conventions. It represents the date/Time
- // indicating when client certificate is no longer considered valid.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T00:00:00.000Z"
- TLSClientNotAfterKey = attribute.Key("tls.client.not_after")
-
- // TLSClientNotBeforeKey is the attribute Key conforming to the
- // "tls.client.not_before" semantic conventions. It represents the date/Time
- // indicating when client certificate is first considered valid.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1970-01-01T00:00:00.000Z"
- TLSClientNotBeforeKey = attribute.Key("tls.client.not_before")
-
- // TLSClientSubjectKey is the attribute Key conforming to the
- // "tls.client.subject" semantic conventions. It represents the distinguished
- // name of subject of the x.509 certificate presented by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CN=myclient, OU=Documentation Team, DC=example, DC=com"
- TLSClientSubjectKey = attribute.Key("tls.client.subject")
-
- // TLSClientSupportedCiphersKey is the attribute Key conforming to the
- // "tls.client.supported_ciphers" semantic conventions. It represents the array
- // of ciphers offered by the client during the client hello.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
- // "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
- TLSClientSupportedCiphersKey = attribute.Key("tls.client.supported_ciphers")
-
- // TLSCurveKey is the attribute Key conforming to the "tls.curve" semantic
- // conventions. It represents the string indicating the curve used for the given
- // cipher, when applicable.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "secp256r1"
- TLSCurveKey = attribute.Key("tls.curve")
-
- // TLSEstablishedKey is the attribute Key conforming to the "tls.established"
- // semantic conventions. It represents the boolean flag indicating if the TLS
- // negotiation was successful and transitioned to an encrypted tunnel.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: true
- TLSEstablishedKey = attribute.Key("tls.established")
-
- // TLSNextProtocolKey is the attribute Key conforming to the "tls.next_protocol"
- // semantic conventions. It represents the string indicating the protocol being
- // tunneled. Per the values in the [IANA registry], this string should be lower
- // case.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "http/1.1"
- //
- // [IANA registry]: https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
- TLSNextProtocolKey = attribute.Key("tls.next_protocol")
-
- // TLSProtocolNameKey is the attribute Key conforming to the "tls.protocol.name"
- // semantic conventions. It represents the normalized lowercase protocol name
- // parsed from original string of the negotiated [SSL/TLS protocol version].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [SSL/TLS protocol version]: https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES
- TLSProtocolNameKey = attribute.Key("tls.protocol.name")
-
- // TLSProtocolVersionKey is the attribute Key conforming to the
- // "tls.protocol.version" semantic conventions. It represents the numeric part
- // of the version parsed from the original string of the negotiated
- // [SSL/TLS protocol version].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1.2", "3"
- //
- // [SSL/TLS protocol version]: https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES
- TLSProtocolVersionKey = attribute.Key("tls.protocol.version")
-
- // TLSResumedKey is the attribute Key conforming to the "tls.resumed" semantic
- // conventions. It represents the boolean flag indicating if this TLS connection
- // was resumed from an existing TLS negotiation.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: true
- TLSResumedKey = attribute.Key("tls.resumed")
-
- // TLSServerCertificateKey is the attribute Key conforming to the
- // "tls.server.certificate" semantic conventions. It represents the pEM-encoded
- // stand-alone certificate offered by the server. This is usually
- // mutually-exclusive of `server.certificate_chain` since this value also exists
- // in that list.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MII..."
- TLSServerCertificateKey = attribute.Key("tls.server.certificate")
-
- // TLSServerCertificateChainKey is the attribute Key conforming to the
- // "tls.server.certificate_chain" semantic conventions. It represents the array
- // of PEM-encoded certificates that make up the certificate chain offered by the
- // server. This is usually mutually-exclusive of `server.certificate` since that
- // value should be the first certificate in the chain.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MII...", "MI..."
- TLSServerCertificateChainKey = attribute.Key("tls.server.certificate_chain")
-
- // TLSServerHashMd5Key is the attribute Key conforming to the
- // "tls.server.hash.md5" semantic conventions. It represents the certificate
- // fingerprint using the MD5 digest of DER-encoded version of certificate
- // offered by the server. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC"
- TLSServerHashMd5Key = attribute.Key("tls.server.hash.md5")
-
- // TLSServerHashSha1Key is the attribute Key conforming to the
- // "tls.server.hash.sha1" semantic conventions. It represents the certificate
- // fingerprint using the SHA1 digest of DER-encoded version of certificate
- // offered by the server. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9E393D93138888D288266C2D915214D1D1CCEB2A"
- TLSServerHashSha1Key = attribute.Key("tls.server.hash.sha1")
-
- // TLSServerHashSha256Key is the attribute Key conforming to the
- // "tls.server.hash.sha256" semantic conventions. It represents the certificate
- // fingerprint using the SHA256 digest of DER-encoded version of certificate
- // offered by the server. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0"
- TLSServerHashSha256Key = attribute.Key("tls.server.hash.sha256")
-
- // TLSServerIssuerKey is the attribute Key conforming to the "tls.server.issuer"
- // semantic conventions. It represents the distinguished name of [subject] of
- // the issuer of the x.509 certificate presented by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com"
- //
- // [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
- TLSServerIssuerKey = attribute.Key("tls.server.issuer")
-
- // TLSServerJa3sKey is the attribute Key conforming to the "tls.server.ja3s"
- // semantic conventions. It represents a hash that identifies servers based on
- // how they perform an SSL/TLS handshake.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "d4e5b18d6b55c71272893221c96ba240"
- TLSServerJa3sKey = attribute.Key("tls.server.ja3s")
-
- // TLSServerNotAfterKey is the attribute Key conforming to the
- // "tls.server.not_after" semantic conventions. It represents the date/Time
- // indicating when server certificate is no longer considered valid.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T00:00:00.000Z"
- TLSServerNotAfterKey = attribute.Key("tls.server.not_after")
-
- // TLSServerNotBeforeKey is the attribute Key conforming to the
- // "tls.server.not_before" semantic conventions. It represents the date/Time
- // indicating when server certificate is first considered valid.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1970-01-01T00:00:00.000Z"
- TLSServerNotBeforeKey = attribute.Key("tls.server.not_before")
-
- // TLSServerSubjectKey is the attribute Key conforming to the
- // "tls.server.subject" semantic conventions. It represents the distinguished
- // name of subject of the x.509 certificate presented by the server.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CN=myserver, OU=Documentation Team, DC=example, DC=com"
- TLSServerSubjectKey = attribute.Key("tls.server.subject")
-)
-
-// TLSCipher returns an attribute KeyValue conforming to the "tls.cipher"
-// semantic conventions. It represents the string indicating the [cipher] used
-// during the current connection.
-//
-// [cipher]: https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5
-func TLSCipher(val string) attribute.KeyValue {
- return TLSCipherKey.String(val)
-}
-
-// TLSClientCertificate returns an attribute KeyValue conforming to the
-// "tls.client.certificate" semantic conventions. It represents the pEM-encoded
-// stand-alone certificate offered by the client. This is usually
-// mutually-exclusive of `client.certificate_chain` since this value also exists
-// in that list.
-func TLSClientCertificate(val string) attribute.KeyValue {
- return TLSClientCertificateKey.String(val)
-}
-
-// TLSClientCertificateChain returns an attribute KeyValue conforming to the
-// "tls.client.certificate_chain" semantic conventions. It represents the array
-// of PEM-encoded certificates that make up the certificate chain offered by the
-// client. This is usually mutually-exclusive of `client.certificate` since that
-// value should be the first certificate in the chain.
-func TLSClientCertificateChain(val ...string) attribute.KeyValue {
- return TLSClientCertificateChainKey.StringSlice(val)
-}
-
-// TLSClientHashMd5 returns an attribute KeyValue conforming to the
-// "tls.client.hash.md5" semantic conventions. It represents the certificate
-// fingerprint using the MD5 digest of DER-encoded version of certificate offered
-// by the client. For consistency with other hash values, this value should be
-// formatted as an uppercase hash.
-func TLSClientHashMd5(val string) attribute.KeyValue {
- return TLSClientHashMd5Key.String(val)
-}
-
-// TLSClientHashSha1 returns an attribute KeyValue conforming to the
-// "tls.client.hash.sha1" semantic conventions. It represents the certificate
-// fingerprint using the SHA1 digest of DER-encoded version of certificate
-// offered by the client. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSClientHashSha1(val string) attribute.KeyValue {
- return TLSClientHashSha1Key.String(val)
-}
-
-// TLSClientHashSha256 returns an attribute KeyValue conforming to the
-// "tls.client.hash.sha256" semantic conventions. It represents the certificate
-// fingerprint using the SHA256 digest of DER-encoded version of certificate
-// offered by the client. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSClientHashSha256(val string) attribute.KeyValue {
- return TLSClientHashSha256Key.String(val)
-}
-
-// TLSClientIssuer returns an attribute KeyValue conforming to the
-// "tls.client.issuer" semantic conventions. It represents the distinguished name
-// of [subject] of the issuer of the x.509 certificate presented by the client.
-//
-// [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
-func TLSClientIssuer(val string) attribute.KeyValue {
- return TLSClientIssuerKey.String(val)
-}
-
-// TLSClientJa3 returns an attribute KeyValue conforming to the "tls.client.ja3"
-// semantic conventions. It represents a hash that identifies clients based on
-// how they perform an SSL/TLS handshake.
-func TLSClientJa3(val string) attribute.KeyValue {
- return TLSClientJa3Key.String(val)
-}
-
-// TLSClientNotAfter returns an attribute KeyValue conforming to the
-// "tls.client.not_after" semantic conventions. It represents the date/Time
-// indicating when client certificate is no longer considered valid.
-func TLSClientNotAfter(val string) attribute.KeyValue {
- return TLSClientNotAfterKey.String(val)
-}
-
-// TLSClientNotBefore returns an attribute KeyValue conforming to the
-// "tls.client.not_before" semantic conventions. It represents the date/Time
-// indicating when client certificate is first considered valid.
-func TLSClientNotBefore(val string) attribute.KeyValue {
- return TLSClientNotBeforeKey.String(val)
-}
-
-// TLSClientSubject returns an attribute KeyValue conforming to the
-// "tls.client.subject" semantic conventions. It represents the distinguished
-// name of subject of the x.509 certificate presented by the client.
-func TLSClientSubject(val string) attribute.KeyValue {
- return TLSClientSubjectKey.String(val)
-}
-
-// TLSClientSupportedCiphers returns an attribute KeyValue conforming to the
-// "tls.client.supported_ciphers" semantic conventions. It represents the array
-// of ciphers offered by the client during the client hello.
-func TLSClientSupportedCiphers(val ...string) attribute.KeyValue {
- return TLSClientSupportedCiphersKey.StringSlice(val)
-}
-
-// TLSCurve returns an attribute KeyValue conforming to the "tls.curve" semantic
-// conventions. It represents the string indicating the curve used for the given
-// cipher, when applicable.
-func TLSCurve(val string) attribute.KeyValue {
- return TLSCurveKey.String(val)
-}
-
-// TLSEstablished returns an attribute KeyValue conforming to the
-// "tls.established" semantic conventions. It represents the boolean flag
-// indicating if the TLS negotiation was successful and transitioned to an
-// encrypted tunnel.
-func TLSEstablished(val bool) attribute.KeyValue {
- return TLSEstablishedKey.Bool(val)
-}
-
-// TLSNextProtocol returns an attribute KeyValue conforming to the
-// "tls.next_protocol" semantic conventions. It represents the string indicating
-// the protocol being tunneled. Per the values in the [IANA registry], this
-// string should be lower case.
-//
-// [IANA registry]: https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
-func TLSNextProtocol(val string) attribute.KeyValue {
- return TLSNextProtocolKey.String(val)
-}
-
-// TLSProtocolVersion returns an attribute KeyValue conforming to the
-// "tls.protocol.version" semantic conventions. It represents the numeric part of
-// the version parsed from the original string of the negotiated
-// [SSL/TLS protocol version].
-//
-// [SSL/TLS protocol version]: https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES
-func TLSProtocolVersion(val string) attribute.KeyValue {
- return TLSProtocolVersionKey.String(val)
-}
-
-// TLSResumed returns an attribute KeyValue conforming to the "tls.resumed"
-// semantic conventions. It represents the boolean flag indicating if this TLS
-// connection was resumed from an existing TLS negotiation.
-func TLSResumed(val bool) attribute.KeyValue {
- return TLSResumedKey.Bool(val)
-}
-
-// TLSServerCertificate returns an attribute KeyValue conforming to the
-// "tls.server.certificate" semantic conventions. It represents the pEM-encoded
-// stand-alone certificate offered by the server. This is usually
-// mutually-exclusive of `server.certificate_chain` since this value also exists
-// in that list.
-func TLSServerCertificate(val string) attribute.KeyValue {
- return TLSServerCertificateKey.String(val)
-}
-
-// TLSServerCertificateChain returns an attribute KeyValue conforming to the
-// "tls.server.certificate_chain" semantic conventions. It represents the array
-// of PEM-encoded certificates that make up the certificate chain offered by the
-// server. This is usually mutually-exclusive of `server.certificate` since that
-// value should be the first certificate in the chain.
-func TLSServerCertificateChain(val ...string) attribute.KeyValue {
- return TLSServerCertificateChainKey.StringSlice(val)
-}
-
-// TLSServerHashMd5 returns an attribute KeyValue conforming to the
-// "tls.server.hash.md5" semantic conventions. It represents the certificate
-// fingerprint using the MD5 digest of DER-encoded version of certificate offered
-// by the server. For consistency with other hash values, this value should be
-// formatted as an uppercase hash.
-func TLSServerHashMd5(val string) attribute.KeyValue {
- return TLSServerHashMd5Key.String(val)
-}
-
-// TLSServerHashSha1 returns an attribute KeyValue conforming to the
-// "tls.server.hash.sha1" semantic conventions. It represents the certificate
-// fingerprint using the SHA1 digest of DER-encoded version of certificate
-// offered by the server. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSServerHashSha1(val string) attribute.KeyValue {
- return TLSServerHashSha1Key.String(val)
-}
-
-// TLSServerHashSha256 returns an attribute KeyValue conforming to the
-// "tls.server.hash.sha256" semantic conventions. It represents the certificate
-// fingerprint using the SHA256 digest of DER-encoded version of certificate
-// offered by the server. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSServerHashSha256(val string) attribute.KeyValue {
- return TLSServerHashSha256Key.String(val)
-}
-
-// TLSServerIssuer returns an attribute KeyValue conforming to the
-// "tls.server.issuer" semantic conventions. It represents the distinguished name
-// of [subject] of the issuer of the x.509 certificate presented by the client.
-//
-// [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
-func TLSServerIssuer(val string) attribute.KeyValue {
- return TLSServerIssuerKey.String(val)
-}
-
-// TLSServerJa3s returns an attribute KeyValue conforming to the
-// "tls.server.ja3s" semantic conventions. It represents a hash that identifies
-// servers based on how they perform an SSL/TLS handshake.
-func TLSServerJa3s(val string) attribute.KeyValue {
- return TLSServerJa3sKey.String(val)
-}
-
-// TLSServerNotAfter returns an attribute KeyValue conforming to the
-// "tls.server.not_after" semantic conventions. It represents the date/Time
-// indicating when server certificate is no longer considered valid.
-func TLSServerNotAfter(val string) attribute.KeyValue {
- return TLSServerNotAfterKey.String(val)
-}
-
-// TLSServerNotBefore returns an attribute KeyValue conforming to the
-// "tls.server.not_before" semantic conventions. It represents the date/Time
-// indicating when server certificate is first considered valid.
-func TLSServerNotBefore(val string) attribute.KeyValue {
- return TLSServerNotBeforeKey.String(val)
-}
-
-// TLSServerSubject returns an attribute KeyValue conforming to the
-// "tls.server.subject" semantic conventions. It represents the distinguished
-// name of subject of the x.509 certificate presented by the server.
-func TLSServerSubject(val string) attribute.KeyValue {
- return TLSServerSubjectKey.String(val)
-}
-
-// Enum values for tls.protocol.name
-var (
- // ssl
- // Stability: development
- TLSProtocolNameSsl = TLSProtocolNameKey.String("ssl")
- // tls
- // Stability: development
- TLSProtocolNameTLS = TLSProtocolNameKey.String("tls")
-)
-
-// Namespace: url
-const (
- // URLDomainKey is the attribute Key conforming to the "url.domain" semantic
- // conventions. It represents the domain extracted from the `url.full`, such as
- // "opentelemetry.io".
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "www.foo.bar", "opentelemetry.io", "3.12.167.2",
- // "[1080:0:0:0:8:800:200C:417A]"
- // Note: In some cases a URL may refer to an IP and/or port directly, without a
- // domain name. In this case, the IP address would go to the domain field. If
- // the URL contains a [literal IPv6 address] enclosed by `[` and `]`, the `[`
- // and `]` characters should also be captured in the domain field.
- //
- // [literal IPv6 address]: https://www.rfc-editor.org/rfc/rfc2732#section-2
- URLDomainKey = attribute.Key("url.domain")
-
- // URLExtensionKey is the attribute Key conforming to the "url.extension"
- // semantic conventions. It represents the file extension extracted from the
- // `url.full`, excluding the leading dot.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "png", "gz"
- // Note: The file extension is only set if it exists, as not every url has a
- // file extension. When the file name has multiple extensions `example.tar.gz`,
- // only the last one should be captured `gz`, not `tar.gz`.
- URLExtensionKey = attribute.Key("url.extension")
-
- // URLFragmentKey is the attribute Key conforming to the "url.fragment" semantic
- // conventions. It represents the [URI fragment] component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "SemConv"
- //
- // [URI fragment]: https://www.rfc-editor.org/rfc/rfc3986#section-3.5
- URLFragmentKey = attribute.Key("url.fragment")
-
- // URLFullKey is the attribute Key conforming to the "url.full" semantic
- // conventions. It represents the absolute URL describing a network resource
- // according to [RFC3986].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "https://www.foo.bar/search?q=OpenTelemetry#SemConv", "//localhost"
- // Note: For network calls, URL usually has
- // `scheme://host[:port][path][?query][#fragment]` format, where the fragment
- // is not transmitted over HTTP, but if it is known, it SHOULD be included
- // nevertheless.
- //
- // `url.full` MUST NOT contain credentials passed via URL in form of
- // `https://username:password@www.example.com/`.
- // In such case username and password SHOULD be redacted and attribute's value
- // SHOULD be `https://REDACTED:REDACTED@www.example.com/`.
- //
- // `url.full` SHOULD capture the absolute URL when it is available (or can be
- // reconstructed).
- //
- // Sensitive content provided in `url.full` SHOULD be scrubbed when
- // instrumentations can identify it.
- //
- //
- // Query string values for the following keys SHOULD be redacted by default and
- // replaced by the
- // value `REDACTED`:
- //
- // - [`AWSAccessKeyId`]
- // - [`Signature`]
- // - [`sig`]
- // - [`X-Goog-Signature`]
- //
- // This list is subject to change over time.
- //
- // When a query string value is redacted, the query string key SHOULD still be
- // preserved, e.g.
- // `https://www.example.com/path?color=blue&sig=REDACTED`.
- //
- // [RFC3986]: https://www.rfc-editor.org/rfc/rfc3986
- // [`AWSAccessKeyId`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
- // [`Signature`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
- // [`sig`]: https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token
- // [`X-Goog-Signature`]: https://cloud.google.com/storage/docs/access-control/signed-urls
- URLFullKey = attribute.Key("url.full")
-
- // URLOriginalKey is the attribute Key conforming to the "url.original" semantic
- // conventions. It represents the unmodified original URL as seen in the event
- // source.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "https://www.foo.bar/search?q=OpenTelemetry#SemConv",
- // "search?q=OpenTelemetry"
- // Note: In network monitoring, the observed URL may be a full URL, whereas in
- // access logs, the URL is often just represented as a path. This field is meant
- // to represent the URL as it was observed, complete or not.
- // `url.original` might contain credentials passed via URL in form of
- // `https://username:password@www.example.com/`. In such case password and
- // username SHOULD NOT be redacted and attribute's value SHOULD remain the same.
- URLOriginalKey = attribute.Key("url.original")
-
- // URLPathKey is the attribute Key conforming to the "url.path" semantic
- // conventions. It represents the [URI path] component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "/search"
- // Note: Sensitive content provided in `url.path` SHOULD be scrubbed when
- // instrumentations can identify it.
- //
- // [URI path]: https://www.rfc-editor.org/rfc/rfc3986#section-3.3
- URLPathKey = attribute.Key("url.path")
-
- // URLPortKey is the attribute Key conforming to the "url.port" semantic
- // conventions. It represents the port extracted from the `url.full`.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 443
- URLPortKey = attribute.Key("url.port")
-
- // URLQueryKey is the attribute Key conforming to the "url.query" semantic
- // conventions. It represents the [URI query] component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "q=OpenTelemetry"
- // Note: Sensitive content provided in `url.query` SHOULD be scrubbed when
- // instrumentations can identify it.
- //
- //
- // Query string values for the following keys SHOULD be redacted by default and
- // replaced by the value `REDACTED`:
- //
- // - [`AWSAccessKeyId`]
- // - [`Signature`]
- // - [`sig`]
- // - [`X-Goog-Signature`]
- //
- // This list is subject to change over time.
- //
- // When a query string value is redacted, the query string key SHOULD still be
- // preserved, e.g.
- // `q=OpenTelemetry&sig=REDACTED`.
- //
- // [URI query]: https://www.rfc-editor.org/rfc/rfc3986#section-3.4
- // [`AWSAccessKeyId`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
- // [`Signature`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
- // [`sig`]: https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token
- // [`X-Goog-Signature`]: https://cloud.google.com/storage/docs/access-control/signed-urls
- URLQueryKey = attribute.Key("url.query")
-
- // URLRegisteredDomainKey is the attribute Key conforming to the
- // "url.registered_domain" semantic conventions. It represents the highest
- // registered url domain, stripped of the subdomain.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "example.com", "foo.co.uk"
- // Note: This value can be determined precisely with the [public suffix list].
- // For example, the registered domain for `foo.example.com` is `example.com`.
- // Trying to approximate this by simply taking the last two labels will not work
- // well for TLDs such as `co.uk`.
- //
- // [public suffix list]: http://publicsuffix.org
- URLRegisteredDomainKey = attribute.Key("url.registered_domain")
-
- // URLSchemeKey is the attribute Key conforming to the "url.scheme" semantic
- // conventions. It represents the [URI scheme] component identifying the used
- // protocol.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "https", "ftp", "telnet"
- //
- // [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1
- URLSchemeKey = attribute.Key("url.scheme")
-
- // URLSubdomainKey is the attribute Key conforming to the "url.subdomain"
- // semantic conventions. It represents the subdomain portion of a fully
- // qualified domain name includes all of the names except the host name under
- // the registered_domain. In a partially qualified domain, or if the
- // qualification level of the full name cannot be determined, subdomain contains
- // all of the names below the registered domain.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "east", "sub2.sub1"
- // Note: The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the
- // domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the
- // subdomain field should contain `sub2.sub1`, with no trailing period.
- URLSubdomainKey = attribute.Key("url.subdomain")
-
- // URLTemplateKey is the attribute Key conforming to the "url.template" semantic
- // conventions. It represents the low-cardinality template of an
- // [absolute path reference].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/users/{id}", "/users/:id", "/users?id={id}"
- //
- // [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2
- URLTemplateKey = attribute.Key("url.template")
-
- // URLTopLevelDomainKey is the attribute Key conforming to the
- // "url.top_level_domain" semantic conventions. It represents the effective top
- // level domain (eTLD), also known as the domain suffix, is the last part of the
- // domain name. For example, the top level domain for example.com is `com`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "com", "co.uk"
- // Note: This value can be determined precisely with the [public suffix list].
- //
- // [public suffix list]: http://publicsuffix.org
- URLTopLevelDomainKey = attribute.Key("url.top_level_domain")
-)
-
-// URLDomain returns an attribute KeyValue conforming to the "url.domain"
-// semantic conventions. It represents the domain extracted from the `url.full`,
-// such as "opentelemetry.io".
-func URLDomain(val string) attribute.KeyValue {
- return URLDomainKey.String(val)
-}
-
-// URLExtension returns an attribute KeyValue conforming to the "url.extension"
-// semantic conventions. It represents the file extension extracted from the
-// `url.full`, excluding the leading dot.
-func URLExtension(val string) attribute.KeyValue {
- return URLExtensionKey.String(val)
-}
-
-// URLFragment returns an attribute KeyValue conforming to the "url.fragment"
-// semantic conventions. It represents the [URI fragment] component.
-//
-// [URI fragment]: https://www.rfc-editor.org/rfc/rfc3986#section-3.5
-func URLFragment(val string) attribute.KeyValue {
- return URLFragmentKey.String(val)
-}
-
-// URLFull returns an attribute KeyValue conforming to the "url.full" semantic
-// conventions. It represents the absolute URL describing a network resource
-// according to [RFC3986].
-//
-// [RFC3986]: https://www.rfc-editor.org/rfc/rfc3986
-func URLFull(val string) attribute.KeyValue {
- return URLFullKey.String(val)
-}
-
-// URLOriginal returns an attribute KeyValue conforming to the "url.original"
-// semantic conventions. It represents the unmodified original URL as seen in the
-// event source.
-func URLOriginal(val string) attribute.KeyValue {
- return URLOriginalKey.String(val)
-}
-
-// URLPath returns an attribute KeyValue conforming to the "url.path" semantic
-// conventions. It represents the [URI path] component.
-//
-// [URI path]: https://www.rfc-editor.org/rfc/rfc3986#section-3.3
-func URLPath(val string) attribute.KeyValue {
- return URLPathKey.String(val)
-}
-
-// URLPort returns an attribute KeyValue conforming to the "url.port" semantic
-// conventions. It represents the port extracted from the `url.full`.
-func URLPort(val int) attribute.KeyValue {
- return URLPortKey.Int(val)
-}
-
-// URLQuery returns an attribute KeyValue conforming to the "url.query" semantic
-// conventions. It represents the [URI query] component.
-//
-// [URI query]: https://www.rfc-editor.org/rfc/rfc3986#section-3.4
-func URLQuery(val string) attribute.KeyValue {
- return URLQueryKey.String(val)
-}
-
-// URLRegisteredDomain returns an attribute KeyValue conforming to the
-// "url.registered_domain" semantic conventions. It represents the highest
-// registered url domain, stripped of the subdomain.
-func URLRegisteredDomain(val string) attribute.KeyValue {
- return URLRegisteredDomainKey.String(val)
-}
-
-// URLScheme returns an attribute KeyValue conforming to the "url.scheme"
-// semantic conventions. It represents the [URI scheme] component identifying the
-// used protocol.
-//
-// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1
-func URLScheme(val string) attribute.KeyValue {
- return URLSchemeKey.String(val)
-}
-
-// URLSubdomain returns an attribute KeyValue conforming to the "url.subdomain"
-// semantic conventions. It represents the subdomain portion of a fully qualified
-// domain name includes all of the names except the host name under the
-// registered_domain. In a partially qualified domain, or if the qualification
-// level of the full name cannot be determined, subdomain contains all of the
-// names below the registered domain.
-func URLSubdomain(val string) attribute.KeyValue {
- return URLSubdomainKey.String(val)
-}
-
-// URLTemplate returns an attribute KeyValue conforming to the "url.template"
-// semantic conventions. It represents the low-cardinality template of an
-// [absolute path reference].
-//
-// [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2
-func URLTemplate(val string) attribute.KeyValue {
- return URLTemplateKey.String(val)
-}
-
-// URLTopLevelDomain returns an attribute KeyValue conforming to the
-// "url.top_level_domain" semantic conventions. It represents the effective top
-// level domain (eTLD), also known as the domain suffix, is the last part of the
-// domain name. For example, the top level domain for example.com is `com`.
-func URLTopLevelDomain(val string) attribute.KeyValue {
- return URLTopLevelDomainKey.String(val)
-}
-
-// Namespace: user
-const (
- // UserEmailKey is the attribute Key conforming to the "user.email" semantic
- // conventions. It represents the user email address.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "a.einstein@example.com"
- UserEmailKey = attribute.Key("user.email")
-
- // UserFullNameKey is the attribute Key conforming to the "user.full_name"
- // semantic conventions. It represents the user's full name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Albert Einstein"
- UserFullNameKey = attribute.Key("user.full_name")
-
- // UserHashKey is the attribute Key conforming to the "user.hash" semantic
- // conventions. It represents the unique user hash to correlate information for
- // a user in anonymized form.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "364fc68eaf4c8acec74a4e52d7d1feaa"
- // Note: Useful if `user.id` or `user.name` contain confidential information and
- // cannot be used.
- UserHashKey = attribute.Key("user.hash")
-
- // UserIDKey is the attribute Key conforming to the "user.id" semantic
- // conventions. It represents the unique identifier of the user.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "S-1-5-21-202424912787-2692429404-2351956786-1000"
- UserIDKey = attribute.Key("user.id")
-
- // UserNameKey is the attribute Key conforming to the "user.name" semantic
- // conventions. It represents the short name or login/username of the user.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "a.einstein"
- UserNameKey = attribute.Key("user.name")
-
- // UserRolesKey is the attribute Key conforming to the "user.roles" semantic
- // conventions. It represents the array of user roles at the time of the event.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "admin", "reporting_user"
- UserRolesKey = attribute.Key("user.roles")
-)
-
-// UserEmail returns an attribute KeyValue conforming to the "user.email"
-// semantic conventions. It represents the user email address.
-func UserEmail(val string) attribute.KeyValue {
- return UserEmailKey.String(val)
-}
-
-// UserFullName returns an attribute KeyValue conforming to the "user.full_name"
-// semantic conventions. It represents the user's full name.
-func UserFullName(val string) attribute.KeyValue {
- return UserFullNameKey.String(val)
-}
-
-// UserHash returns an attribute KeyValue conforming to the "user.hash" semantic
-// conventions. It represents the unique user hash to correlate information for a
-// user in anonymized form.
-func UserHash(val string) attribute.KeyValue {
- return UserHashKey.String(val)
-}
-
-// UserID returns an attribute KeyValue conforming to the "user.id" semantic
-// conventions. It represents the unique identifier of the user.
-func UserID(val string) attribute.KeyValue {
- return UserIDKey.String(val)
-}
-
-// UserName returns an attribute KeyValue conforming to the "user.name" semantic
-// conventions. It represents the short name or login/username of the user.
-func UserName(val string) attribute.KeyValue {
- return UserNameKey.String(val)
-}
-
-// UserRoles returns an attribute KeyValue conforming to the "user.roles"
-// semantic conventions. It represents the array of user roles at the time of the
-// event.
-func UserRoles(val ...string) attribute.KeyValue {
- return UserRolesKey.StringSlice(val)
-}
-
-// Namespace: user_agent
-const (
- // UserAgentNameKey is the attribute Key conforming to the "user_agent.name"
- // semantic conventions. It represents the name of the user-agent extracted from
- // original. Usually refers to the browser's name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Safari", "YourApp"
- // Note: [Example] of extracting browser's name from original string. In the
- // case of using a user-agent for non-browser products, such as microservices
- // with multiple names/versions inside the `user_agent.original`, the most
- // significant name SHOULD be selected. In such a scenario it should align with
- // `user_agent.version`
- //
- // [Example]: https://www.whatsmyua.info
- UserAgentNameKey = attribute.Key("user_agent.name")
-
- // UserAgentOriginalKey is the attribute Key conforming to the
- // "user_agent.original" semantic conventions. It represents the value of the
- // [HTTP User-Agent] header sent by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "CERN-LineMode/2.15 libwww/2.17b3", "Mozilla/5.0 (iPhone; CPU
- // iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)
- // Version/14.1.2 Mobile/15E148 Safari/604.1", "YourApp/1.0.0
- // grpc-java-okhttp/1.27.2"
- //
- // [HTTP User-Agent]: https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent
- UserAgentOriginalKey = attribute.Key("user_agent.original")
-
- // UserAgentSyntheticTypeKey is the attribute Key conforming to the
- // "user_agent.synthetic.type" semantic conventions. It represents the specifies
- // the category of synthetic traffic, such as tests or bots.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: This attribute MAY be derived from the contents of the
- // `user_agent.original` attribute. Components that populate the attribute are
- // responsible for determining what they consider to be synthetic bot or test
- // traffic. This attribute can either be set for self-identification purposes,
- // or on telemetry detected to be generated as a result of a synthetic request.
- // This attribute is useful for distinguishing between genuine client traffic
- // and synthetic traffic generated by bots or tests.
- UserAgentSyntheticTypeKey = attribute.Key("user_agent.synthetic.type")
-
- // UserAgentVersionKey is the attribute Key conforming to the
- // "user_agent.version" semantic conventions. It represents the version of the
- // user-agent extracted from original. Usually refers to the browser's version.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "14.1.2", "1.0.0"
- // Note: [Example] of extracting browser's version from original string. In the
- // case of using a user-agent for non-browser products, such as microservices
- // with multiple names/versions inside the `user_agent.original`, the most
- // significant version SHOULD be selected. In such a scenario it should align
- // with `user_agent.name`
- //
- // [Example]: https://www.whatsmyua.info
- UserAgentVersionKey = attribute.Key("user_agent.version")
-)
-
-// UserAgentName returns an attribute KeyValue conforming to the
-// "user_agent.name" semantic conventions. It represents the name of the
-// user-agent extracted from original. Usually refers to the browser's name.
-func UserAgentName(val string) attribute.KeyValue {
- return UserAgentNameKey.String(val)
-}
-
-// UserAgentOriginal returns an attribute KeyValue conforming to the
-// "user_agent.original" semantic conventions. It represents the value of the
-// [HTTP User-Agent] header sent by the client.
-//
-// [HTTP User-Agent]: https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent
-func UserAgentOriginal(val string) attribute.KeyValue {
- return UserAgentOriginalKey.String(val)
-}
-
-// UserAgentVersion returns an attribute KeyValue conforming to the
-// "user_agent.version" semantic conventions. It represents the version of the
-// user-agent extracted from original. Usually refers to the browser's version.
-func UserAgentVersion(val string) attribute.KeyValue {
- return UserAgentVersionKey.String(val)
-}
-
-// Enum values for user_agent.synthetic.type
-var (
- // Bot source.
- // Stability: development
- UserAgentSyntheticTypeBot = UserAgentSyntheticTypeKey.String("bot")
- // Synthetic test source.
- // Stability: development
- UserAgentSyntheticTypeTest = UserAgentSyntheticTypeKey.String("test")
-)
-
-// Namespace: vcs
-const (
- // VCSChangeIDKey is the attribute Key conforming to the "vcs.change.id"
- // semantic conventions. It represents the ID of the change (pull request/merge
- // request/changelist) if applicable. This is usually a unique (within
- // repository) identifier generated by the VCS system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "123"
- VCSChangeIDKey = attribute.Key("vcs.change.id")
-
- // VCSChangeStateKey is the attribute Key conforming to the "vcs.change.state"
- // semantic conventions. It represents the state of the change (pull
- // request/merge request/changelist).
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "open", "closed", "merged"
- VCSChangeStateKey = attribute.Key("vcs.change.state")
-
- // VCSChangeTitleKey is the attribute Key conforming to the "vcs.change.title"
- // semantic conventions. It represents the human readable title of the change
- // (pull request/merge request/changelist). This title is often a brief summary
- // of the change and may get merged in to a ref as the commit summary.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Fixes broken thing", "feat: add my new feature", "[chore] update
- // dependency"
- VCSChangeTitleKey = attribute.Key("vcs.change.title")
-
- // VCSLineChangeTypeKey is the attribute Key conforming to the
- // "vcs.line_change.type" semantic conventions. It represents the type of line
- // change being measured on a branch or change.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "added", "removed"
- VCSLineChangeTypeKey = attribute.Key("vcs.line_change.type")
-
- // VCSRefBaseNameKey is the attribute Key conforming to the "vcs.ref.base.name"
- // semantic conventions. It represents the name of the [reference] such as
- // **branch** or **tag** in the repository.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-feature-branch", "tag-1-test"
- // Note: `base` refers to the starting point of a change. For example, `main`
- // would be the base reference of type branch if you've created a new
- // reference of type branch from it and created new commits.
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefBaseNameKey = attribute.Key("vcs.ref.base.name")
-
- // VCSRefBaseRevisionKey is the attribute Key conforming to the
- // "vcs.ref.base.revision" semantic conventions. It represents the revision,
- // literally [revised version], The revision most often refers to a commit
- // object in Git, or a revision number in SVN.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc",
- // "main", "123", "HEAD"
- // Note: `base` refers to the starting point of a change. For example, `main`
- // would be the base reference of type branch if you've created a new
- // reference of type branch from it and created new commits. The
- // revision can be a full [hash value (see
- // glossary)],
- // of the recorded change to a ref within a repository pointing to a
- // commit [commit] object. It does
- // not necessarily have to be a hash; it can simply define a [revision
- // number]
- // which is an integer that is monotonically increasing. In cases where
- // it is identical to the `ref.base.name`, it SHOULD still be included.
- // It is up to the implementer to decide which value to set as the
- // revision based on the VCS system and situational context.
- //
- // [revised version]: https://www.merriam-webster.com/dictionary/revision
- // [hash value (see
- // glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
- // [commit]: https://git-scm.com/docs/git-commit
- // [revision
- // number]: https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html
- VCSRefBaseRevisionKey = attribute.Key("vcs.ref.base.revision")
-
- // VCSRefBaseTypeKey is the attribute Key conforming to the "vcs.ref.base.type"
- // semantic conventions. It represents the type of the [reference] in the
- // repository.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "branch", "tag"
- // Note: `base` refers to the starting point of a change. For example, `main`
- // would be the base reference of type branch if you've created a new
- // reference of type branch from it and created new commits.
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefBaseTypeKey = attribute.Key("vcs.ref.base.type")
-
- // VCSRefHeadNameKey is the attribute Key conforming to the "vcs.ref.head.name"
- // semantic conventions. It represents the name of the [reference] such as
- // **branch** or **tag** in the repository.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-feature-branch", "tag-1-test"
- // Note: `head` refers to where you are right now; the current reference at a
- // given time.
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefHeadNameKey = attribute.Key("vcs.ref.head.name")
-
- // VCSRefHeadRevisionKey is the attribute Key conforming to the
- // "vcs.ref.head.revision" semantic conventions. It represents the revision,
- // literally [revised version], The revision most often refers to a commit
- // object in Git, or a revision number in SVN.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc",
- // "main", "123", "HEAD"
- // Note: `head` refers to where you are right now; the current reference at a
- // given time.The revision can be a full [hash value (see
- // glossary)],
- // of the recorded change to a ref within a repository pointing to a
- // commit [commit] object. It does
- // not necessarily have to be a hash; it can simply define a [revision
- // number]
- // which is an integer that is monotonically increasing. In cases where
- // it is identical to the `ref.head.name`, it SHOULD still be included.
- // It is up to the implementer to decide which value to set as the
- // revision based on the VCS system and situational context.
- //
- // [revised version]: https://www.merriam-webster.com/dictionary/revision
- // [hash value (see
- // glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
- // [commit]: https://git-scm.com/docs/git-commit
- // [revision
- // number]: https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html
- VCSRefHeadRevisionKey = attribute.Key("vcs.ref.head.revision")
-
- // VCSRefHeadTypeKey is the attribute Key conforming to the "vcs.ref.head.type"
- // semantic conventions. It represents the type of the [reference] in the
- // repository.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "branch", "tag"
- // Note: `head` refers to where you are right now; the current reference at a
- // given time.
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefHeadTypeKey = attribute.Key("vcs.ref.head.type")
-
- // VCSRefTypeKey is the attribute Key conforming to the "vcs.ref.type" semantic
- // conventions. It represents the type of the [reference] in the repository.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "branch", "tag"
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefTypeKey = attribute.Key("vcs.ref.type")
-
- // VCSRepositoryNameKey is the attribute Key conforming to the
- // "vcs.repository.name" semantic conventions. It represents the human readable
- // name of the repository. It SHOULD NOT include any additional identifier like
- // Group/SubGroup in GitLab or organization in GitHub.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "semantic-conventions", "my-cool-repo"
- // Note: Due to it only being the name, it can clash with forks of the same
- // repository if collecting telemetry across multiple orgs or groups in
- // the same backends.
- VCSRepositoryNameKey = attribute.Key("vcs.repository.name")
-
- // VCSRepositoryURLFullKey is the attribute Key conforming to the
- // "vcs.repository.url.full" semantic conventions. It represents the
- // [canonical URL] of the repository providing the complete HTTP(S) address in
- // order to locate and identify the repository through a browser.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "https://github.com/opentelemetry/open-telemetry-collector-contrib",
- // "https://gitlab.com/my-org/my-project/my-projects-project/repo"
- // Note: In Git Version Control Systems, the canonical URL SHOULD NOT include
- // the `.git` extension.
- //
- // [canonical URL]: https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.
- VCSRepositoryURLFullKey = attribute.Key("vcs.repository.url.full")
-
- // VCSRevisionDeltaDirectionKey is the attribute Key conforming to the
- // "vcs.revision_delta.direction" semantic conventions. It represents the type
- // of revision comparison.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ahead", "behind"
- VCSRevisionDeltaDirectionKey = attribute.Key("vcs.revision_delta.direction")
-)
-
-// VCSChangeID returns an attribute KeyValue conforming to the "vcs.change.id"
-// semantic conventions. It represents the ID of the change (pull request/merge
-// request/changelist) if applicable. This is usually a unique (within
-// repository) identifier generated by the VCS system.
-func VCSChangeID(val string) attribute.KeyValue {
- return VCSChangeIDKey.String(val)
-}
-
-// VCSChangeTitle returns an attribute KeyValue conforming to the
-// "vcs.change.title" semantic conventions. It represents the human readable
-// title of the change (pull request/merge request/changelist). This title is
-// often a brief summary of the change and may get merged in to a ref as the
-// commit summary.
-func VCSChangeTitle(val string) attribute.KeyValue {
- return VCSChangeTitleKey.String(val)
-}
-
-// VCSRefBaseName returns an attribute KeyValue conforming to the
-// "vcs.ref.base.name" semantic conventions. It represents the name of the
-// [reference] such as **branch** or **tag** in the repository.
-//
-// [reference]: https://git-scm.com/docs/gitglossary#def_ref
-func VCSRefBaseName(val string) attribute.KeyValue {
- return VCSRefBaseNameKey.String(val)
-}
-
-// VCSRefBaseRevision returns an attribute KeyValue conforming to the
-// "vcs.ref.base.revision" semantic conventions. It represents the revision,
-// literally [revised version], The revision most often refers to a commit object
-// in Git, or a revision number in SVN.
-//
-// [revised version]: https://www.merriam-webster.com/dictionary/revision
-func VCSRefBaseRevision(val string) attribute.KeyValue {
- return VCSRefBaseRevisionKey.String(val)
-}
-
-// VCSRefHeadName returns an attribute KeyValue conforming to the
-// "vcs.ref.head.name" semantic conventions. It represents the name of the
-// [reference] such as **branch** or **tag** in the repository.
-//
-// [reference]: https://git-scm.com/docs/gitglossary#def_ref
-func VCSRefHeadName(val string) attribute.KeyValue {
- return VCSRefHeadNameKey.String(val)
-}
-
-// VCSRefHeadRevision returns an attribute KeyValue conforming to the
-// "vcs.ref.head.revision" semantic conventions. It represents the revision,
-// literally [revised version], The revision most often refers to a commit object
-// in Git, or a revision number in SVN.
-//
-// [revised version]: https://www.merriam-webster.com/dictionary/revision
-func VCSRefHeadRevision(val string) attribute.KeyValue {
- return VCSRefHeadRevisionKey.String(val)
-}
-
-// VCSRepositoryName returns an attribute KeyValue conforming to the
-// "vcs.repository.name" semantic conventions. It represents the human readable
-// name of the repository. It SHOULD NOT include any additional identifier like
-// Group/SubGroup in GitLab or organization in GitHub.
-func VCSRepositoryName(val string) attribute.KeyValue {
- return VCSRepositoryNameKey.String(val)
-}
-
-// VCSRepositoryURLFull returns an attribute KeyValue conforming to the
-// "vcs.repository.url.full" semantic conventions. It represents the
-// [canonical URL] of the repository providing the complete HTTP(S) address in
-// order to locate and identify the repository through a browser.
-//
-// [canonical URL]: https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.
-func VCSRepositoryURLFull(val string) attribute.KeyValue {
- return VCSRepositoryURLFullKey.String(val)
-}
-
-// Enum values for vcs.change.state
-var (
- // Open means the change is currently active and under review. It hasn't been
- // merged into the target branch yet, and it's still possible to make changes or
- // add comments.
- // Stability: development
- VCSChangeStateOpen = VCSChangeStateKey.String("open")
- // WIP (work-in-progress, draft) means the change is still in progress and not
- // yet ready for a full review. It might still undergo significant changes.
- // Stability: development
- VCSChangeStateWip = VCSChangeStateKey.String("wip")
- // Closed means the merge request has been closed without merging. This can
- // happen for various reasons, such as the changes being deemed unnecessary, the
- // issue being resolved in another way, or the author deciding to withdraw the
- // request.
- // Stability: development
- VCSChangeStateClosed = VCSChangeStateKey.String("closed")
- // Merged indicates that the change has been successfully integrated into the
- // target codebase.
- // Stability: development
- VCSChangeStateMerged = VCSChangeStateKey.String("merged")
-)
-
-// Enum values for vcs.line_change.type
-var (
- // How many lines were added.
- // Stability: development
- VCSLineChangeTypeAdded = VCSLineChangeTypeKey.String("added")
- // How many lines were removed.
- // Stability: development
- VCSLineChangeTypeRemoved = VCSLineChangeTypeKey.String("removed")
-)
-
-// Enum values for vcs.ref.base.type
-var (
- // [branch]
- // Stability: development
- //
- // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch
- VCSRefBaseTypeBranch = VCSRefBaseTypeKey.String("branch")
- // [tag]
- // Stability: development
- //
- // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag
- VCSRefBaseTypeTag = VCSRefBaseTypeKey.String("tag")
-)
-
-// Enum values for vcs.ref.head.type
-var (
- // [branch]
- // Stability: development
- //
- // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch
- VCSRefHeadTypeBranch = VCSRefHeadTypeKey.String("branch")
- // [tag]
- // Stability: development
- //
- // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag
- VCSRefHeadTypeTag = VCSRefHeadTypeKey.String("tag")
-)
-
-// Enum values for vcs.ref.type
-var (
- // [branch]
- // Stability: development
- //
- // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch
- VCSRefTypeBranch = VCSRefTypeKey.String("branch")
- // [tag]
- // Stability: development
- //
- // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag
- VCSRefTypeTag = VCSRefTypeKey.String("tag")
-)
-
-// Enum values for vcs.revision_delta.direction
-var (
- // How many revisions the change is behind the target ref.
- // Stability: development
- VCSRevisionDeltaDirectionBehind = VCSRevisionDeltaDirectionKey.String("behind")
- // How many revisions the change is ahead of the target ref.
- // Stability: development
- VCSRevisionDeltaDirectionAhead = VCSRevisionDeltaDirectionKey.String("ahead")
-)
-
-// Namespace: webengine
-const (
- // WebEngineDescriptionKey is the attribute Key conforming to the
- // "webengine.description" semantic conventions. It represents the additional
- // description of the web engine (e.g. detailed version and edition
- // information).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) -
- // 2.2.2.Final"
- WebEngineDescriptionKey = attribute.Key("webengine.description")
-
- // WebEngineNameKey is the attribute Key conforming to the "webengine.name"
- // semantic conventions. It represents the name of the web engine.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "WildFly"
- WebEngineNameKey = attribute.Key("webengine.name")
-
- // WebEngineVersionKey is the attribute Key conforming to the
- // "webengine.version" semantic conventions. It represents the version of the
- // web engine.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "21.0.0"
- WebEngineVersionKey = attribute.Key("webengine.version")
-)
-
-// WebEngineDescription returns an attribute KeyValue conforming to the
-// "webengine.description" semantic conventions. It represents the additional
-// description of the web engine (e.g. detailed version and edition information).
-func WebEngineDescription(val string) attribute.KeyValue {
- return WebEngineDescriptionKey.String(val)
-}
-
-// WebEngineName returns an attribute KeyValue conforming to the "webengine.name"
-// semantic conventions. It represents the name of the web engine.
-func WebEngineName(val string) attribute.KeyValue {
- return WebEngineNameKey.String(val)
-}
-
-// WebEngineVersion returns an attribute KeyValue conforming to the
-// "webengine.version" semantic conventions. It represents the version of the web
-// engine.
-func WebEngineVersion(val string) attribute.KeyValue {
- return WebEngineVersionKey.String(val)
-}
\ No newline at end of file
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/doc.go b/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/doc.go
deleted file mode 100644
index 787f5b0f4..000000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/doc.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-// Package semconv implements OpenTelemetry semantic conventions.
-//
-// OpenTelemetry semantic conventions are agreed standardized naming
-// patterns for OpenTelemetry things. This package represents the v1.30.0
-// version of the OpenTelemetry semantic conventions.
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.30.0"
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/exception.go b/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/exception.go
deleted file mode 100644
index 4332a795f..000000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/exception.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.30.0"
-
-const (
- // ExceptionEventName is the name of the Span event representing an exception.
- ExceptionEventName = "exception"
-)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/metric.go b/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/metric.go
deleted file mode 100644
index fe6beb91d..000000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/metric.go
+++ /dev/null
@@ -1,1750 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.30.0"
-
-const (
- // AzureCosmosDBClientActiveInstanceCount is the metric conforming to the
- // "azure.cosmosdb.client.active_instance.count" semantic conventions. It
- // represents the number of active client instances.
- // Instrument: updowncounter
- // Unit: {instance}
- // Stability: development
- AzureCosmosDBClientActiveInstanceCountName = "azure.cosmosdb.client.active_instance.count"
- AzureCosmosDBClientActiveInstanceCountUnit = "{instance}"
- AzureCosmosDBClientActiveInstanceCountDescription = "Number of active client instances"
- // AzureCosmosDBClientOperationRequestCharge is the metric conforming to the
- // "azure.cosmosdb.client.operation.request_charge" semantic conventions. It
- // represents the [Request units] consumed by the operation.
- //
- // [Request units]: https://learn.microsoft.com/azure/cosmos-db/request-units
- // Instrument: histogram
- // Unit: {request_unit}
- // Stability: development
- AzureCosmosDBClientOperationRequestChargeName = "azure.cosmosdb.client.operation.request_charge"
- AzureCosmosDBClientOperationRequestChargeUnit = "{request_unit}"
- AzureCosmosDBClientOperationRequestChargeDescription = "[Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation"
- // CICDPipelineRunActive is the metric conforming to the
- // "cicd.pipeline.run.active" semantic conventions. It represents the number of
- // pipeline runs currently active in the system by state.
- // Instrument: updowncounter
- // Unit: {run}
- // Stability: development
- CICDPipelineRunActiveName = "cicd.pipeline.run.active"
- CICDPipelineRunActiveUnit = "{run}"
- CICDPipelineRunActiveDescription = "The number of pipeline runs currently active in the system by state."
- // CICDPipelineRunDuration is the metric conforming to the
- // "cicd.pipeline.run.duration" semantic conventions. It represents the
- // duration of a pipeline run grouped by pipeline, state and result.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- CICDPipelineRunDurationName = "cicd.pipeline.run.duration"
- CICDPipelineRunDurationUnit = "s"
- CICDPipelineRunDurationDescription = "Duration of a pipeline run grouped by pipeline, state and result."
- // CICDPipelineRunErrors is the metric conforming to the
- // "cicd.pipeline.run.errors" semantic conventions. It represents the number of
- // errors encountered in pipeline runs (eg. compile, test failures).
- // Instrument: counter
- // Unit: {error}
- // Stability: development
- CICDPipelineRunErrorsName = "cicd.pipeline.run.errors"
- CICDPipelineRunErrorsUnit = "{error}"
- CICDPipelineRunErrorsDescription = "The number of errors encountered in pipeline runs (eg. compile, test failures)."
- // CICDSystemErrors is the metric conforming to the "cicd.system.errors"
- // semantic conventions. It represents the number of errors in a component of
- // the CICD system (eg. controller, scheduler, agent).
- // Instrument: counter
- // Unit: {error}
- // Stability: development
- CICDSystemErrorsName = "cicd.system.errors"
- CICDSystemErrorsUnit = "{error}"
- CICDSystemErrorsDescription = "The number of errors in a component of the CICD system (eg. controller, scheduler, agent)."
- // CICDWorkerCount is the metric conforming to the "cicd.worker.count" semantic
- // conventions. It represents the number of workers on the CICD system by
- // state.
- // Instrument: updowncounter
- // Unit: {count}
- // Stability: development
- CICDWorkerCountName = "cicd.worker.count"
- CICDWorkerCountUnit = "{count}"
- CICDWorkerCountDescription = "The number of workers on the CICD system by state."
- // ContainerCPUTime is the metric conforming to the "container.cpu.time"
- // semantic conventions. It represents the total CPU time consumed.
- // Instrument: counter
- // Unit: s
- // Stability: development
- ContainerCPUTimeName = "container.cpu.time"
- ContainerCPUTimeUnit = "s"
- ContainerCPUTimeDescription = "Total CPU time consumed"
- // ContainerCPUUsage is the metric conforming to the "container.cpu.usage"
- // semantic conventions. It represents the container's CPU usage, measured in
- // cpus. Range from 0 to the number of allocatable CPUs.
- // Instrument: gauge
- // Unit: {cpu}
- // Stability: development
- ContainerCPUUsageName = "container.cpu.usage"
- ContainerCPUUsageUnit = "{cpu}"
- ContainerCPUUsageDescription = "Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs"
- // ContainerDiskIo is the metric conforming to the "container.disk.io" semantic
- // conventions. It represents the disk bytes for the container.
- // Instrument: counter
- // Unit: By
- // Stability: development
- ContainerDiskIoName = "container.disk.io"
- ContainerDiskIoUnit = "By"
- ContainerDiskIoDescription = "Disk bytes for the container."
- // ContainerMemoryUsage is the metric conforming to the
- // "container.memory.usage" semantic conventions. It represents the memory
- // usage of the container.
- // Instrument: counter
- // Unit: By
- // Stability: development
- ContainerMemoryUsageName = "container.memory.usage"
- ContainerMemoryUsageUnit = "By"
- ContainerMemoryUsageDescription = "Memory usage of the container."
- // ContainerNetworkIo is the metric conforming to the "container.network.io"
- // semantic conventions. It represents the network bytes for the container.
- // Instrument: counter
- // Unit: By
- // Stability: development
- ContainerNetworkIoName = "container.network.io"
- ContainerNetworkIoUnit = "By"
- ContainerNetworkIoDescription = "Network bytes for the container."
- // ContainerUptime is the metric conforming to the "container.uptime" semantic
- // conventions. It represents the time the container has been running.
- // Instrument: gauge
- // Unit: s
- // Stability: development
- ContainerUptimeName = "container.uptime"
- ContainerUptimeUnit = "s"
- ContainerUptimeDescription = "The time the container has been running"
- // DBClientConnectionCount is the metric conforming to the
- // "db.client.connection.count" semantic conventions. It represents the number
- // of connections that are currently in state described by the `state`
- // attribute.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- DBClientConnectionCountName = "db.client.connection.count"
- DBClientConnectionCountUnit = "{connection}"
- DBClientConnectionCountDescription = "The number of connections that are currently in state described by the `state` attribute"
- // DBClientConnectionCreateTime is the metric conforming to the
- // "db.client.connection.create_time" semantic conventions. It represents the
- // time it took to create a new connection.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- DBClientConnectionCreateTimeName = "db.client.connection.create_time"
- DBClientConnectionCreateTimeUnit = "s"
- DBClientConnectionCreateTimeDescription = "The time it took to create a new connection"
- // DBClientConnectionIdleMax is the metric conforming to the
- // "db.client.connection.idle.max" semantic conventions. It represents the
- // maximum number of idle open connections allowed.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- DBClientConnectionIdleMaxName = "db.client.connection.idle.max"
- DBClientConnectionIdleMaxUnit = "{connection}"
- DBClientConnectionIdleMaxDescription = "The maximum number of idle open connections allowed"
- // DBClientConnectionIdleMin is the metric conforming to the
- // "db.client.connection.idle.min" semantic conventions. It represents the
- // minimum number of idle open connections allowed.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- DBClientConnectionIdleMinName = "db.client.connection.idle.min"
- DBClientConnectionIdleMinUnit = "{connection}"
- DBClientConnectionIdleMinDescription = "The minimum number of idle open connections allowed"
- // DBClientConnectionMax is the metric conforming to the
- // "db.client.connection.max" semantic conventions. It represents the maximum
- // number of open connections allowed.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- DBClientConnectionMaxName = "db.client.connection.max"
- DBClientConnectionMaxUnit = "{connection}"
- DBClientConnectionMaxDescription = "The maximum number of open connections allowed"
- // DBClientConnectionPendingRequests is the metric conforming to the
- // "db.client.connection.pending_requests" semantic conventions. It represents
- // the number of current pending requests for an open connection.
- // Instrument: updowncounter
- // Unit: {request}
- // Stability: development
- DBClientConnectionPendingRequestsName = "db.client.connection.pending_requests"
- DBClientConnectionPendingRequestsUnit = "{request}"
- DBClientConnectionPendingRequestsDescription = "The number of current pending requests for an open connection"
- // DBClientConnectionTimeouts is the metric conforming to the
- // "db.client.connection.timeouts" semantic conventions. It represents the
- // number of connection timeouts that have occurred trying to obtain a
- // connection from the pool.
- // Instrument: counter
- // Unit: {timeout}
- // Stability: development
- DBClientConnectionTimeoutsName = "db.client.connection.timeouts"
- DBClientConnectionTimeoutsUnit = "{timeout}"
- DBClientConnectionTimeoutsDescription = "The number of connection timeouts that have occurred trying to obtain a connection from the pool"
- // DBClientConnectionUseTime is the metric conforming to the
- // "db.client.connection.use_time" semantic conventions. It represents the time
- // between borrowing a connection and returning it to the pool.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- DBClientConnectionUseTimeName = "db.client.connection.use_time"
- DBClientConnectionUseTimeUnit = "s"
- DBClientConnectionUseTimeDescription = "The time between borrowing a connection and returning it to the pool"
- // DBClientConnectionWaitTime is the metric conforming to the
- // "db.client.connection.wait_time" semantic conventions. It represents the
- // time it took to obtain an open connection from the pool.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- DBClientConnectionWaitTimeName = "db.client.connection.wait_time"
- DBClientConnectionWaitTimeUnit = "s"
- DBClientConnectionWaitTimeDescription = "The time it took to obtain an open connection from the pool"
- // DBClientConnectionsCreateTime is the metric conforming to the
- // "db.client.connections.create_time" semantic conventions. It represents the
- // deprecated, use `db.client.connection.create_time` instead. Note: the unit
- // also changed from `ms` to `s`.
- // Instrument: histogram
- // Unit: ms
- // Stability: development
- // Deprecated: Replaced by `db.client.connection.create_time`. Note: the unit also changed from `ms` to `s`.
- DBClientConnectionsCreateTimeName = "db.client.connections.create_time"
- DBClientConnectionsCreateTimeUnit = "ms"
- DBClientConnectionsCreateTimeDescription = "Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`."
- // DBClientConnectionsIdleMax is the metric conforming to the
- // "db.client.connections.idle.max" semantic conventions. It represents the
- // deprecated, use `db.client.connection.idle.max` instead.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- // Deprecated: Replaced by `db.client.connection.idle.max`.
- DBClientConnectionsIdleMaxName = "db.client.connections.idle.max"
- DBClientConnectionsIdleMaxUnit = "{connection}"
- DBClientConnectionsIdleMaxDescription = "Deprecated, use `db.client.connection.idle.max` instead."
- // DBClientConnectionsIdleMin is the metric conforming to the
- // "db.client.connections.idle.min" semantic conventions. It represents the
- // deprecated, use `db.client.connection.idle.min` instead.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- // Deprecated: Replaced by `db.client.connection.idle.min`.
- DBClientConnectionsIdleMinName = "db.client.connections.idle.min"
- DBClientConnectionsIdleMinUnit = "{connection}"
- DBClientConnectionsIdleMinDescription = "Deprecated, use `db.client.connection.idle.min` instead."
- // DBClientConnectionsMax is the metric conforming to the
- // "db.client.connections.max" semantic conventions. It represents the
- // deprecated, use `db.client.connection.max` instead.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- // Deprecated: Replaced by `db.client.connection.max`.
- DBClientConnectionsMaxName = "db.client.connections.max"
- DBClientConnectionsMaxUnit = "{connection}"
- DBClientConnectionsMaxDescription = "Deprecated, use `db.client.connection.max` instead."
- // DBClientConnectionsPendingRequests is the metric conforming to the
- // "db.client.connections.pending_requests" semantic conventions. It represents
- // the deprecated, use `db.client.connection.pending_requests` instead.
- // Instrument: updowncounter
- // Unit: {request}
- // Stability: development
- // Deprecated: Replaced by `db.client.connection.pending_requests`.
- DBClientConnectionsPendingRequestsName = "db.client.connections.pending_requests"
- DBClientConnectionsPendingRequestsUnit = "{request}"
- DBClientConnectionsPendingRequestsDescription = "Deprecated, use `db.client.connection.pending_requests` instead."
- // DBClientConnectionsTimeouts is the metric conforming to the
- // "db.client.connections.timeouts" semantic conventions. It represents the
- // deprecated, use `db.client.connection.timeouts` instead.
- // Instrument: counter
- // Unit: {timeout}
- // Stability: development
- // Deprecated: Replaced by `db.client.connection.timeouts`.
- DBClientConnectionsTimeoutsName = "db.client.connections.timeouts"
- DBClientConnectionsTimeoutsUnit = "{timeout}"
- DBClientConnectionsTimeoutsDescription = "Deprecated, use `db.client.connection.timeouts` instead."
- // DBClientConnectionsUsage is the metric conforming to the
- // "db.client.connections.usage" semantic conventions. It represents the
- // deprecated, use `db.client.connection.count` instead.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- // Deprecated: Replaced by `db.client.connection.count`.
- DBClientConnectionsUsageName = "db.client.connections.usage"
- DBClientConnectionsUsageUnit = "{connection}"
- DBClientConnectionsUsageDescription = "Deprecated, use `db.client.connection.count` instead."
- // DBClientConnectionsUseTime is the metric conforming to the
- // "db.client.connections.use_time" semantic conventions. It represents the
- // deprecated, use `db.client.connection.use_time` instead. Note: the unit also
- // changed from `ms` to `s`.
- // Instrument: histogram
- // Unit: ms
- // Stability: development
- // Deprecated: Replaced by `db.client.connection.use_time`. Note: the unit also changed from `ms` to `s`.
- DBClientConnectionsUseTimeName = "db.client.connections.use_time"
- DBClientConnectionsUseTimeUnit = "ms"
- DBClientConnectionsUseTimeDescription = "Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`."
- // DBClientConnectionsWaitTime is the metric conforming to the
- // "db.client.connections.wait_time" semantic conventions. It represents the
- // deprecated, use `db.client.connection.wait_time` instead. Note: the unit
- // also changed from `ms` to `s`.
- // Instrument: histogram
- // Unit: ms
- // Stability: development
- // Deprecated: Replaced by `db.client.connection.wait_time`. Note: the unit also changed from `ms` to `s`.
- DBClientConnectionsWaitTimeName = "db.client.connections.wait_time"
- DBClientConnectionsWaitTimeUnit = "ms"
- DBClientConnectionsWaitTimeDescription = "Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`."
- // DBClientCosmosDBActiveInstanceCount is the metric conforming to the
- // "db.client.cosmosdb.active_instance.count" semantic conventions. It
- // represents the deprecated, use `azure.cosmosdb.client.active_instance.count`
- // instead.
- // Instrument: updowncounter
- // Unit: {instance}
- // Stability: development
- // Deprecated: Replaced by `azure.cosmosdb.client.active_instance.count`.
- DBClientCosmosDBActiveInstanceCountName = "db.client.cosmosdb.active_instance.count"
- DBClientCosmosDBActiveInstanceCountUnit = "{instance}"
- DBClientCosmosDBActiveInstanceCountDescription = "Deprecated, use `azure.cosmosdb.client.active_instance.count` instead."
- // DBClientCosmosDBOperationRequestCharge is the metric conforming to the
- // "db.client.cosmosdb.operation.request_charge" semantic conventions. It
- // represents the deprecated, use
- // `azure.cosmosdb.client.operation.request_charge` instead.
- // Instrument: histogram
- // Unit: {request_unit}
- // Stability: development
- // Deprecated: Replaced by `azure.cosmosdb.client.operation.request_charge`.
- DBClientCosmosDBOperationRequestChargeName = "db.client.cosmosdb.operation.request_charge"
- DBClientCosmosDBOperationRequestChargeUnit = "{request_unit}"
- DBClientCosmosDBOperationRequestChargeDescription = "Deprecated, use `azure.cosmosdb.client.operation.request_charge` instead."
- // DBClientOperationDuration is the metric conforming to the
- // "db.client.operation.duration" semantic conventions. It represents the
- // duration of database client operations.
- // Instrument: histogram
- // Unit: s
- // Stability: release_candidate
- DBClientOperationDurationName = "db.client.operation.duration"
- DBClientOperationDurationUnit = "s"
- DBClientOperationDurationDescription = "Duration of database client operations."
- // DBClientResponseReturnedRows is the metric conforming to the
- // "db.client.response.returned_rows" semantic conventions. It represents the
- // actual number of records returned by the database operation.
- // Instrument: histogram
- // Unit: {row}
- // Stability: development
- DBClientResponseReturnedRowsName = "db.client.response.returned_rows"
- DBClientResponseReturnedRowsUnit = "{row}"
- DBClientResponseReturnedRowsDescription = "The actual number of records returned by the database operation."
- // DNSLookupDuration is the metric conforming to the "dns.lookup.duration"
- // semantic conventions. It represents the measures the time taken to perform a
- // DNS lookup.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- DNSLookupDurationName = "dns.lookup.duration"
- DNSLookupDurationUnit = "s"
- DNSLookupDurationDescription = "Measures the time taken to perform a DNS lookup."
- // FaaSColdstarts is the metric conforming to the "faas.coldstarts" semantic
- // conventions. It represents the number of invocation cold starts.
- // Instrument: counter
- // Unit: {coldstart}
- // Stability: development
- FaaSColdstartsName = "faas.coldstarts"
- FaaSColdstartsUnit = "{coldstart}"
- FaaSColdstartsDescription = "Number of invocation cold starts"
- // FaaSCPUUsage is the metric conforming to the "faas.cpu_usage" semantic
- // conventions. It represents the distribution of CPU usage per invocation.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- FaaSCPUUsageName = "faas.cpu_usage"
- FaaSCPUUsageUnit = "s"
- FaaSCPUUsageDescription = "Distribution of CPU usage per invocation"
- // FaaSErrors is the metric conforming to the "faas.errors" semantic
- // conventions. It represents the number of invocation errors.
- // Instrument: counter
- // Unit: {error}
- // Stability: development
- FaaSErrorsName = "faas.errors"
- FaaSErrorsUnit = "{error}"
- FaaSErrorsDescription = "Number of invocation errors"
- // FaaSInitDuration is the metric conforming to the "faas.init_duration"
- // semantic conventions. It represents the measures the duration of the
- // function's initialization, such as a cold start.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- FaaSInitDurationName = "faas.init_duration"
- FaaSInitDurationUnit = "s"
- FaaSInitDurationDescription = "Measures the duration of the function's initialization, such as a cold start"
- // FaaSInvocations is the metric conforming to the "faas.invocations" semantic
- // conventions. It represents the number of successful invocations.
- // Instrument: counter
- // Unit: {invocation}
- // Stability: development
- FaaSInvocationsName = "faas.invocations"
- FaaSInvocationsUnit = "{invocation}"
- FaaSInvocationsDescription = "Number of successful invocations"
- // FaaSInvokeDuration is the metric conforming to the "faas.invoke_duration"
- // semantic conventions. It represents the measures the duration of the
- // function's logic execution.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- FaaSInvokeDurationName = "faas.invoke_duration"
- FaaSInvokeDurationUnit = "s"
- FaaSInvokeDurationDescription = "Measures the duration of the function's logic execution"
- // FaaSMemUsage is the metric conforming to the "faas.mem_usage" semantic
- // conventions. It represents the distribution of max memory usage per
- // invocation.
- // Instrument: histogram
- // Unit: By
- // Stability: development
- FaaSMemUsageName = "faas.mem_usage"
- FaaSMemUsageUnit = "By"
- FaaSMemUsageDescription = "Distribution of max memory usage per invocation"
- // FaaSNetIo is the metric conforming to the "faas.net_io" semantic
- // conventions. It represents the distribution of net I/O usage per invocation.
- // Instrument: histogram
- // Unit: By
- // Stability: development
- FaaSNetIoName = "faas.net_io"
- FaaSNetIoUnit = "By"
- FaaSNetIoDescription = "Distribution of net I/O usage per invocation"
- // FaaSTimeouts is the metric conforming to the "faas.timeouts" semantic
- // conventions. It represents the number of invocation timeouts.
- // Instrument: counter
- // Unit: {timeout}
- // Stability: development
- FaaSTimeoutsName = "faas.timeouts"
- FaaSTimeoutsUnit = "{timeout}"
- FaaSTimeoutsDescription = "Number of invocation timeouts"
- // GenAIClientOperationDuration is the metric conforming to the
- // "gen_ai.client.operation.duration" semantic conventions. It represents the
- // genAI operation duration.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- GenAIClientOperationDurationName = "gen_ai.client.operation.duration"
- GenAIClientOperationDurationUnit = "s"
- GenAIClientOperationDurationDescription = "GenAI operation duration"
- // GenAIClientTokenUsage is the metric conforming to the
- // "gen_ai.client.token.usage" semantic conventions. It represents the measures
- // number of input and output tokens used.
- // Instrument: histogram
- // Unit: {token}
- // Stability: development
- GenAIClientTokenUsageName = "gen_ai.client.token.usage"
- GenAIClientTokenUsageUnit = "{token}"
- GenAIClientTokenUsageDescription = "Measures number of input and output tokens used"
- // GenAIServerRequestDuration is the metric conforming to the
- // "gen_ai.server.request.duration" semantic conventions. It represents the
- // generative AI server request duration such as time-to-last byte or last
- // output token.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- GenAIServerRequestDurationName = "gen_ai.server.request.duration"
- GenAIServerRequestDurationUnit = "s"
- GenAIServerRequestDurationDescription = "Generative AI server request duration such as time-to-last byte or last output token"
- // GenAIServerTimePerOutputToken is the metric conforming to the
- // "gen_ai.server.time_per_output_token" semantic conventions. It represents
- // the time per output token generated after the first token for successful
- // responses.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- GenAIServerTimePerOutputTokenName = "gen_ai.server.time_per_output_token"
- GenAIServerTimePerOutputTokenUnit = "s"
- GenAIServerTimePerOutputTokenDescription = "Time per output token generated after the first token for successful responses"
- // GenAIServerTimeToFirstToken is the metric conforming to the
- // "gen_ai.server.time_to_first_token" semantic conventions. It represents the
- // time to generate first token for successful responses.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- GenAIServerTimeToFirstTokenName = "gen_ai.server.time_to_first_token"
- GenAIServerTimeToFirstTokenUnit = "s"
- GenAIServerTimeToFirstTokenDescription = "Time to generate first token for successful responses"
- // GoConfigGogc is the metric conforming to the "go.config.gogc" semantic
- // conventions. It represents the heap size target percentage configured by the
- // user, otherwise 100.
- // Instrument: updowncounter
- // Unit: %
- // Stability: development
- GoConfigGogcName = "go.config.gogc"
- GoConfigGogcUnit = "%"
- GoConfigGogcDescription = "Heap size target percentage configured by the user, otherwise 100."
- // GoGoroutineCount is the metric conforming to the "go.goroutine.count"
- // semantic conventions. It represents the count of live goroutines.
- // Instrument: updowncounter
- // Unit: {goroutine}
- // Stability: development
- GoGoroutineCountName = "go.goroutine.count"
- GoGoroutineCountUnit = "{goroutine}"
- GoGoroutineCountDescription = "Count of live goroutines."
- // GoMemoryAllocated is the metric conforming to the "go.memory.allocated"
- // semantic conventions. It represents the memory allocated to the heap by the
- // application.
- // Instrument: counter
- // Unit: By
- // Stability: development
- GoMemoryAllocatedName = "go.memory.allocated"
- GoMemoryAllocatedUnit = "By"
- GoMemoryAllocatedDescription = "Memory allocated to the heap by the application."
- // GoMemoryAllocations is the metric conforming to the "go.memory.allocations"
- // semantic conventions. It represents the count of allocations to the heap by
- // the application.
- // Instrument: counter
- // Unit: {allocation}
- // Stability: development
- GoMemoryAllocationsName = "go.memory.allocations"
- GoMemoryAllocationsUnit = "{allocation}"
- GoMemoryAllocationsDescription = "Count of allocations to the heap by the application."
- // GoMemoryGCGoal is the metric conforming to the "go.memory.gc.goal" semantic
- // conventions. It represents the heap size target for the end of the GC cycle.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- GoMemoryGCGoalName = "go.memory.gc.goal"
- GoMemoryGCGoalUnit = "By"
- GoMemoryGCGoalDescription = "Heap size target for the end of the GC cycle."
- // GoMemoryLimit is the metric conforming to the "go.memory.limit" semantic
- // conventions. It represents the go runtime memory limit configured by the
- // user, if a limit exists.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- GoMemoryLimitName = "go.memory.limit"
- GoMemoryLimitUnit = "By"
- GoMemoryLimitDescription = "Go runtime memory limit configured by the user, if a limit exists."
- // GoMemoryUsed is the metric conforming to the "go.memory.used" semantic
- // conventions. It represents the memory used by the Go runtime.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- GoMemoryUsedName = "go.memory.used"
- GoMemoryUsedUnit = "By"
- GoMemoryUsedDescription = "Memory used by the Go runtime."
- // GoProcessorLimit is the metric conforming to the "go.processor.limit"
- // semantic conventions. It represents the number of OS threads that can
- // execute user-level Go code simultaneously.
- // Instrument: updowncounter
- // Unit: {thread}
- // Stability: development
- GoProcessorLimitName = "go.processor.limit"
- GoProcessorLimitUnit = "{thread}"
- GoProcessorLimitDescription = "The number of OS threads that can execute user-level Go code simultaneously."
- // GoScheduleDuration is the metric conforming to the "go.schedule.duration"
- // semantic conventions. It represents the time goroutines have spent in the
- // scheduler in a runnable state before actually running.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- GoScheduleDurationName = "go.schedule.duration"
- GoScheduleDurationUnit = "s"
- GoScheduleDurationDescription = "The time goroutines have spent in the scheduler in a runnable state before actually running."
- // HTTPClientActiveRequests is the metric conforming to the
- // "http.client.active_requests" semantic conventions. It represents the number
- // of active HTTP requests.
- // Instrument: updowncounter
- // Unit: {request}
- // Stability: development
- HTTPClientActiveRequestsName = "http.client.active_requests"
- HTTPClientActiveRequestsUnit = "{request}"
- HTTPClientActiveRequestsDescription = "Number of active HTTP requests."
- // HTTPClientConnectionDuration is the metric conforming to the
- // "http.client.connection.duration" semantic conventions. It represents the
- // duration of the successfully established outbound HTTP connections.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- HTTPClientConnectionDurationName = "http.client.connection.duration"
- HTTPClientConnectionDurationUnit = "s"
- HTTPClientConnectionDurationDescription = "The duration of the successfully established outbound HTTP connections."
- // HTTPClientOpenConnections is the metric conforming to the
- // "http.client.open_connections" semantic conventions. It represents the
- // number of outbound HTTP connections that are currently active or idle on the
- // client.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- HTTPClientOpenConnectionsName = "http.client.open_connections"
- HTTPClientOpenConnectionsUnit = "{connection}"
- HTTPClientOpenConnectionsDescription = "Number of outbound HTTP connections that are currently active or idle on the client."
- // HTTPClientRequestBodySize is the metric conforming to the
- // "http.client.request.body.size" semantic conventions. It represents the size
- // of HTTP client request bodies.
- // Instrument: histogram
- // Unit: By
- // Stability: development
- HTTPClientRequestBodySizeName = "http.client.request.body.size"
- HTTPClientRequestBodySizeUnit = "By"
- HTTPClientRequestBodySizeDescription = "Size of HTTP client request bodies."
- // HTTPClientRequestDuration is the metric conforming to the
- // "http.client.request.duration" semantic conventions. It represents the
- // duration of HTTP client requests.
- // Instrument: histogram
- // Unit: s
- // Stability: stable
- HTTPClientRequestDurationName = "http.client.request.duration"
- HTTPClientRequestDurationUnit = "s"
- HTTPClientRequestDurationDescription = "Duration of HTTP client requests."
- // HTTPClientResponseBodySize is the metric conforming to the
- // "http.client.response.body.size" semantic conventions. It represents the
- // size of HTTP client response bodies.
- // Instrument: histogram
- // Unit: By
- // Stability: development
- HTTPClientResponseBodySizeName = "http.client.response.body.size"
- HTTPClientResponseBodySizeUnit = "By"
- HTTPClientResponseBodySizeDescription = "Size of HTTP client response bodies."
- // HTTPServerActiveRequests is the metric conforming to the
- // "http.server.active_requests" semantic conventions. It represents the number
- // of active HTTP server requests.
- // Instrument: updowncounter
- // Unit: {request}
- // Stability: development
- HTTPServerActiveRequestsName = "http.server.active_requests"
- HTTPServerActiveRequestsUnit = "{request}"
- HTTPServerActiveRequestsDescription = "Number of active HTTP server requests."
- // HTTPServerRequestBodySize is the metric conforming to the
- // "http.server.request.body.size" semantic conventions. It represents the size
- // of HTTP server request bodies.
- // Instrument: histogram
- // Unit: By
- // Stability: development
- HTTPServerRequestBodySizeName = "http.server.request.body.size"
- HTTPServerRequestBodySizeUnit = "By"
- HTTPServerRequestBodySizeDescription = "Size of HTTP server request bodies."
- // HTTPServerRequestDuration is the metric conforming to the
- // "http.server.request.duration" semantic conventions. It represents the
- // duration of HTTP server requests.
- // Instrument: histogram
- // Unit: s
- // Stability: stable
- HTTPServerRequestDurationName = "http.server.request.duration"
- HTTPServerRequestDurationUnit = "s"
- HTTPServerRequestDurationDescription = "Duration of HTTP server requests."
- // HTTPServerResponseBodySize is the metric conforming to the
- // "http.server.response.body.size" semantic conventions. It represents the
- // size of HTTP server response bodies.
- // Instrument: histogram
- // Unit: By
- // Stability: development
- HTTPServerResponseBodySizeName = "http.server.response.body.size"
- HTTPServerResponseBodySizeUnit = "By"
- HTTPServerResponseBodySizeDescription = "Size of HTTP server response bodies."
- // HwEnergy is the metric conforming to the "hw.energy" semantic conventions.
- // It represents the energy consumed by the component.
- // Instrument: counter
- // Unit: J
- // Stability: development
- HwEnergyName = "hw.energy"
- HwEnergyUnit = "J"
- HwEnergyDescription = "Energy consumed by the component"
- // HwErrors is the metric conforming to the "hw.errors" semantic conventions.
- // It represents the number of errors encountered by the component.
- // Instrument: counter
- // Unit: {error}
- // Stability: development
- HwErrorsName = "hw.errors"
- HwErrorsUnit = "{error}"
- HwErrorsDescription = "Number of errors encountered by the component"
- // HwPower is the metric conforming to the "hw.power" semantic conventions. It
- // represents the instantaneous power consumed by the component.
- // Instrument: gauge
- // Unit: W
- // Stability: development
- HwPowerName = "hw.power"
- HwPowerUnit = "W"
- HwPowerDescription = "Instantaneous power consumed by the component"
- // HwStatus is the metric conforming to the "hw.status" semantic conventions.
- // It represents the operational status: `1` (true) or `0` (false) for each of
- // the possible states.
- // Instrument: updowncounter
- // Unit: 1
- // Stability: development
- HwStatusName = "hw.status"
- HwStatusUnit = "1"
- HwStatusDescription = "Operational status: `1` (true) or `0` (false) for each of the possible states"
- // K8SCronJobActiveJobs is the metric conforming to the
- // "k8s.cronjob.active_jobs" semantic conventions. It represents the number of
- // actively running jobs for a cronjob.
- // Instrument: updowncounter
- // Unit: {job}
- // Stability: development
- K8SCronJobActiveJobsName = "k8s.cronjob.active_jobs"
- K8SCronJobActiveJobsUnit = "{job}"
- K8SCronJobActiveJobsDescription = "The number of actively running jobs for a cronjob"
- // K8SDaemonSetCurrentScheduledNodes is the metric conforming to the
- // "k8s.daemonset.current_scheduled_nodes" semantic conventions. It represents
- // the number of nodes that are running at least 1 daemon pod and are supposed
- // to run the daemon pod.
- // Instrument: updowncounter
- // Unit: {node}
- // Stability: development
- K8SDaemonSetCurrentScheduledNodesName = "k8s.daemonset.current_scheduled_nodes"
- K8SDaemonSetCurrentScheduledNodesUnit = "{node}"
- K8SDaemonSetCurrentScheduledNodesDescription = "Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod"
- // K8SDaemonSetDesiredScheduledNodes is the metric conforming to the
- // "k8s.daemonset.desired_scheduled_nodes" semantic conventions. It represents
- // the number of nodes that should be running the daemon pod (including nodes
- // currently running the daemon pod).
- // Instrument: updowncounter
- // Unit: {node}
- // Stability: development
- K8SDaemonSetDesiredScheduledNodesName = "k8s.daemonset.desired_scheduled_nodes"
- K8SDaemonSetDesiredScheduledNodesUnit = "{node}"
- K8SDaemonSetDesiredScheduledNodesDescription = "Number of nodes that should be running the daemon pod (including nodes currently running the daemon pod)"
- // K8SDaemonSetMisscheduledNodes is the metric conforming to the
- // "k8s.daemonset.misscheduled_nodes" semantic conventions. It represents the
- // number of nodes that are running the daemon pod, but are not supposed to run
- // the daemon pod.
- // Instrument: updowncounter
- // Unit: {node}
- // Stability: development
- K8SDaemonSetMisscheduledNodesName = "k8s.daemonset.misscheduled_nodes"
- K8SDaemonSetMisscheduledNodesUnit = "{node}"
- K8SDaemonSetMisscheduledNodesDescription = "Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod"
- // K8SDaemonSetReadyNodes is the metric conforming to the
- // "k8s.daemonset.ready_nodes" semantic conventions. It represents the number
- // of nodes that should be running the daemon pod and have one or more of the
- // daemon pod running and ready.
- // Instrument: updowncounter
- // Unit: {node}
- // Stability: development
- K8SDaemonSetReadyNodesName = "k8s.daemonset.ready_nodes"
- K8SDaemonSetReadyNodesUnit = "{node}"
- K8SDaemonSetReadyNodesDescription = "Number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready"
- // K8SDeploymentAvailablePods is the metric conforming to the
- // "k8s.deployment.available_pods" semantic conventions. It represents the
- // total number of available replica pods (ready for at least minReadySeconds)
- // targeted by this deployment.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SDeploymentAvailablePodsName = "k8s.deployment.available_pods"
- K8SDeploymentAvailablePodsUnit = "{pod}"
- K8SDeploymentAvailablePodsDescription = "Total number of available replica pods (ready for at least minReadySeconds) targeted by this deployment"
- // K8SDeploymentDesiredPods is the metric conforming to the
- // "k8s.deployment.desired_pods" semantic conventions. It represents the number
- // of desired replica pods in this deployment.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SDeploymentDesiredPodsName = "k8s.deployment.desired_pods"
- K8SDeploymentDesiredPodsUnit = "{pod}"
- K8SDeploymentDesiredPodsDescription = "Number of desired replica pods in this deployment"
- // K8SHpaCurrentPods is the metric conforming to the "k8s.hpa.current_pods"
- // semantic conventions. It represents the current number of replica pods
- // managed by this horizontal pod autoscaler, as last seen by the autoscaler.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SHpaCurrentPodsName = "k8s.hpa.current_pods"
- K8SHpaCurrentPodsUnit = "{pod}"
- K8SHpaCurrentPodsDescription = "Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the autoscaler"
- // K8SHpaDesiredPods is the metric conforming to the "k8s.hpa.desired_pods"
- // semantic conventions. It represents the desired number of replica pods
- // managed by this horizontal pod autoscaler, as last calculated by the
- // autoscaler.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SHpaDesiredPodsName = "k8s.hpa.desired_pods"
- K8SHpaDesiredPodsUnit = "{pod}"
- K8SHpaDesiredPodsDescription = "Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated by the autoscaler"
- // K8SHpaMaxPods is the metric conforming to the "k8s.hpa.max_pods" semantic
- // conventions. It represents the upper limit for the number of replica pods to
- // which the autoscaler can scale up.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SHpaMaxPodsName = "k8s.hpa.max_pods"
- K8SHpaMaxPodsUnit = "{pod}"
- K8SHpaMaxPodsDescription = "The upper limit for the number of replica pods to which the autoscaler can scale up"
- // K8SHpaMinPods is the metric conforming to the "k8s.hpa.min_pods" semantic
- // conventions. It represents the lower limit for the number of replica pods to
- // which the autoscaler can scale down.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SHpaMinPodsName = "k8s.hpa.min_pods"
- K8SHpaMinPodsUnit = "{pod}"
- K8SHpaMinPodsDescription = "The lower limit for the number of replica pods to which the autoscaler can scale down"
- // K8SJobActivePods is the metric conforming to the "k8s.job.active_pods"
- // semantic conventions. It represents the number of pending and actively
- // running pods for a job.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SJobActivePodsName = "k8s.job.active_pods"
- K8SJobActivePodsUnit = "{pod}"
- K8SJobActivePodsDescription = "The number of pending and actively running pods for a job"
- // K8SJobDesiredSuccessfulPods is the metric conforming to the
- // "k8s.job.desired_successful_pods" semantic conventions. It represents the
- // desired number of successfully finished pods the job should be run with.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SJobDesiredSuccessfulPodsName = "k8s.job.desired_successful_pods"
- K8SJobDesiredSuccessfulPodsUnit = "{pod}"
- K8SJobDesiredSuccessfulPodsDescription = "The desired number of successfully finished pods the job should be run with"
- // K8SJobFailedPods is the metric conforming to the "k8s.job.failed_pods"
- // semantic conventions. It represents the number of pods which reached phase
- // Failed for a job.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SJobFailedPodsName = "k8s.job.failed_pods"
- K8SJobFailedPodsUnit = "{pod}"
- K8SJobFailedPodsDescription = "The number of pods which reached phase Failed for a job"
- // K8SJobMaxParallelPods is the metric conforming to the
- // "k8s.job.max_parallel_pods" semantic conventions. It represents the max
- // desired number of pods the job should run at any given time.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SJobMaxParallelPodsName = "k8s.job.max_parallel_pods"
- K8SJobMaxParallelPodsUnit = "{pod}"
- K8SJobMaxParallelPodsDescription = "The max desired number of pods the job should run at any given time"
- // K8SJobSuccessfulPods is the metric conforming to the
- // "k8s.job.successful_pods" semantic conventions. It represents the number of
- // pods which reached phase Succeeded for a job.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SJobSuccessfulPodsName = "k8s.job.successful_pods"
- K8SJobSuccessfulPodsUnit = "{pod}"
- K8SJobSuccessfulPodsDescription = "The number of pods which reached phase Succeeded for a job"
- // K8SNamespacePhase is the metric conforming to the "k8s.namespace.phase"
- // semantic conventions. It represents the describes number of K8s namespaces
- // that are currently in a given phase.
- // Instrument: updowncounter
- // Unit: {namespace}
- // Stability: development
- K8SNamespacePhaseName = "k8s.namespace.phase"
- K8SNamespacePhaseUnit = "{namespace}"
- K8SNamespacePhaseDescription = "Describes number of K8s namespaces that are currently in a given phase."
- // K8SNodeCPUTime is the metric conforming to the "k8s.node.cpu.time" semantic
- // conventions. It represents the total CPU time consumed.
- // Instrument: counter
- // Unit: s
- // Stability: development
- K8SNodeCPUTimeName = "k8s.node.cpu.time"
- K8SNodeCPUTimeUnit = "s"
- K8SNodeCPUTimeDescription = "Total CPU time consumed"
- // K8SNodeCPUUsage is the metric conforming to the "k8s.node.cpu.usage"
- // semantic conventions. It represents the node's CPU usage, measured in cpus.
- // Range from 0 to the number of allocatable CPUs.
- // Instrument: gauge
- // Unit: {cpu}
- // Stability: development
- K8SNodeCPUUsageName = "k8s.node.cpu.usage"
- K8SNodeCPUUsageUnit = "{cpu}"
- K8SNodeCPUUsageDescription = "Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs"
- // K8SNodeMemoryUsage is the metric conforming to the "k8s.node.memory.usage"
- // semantic conventions. It represents the memory usage of the Node.
- // Instrument: gauge
- // Unit: By
- // Stability: development
- K8SNodeMemoryUsageName = "k8s.node.memory.usage"
- K8SNodeMemoryUsageUnit = "By"
- K8SNodeMemoryUsageDescription = "Memory usage of the Node"
- // K8SNodeNetworkErrors is the metric conforming to the
- // "k8s.node.network.errors" semantic conventions. It represents the node
- // network errors.
- // Instrument: counter
- // Unit: {error}
- // Stability: development
- K8SNodeNetworkErrorsName = "k8s.node.network.errors"
- K8SNodeNetworkErrorsUnit = "{error}"
- K8SNodeNetworkErrorsDescription = "Node network errors"
- // K8SNodeNetworkIo is the metric conforming to the "k8s.node.network.io"
- // semantic conventions. It represents the network bytes for the Node.
- // Instrument: counter
- // Unit: By
- // Stability: development
- K8SNodeNetworkIoName = "k8s.node.network.io"
- K8SNodeNetworkIoUnit = "By"
- K8SNodeNetworkIoDescription = "Network bytes for the Node"
- // K8SNodeUptime is the metric conforming to the "k8s.node.uptime" semantic
- // conventions. It represents the time the Node has been running.
- // Instrument: gauge
- // Unit: s
- // Stability: development
- K8SNodeUptimeName = "k8s.node.uptime"
- K8SNodeUptimeUnit = "s"
- K8SNodeUptimeDescription = "The time the Node has been running"
- // K8SPodCPUTime is the metric conforming to the "k8s.pod.cpu.time" semantic
- // conventions. It represents the total CPU time consumed.
- // Instrument: counter
- // Unit: s
- // Stability: development
- K8SPodCPUTimeName = "k8s.pod.cpu.time"
- K8SPodCPUTimeUnit = "s"
- K8SPodCPUTimeDescription = "Total CPU time consumed"
- // K8SPodCPUUsage is the metric conforming to the "k8s.pod.cpu.usage" semantic
- // conventions. It represents the pod's CPU usage, measured in cpus. Range from
- // 0 to the number of allocatable CPUs.
- // Instrument: gauge
- // Unit: {cpu}
- // Stability: development
- K8SPodCPUUsageName = "k8s.pod.cpu.usage"
- K8SPodCPUUsageUnit = "{cpu}"
- K8SPodCPUUsageDescription = "Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs"
- // K8SPodMemoryUsage is the metric conforming to the "k8s.pod.memory.usage"
- // semantic conventions. It represents the memory usage of the Pod.
- // Instrument: gauge
- // Unit: By
- // Stability: development
- K8SPodMemoryUsageName = "k8s.pod.memory.usage"
- K8SPodMemoryUsageUnit = "By"
- K8SPodMemoryUsageDescription = "Memory usage of the Pod"
- // K8SPodNetworkErrors is the metric conforming to the "k8s.pod.network.errors"
- // semantic conventions. It represents the pod network errors.
- // Instrument: counter
- // Unit: {error}
- // Stability: development
- K8SPodNetworkErrorsName = "k8s.pod.network.errors"
- K8SPodNetworkErrorsUnit = "{error}"
- K8SPodNetworkErrorsDescription = "Pod network errors"
- // K8SPodNetworkIo is the metric conforming to the "k8s.pod.network.io"
- // semantic conventions. It represents the network bytes for the Pod.
- // Instrument: counter
- // Unit: By
- // Stability: development
- K8SPodNetworkIoName = "k8s.pod.network.io"
- K8SPodNetworkIoUnit = "By"
- K8SPodNetworkIoDescription = "Network bytes for the Pod"
- // K8SPodUptime is the metric conforming to the "k8s.pod.uptime" semantic
- // conventions. It represents the time the Pod has been running.
- // Instrument: gauge
- // Unit: s
- // Stability: development
- K8SPodUptimeName = "k8s.pod.uptime"
- K8SPodUptimeUnit = "s"
- K8SPodUptimeDescription = "The time the Pod has been running"
- // K8SReplicaSetAvailablePods is the metric conforming to the
- // "k8s.replicaset.available_pods" semantic conventions. It represents the
- // total number of available replica pods (ready for at least minReadySeconds)
- // targeted by this replicaset.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SReplicaSetAvailablePodsName = "k8s.replicaset.available_pods"
- K8SReplicaSetAvailablePodsUnit = "{pod}"
- K8SReplicaSetAvailablePodsDescription = "Total number of available replica pods (ready for at least minReadySeconds) targeted by this replicaset"
- // K8SReplicaSetDesiredPods is the metric conforming to the
- // "k8s.replicaset.desired_pods" semantic conventions. It represents the number
- // of desired replica pods in this replicaset.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SReplicaSetDesiredPodsName = "k8s.replicaset.desired_pods"
- K8SReplicaSetDesiredPodsUnit = "{pod}"
- K8SReplicaSetDesiredPodsDescription = "Number of desired replica pods in this replicaset"
- // K8SReplicationControllerAvailablePods is the metric conforming to the
- // "k8s.replication_controller.available_pods" semantic conventions. It
- // represents the total number of available replica pods (ready for at least
- // minReadySeconds) targeted by this replication controller.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SReplicationControllerAvailablePodsName = "k8s.replication_controller.available_pods"
- K8SReplicationControllerAvailablePodsUnit = "{pod}"
- K8SReplicationControllerAvailablePodsDescription = "Total number of available replica pods (ready for at least minReadySeconds) targeted by this replication controller"
- // K8SReplicationControllerDesiredPods is the metric conforming to the
- // "k8s.replication_controller.desired_pods" semantic conventions. It
- // represents the number of desired replica pods in this replication
- // controller.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SReplicationControllerDesiredPodsName = "k8s.replication_controller.desired_pods"
- K8SReplicationControllerDesiredPodsUnit = "{pod}"
- K8SReplicationControllerDesiredPodsDescription = "Number of desired replica pods in this replication controller"
- // K8SStatefulSetCurrentPods is the metric conforming to the
- // "k8s.statefulset.current_pods" semantic conventions. It represents the
- // number of replica pods created by the statefulset controller from the
- // statefulset version indicated by currentRevision.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SStatefulSetCurrentPodsName = "k8s.statefulset.current_pods"
- K8SStatefulSetCurrentPodsUnit = "{pod}"
- K8SStatefulSetCurrentPodsDescription = "The number of replica pods created by the statefulset controller from the statefulset version indicated by currentRevision"
- // K8SStatefulSetDesiredPods is the metric conforming to the
- // "k8s.statefulset.desired_pods" semantic conventions. It represents the
- // number of desired replica pods in this statefulset.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SStatefulSetDesiredPodsName = "k8s.statefulset.desired_pods"
- K8SStatefulSetDesiredPodsUnit = "{pod}"
- K8SStatefulSetDesiredPodsDescription = "Number of desired replica pods in this statefulset"
- // K8SStatefulSetReadyPods is the metric conforming to the
- // "k8s.statefulset.ready_pods" semantic conventions. It represents the number
- // of replica pods created for this statefulset with a Ready Condition.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SStatefulSetReadyPodsName = "k8s.statefulset.ready_pods"
- K8SStatefulSetReadyPodsUnit = "{pod}"
- K8SStatefulSetReadyPodsDescription = "The number of replica pods created for this statefulset with a Ready Condition"
- // K8SStatefulSetUpdatedPods is the metric conforming to the
- // "k8s.statefulset.updated_pods" semantic conventions. It represents the
- // number of replica pods created by the statefulset controller from the
- // statefulset version indicated by updateRevision.
- // Instrument: updowncounter
- // Unit: {pod}
- // Stability: development
- K8SStatefulSetUpdatedPodsName = "k8s.statefulset.updated_pods"
- K8SStatefulSetUpdatedPodsUnit = "{pod}"
- K8SStatefulSetUpdatedPodsDescription = "Number of replica pods created by the statefulset controller from the statefulset version indicated by updateRevision"
- // KestrelActiveConnections is the metric conforming to the
- // "kestrel.active_connections" semantic conventions. It represents the number
- // of connections that are currently active on the server.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: stable
- KestrelActiveConnectionsName = "kestrel.active_connections"
- KestrelActiveConnectionsUnit = "{connection}"
- KestrelActiveConnectionsDescription = "Number of connections that are currently active on the server."
- // KestrelActiveTLSHandshakes is the metric conforming to the
- // "kestrel.active_tls_handshakes" semantic conventions. It represents the
- // number of TLS handshakes that are currently in progress on the server.
- // Instrument: updowncounter
- // Unit: {handshake}
- // Stability: stable
- KestrelActiveTLSHandshakesName = "kestrel.active_tls_handshakes"
- KestrelActiveTLSHandshakesUnit = "{handshake}"
- KestrelActiveTLSHandshakesDescription = "Number of TLS handshakes that are currently in progress on the server."
- // KestrelConnectionDuration is the metric conforming to the
- // "kestrel.connection.duration" semantic conventions. It represents the
- // duration of connections on the server.
- // Instrument: histogram
- // Unit: s
- // Stability: stable
- KestrelConnectionDurationName = "kestrel.connection.duration"
- KestrelConnectionDurationUnit = "s"
- KestrelConnectionDurationDescription = "The duration of connections on the server."
- // KestrelQueuedConnections is the metric conforming to the
- // "kestrel.queued_connections" semantic conventions. It represents the number
- // of connections that are currently queued and are waiting to start.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: stable
- KestrelQueuedConnectionsName = "kestrel.queued_connections"
- KestrelQueuedConnectionsUnit = "{connection}"
- KestrelQueuedConnectionsDescription = "Number of connections that are currently queued and are waiting to start."
- // KestrelQueuedRequests is the metric conforming to the
- // "kestrel.queued_requests" semantic conventions. It represents the number of
- // HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are
- // currently queued and are waiting to start.
- // Instrument: updowncounter
- // Unit: {request}
- // Stability: stable
- KestrelQueuedRequestsName = "kestrel.queued_requests"
- KestrelQueuedRequestsUnit = "{request}"
- KestrelQueuedRequestsDescription = "Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start."
- // KestrelRejectedConnections is the metric conforming to the
- // "kestrel.rejected_connections" semantic conventions. It represents the
- // number of connections rejected by the server.
- // Instrument: counter
- // Unit: {connection}
- // Stability: stable
- KestrelRejectedConnectionsName = "kestrel.rejected_connections"
- KestrelRejectedConnectionsUnit = "{connection}"
- KestrelRejectedConnectionsDescription = "Number of connections rejected by the server."
- // KestrelTLSHandshakeDuration is the metric conforming to the
- // "kestrel.tls_handshake.duration" semantic conventions. It represents the
- // duration of TLS handshakes on the server.
- // Instrument: histogram
- // Unit: s
- // Stability: stable
- KestrelTLSHandshakeDurationName = "kestrel.tls_handshake.duration"
- KestrelTLSHandshakeDurationUnit = "s"
- KestrelTLSHandshakeDurationDescription = "The duration of TLS handshakes on the server."
- // KestrelUpgradedConnections is the metric conforming to the
- // "kestrel.upgraded_connections" semantic conventions. It represents the
- // number of connections that are currently upgraded (WebSockets). .
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: stable
- KestrelUpgradedConnectionsName = "kestrel.upgraded_connections"
- KestrelUpgradedConnectionsUnit = "{connection}"
- KestrelUpgradedConnectionsDescription = "Number of connections that are currently upgraded (WebSockets). ."
- // MessagingClientConsumedMessages is the metric conforming to the
- // "messaging.client.consumed.messages" semantic conventions. It represents the
- // number of messages that were delivered to the application.
- // Instrument: counter
- // Unit: {message}
- // Stability: development
- MessagingClientConsumedMessagesName = "messaging.client.consumed.messages"
- MessagingClientConsumedMessagesUnit = "{message}"
- MessagingClientConsumedMessagesDescription = "Number of messages that were delivered to the application."
- // MessagingClientOperationDuration is the metric conforming to the
- // "messaging.client.operation.duration" semantic conventions. It represents
- // the duration of messaging operation initiated by a producer or consumer
- // client.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- MessagingClientOperationDurationName = "messaging.client.operation.duration"
- MessagingClientOperationDurationUnit = "s"
- MessagingClientOperationDurationDescription = "Duration of messaging operation initiated by a producer or consumer client."
- // MessagingClientPublishedMessages is the metric conforming to the
- // "messaging.client.published.messages" semantic conventions. It represents
- // the deprecated. Use `messaging.client.sent.messages` instead.
- // Instrument: counter
- // Unit: {message}
- // Stability: development
- // Deprecated: Replaced by `messaging.client.sent.messages`.
- MessagingClientPublishedMessagesName = "messaging.client.published.messages"
- MessagingClientPublishedMessagesUnit = "{message}"
- MessagingClientPublishedMessagesDescription = "Deprecated. Use `messaging.client.sent.messages` instead."
- // MessagingClientSentMessages is the metric conforming to the
- // "messaging.client.sent.messages" semantic conventions. It represents the
- // number of messages producer attempted to send to the broker.
- // Instrument: counter
- // Unit: {message}
- // Stability: development
- MessagingClientSentMessagesName = "messaging.client.sent.messages"
- MessagingClientSentMessagesUnit = "{message}"
- MessagingClientSentMessagesDescription = "Number of messages producer attempted to send to the broker."
- // MessagingProcessDuration is the metric conforming to the
- // "messaging.process.duration" semantic conventions. It represents the
- // duration of processing operation.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- MessagingProcessDurationName = "messaging.process.duration"
- MessagingProcessDurationUnit = "s"
- MessagingProcessDurationDescription = "Duration of processing operation."
- // MessagingProcessMessages is the metric conforming to the
- // "messaging.process.messages" semantic conventions. It represents the
- // deprecated. Use `messaging.client.consumed.messages` instead.
- // Instrument: counter
- // Unit: {message}
- // Stability: development
- // Deprecated: Replaced by `messaging.client.consumed.messages`.
- MessagingProcessMessagesName = "messaging.process.messages"
- MessagingProcessMessagesUnit = "{message}"
- MessagingProcessMessagesDescription = "Deprecated. Use `messaging.client.consumed.messages` instead."
- // MessagingPublishDuration is the metric conforming to the
- // "messaging.publish.duration" semantic conventions. It represents the
- // deprecated. Use `messaging.client.operation.duration` instead.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- // Deprecated: Replaced by `messaging.client.operation.duration`.
- MessagingPublishDurationName = "messaging.publish.duration"
- MessagingPublishDurationUnit = "s"
- MessagingPublishDurationDescription = "Deprecated. Use `messaging.client.operation.duration` instead."
- // MessagingPublishMessages is the metric conforming to the
- // "messaging.publish.messages" semantic conventions. It represents the
- // deprecated. Use `messaging.client.produced.messages` instead.
- // Instrument: counter
- // Unit: {message}
- // Stability: development
- // Deprecated: Replaced by `messaging.client.produced.messages`.
- MessagingPublishMessagesName = "messaging.publish.messages"
- MessagingPublishMessagesUnit = "{message}"
- MessagingPublishMessagesDescription = "Deprecated. Use `messaging.client.produced.messages` instead."
- // MessagingReceiveDuration is the metric conforming to the
- // "messaging.receive.duration" semantic conventions. It represents the
- // deprecated. Use `messaging.client.operation.duration` instead.
- // Instrument: histogram
- // Unit: s
- // Stability: development
- // Deprecated: Replaced by `messaging.client.operation.duration`.
- MessagingReceiveDurationName = "messaging.receive.duration"
- MessagingReceiveDurationUnit = "s"
- MessagingReceiveDurationDescription = "Deprecated. Use `messaging.client.operation.duration` instead."
- // MessagingReceiveMessages is the metric conforming to the
- // "messaging.receive.messages" semantic conventions. It represents the
- // deprecated. Use `messaging.client.consumed.messages` instead.
- // Instrument: counter
- // Unit: {message}
- // Stability: development
- // Deprecated: Replaced by `messaging.client.consumed.messages`.
- MessagingReceiveMessagesName = "messaging.receive.messages"
- MessagingReceiveMessagesUnit = "{message}"
- MessagingReceiveMessagesDescription = "Deprecated. Use `messaging.client.consumed.messages` instead."
- // ProcessContextSwitches is the metric conforming to the
- // "process.context_switches" semantic conventions. It represents the number of
- // times the process has been context switched.
- // Instrument: counter
- // Unit: {count}
- // Stability: development
- ProcessContextSwitchesName = "process.context_switches"
- ProcessContextSwitchesUnit = "{count}"
- ProcessContextSwitchesDescription = "Number of times the process has been context switched."
- // ProcessCPUTime is the metric conforming to the "process.cpu.time" semantic
- // conventions. It represents the total CPU seconds broken down by different
- // states.
- // Instrument: counter
- // Unit: s
- // Stability: development
- ProcessCPUTimeName = "process.cpu.time"
- ProcessCPUTimeUnit = "s"
- ProcessCPUTimeDescription = "Total CPU seconds broken down by different states."
- // ProcessCPUUtilization is the metric conforming to the
- // "process.cpu.utilization" semantic conventions. It represents the difference
- // in process.cpu.time since the last measurement, divided by the elapsed time
- // and number of CPUs available to the process.
- // Instrument: gauge
- // Unit: 1
- // Stability: development
- ProcessCPUUtilizationName = "process.cpu.utilization"
- ProcessCPUUtilizationUnit = "1"
- ProcessCPUUtilizationDescription = "Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process."
- // ProcessDiskIo is the metric conforming to the "process.disk.io" semantic
- // conventions. It represents the disk bytes transferred.
- // Instrument: counter
- // Unit: By
- // Stability: development
- ProcessDiskIoName = "process.disk.io"
- ProcessDiskIoUnit = "By"
- ProcessDiskIoDescription = "Disk bytes transferred."
- // ProcessMemoryUsage is the metric conforming to the "process.memory.usage"
- // semantic conventions. It represents the amount of physical memory in use.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- ProcessMemoryUsageName = "process.memory.usage"
- ProcessMemoryUsageUnit = "By"
- ProcessMemoryUsageDescription = "The amount of physical memory in use."
- // ProcessMemoryVirtual is the metric conforming to the
- // "process.memory.virtual" semantic conventions. It represents the amount of
- // committed virtual memory.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- ProcessMemoryVirtualName = "process.memory.virtual"
- ProcessMemoryVirtualUnit = "By"
- ProcessMemoryVirtualDescription = "The amount of committed virtual memory."
- // ProcessNetworkIo is the metric conforming to the "process.network.io"
- // semantic conventions. It represents the network bytes transferred.
- // Instrument: counter
- // Unit: By
- // Stability: development
- ProcessNetworkIoName = "process.network.io"
- ProcessNetworkIoUnit = "By"
- ProcessNetworkIoDescription = "Network bytes transferred."
- // ProcessOpenFileDescriptorCount is the metric conforming to the
- // "process.open_file_descriptor.count" semantic conventions. It represents the
- // number of file descriptors in use by the process.
- // Instrument: updowncounter
- // Unit: {count}
- // Stability: development
- ProcessOpenFileDescriptorCountName = "process.open_file_descriptor.count"
- ProcessOpenFileDescriptorCountUnit = "{count}"
- ProcessOpenFileDescriptorCountDescription = "Number of file descriptors in use by the process."
- // ProcessPagingFaults is the metric conforming to the "process.paging.faults"
- // semantic conventions. It represents the number of page faults the process
- // has made.
- // Instrument: counter
- // Unit: {fault}
- // Stability: development
- ProcessPagingFaultsName = "process.paging.faults"
- ProcessPagingFaultsUnit = "{fault}"
- ProcessPagingFaultsDescription = "Number of page faults the process has made."
- // ProcessThreadCount is the metric conforming to the "process.thread.count"
- // semantic conventions. It represents the process threads count.
- // Instrument: updowncounter
- // Unit: {thread}
- // Stability: development
- ProcessThreadCountName = "process.thread.count"
- ProcessThreadCountUnit = "{thread}"
- ProcessThreadCountDescription = "Process threads count."
- // ProcessUptime is the metric conforming to the "process.uptime" semantic
- // conventions. It represents the time the process has been running.
- // Instrument: gauge
- // Unit: s
- // Stability: development
- ProcessUptimeName = "process.uptime"
- ProcessUptimeUnit = "s"
- ProcessUptimeDescription = "The time the process has been running."
- // RPCClientDuration is the metric conforming to the "rpc.client.duration"
- // semantic conventions. It represents the measures the duration of outbound
- // RPC.
- // Instrument: histogram
- // Unit: ms
- // Stability: development
- RPCClientDurationName = "rpc.client.duration"
- RPCClientDurationUnit = "ms"
- RPCClientDurationDescription = "Measures the duration of outbound RPC."
- // RPCClientRequestSize is the metric conforming to the
- // "rpc.client.request.size" semantic conventions. It represents the measures
- // the size of RPC request messages (uncompressed).
- // Instrument: histogram
- // Unit: By
- // Stability: development
- RPCClientRequestSizeName = "rpc.client.request.size"
- RPCClientRequestSizeUnit = "By"
- RPCClientRequestSizeDescription = "Measures the size of RPC request messages (uncompressed)."
- // RPCClientRequestsPerRPC is the metric conforming to the
- // "rpc.client.requests_per_rpc" semantic conventions. It represents the
- // measures the number of messages received per RPC.
- // Instrument: histogram
- // Unit: {count}
- // Stability: development
- RPCClientRequestsPerRPCName = "rpc.client.requests_per_rpc"
- RPCClientRequestsPerRPCUnit = "{count}"
- RPCClientRequestsPerRPCDescription = "Measures the number of messages received per RPC."
- // RPCClientResponseSize is the metric conforming to the
- // "rpc.client.response.size" semantic conventions. It represents the measures
- // the size of RPC response messages (uncompressed).
- // Instrument: histogram
- // Unit: By
- // Stability: development
- RPCClientResponseSizeName = "rpc.client.response.size"
- RPCClientResponseSizeUnit = "By"
- RPCClientResponseSizeDescription = "Measures the size of RPC response messages (uncompressed)."
- // RPCClientResponsesPerRPC is the metric conforming to the
- // "rpc.client.responses_per_rpc" semantic conventions. It represents the
- // measures the number of messages sent per RPC.
- // Instrument: histogram
- // Unit: {count}
- // Stability: development
- RPCClientResponsesPerRPCName = "rpc.client.responses_per_rpc"
- RPCClientResponsesPerRPCUnit = "{count}"
- RPCClientResponsesPerRPCDescription = "Measures the number of messages sent per RPC."
- // RPCServerDuration is the metric conforming to the "rpc.server.duration"
- // semantic conventions. It represents the measures the duration of inbound
- // RPC.
- // Instrument: histogram
- // Unit: ms
- // Stability: development
- RPCServerDurationName = "rpc.server.duration"
- RPCServerDurationUnit = "ms"
- RPCServerDurationDescription = "Measures the duration of inbound RPC."
- // RPCServerRequestSize is the metric conforming to the
- // "rpc.server.request.size" semantic conventions. It represents the measures
- // the size of RPC request messages (uncompressed).
- // Instrument: histogram
- // Unit: By
- // Stability: development
- RPCServerRequestSizeName = "rpc.server.request.size"
- RPCServerRequestSizeUnit = "By"
- RPCServerRequestSizeDescription = "Measures the size of RPC request messages (uncompressed)."
- // RPCServerRequestsPerRPC is the metric conforming to the
- // "rpc.server.requests_per_rpc" semantic conventions. It represents the
- // measures the number of messages received per RPC.
- // Instrument: histogram
- // Unit: {count}
- // Stability: development
- RPCServerRequestsPerRPCName = "rpc.server.requests_per_rpc"
- RPCServerRequestsPerRPCUnit = "{count}"
- RPCServerRequestsPerRPCDescription = "Measures the number of messages received per RPC."
- // RPCServerResponseSize is the metric conforming to the
- // "rpc.server.response.size" semantic conventions. It represents the measures
- // the size of RPC response messages (uncompressed).
- // Instrument: histogram
- // Unit: By
- // Stability: development
- RPCServerResponseSizeName = "rpc.server.response.size"
- RPCServerResponseSizeUnit = "By"
- RPCServerResponseSizeDescription = "Measures the size of RPC response messages (uncompressed)."
- // RPCServerResponsesPerRPC is the metric conforming to the
- // "rpc.server.responses_per_rpc" semantic conventions. It represents the
- // measures the number of messages sent per RPC.
- // Instrument: histogram
- // Unit: {count}
- // Stability: development
- RPCServerResponsesPerRPCName = "rpc.server.responses_per_rpc"
- RPCServerResponsesPerRPCUnit = "{count}"
- RPCServerResponsesPerRPCDescription = "Measures the number of messages sent per RPC."
- // SignalrServerActiveConnections is the metric conforming to the
- // "signalr.server.active_connections" semantic conventions. It represents the
- // number of connections that are currently active on the server.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: stable
- SignalrServerActiveConnectionsName = "signalr.server.active_connections"
- SignalrServerActiveConnectionsUnit = "{connection}"
- SignalrServerActiveConnectionsDescription = "Number of connections that are currently active on the server."
- // SignalrServerConnectionDuration is the metric conforming to the
- // "signalr.server.connection.duration" semantic conventions. It represents the
- // duration of connections on the server.
- // Instrument: histogram
- // Unit: s
- // Stability: stable
- SignalrServerConnectionDurationName = "signalr.server.connection.duration"
- SignalrServerConnectionDurationUnit = "s"
- SignalrServerConnectionDurationDescription = "The duration of connections on the server."
- // SystemCPUFrequency is the metric conforming to the "system.cpu.frequency"
- // semantic conventions. It represents the reports the current frequency of the
- // CPU in Hz.
- // Instrument: gauge
- // Unit: {Hz}
- // Stability: development
- SystemCPUFrequencyName = "system.cpu.frequency"
- SystemCPUFrequencyUnit = "{Hz}"
- SystemCPUFrequencyDescription = "Reports the current frequency of the CPU in Hz"
- // SystemCPULogicalCount is the metric conforming to the
- // "system.cpu.logical.count" semantic conventions. It represents the reports
- // the number of logical (virtual) processor cores created by the operating
- // system to manage multitasking.
- // Instrument: updowncounter
- // Unit: {cpu}
- // Stability: development
- SystemCPULogicalCountName = "system.cpu.logical.count"
- SystemCPULogicalCountUnit = "{cpu}"
- SystemCPULogicalCountDescription = "Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking"
- // SystemCPUPhysicalCount is the metric conforming to the
- // "system.cpu.physical.count" semantic conventions. It represents the reports
- // the number of actual physical processor cores on the hardware.
- // Instrument: updowncounter
- // Unit: {cpu}
- // Stability: development
- SystemCPUPhysicalCountName = "system.cpu.physical.count"
- SystemCPUPhysicalCountUnit = "{cpu}"
- SystemCPUPhysicalCountDescription = "Reports the number of actual physical processor cores on the hardware"
- // SystemCPUTime is the metric conforming to the "system.cpu.time" semantic
- // conventions. It represents the seconds each logical CPU spent on each mode.
- // Instrument: counter
- // Unit: s
- // Stability: development
- SystemCPUTimeName = "system.cpu.time"
- SystemCPUTimeUnit = "s"
- SystemCPUTimeDescription = "Seconds each logical CPU spent on each mode"
- // SystemCPUUtilization is the metric conforming to the
- // "system.cpu.utilization" semantic conventions. It represents the difference
- // in system.cpu.time since the last measurement, divided by the elapsed time
- // and number of logical CPUs.
- // Instrument: gauge
- // Unit: 1
- // Stability: development
- SystemCPUUtilizationName = "system.cpu.utilization"
- SystemCPUUtilizationUnit = "1"
- SystemCPUUtilizationDescription = "Difference in system.cpu.time since the last measurement, divided by the elapsed time and number of logical CPUs"
- // SystemDiskIo is the metric conforming to the "system.disk.io" semantic
- // conventions.
- // Instrument: counter
- // Unit: By
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemDiskIoName = "system.disk.io"
- SystemDiskIoUnit = "By"
- // SystemDiskIoTime is the metric conforming to the "system.disk.io_time"
- // semantic conventions. It represents the time disk spent activated.
- // Instrument: counter
- // Unit: s
- // Stability: development
- SystemDiskIoTimeName = "system.disk.io_time"
- SystemDiskIoTimeUnit = "s"
- SystemDiskIoTimeDescription = "Time disk spent activated"
- // SystemDiskLimit is the metric conforming to the "system.disk.limit" semantic
- // conventions. It represents the total storage capacity of the disk.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- SystemDiskLimitName = "system.disk.limit"
- SystemDiskLimitUnit = "By"
- SystemDiskLimitDescription = "The total storage capacity of the disk"
- // SystemDiskMerged is the metric conforming to the "system.disk.merged"
- // semantic conventions.
- // Instrument: counter
- // Unit: {operation}
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemDiskMergedName = "system.disk.merged"
- SystemDiskMergedUnit = "{operation}"
- // SystemDiskOperationTime is the metric conforming to the
- // "system.disk.operation_time" semantic conventions. It represents the sum of
- // the time each operation took to complete.
- // Instrument: counter
- // Unit: s
- // Stability: development
- SystemDiskOperationTimeName = "system.disk.operation_time"
- SystemDiskOperationTimeUnit = "s"
- SystemDiskOperationTimeDescription = "Sum of the time each operation took to complete"
- // SystemDiskOperations is the metric conforming to the
- // "system.disk.operations" semantic conventions.
- // Instrument: counter
- // Unit: {operation}
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemDiskOperationsName = "system.disk.operations"
- SystemDiskOperationsUnit = "{operation}"
- // SystemFilesystemLimit is the metric conforming to the
- // "system.filesystem.limit" semantic conventions. It represents the total
- // storage capacity of the filesystem.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- SystemFilesystemLimitName = "system.filesystem.limit"
- SystemFilesystemLimitUnit = "By"
- SystemFilesystemLimitDescription = "The total storage capacity of the filesystem"
- // SystemFilesystemUsage is the metric conforming to the
- // "system.filesystem.usage" semantic conventions. It represents the reports a
- // filesystem's space usage across different states.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- SystemFilesystemUsageName = "system.filesystem.usage"
- SystemFilesystemUsageUnit = "By"
- SystemFilesystemUsageDescription = "Reports a filesystem's space usage across different states."
- // SystemFilesystemUtilization is the metric conforming to the
- // "system.filesystem.utilization" semantic conventions.
- // Instrument: gauge
- // Unit: 1
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemFilesystemUtilizationName = "system.filesystem.utilization"
- SystemFilesystemUtilizationUnit = "1"
- // SystemLinuxMemoryAvailable is the metric conforming to the
- // "system.linux.memory.available" semantic conventions. It represents an
- // estimate of how much memory is available for starting new applications,
- // without causing swapping.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- SystemLinuxMemoryAvailableName = "system.linux.memory.available"
- SystemLinuxMemoryAvailableUnit = "By"
- SystemLinuxMemoryAvailableDescription = "An estimate of how much memory is available for starting new applications, without causing swapping"
- // SystemLinuxMemorySlabUsage is the metric conforming to the
- // "system.linux.memory.slab.usage" semantic conventions. It represents the
- // reports the memory used by the Linux kernel for managing caches of
- // frequently used objects.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- SystemLinuxMemorySlabUsageName = "system.linux.memory.slab.usage"
- SystemLinuxMemorySlabUsageUnit = "By"
- SystemLinuxMemorySlabUsageDescription = "Reports the memory used by the Linux kernel for managing caches of frequently used objects."
- // SystemMemoryLimit is the metric conforming to the "system.memory.limit"
- // semantic conventions. It represents the total memory available in the
- // system.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- SystemMemoryLimitName = "system.memory.limit"
- SystemMemoryLimitUnit = "By"
- SystemMemoryLimitDescription = "Total memory available in the system."
- // SystemMemoryShared is the metric conforming to the "system.memory.shared"
- // semantic conventions. It represents the shared memory used (mostly by
- // tmpfs).
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- SystemMemorySharedName = "system.memory.shared"
- SystemMemorySharedUnit = "By"
- SystemMemorySharedDescription = "Shared memory used (mostly by tmpfs)."
- // SystemMemoryUsage is the metric conforming to the "system.memory.usage"
- // semantic conventions. It represents the reports memory in use by state.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- SystemMemoryUsageName = "system.memory.usage"
- SystemMemoryUsageUnit = "By"
- SystemMemoryUsageDescription = "Reports memory in use by state."
- // SystemMemoryUtilization is the metric conforming to the
- // "system.memory.utilization" semantic conventions.
- // Instrument: gauge
- // Unit: 1
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemMemoryUtilizationName = "system.memory.utilization"
- SystemMemoryUtilizationUnit = "1"
- // SystemNetworkConnections is the metric conforming to the
- // "system.network.connections" semantic conventions.
- // Instrument: updowncounter
- // Unit: {connection}
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemNetworkConnectionsName = "system.network.connections"
- SystemNetworkConnectionsUnit = "{connection}"
- // SystemNetworkDropped is the metric conforming to the
- // "system.network.dropped" semantic conventions. It represents the count of
- // packets that are dropped or discarded even though there was no error.
- // Instrument: counter
- // Unit: {packet}
- // Stability: development
- SystemNetworkDroppedName = "system.network.dropped"
- SystemNetworkDroppedUnit = "{packet}"
- SystemNetworkDroppedDescription = "Count of packets that are dropped or discarded even though there was no error"
- // SystemNetworkErrors is the metric conforming to the "system.network.errors"
- // semantic conventions. It represents the count of network errors detected.
- // Instrument: counter
- // Unit: {error}
- // Stability: development
- SystemNetworkErrorsName = "system.network.errors"
- SystemNetworkErrorsUnit = "{error}"
- SystemNetworkErrorsDescription = "Count of network errors detected"
- // SystemNetworkIo is the metric conforming to the "system.network.io" semantic
- // conventions.
- // Instrument: counter
- // Unit: By
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemNetworkIoName = "system.network.io"
- SystemNetworkIoUnit = "By"
- // SystemNetworkPackets is the metric conforming to the
- // "system.network.packets" semantic conventions.
- // Instrument: counter
- // Unit: {packet}
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemNetworkPacketsName = "system.network.packets"
- SystemNetworkPacketsUnit = "{packet}"
- // SystemPagingFaults is the metric conforming to the "system.paging.faults"
- // semantic conventions.
- // Instrument: counter
- // Unit: {fault}
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemPagingFaultsName = "system.paging.faults"
- SystemPagingFaultsUnit = "{fault}"
- // SystemPagingOperations is the metric conforming to the
- // "system.paging.operations" semantic conventions.
- // Instrument: counter
- // Unit: {operation}
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemPagingOperationsName = "system.paging.operations"
- SystemPagingOperationsUnit = "{operation}"
- // SystemPagingUsage is the metric conforming to the "system.paging.usage"
- // semantic conventions. It represents the unix swap or windows pagefile usage.
- // Instrument: updowncounter
- // Unit: By
- // Stability: development
- SystemPagingUsageName = "system.paging.usage"
- SystemPagingUsageUnit = "By"
- SystemPagingUsageDescription = "Unix swap or windows pagefile usage"
- // SystemPagingUtilization is the metric conforming to the
- // "system.paging.utilization" semantic conventions.
- // Instrument: gauge
- // Unit: 1
- // Stability: development
- // NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
- SystemPagingUtilizationName = "system.paging.utilization"
- SystemPagingUtilizationUnit = "1"
- // SystemProcessCount is the metric conforming to the "system.process.count"
- // semantic conventions. It represents the total number of processes in each
- // state.
- // Instrument: updowncounter
- // Unit: {process}
- // Stability: development
- SystemProcessCountName = "system.process.count"
- SystemProcessCountUnit = "{process}"
- SystemProcessCountDescription = "Total number of processes in each state"
- // SystemProcessCreated is the metric conforming to the
- // "system.process.created" semantic conventions. It represents the total
- // number of processes created over uptime of the host.
- // Instrument: counter
- // Unit: {process}
- // Stability: development
- SystemProcessCreatedName = "system.process.created"
- SystemProcessCreatedUnit = "{process}"
- SystemProcessCreatedDescription = "Total number of processes created over uptime of the host"
- // SystemUptime is the metric conforming to the "system.uptime" semantic
- // conventions. It represents the time the system has been running.
- // Instrument: gauge
- // Unit: s
- // Stability: development
- SystemUptimeName = "system.uptime"
- SystemUptimeUnit = "s"
- SystemUptimeDescription = "The time the system has been running"
- // VCSChangeCount is the metric conforming to the "vcs.change.count" semantic
- // conventions. It represents the number of changes (pull requests/merge
- // requests/changelists) in a repository, categorized by their state (e.g. open
- // or merged).
- // Instrument: updowncounter
- // Unit: {change}
- // Stability: development
- VCSChangeCountName = "vcs.change.count"
- VCSChangeCountUnit = "{change}"
- VCSChangeCountDescription = "The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged)"
- // VCSChangeDuration is the metric conforming to the "vcs.change.duration"
- // semantic conventions. It represents the time duration a change (pull
- // request/merge request/changelist) has been in a given state.
- // Instrument: gauge
- // Unit: s
- // Stability: development
- VCSChangeDurationName = "vcs.change.duration"
- VCSChangeDurationUnit = "s"
- VCSChangeDurationDescription = "The time duration a change (pull request/merge request/changelist) has been in a given state."
- // VCSChangeTimeToApproval is the metric conforming to the
- // "vcs.change.time_to_approval" semantic conventions. It represents the amount
- // of time since its creation it took a change (pull request/merge
- // request/changelist) to get the first approval.
- // Instrument: gauge
- // Unit: s
- // Stability: development
- VCSChangeTimeToApprovalName = "vcs.change.time_to_approval"
- VCSChangeTimeToApprovalUnit = "s"
- VCSChangeTimeToApprovalDescription = "The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval."
- // VCSChangeTimeToMerge is the metric conforming to the
- // "vcs.change.time_to_merge" semantic conventions. It represents the amount of
- // time since its creation it took a change (pull request/merge
- // request/changelist) to get merged into the target(base) ref.
- // Instrument: gauge
- // Unit: s
- // Stability: development
- VCSChangeTimeToMergeName = "vcs.change.time_to_merge"
- VCSChangeTimeToMergeUnit = "s"
- VCSChangeTimeToMergeDescription = "The amount of time since its creation it took a change (pull request/merge request/changelist) to get merged into the target(base) ref."
- // VCSContributorCount is the metric conforming to the "vcs.contributor.count"
- // semantic conventions. It represents the number of unique contributors to a
- // repository.
- // Instrument: gauge
- // Unit: {contributor}
- // Stability: development
- VCSContributorCountName = "vcs.contributor.count"
- VCSContributorCountUnit = "{contributor}"
- VCSContributorCountDescription = "The number of unique contributors to a repository"
- // VCSRefCount is the metric conforming to the "vcs.ref.count" semantic
- // conventions. It represents the number of refs of type branch or tag in a
- // repository.
- // Instrument: updowncounter
- // Unit: {ref}
- // Stability: development
- VCSRefCountName = "vcs.ref.count"
- VCSRefCountUnit = "{ref}"
- VCSRefCountDescription = "The number of refs of type branch or tag in a repository."
- // VCSRefLinesDelta is the metric conforming to the "vcs.ref.lines_delta"
- // semantic conventions. It represents the number of lines added/removed in a
- // ref (branch) relative to the ref from the `vcs.ref.base.name` attribute.
- // Instrument: gauge
- // Unit: {line}
- // Stability: development
- VCSRefLinesDeltaName = "vcs.ref.lines_delta"
- VCSRefLinesDeltaUnit = "{line}"
- VCSRefLinesDeltaDescription = "The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute."
- // VCSRefRevisionsDelta is the metric conforming to the
- // "vcs.ref.revisions_delta" semantic conventions. It represents the number of
- // revisions (commits) a ref (branch) is ahead/behind the branch from the
- // `vcs.ref.base.name` attribute.
- // Instrument: gauge
- // Unit: {revision}
- // Stability: development
- VCSRefRevisionsDeltaName = "vcs.ref.revisions_delta"
- VCSRefRevisionsDeltaUnit = "{revision}"
- VCSRefRevisionsDeltaDescription = "The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute"
- // VCSRefTime is the metric conforming to the "vcs.ref.time" semantic
- // conventions. It represents the time a ref (branch) created from the default
- // branch (trunk) has existed. The `ref.type` attribute will always be `branch`
- // .
- // Instrument: gauge
- // Unit: s
- // Stability: development
- VCSRefTimeName = "vcs.ref.time"
- VCSRefTimeUnit = "s"
- VCSRefTimeDescription = "Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`"
- // VCSRepositoryCount is the metric conforming to the "vcs.repository.count"
- // semantic conventions. It represents the number of repositories in an
- // organization.
- // Instrument: updowncounter
- // Unit: {repository}
- // Stability: development
- VCSRepositoryCountName = "vcs.repository.count"
- VCSRepositoryCountUnit = "{repository}"
- VCSRepositoryCountDescription = "The number of repositories in an organization."
-)
\ No newline at end of file
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/schema.go b/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/schema.go
deleted file mode 100644
index b2e7a515a..000000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.30.0/schema.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.30.0"
-
-// SchemaURL is the schema URL that matches the version of the semantic conventions
-// that this package defines. Semconv packages starting from v1.4.0 must declare
-// non-empty schema URL in the form https://opentelemetry.io/schemas/
-const SchemaURL = "https://opentelemetry.io/schemas/1.30.0"
diff --git a/vendor/modules.txt b/vendor/modules.txt
index db06247b0..73ad02501 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -5,6 +5,8 @@
# 4d63.com/gochecknoglobals v0.2.2
## explicit; go 1.18
4d63.com/gochecknoglobals/checknoglobals
+# cel.dev/expr v0.22.1
+## explicit; go 1.22.0
# cel.dev/expr v0.24.0
## explicit; go 1.22.0
cel.dev/expr
@@ -28,6 +30,8 @@ github.com/Antonboom/testifylint/internal/checkers
github.com/Antonboom/testifylint/internal/checkers/printf
github.com/Antonboom/testifylint/internal/config
github.com/Antonboom/testifylint/internal/testify
+# github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0
+## explicit; go 1.23.0
# github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0
## explicit; go 1.23.0
github.com/Azure/azure-sdk-for-go/sdk/azcore
@@ -50,6 +54,8 @@ github.com/Azure/azure-sdk-for-go/sdk/azcore/policy
github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime
github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming
github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing
+# github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1
+## explicit; go 1.23.0
# github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2
## explicit; go 1.23.0
github.com/Azure/azure-sdk-for-go/sdk/internal/diag
@@ -78,9 +84,13 @@ github.com/GaijinEntertainment/go-exhaustruct/v3/analyzer
github.com/GaijinEntertainment/go-exhaustruct/v3/internal/comment
github.com/GaijinEntertainment/go-exhaustruct/v3/internal/pattern
github.com/GaijinEntertainment/go-exhaustruct/v3/internal/structure
+# github.com/IBM/go-sdk-core/v5 v5.19.1
+## explicit; go 1.23.0
# github.com/IBM/go-sdk-core/v5 v5.21.0
## explicit; go 1.23.0
github.com/IBM/go-sdk-core/v5/core
+# github.com/IBM/vpc-go-sdk v0.68.0
+## explicit; go 1.23.0
# github.com/IBM/vpc-go-sdk v0.71.1
## explicit; go 1.23.0
github.com/IBM/vpc-go-sdk/common
@@ -173,6 +183,8 @@ github.com/aws/aws-sdk-go/service/sso/ssoiface
github.com/aws/aws-sdk-go/service/ssooidc
github.com/aws/aws-sdk-go/service/sts
github.com/aws/aws-sdk-go/service/sts/stsiface
+# github.com/aws/aws-sdk-go-v2 v1.38.0
+## explicit; go 1.22
# github.com/aws/aws-sdk-go-v2 v1.39.2
## explicit; go 1.22
github.com/aws/aws-sdk-go-v2/aws
@@ -182,6 +194,8 @@ github.com/aws/aws-sdk-go-v2/internal/sync/singleflight
# github.com/aws/aws-sdk-go-v2/service/ec2 v1.233.0
## explicit; go 1.22
github.com/aws/aws-sdk-go-v2/service/ec2/types
+# github.com/aws/smithy-go v1.22.5
+## explicit; go 1.22
# github.com/aws/smithy-go v1.23.0
## explicit; go 1.22
github.com/aws/smithy-go
@@ -344,16 +358,22 @@ github.com/felixge/httpsnoop
# github.com/firefart/nonamedreturns v1.0.5
## explicit; go 1.18
github.com/firefart/nonamedreturns/analyzer
+# github.com/fsnotify/fsnotify v1.8.0
+## explicit; go 1.17
# github.com/fsnotify/fsnotify v1.9.0
## explicit; go 1.17
github.com/fsnotify/fsnotify
github.com/fsnotify/fsnotify/internal
+# github.com/fxamacker/cbor/v2 v2.7.0
+## explicit; go 1.20
# github.com/fxamacker/cbor/v2 v2.9.0
## explicit; go 1.20
github.com/fxamacker/cbor/v2
# github.com/fzipp/gocyclo v0.6.0
## explicit; go 1.18
github.com/fzipp/gocyclo
+# github.com/gabriel-vasile/mimetype v1.4.8
+## explicit; go 1.23.0
# github.com/gabriel-vasile/mimetype v1.4.9
## explicit; go 1.23.0
github.com/gabriel-vasile/mimetype
@@ -655,6 +675,8 @@ github.com/golangci/unconvert
# github.com/google/btree v1.1.3
## explicit; go 1.18
github.com/google/btree
+# github.com/google/cel-go v0.23.2
+## explicit; go 1.22.0
# github.com/google/cel-go v0.26.0
## explicit; go 1.22.0
github.com/google/cel-go/cel
@@ -680,6 +702,8 @@ github.com/google/cel-go/interpreter
github.com/google/cel-go/interpreter/functions
github.com/google/cel-go/parser
github.com/google/cel-go/parser/gen
+# github.com/google/gnostic-models v0.6.9
+## explicit; go 1.22
# github.com/google/gnostic-models v0.7.0
## explicit; go 1.22
github.com/google/gnostic-models/compiler
@@ -720,6 +744,8 @@ github.com/google/go-containerregistry/pkg/v1/remote/transport
github.com/google/go-containerregistry/pkg/v1/stream
github.com/google/go-containerregistry/pkg/v1/tarball
github.com/google/go-containerregistry/pkg/v1/types
+# github.com/google/pprof v0.0.0-20250403155104-27863c87afa6
+## explicit; go 1.24.0
# github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6
## explicit; go 1.24.0
github.com/google/pprof/profile
@@ -803,6 +829,8 @@ github.com/hashicorp/go-cleanhttp
# github.com/hashicorp/go-immutable-radix/v2 v2.1.0
## explicit; go 1.18
github.com/hashicorp/go-immutable-radix/v2
+# github.com/hashicorp/go-retryablehttp v0.7.7
+## explicit; go 1.23
# github.com/hashicorp/go-retryablehttp v0.7.8
## explicit; go 1.23
github.com/hashicorp/go-retryablehttp
@@ -941,9 +969,13 @@ github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1
# github.com/metal3-io/baremetal-operator/pkg/hardwareutils v0.5.1
## explicit; go 1.20
github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc
+# github.com/metal3-io/cluster-api-provider-metal3/api v1.10.1
+## explicit; go 1.24.0
# github.com/metal3-io/cluster-api-provider-metal3/api v1.11.2
## explicit; go 1.24.0
github.com/metal3-io/cluster-api-provider-metal3/api/v1beta1
+# github.com/metal3-io/ip-address-manager/api v1.10.1
+## explicit; go 1.24.0
# github.com/metal3-io/ip-address-manager/api v1.11.2
## explicit; go 1.24.0
github.com/metal3-io/ip-address-manager/api/v1alpha1
@@ -965,6 +997,8 @@ github.com/mitchellh/mapstructure
# github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
## explicit
github.com/modern-go/concurrent
+# github.com/modern-go/reflect2 v1.0.2
+## explicit; go 1.12
# github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee
## explicit; go 1.12
github.com/modern-go/reflect2
@@ -1014,13 +1048,14 @@ github.com/oklog/ulid
# github.com/olekukonko/tablewriter v0.0.5
## explicit; go 1.12
github.com/olekukonko/tablewriter
-# github.com/onsi/ginkgo/v2 v2.27.2
-## explicit; go 1.23.0
+# github.com/onsi/ginkgo/v2 v2.23.4 => github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20241205171354-8006f302fd12
+## explicit; go 1.22.0
+# github.com/onsi/ginkgo/v2 v2.27.2 => github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20241205171354-8006f302fd12
+## explicit; go 1.22.0
github.com/onsi/ginkgo/v2
github.com/onsi/ginkgo/v2/config
github.com/onsi/ginkgo/v2/formatter
github.com/onsi/ginkgo/v2/ginkgo
-github.com/onsi/ginkgo/v2/ginkgo/automaxprocs
github.com/onsi/ginkgo/v2/ginkgo/build
github.com/onsi/ginkgo/v2/ginkgo/command
github.com/onsi/ginkgo/v2/ginkgo/generators
@@ -1034,10 +1069,11 @@ github.com/onsi/ginkgo/v2/internal
github.com/onsi/ginkgo/v2/internal/global
github.com/onsi/ginkgo/v2/internal/interrupt_handler
github.com/onsi/ginkgo/v2/internal/parallel_support
-github.com/onsi/ginkgo/v2/internal/reporters
github.com/onsi/ginkgo/v2/internal/testingtproxy
github.com/onsi/ginkgo/v2/reporters
github.com/onsi/ginkgo/v2/types
+# github.com/onsi/gomega v1.38.0
+## explicit; go 1.23.0
# github.com/onsi/gomega v1.38.2
## explicit; go 1.23.0
github.com/onsi/gomega
@@ -1058,6 +1094,24 @@ github.com/opencontainers/go-digest
## explicit; go 1.18
github.com/opencontainers/image-spec/specs-go
github.com/opencontainers/image-spec/specs-go/v1
+# github.com/openshift-eng/openshift-tests-extension v0.0.0-20251125140340-13f4631a80b0
+## explicit; go 1.23.0
+github.com/openshift-eng/openshift-tests-extension/pkg/cmd
+github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdimages
+github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdinfo
+github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdlist
+github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun
+github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdupdate
+github.com/openshift-eng/openshift-tests-extension/pkg/dbtime
+github.com/openshift-eng/openshift-tests-extension/pkg/extension
+github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests
+github.com/openshift-eng/openshift-tests-extension/pkg/flags
+github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo
+github.com/openshift-eng/openshift-tests-extension/pkg/junit
+github.com/openshift-eng/openshift-tests-extension/pkg/util/sets
+github.com/openshift-eng/openshift-tests-extension/pkg/version
+# github.com/openshift/api v0.0.0-20250731015415-ed654edbd7c6
+## explicit; go 1.24.0
# github.com/openshift/api v0.0.0-20260228183123-9b2ee997d297
## explicit; go 1.24.0
github.com/openshift/api
@@ -1140,6 +1194,8 @@ github.com/openshift/api/template
github.com/openshift/api/template/v1
github.com/openshift/api/user
github.com/openshift/api/user/v1
+# github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee
+## explicit; go 1.24.0
# github.com/openshift/client-go v0.0.0-20260108185524-48f4ccfc4e13
## explicit; go 1.24.0
github.com/openshift/client-go/apiextensions/applyconfigurations/apiextensions/v1alpha1
@@ -1166,10 +1222,14 @@ github.com/openshift/client-go/machine/applyconfigurations/internal
github.com/openshift/client-go/machine/applyconfigurations/machine/v1beta1
github.com/openshift/client-go/operator/applyconfigurations/internal
github.com/openshift/client-go/operator/applyconfigurations/operator/v1
+# github.com/openshift/cluster-api-actuator-pkg v0.0.0-20250729202911-167220318f40 => github.com/openshift/cluster-api-actuator-pkg v0.0.0-20251212150432-4a60119d9691
+## explicit; go 1.24.0
# github.com/openshift/cluster-api-actuator-pkg v0.0.0-20251203134942-d9bd7b8593f3 => github.com/openshift/cluster-api-actuator-pkg v0.0.0-20251212150432-4a60119d9691
## explicit; go 1.24.0
github.com/openshift/cluster-api-actuator-pkg/pkg/framework
github.com/openshift/cluster-api-actuator-pkg/pkg/framework/gatherer
+# github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20250821122144-fd0936342469 => github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20251212150432-4a60119d9691
+## explicit; go 1.24.0
# github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0 => github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20251212150432-4a60119d9691
## explicit; go 1.24.0
github.com/openshift/cluster-api-actuator-pkg/testutils
@@ -1191,6 +1251,10 @@ github.com/openshift/cluster-api-provider-baremetal/pkg/apis/baremetal/v1alpha1
github.com/openshift/cluster-autoscaler-operator/pkg/apis/autoscaling/v1
# github.com/openshift/cluster-capi-operator v0.0.0-00010101000000-000000000000 => .
## explicit; go 1.24.0
+# github.com/openshift/cluster-capi-operator/e2e v0.0.0-20251121101530-509ccfd2960c
+## explicit; go 1.24.0
+# github.com/openshift/library-go v0.0.0-20250729191057-91376e1b394e
+## explicit; go 1.24.0
# github.com/openshift/library-go v0.0.0-20251222131241-289839b3ffe8
## explicit; go 1.24.0
github.com/openshift/library-go/pkg/apiserver/jsonpatch
@@ -1210,6 +1274,8 @@ github.com/openshift/library-go/pkg/operator/resource/resourcemerge
github.com/openshift/library-go/pkg/operator/resource/resourceread
github.com/openshift/library-go/pkg/operator/resourcesynccontroller
github.com/openshift/library-go/pkg/operator/v1helpers
+# github.com/openshift/machine-api-operator v0.2.1-0.20250721183005-388c07321caf
+## explicit; go 1.24.0
# github.com/openshift/machine-api-operator v0.2.1-0.20251221113137-33dd26d37dd9
## explicit; go 1.24.0
github.com/openshift/machine-api-operator/pkg/util/lifecyclehooks
@@ -1230,6 +1296,8 @@ github.com/pmezard/go-difflib/difflib
# github.com/polyfloyd/go-errorlint v1.7.1
## explicit; go 1.22.0
github.com/polyfloyd/go-errorlint/errorlint
+# github.com/prometheus/client_golang v1.22.0
+## explicit; go 1.23.0
# github.com/prometheus/client_golang v1.23.2
## explicit; go 1.23.0
github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil
@@ -1245,10 +1313,14 @@ github.com/prometheus/client_golang/prometheus/testutil/promlint/validations
# github.com/prometheus/client_model v0.6.2
## explicit; go 1.22.0
github.com/prometheus/client_model/go
+# github.com/prometheus/common v0.64.0
+## explicit; go 1.23.0
# github.com/prometheus/common v0.66.1
## explicit; go 1.23.0
github.com/prometheus/common/expfmt
github.com/prometheus/common/model
+# github.com/prometheus/procfs v0.16.1
+## explicit; go 1.23.0
# github.com/prometheus/procfs v0.17.0
## explicit; go 1.23.0
github.com/prometheus/procfs
@@ -1369,6 +1441,8 @@ github.com/spf13/cast
# github.com/spf13/cobra v1.10.1
## explicit; go 1.15
github.com/spf13/cobra
+# github.com/spf13/pflag v1.0.9
+## explicit; go 1.12
# github.com/spf13/pflag v1.0.10
## explicit; go 1.12
github.com/spf13/pflag
@@ -1506,6 +1580,8 @@ go.etcd.io/etcd/client/v3/credentials
go.etcd.io/etcd/client/v3/internal/endpoint
go.etcd.io/etcd/client/v3/internal/resolver
go.etcd.io/etcd/client/v3/kubernetes
+# go.mongodb.org/mongo-driver v1.17.2
+## explicit; go 1.18
# go.mongodb.org/mongo-driver v1.17.3
## explicit; go 1.18
go.mongodb.org/mongo-driver/bson
@@ -1519,8 +1595,8 @@ go.mongodb.org/mongo-driver/x/bsonx/bsoncore
## explicit; go 1.22.0
go.opentelemetry.io/auto/sdk
go.opentelemetry.io/auto/sdk/internal/telemetry
-# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0
-## explicit; go 1.23.0
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 => go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0
+## explicit; go 1.21
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal
# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0
@@ -1529,6 +1605,8 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil
+# go.opentelemetry.io/otel v1.36.0
+## explicit; go 1.23.0
# go.opentelemetry.io/otel v1.38.0
## explicit; go 1.23.0
go.opentelemetry.io/otel
@@ -1542,7 +1620,6 @@ go.opentelemetry.io/otel/propagation
go.opentelemetry.io/otel/semconv/v1.17.0
go.opentelemetry.io/otel/semconv/v1.20.0
go.opentelemetry.io/otel/semconv/v1.26.0
-go.opentelemetry.io/otel/semconv/v1.30.0
go.opentelemetry.io/otel/semconv/v1.37.0
go.opentelemetry.io/otel/semconv/v1.37.0/otelconv
# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0
@@ -1570,6 +1647,8 @@ go.opentelemetry.io/otel/sdk/internal/x
go.opentelemetry.io/otel/sdk/resource
go.opentelemetry.io/otel/sdk/trace
go.opentelemetry.io/otel/sdk/trace/internal/x
+# go.opentelemetry.io/otel/trace v1.36.0
+## explicit; go 1.23.0
# go.opentelemetry.io/otel/trace v1.38.0
## explicit; go 1.23.0
go.opentelemetry.io/otel/trace
@@ -1612,6 +1691,8 @@ go.yaml.in/yaml/v2
# go.yaml.in/yaml/v3 v3.0.4
## explicit; go 1.16
go.yaml.in/yaml/v3
+# golang.org/x/crypto v0.39.0
+## explicit; go 1.24.0
# golang.org/x/crypto v0.45.0
## explicit; go 1.24.0
golang.org/x/crypto/blowfish
@@ -1630,12 +1711,16 @@ golang.org/x/exp/slices
# golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac
## explicit; go 1.18
golang.org/x/exp/typeparams
+# golang.org/x/mod v0.25.0
+## explicit; go 1.24.0
# golang.org/x/mod v0.30.0
## explicit; go 1.24.0
golang.org/x/mod/internal/lazyregexp
golang.org/x/mod/modfile
golang.org/x/mod/module
golang.org/x/mod/semver
+# golang.org/x/net v0.41.0
+## explicit; go 1.24.0
# golang.org/x/net v0.47.0
## explicit; go 1.24.0
golang.org/x/net/context
@@ -1650,15 +1735,21 @@ golang.org/x/net/internal/httpcommon
golang.org/x/net/internal/timeseries
golang.org/x/net/trace
golang.org/x/net/websocket
+# golang.org/x/oauth2 v0.30.0
+## explicit; go 1.24.0
# golang.org/x/oauth2 v0.33.0
## explicit; go 1.24.0
golang.org/x/oauth2
golang.org/x/oauth2/internal
+# golang.org/x/sync v0.15.0
+## explicit; go 1.24.0
# golang.org/x/sync v0.18.0
## explicit; go 1.24.0
golang.org/x/sync/errgroup
golang.org/x/sync/semaphore
golang.org/x/sync/singleflight
+# golang.org/x/sys v0.33.0
+## explicit; go 1.24.0
# golang.org/x/sys v0.38.0
## explicit; go 1.24.0
golang.org/x/sys/cpu
@@ -1666,9 +1757,13 @@ golang.org/x/sys/plan9
golang.org/x/sys/unix
golang.org/x/sys/windows
golang.org/x/sys/windows/registry
+# golang.org/x/term v0.32.0
+## explicit; go 1.24.0
# golang.org/x/term v0.37.0
## explicit; go 1.24.0
golang.org/x/term
+# golang.org/x/text v0.26.0
+## explicit; go 1.24.0
# golang.org/x/text v0.31.0
## explicit; go 1.24.0
golang.org/x/text/cases
@@ -1701,9 +1796,13 @@ golang.org/x/text/transform
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
golang.org/x/text/width
+# golang.org/x/time v0.11.0
+## explicit; go 1.24.0
# golang.org/x/time v0.14.0
## explicit; go 1.24.0
golang.org/x/time/rate
+# golang.org/x/tools v0.33.0
+## explicit; go 1.24.0
# golang.org/x/tools v0.39.0
## explicit; go 1.24.0
golang.org/x/tools/cover
@@ -1801,12 +1900,16 @@ golang.org/x/tools/internal/versions
# gomodules.xyz/jsonpatch/v2 v2.5.0
## explicit; go 1.20
gomodules.xyz/jsonpatch/v2
+# google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a
+## explicit; go 1.23.0
# google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5
## explicit; go 1.23.0
google.golang.org/genproto/googleapis/api
google.golang.org/genproto/googleapis/api/annotations
google.golang.org/genproto/googleapis/api/expr/v1alpha1
google.golang.org/genproto/googleapis/api/httpbody
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237
+## explicit; go 1.24.0
# google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797
## explicit; go 1.24.0
google.golang.org/genproto/googleapis/rpc/errdetails
@@ -1876,6 +1979,8 @@ google.golang.org/grpc/serviceconfig
google.golang.org/grpc/stats
google.golang.org/grpc/status
google.golang.org/grpc/tap
+# google.golang.org/protobuf v1.36.6
+## explicit; go 1.23
# google.golang.org/protobuf v1.36.10
## explicit; go 1.23
google.golang.org/protobuf/encoding/protodelim
@@ -1921,6 +2026,8 @@ google.golang.org/protobuf/types/known/fieldmaskpb
google.golang.org/protobuf/types/known/structpb
google.golang.org/protobuf/types/known/timestamppb
google.golang.org/protobuf/types/known/wrapperspb
+# gopkg.in/evanphx/json-patch.v4 v4.12.0
+## explicit
# gopkg.in/evanphx/json-patch.v4 v4.13.0
## explicit
gopkg.in/evanphx/json-patch.v4
@@ -1933,6 +2040,8 @@ gopkg.in/yaml.v2
# gopkg.in/yaml.v3 v3.0.1
## explicit
gopkg.in/yaml.v3
+# gotest.tools/v3 v3.4.0
+## explicit; go 1.13
# honnef.co/go/tools v0.6.1
## explicit; go 1.23
honnef.co/go/tools/analysis/callcheck
@@ -2112,6 +2221,8 @@ honnef.co/go/tools/stylecheck/st1021
honnef.co/go/tools/stylecheck/st1022
honnef.co/go/tools/stylecheck/st1023
honnef.co/go/tools/unused
+# k8s.io/api v0.33.3 => k8s.io/api v0.34.1
+## explicit; go 1.24.0
# k8s.io/api v0.34.1 => k8s.io/api v0.34.1
## explicit; go 1.24.0
k8s.io/api/admission/v1
@@ -2174,6 +2285,8 @@ k8s.io/api/storage/v1
k8s.io/api/storage/v1alpha1
k8s.io/api/storage/v1beta1
k8s.io/api/storagemigration/v1alpha1
+# k8s.io/apiextensions-apiserver v0.33.3 => k8s.io/apiextensions-apiserver v0.34.1
+## explicit; go 1.24.0
# k8s.io/apiextensions-apiserver v0.34.1 => k8s.io/apiextensions-apiserver v0.34.1
## explicit; go 1.24.0
k8s.io/apiextensions-apiserver/pkg/apihelpers
@@ -2220,6 +2333,8 @@ k8s.io/apiextensions-apiserver/pkg/generated/openapi
k8s.io/apiextensions-apiserver/pkg/registry/customresource
k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor
k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition
+# k8s.io/apimachinery v0.33.3 => k8s.io/apimachinery v0.34.1
+## explicit; go 1.24.0
# k8s.io/apimachinery v0.34.1 => k8s.io/apimachinery v0.34.1
## explicit; go 1.24.0
k8s.io/apimachinery/pkg/api/apitesting
@@ -2438,6 +2553,8 @@ k8s.io/apiserver/pkg/warning
k8s.io/apiserver/plugin/pkg/authenticator/token/webhook
k8s.io/apiserver/plugin/pkg/authorizer/webhook
k8s.io/apiserver/plugin/pkg/authorizer/webhook/metrics
+# k8s.io/client-go v0.33.3 => k8s.io/client-go v0.34.1
+## explicit; go 1.24.0
# k8s.io/client-go v0.34.1 => k8s.io/client-go v0.34.1
## explicit; go 1.24.0
k8s.io/client-go/applyconfigurations
@@ -2787,6 +2904,8 @@ k8s.io/client-go/util/jsonpath
k8s.io/client-go/util/keyutil
k8s.io/client-go/util/retry
k8s.io/client-go/util/workqueue
+# k8s.io/component-base v0.33.3 => k8s.io/component-base v0.34.1
+## explicit; go 1.24.0
# k8s.io/component-base v0.34.1 => k8s.io/component-base v0.34.1
## explicit; go 1.24.0
k8s.io/component-base/cli/flag
@@ -2820,7 +2939,7 @@ k8s.io/component-helpers/node/util/sysctl
k8s.io/component-helpers/resource
k8s.io/component-helpers/scheduling/corev1
k8s.io/component-helpers/scheduling/corev1/nodeaffinity
-# k8s.io/controller-manager v0.32.1 => k8s.io/controller-manager v0.34.1
+# k8s.io/controller-manager v0.32.2 => k8s.io/controller-manager v0.34.1
## explicit; go 1.24.0
k8s.io/controller-manager/pkg/features
# k8s.io/klog v1.0.0
@@ -2844,6 +2963,8 @@ k8s.io/kube-aggregator/pkg/apis/apiregistration/v1
k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1
k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme
k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1
+# k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff
+## explicit; go 1.23.0
# k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912
## explicit; go 1.23.0
k8s.io/kube-openapi/pkg/aggregator
@@ -2894,6 +3015,8 @@ k8s.io/kubernetes/pkg/capabilities
k8s.io/kubernetes/pkg/features
k8s.io/kubernetes/pkg/fieldpath
k8s.io/kubernetes/pkg/util/parsers
+# k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e
+## explicit; go 1.18
# k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
## explicit; go 1.18
k8s.io/utils/buffer
@@ -2922,6 +3045,8 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client
sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client/metrics
sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/common/metrics
sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client
+# sigs.k8s.io/cluster-api v1.10.4 => sigs.k8s.io/cluster-api v1.11.3
+## explicit; go 1.24.0
# sigs.k8s.io/cluster-api v1.11.3 => sigs.k8s.io/cluster-api v1.11.3
## explicit; go 1.24.0
sigs.k8s.io/cluster-api/api/core/v1beta1
@@ -2945,11 +3070,13 @@ sigs.k8s.io/cluster-api/util/labels/format
sigs.k8s.io/cluster-api/util/predicates
sigs.k8s.io/cluster-api/util/topology
sigs.k8s.io/cluster-api/util/version
+# sigs.k8s.io/cluster-api-provider-aws/v2 v2.9.0
+## explicit; go 1.24.0
# sigs.k8s.io/cluster-api-provider-aws/v2 v2.10.0
## explicit; go 1.24.0
sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2
sigs.k8s.io/cluster-api-provider-aws/v2/feature
-# sigs.k8s.io/cluster-api-provider-azure v0.0.0-20251202084521-c2e0e38d1e0e => github.com/openshift/cluster-api-provider-azure v0.0.0-20251202084521-c2e0e38d1e0e
+# sigs.k8s.io/cluster-api-provider-azure v1.20.2 => github.com/openshift/cluster-api-provider-azure v0.0.0-20251202084521-c2e0e38d1e0e
## explicit; go 1.24.0
sigs.k8s.io/cluster-api-provider-azure/api/v1beta1
sigs.k8s.io/cluster-api-provider-azure/feature
@@ -2957,9 +3084,13 @@ sigs.k8s.io/cluster-api-provider-azure/util/azure
sigs.k8s.io/cluster-api-provider-azure/util/ssh
sigs.k8s.io/cluster-api-provider-azure/util/versions
sigs.k8s.io/cluster-api-provider-azure/util/webhook
+# sigs.k8s.io/cluster-api-provider-gcp v1.10.0
+## explicit; go 1.24.0
# sigs.k8s.io/cluster-api-provider-gcp v1.11.0-beta.0
## explicit; go 1.24.0
sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1
+# sigs.k8s.io/cluster-api-provider-ibmcloud v0.11.0
+## explicit; go 1.24.0
# sigs.k8s.io/cluster-api-provider-ibmcloud v0.12.0
## explicit; go 1.24.0
sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2
@@ -2974,9 +3105,13 @@ sigs.k8s.io/cluster-api-provider-openstack/pkg/utils/errors
sigs.k8s.io/cluster-api-provider-openstack/pkg/utils/openstack
sigs.k8s.io/cluster-api-provider-openstack/pkg/utils/optional
sigs.k8s.io/cluster-api-provider-openstack/version
+# sigs.k8s.io/cluster-api-provider-vsphere v1.13.0
+## explicit; go 1.24.0
# sigs.k8s.io/cluster-api-provider-vsphere v1.14.0
## explicit; go 1.24.0
sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1
+# sigs.k8s.io/controller-runtime v0.20.4
+## explicit; go 1.24.0
# sigs.k8s.io/controller-runtime v0.22.4
## explicit; go 1.24.0
sigs.k8s.io/controller-runtime
@@ -3058,6 +3193,8 @@ sigs.k8s.io/crdify/pkg/validators/version/served
# sigs.k8s.io/gateway-api v1.1.0
## explicit; go 1.22.0
sigs.k8s.io/gateway-api/apis/v1
+# sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8
+## explicit; go 1.23
# sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730
## explicit; go 1.23
sigs.k8s.io/json
@@ -3188,6 +3325,8 @@ sigs.k8s.io/kustomize/kyaml/yaml/walk
## explicit; go 1.18
sigs.k8s.io/randfill
sigs.k8s.io/randfill/bytesource
+# sigs.k8s.io/structured-merge-diff/v4 v4.7.0
+## explicit; go 1.13
# sigs.k8s.io/structured-merge-diff/v6 v6.3.0
## explicit; go 1.23
sigs.k8s.io/structured-merge-diff/v6/fieldpath
@@ -3195,6 +3334,8 @@ sigs.k8s.io/structured-merge-diff/v6/merge
sigs.k8s.io/structured-merge-diff/v6/schema
sigs.k8s.io/structured-merge-diff/v6/typed
sigs.k8s.io/structured-merge-diff/v6/value
+# sigs.k8s.io/yaml v1.4.0
+## explicit; go 1.22
# sigs.k8s.io/yaml v1.6.0
## explicit; go 1.22
sigs.k8s.io/yaml
@@ -3214,3 +3355,5 @@ sigs.k8s.io/yaml/goyaml.v2
# k8s.io/klog/v2 => k8s.io/klog/v2 v2.130.1
# k8s.io/kubelet => k8s.io/kubelet v0.34.1
# k8s.io/kubernetes => k8s.io/kubernetes v1.34.1
+# github.com/onsi/ginkgo/v2 => github.com/openshift/onsi-ginkgo/v2 v2.6.1-0.20241205171354-8006f302fd12
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc => go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0