diff --git a/go.mod b/go.mod index 6a55dee..b81124e 100644 --- a/go.mod +++ b/go.mod @@ -1,32 +1,32 @@ module github.com/kubescape/backend -go 1.25.0 +go 1.25.8 require ( - github.com/armosec/armoapi-go v0.0.693 + github.com/armosec/armoapi-go v0.0.696 github.com/armosec/utils-go v0.0.58 github.com/francoispqt/gojay v1.2.13 github.com/gogo/protobuf v1.3.2 github.com/google/uuid v1.6.0 github.com/json-iterator/go v1.1.12 - github.com/kubescape/go-logger v0.0.24 + github.com/kubescape/go-logger v0.0.28 github.com/kubescape/kubescape/v3 v3.0.4 github.com/kubescape/opa-utils v0.0.283 - github.com/kubescape/storage v0.0.258 - github.com/mattn/go-isatty v0.0.20 + github.com/kubescape/storage v0.0.290 + github.com/mattn/go-isatty v0.0.21 github.com/stretchr/testify v1.11.1 - go.opentelemetry.io/otel v1.42.0 - golang.org/x/mod v0.29.0 - google.golang.org/grpc v1.78.0 + go.opentelemetry.io/otel v1.43.0 + golang.org/x/mod v0.35.0 + google.golang.org/grpc v1.82.1 k8s.io/apimachinery v0.35.0 k8s.io/client-go v0.35.0 ) require ( - cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go/auth v0.18.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.9.0 // indirect - cloud.google.com/go/container v1.43.0 // indirect + cloud.google.com/go/container v1.45.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect @@ -39,55 +39,57 @@ require ( github.com/agnivade/levenshtein v1.2.0 // indirect github.com/anchore/go-logger v0.0.0-20250318195838-07ae343dd722 // indirect github.com/anchore/packageurl-go v0.1.1-0.20250220190351-d62adb6e1115 // indirect - github.com/anchore/stereoscope v0.1.9 // indirect - github.com/anchore/syft v1.32.0 // indirect + github.com/anchore/stereoscope v0.1.22 // indirect + github.com/anchore/syft v1.42.3 // indirect github.com/armosec/gojay v1.2.17 // indirect github.com/armosec/utils-k8s-go v0.0.35 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go-v2 v1.38.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.29.17 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.70 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ecr v1.45.1 // indirect + github.com/aws/aws-sdk-go-v2 v1.41.2 // indirect + github.com/aws/aws-sdk-go-v2/config v1.32.10 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.19.10 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.18 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ecr v1.55.3 // indirect github.com/aws/aws-sdk-go-v2/service/eks v1.48.5 // indirect github.com/aws/aws-sdk-go-v2/service/iam v1.35.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 // indirect - github.com/aws/smithy-go v1.22.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.18 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.0.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.11 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.15 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.41.7 // indirect + github.com/aws/smithy-go v1.24.1 // indirect github.com/becheran/wildmatch-go v1.0.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect - github.com/bmatcuk/doublestar/v4 v4.9.1 // indirect + github.com/bmatcuk/doublestar/v4 v4.10.0 // indirect github.com/briandowns/spinner v1.23.2 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cilium/cilium v1.16.17 // indirect + github.com/cilium/cilium v1.17.15 // indirect + github.com/cilium/ebpf v0.17.1 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containers/common v0.64.2 // indirect github.com/coreos/go-oidc/v3 v3.15.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/docker/cli v29.2.0+incompatible // indirect - github.com/docker/docker v28.5.0+incompatible // indirect - github.com/docker/docker-credential-helpers v0.9.3 // indirect + github.com/docker/cli v29.3.0+incompatible // indirect + github.com/docker/docker v28.5.2+incompatible // indirect + github.com/docker/docker-credential-helpers v0.9.5 // indirect github.com/docker/go-connections v0.6.0 // indirect github.com/emicklei/go-restful/v3 v3.12.2 // indirect github.com/facebookincubator/nvdtools v0.1.5 // indirect - github.com/fatih/color v1.18.0 // indirect + github.com/fatih/color v1.19.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.10 // indirect - github.com/github/go-spdx/v2 v2.3.3 // indirect + github.com/gabriel-vasile/mimetype v1.4.13 // indirect + github.com/github/go-spdx/v2 v2.4.0 // indirect github.com/go-gota/gota v0.12.0 // indirect github.com/go-ini/ini v1.67.0 // indirect - github.com/go-jose/go-jose/v4 v4.1.3 // indirect + github.com/go-jose/go-jose/v4 v4.1.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.23.0 // indirect @@ -99,28 +101,28 @@ require ( github.com/go-openapi/strfmt v0.23.0 // indirect github.com/go-openapi/swag v0.23.1 // indirect github.com/go-openapi/validate v0.24.0 // indirect - github.com/go-viper/mapstructure/v2 v2.4.0 // indirect + github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/gohugoio/hashstructure v0.5.0 // indirect + github.com/gohugoio/hashstructure v0.6.0 // indirect github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/google/flatbuffers v2.0.8+incompatible // indirect github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect - github.com/google/go-containerregistry v0.20.6 // indirect + github.com/google/go-containerregistry v0.21.2 // indirect github.com/google/licensecheck v0.3.1 // indirect github.com/google/s2a-go v0.1.9 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.15.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.11 // indirect + github.com/googleapis/gax-go/v2 v2.17.0 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jinzhu/copier v0.4.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/klauspost/compress v1.18.0 // indirect - github.com/kubescape/k8s-interface v0.0.206 // indirect + github.com/klauspost/compress v1.18.4 // indirect + github.com/kubescape/k8s-interface v0.0.214 // indirect github.com/kubescape/rbac-utils v0.0.21-0.20230806101615-07e36f555520 // indirect github.com/kubescape/regolibrary v1.0.317-0.20240320124840-1d84ac7186ea // indirect github.com/kylelemons/godebug v1.1.0 // indirect @@ -137,7 +139,7 @@ require ( github.com/open-policy-agent/opa v0.70.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect - github.com/opencontainers/runtime-spec v1.2.1 // indirect + github.com/opencontainers/runtime-spec v1.3.0 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/petermattis/goid v0.0.0-20241211131331-93ee7e083c43 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect @@ -152,11 +154,11 @@ require ( github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e // indirect github.com/seccomp/libseccomp-golang v0.11.0 // indirect - github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af // indirect + github.com/sirupsen/logrus v1.9.4 // indirect github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.10.0 // indirect - github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/pflag v1.0.10 // indirect github.com/spf13/viper v1.21.0 // indirect github.com/stripe/stripe-go/v74 v74.30.0 // indirect @@ -167,11 +169,11 @@ require ( github.com/ulikunitz/xz v0.5.15 // indirect github.com/uptrace/opentelemetry-go-extra/otelutil v0.3.2 // indirect github.com/uptrace/opentelemetry-go-extra/otelzap v0.3.2 // indirect - github.com/uptrace/uptrace-go v1.38.0 // indirect + github.com/uptrace/uptrace-go v1.43.0 // indirect github.com/vishvananda/netlink v1.3.1 // indirect github.com/vishvananda/netns v0.0.5 // indirect github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 // indirect - github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0 // indirect + github.com/wagoodman/go-progress v0.0.0-20260303201901-10176f79b2c0 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect @@ -179,40 +181,42 @@ require ( github.com/yl2chen/cidranger v1.0.2 // indirect go.mongodb.org/mongo-driver v1.17.6 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect + go.opentelemetry.io/contrib/bridges/otelslog v0.18.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect - go.opentelemetry.io/contrib/instrumentation/runtime v0.63.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 // indirect - go.opentelemetry.io/otel/log v0.18.0 // indirect - go.opentelemetry.io/otel/metric v1.42.0 // indirect - go.opentelemetry.io/otel/sdk v1.42.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.18.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect - go.opentelemetry.io/otel/trace v1.42.0 // indirect - go.opentelemetry.io/proto/otlp v1.8.0 // indirect + go.opentelemetry.io/contrib/instrumentation/runtime v0.68.0 // indirect + go.opentelemetry.io/contrib/processors/minsev v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.43.0 // indirect + go.opentelemetry.io/otel/log v0.19.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/sdk v1.43.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.19.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect + go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.0 // indirect + go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect - golang.org/x/crypto v0.45.0 // indirect - golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect - golang.org/x/net v0.47.0 // indirect - golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.18.0 // indirect - golang.org/x/sys v0.42.0 // indirect - golang.org/x/term v0.37.0 // indirect - golang.org/x/text v0.31.0 // indirect - golang.org/x/time v0.13.0 // indirect - gonum.org/v1/gonum v0.16.0 // indirect - google.golang.org/api v0.242.0 // indirect - google.golang.org/genproto v0.0.0-20250715232539-7130f93afb79 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda // indirect + golang.org/x/crypto v0.52.0 // indirect + golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/oauth2 v0.36.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/term v0.43.0 // indirect + golang.org/x/text v0.37.0 // indirect + golang.org/x/time v0.15.0 // indirect + gonum.org/v1/gonum v0.17.0 // indirect + google.golang.org/api v0.267.0 // indirect + google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect @@ -224,7 +228,7 @@ require ( k8s.io/component-base v0.35.0 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect - k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect + k8s.io/utils v0.0.0-20260319190234-28399d86e0b5 // indirect sigs.k8s.io/controller-runtime v0.21.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/go.sum b/go.sum index 4b60675..b411f7f 100644 --- a/go.sum +++ b/go.sum @@ -29,10 +29,10 @@ cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.121.3 h1:84RD+hQXNdY5Sw/MWVAx5O9Aui/rd5VQ9HEcdN19afo= -cloud.google.com/go v0.121.3/go.mod h1:6vWF3nJWRrEUv26mMB3FEIU/o1MQNVPG1iHdisa2SJc= -cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= -cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= +cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= +cloud.google.com/go/auth v0.18.1 h1:IwTEx92GFUo2pJ6Qea0EU3zYvKnTAeRCODxfA/G5UWs= +cloud.google.com/go/auth v0.18.1/go.mod h1:GfTYoS9G3CWpRA3Va9doKN9mjPGRS+v41jmZAhBzbrA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -43,8 +43,8 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= -cloud.google.com/go/container v1.43.0 h1:A6J92FJPfxTvyX7MHF+w4t2W9WCqvHOi9UB5SAeSy3w= -cloud.google.com/go/container v1.43.0/go.mod h1:ETU9WZ1KM9ikEKLzrhRVao7KHtalDQu6aPqM34zDr/U= +cloud.google.com/go/container v1.45.0 h1:i1No5obpPxlIFLGHdUF6h2YjRR1qN9t/ZkA8KA5B//o= +cloud.google.com/go/container v1.45.0/go.mod h1:eB6jUfJLjne9VsTDGcH7mnj6JyZK+KOUIA6KZnYE/ds= 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/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= @@ -116,10 +116,10 @@ github.com/anchore/go-logger v0.0.0-20250318195838-07ae343dd722 h1:2SqmFgE7h+Ql4 github.com/anchore/go-logger v0.0.0-20250318195838-07ae343dd722/go.mod h1:oFuE8YuTCM+spgMXhePGzk3asS94yO9biUfDzVTFqNw= github.com/anchore/packageurl-go v0.1.1-0.20250220190351-d62adb6e1115 h1:ZyRCmiEjnoGJZ1+Ah0ZZ/mKKqNhGcUZBl0s7PTTDzvY= github.com/anchore/packageurl-go v0.1.1-0.20250220190351-d62adb6e1115/go.mod h1:KoYIv7tdP5+CC9VGkeZV4/vGCKsY55VvoG+5dadg4YI= -github.com/anchore/stereoscope v0.1.9 h1:Nhvk8g6PRx9ubaJU4asAhD3fGcY5HKXZCDGkxI2e0sI= -github.com/anchore/stereoscope v0.1.9/go.mod h1:YkrCtDgz7A+w6Ggd0yxU9q58CerqQFwYARS+F2RvLQQ= -github.com/anchore/syft v1.32.0 h1:JcX9W+P/Xjv5DNg3TNBtwiEyZommuTaP16/NC9r0Yfo= -github.com/anchore/syft v1.32.0/go.mod h1:E6Kd4iBM2ljUOUQvSt7hVK6vBwaHkMXwcvBZmGMSY5o= +github.com/anchore/stereoscope v0.1.22 h1:L807G/kk0WZzOCGuRGF7knxMKzwW2PGdbPVRystryd8= +github.com/anchore/stereoscope v0.1.22/go.mod h1:FikPtAb/WnbqwgLHAvQA9O+fWez0K4pbjxzghz++iy4= +github.com/anchore/syft v1.42.3 h1:eIeeGyqfXm/C8wpBWU50xFbOjdL37VbLatMj9nEJ6n4= +github.com/anchore/syft v1.42.3/go.mod h1:i2PZ+276IdPcnd/n32aeIv849iO/QqdjRknbIc39yL0= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -130,8 +130,8 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armosec/armoapi-go v0.0.693 h1:nVS4OsnvQEZcUj8jdlRiNKo6LoiM+hDB04SCk/ZUD2Q= -github.com/armosec/armoapi-go v0.0.693/go.mod h1:9jAH0g8ZsryhiBDd/aNMX4+n10bGwTx/doWCyyjSxts= +github.com/armosec/armoapi-go v0.0.696 h1:+0Ll7y4oWNaKEO47qbGDFIQLxkSJeKYzylS0FwI84XE= +github.com/armosec/armoapi-go v0.0.696/go.mod h1:9jAH0g8ZsryhiBDd/aNMX4+n10bGwTx/doWCyyjSxts= github.com/armosec/gojay v1.2.17 h1:VSkLBQzD1c2V+FMtlGFKqWXNsdNvIKygTKJI9ysY8eM= github.com/armosec/gojay v1.2.17/go.mod h1:vuvX3DlY0nbVrJ0qCklSS733AWMoQboq3cFyuQW9ybc= github.com/armosec/utils-go v0.0.58 h1:g9RnRkxZAmzTfPe2ruMo2OXSYLwVSegQSkSavOfmaIE= @@ -140,38 +140,40 @@ github.com/armosec/utils-k8s-go v0.0.35 h1:CliNObhAca5UYl84m5OQecOTm9ZfMFI8648pY github.com/armosec/utils-k8s-go v0.0.35/go.mod h1:iHwR/KhMFtdd8Px1oYexLZYOHqmdknfGTZ8b7sZS0Ms= 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/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/config v1.29.17 h1:jSuiQ5jEe4SAMH6lLRMY9OVC+TqJLP5655pBGjmnjr0= -github.com/aws/aws-sdk-go-v2/config v1.29.17/go.mod h1:9P4wwACpbeXs9Pm9w1QTh6BwWwJjwYvJ1iCt5QbCXh8= -github.com/aws/aws-sdk-go-v2/credentials v1.17.70 h1:ONnH5CM16RTXRkS8Z1qg7/s2eDOhHhaXVd72mmyv4/0= -github.com/aws/aws-sdk-go-v2/credentials v1.17.70/go.mod h1:M+lWhhmomVGgtuPOhO85u4pEa3SmssPTdcYpP/5J/xc= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 h1:KAXP9JSHO1vKGCr5f4O6WmlVKLFFXgWYAGoJosorxzU= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32/go.mod h1:h4Sg6FQdexC1yYG9RDnOvLbW1a/P986++/Y/a+GyEM8= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= -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/service/ecr v1.45.1 h1:Bwzh202Aq7/MYnAjXA9VawCf6u+hjwMdoYmZ4HYsdf8= -github.com/aws/aws-sdk-go-v2/service/ecr v1.45.1/go.mod h1:xZzWl9AXYa6zsLLH41HBFW8KRKJRIzlGmvSM0mVMIX4= +github.com/aws/aws-sdk-go-v2 v1.41.2 h1:LuT2rzqNQsauaGkPK/7813XxcZ3o3yePY0Iy891T2ls= +github.com/aws/aws-sdk-go-v2 v1.41.2/go.mod h1:IvvlAZQXvTXznUPfRVfryiG1fbzE2NGK6m9u39YQ+S4= +github.com/aws/aws-sdk-go-v2/config v1.32.10 h1:9DMthfO6XWZYLfzZglAgW5Fyou2nRI5CuV44sTedKBI= +github.com/aws/aws-sdk-go-v2/config v1.32.10/go.mod h1:2rUIOnA2JaiqYmSKYmRJlcMWy6qTj1vuRFscppSBMcw= +github.com/aws/aws-sdk-go-v2/credentials v1.19.10 h1:EEhmEUFCE1Yhl7vDhNOI5OCL/iKMdkkYFTRpZXNw7m8= +github.com/aws/aws-sdk-go-v2/credentials v1.19.10/go.mod h1:RnnlFCAlxQCkN2Q379B67USkBMu1PipEEiibzYN5UTE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18 h1:Ii4s+Sq3yDfaMLpjrJsqD6SmG/Wq/P5L/hw2qa78UAY= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18/go.mod h1:6x81qnY++ovptLE6nWQeWrpXxbnlIex+4H4eYYGcqfc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.18 h1:F43zk1vemYIqPAwhjTjYIz0irU2EY7sOb/F5eJ3HuyM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.18/go.mod h1:w1jdlZXrGKaJcNoL+Nnrj+k5wlpGXqnNrKoP22HvAug= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.18 h1:xCeWVjj0ki0l3nruoyP2slHsGArMxeiiaoPN5QZH6YQ= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.18/go.mod h1:r/eLGuGCBw6l36ZRWiw6PaZwPXb6YOj+i/7MizNl5/k= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc= +github.com/aws/aws-sdk-go-v2/service/ecr v1.55.3 h1:RtGctYMmkTerGClvdY6bHXdtly4FeYw9wz/NPz62LF8= +github.com/aws/aws-sdk-go-v2/service/ecr v1.55.3/go.mod h1:vBfBu24Ka3/5UZtepbTV0gnc9VPLT8ok+0oDDaYAzn4= github.com/aws/aws-sdk-go-v2/service/eks v1.48.5 h1:vMwwdzKoUBt7vMHNkF16Hh7+8ndVGOAAEgqcrbz17M4= github.com/aws/aws-sdk-go-v2/service/eks v1.48.5/go.mod h1:9dn8p15siUL80NCTPVNd+YvEpVTmWO+rboGx6qOMBa0= github.com/aws/aws-sdk-go-v2/service/iam v1.35.3 h1:bWFkGGea2UoD/m229uuRfT0mu+6pKNB0Kq4U6j/Qz3U= github.com/aws/aws-sdk-go-v2/service/iam v1.35.3/go.mod h1:PpmEOH3ZTQlDAezieBVdFMjPO1jovUMNPA4OpCtnwbY= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzREdtCsiLIoLCWsYliNsRBgyGD/MCK571qk4MI= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17/go.mod h1:ygpklyoaypuyDvOM5ujWGrYWpAK3h7ugnmKCU/76Ys4= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 h1:AIRJ3lfb2w/1/8wOOSqYb9fUKGwQbtysJ2H1MofRUPg= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.5/go.mod h1:b7SiVprpU+iGazDUqvRSLf5XmCdn+JtT1on7uNL6Ipc= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 h1:BpOxT3yhLwSJ77qIY3DoHAQjZsc4HEGfMCE4NGy3uFg= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3/go.mod h1:vq/GQR1gOFLquZMSrxUK/cpvKCNVYibNyJ1m7JrU88E= -github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 h1:NFOJ/NXEGV4Rq//71Hs1jC/NvPs1ezajK+yQmkwnPV0= -github.com/aws/aws-sdk-go-v2/service/sts v1.34.0/go.mod h1:7ph2tGpfQvwzgistp2+zga9f+bCjlQJPkPUmMgDSD7w= -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/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.5 h1:CeY9LUdur+Dxoeldqoun6y4WtJ3RQtzk0JMP2gfUay0= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.5/go.mod h1:AZLZf2fMaahW5s/wMRciu1sYbdsikT/UHwbUjOdEVTc= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.18 h1:LTRCYFlnnKFlKsyIQxKhJuDuA3ZkrDQMRYm6rXiHlLY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.18/go.mod h1:XhwkgGG6bHSd00nO/mexWTcTjgd6PjuvWQMqSn2UaEk= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.6 h1:MzORe+J94I+hYu2a6XmV5yC9huoTv8NRcCrUNedDypQ= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.6/go.mod h1:hXzcHLARD7GeWnifd8j9RWqtfIgxj4/cAtIVIK7hg8g= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.11 h1:7oGD8KPfBOJGXiCoRKrrrQkbvCp8N++u36hrLMPey6o= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.11/go.mod h1:0DO9B5EUJQlIDif+XJRWCljZRKsAFKh3gpFz7UnDtOo= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.15 h1:edCcNp9eGIUDUCrzoCu1jWAXLGFIizeqkdkKgRlJwWc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.15/go.mod h1:lyRQKED9xWfgkYC/wmmYfv7iVIM68Z5OQ88ZdcV1QbU= +github.com/aws/aws-sdk-go-v2/service/sts v1.41.7 h1:NITQpgo9A5NrDZ57uOWj+abvXSb83BbyggcUBVksN7c= +github.com/aws/aws-sdk-go-v2/service/sts v1.41.7/go.mod h1:sks5UWBhEuWYDPdwlnRFn1w7xWdH29Jcpe+/PJQefEs= +github.com/aws/smithy-go v1.24.1 h1:VbyeNfmYkWoxMVpGUAbQumkODcYmfMRfZ8yQiH30SK0= +github.com/aws/smithy-go v1.24.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= github.com/becheran/wildmatch-go v1.0.0 h1:mE3dGGkTmpKtT4Z+88t8RStG40yN9T+kFEGj2PZFSzA= github.com/becheran/wildmatch-go v1.0.0/go.mod h1:gbMvj0NtVdJ15Mg/mH9uxk2R1QCistMyU7d9KFzroX4= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -181,8 +183,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= 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/bmatcuk/doublestar/v4 v4.9.1 h1:X8jg9rRZmJd4yRy7ZeNDRnM+T3ZfHv15JiBJ/avrEXE= -github.com/bmatcuk/doublestar/v4 v4.9.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/bmatcuk/doublestar/v4 v4.10.0 h1:zU9WiOla1YA122oLM6i4EXvGW62DvKZVxIe6TYWexEs= +github.com/bmatcuk/doublestar/v4 v4.10.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/briandowns/spinner v1.23.2 h1:Zc6ecUnI+YzLmJniCfDNaMbW0Wid1d5+qcTq4L2FW8w= @@ -205,8 +207,10 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/cilium v1.16.17 h1:5DUFyl/DhCEhWGdMQjw0eA9FlI8dBFpg2ENYJan3Wk0= -github.com/cilium/cilium v1.16.17/go.mod h1:Wa47utg/8XuOe8pq64KwNOM8wDsXoYP3HZ6uw3IYDVg= +github.com/cilium/cilium v1.17.15 h1:Sf+MRwLolUQu8M6huRHSCGMUXXHTvHp1Sj21pAEMnME= +github.com/cilium/cilium v1.17.15/go.mod h1:p8SuQDXS21LtmvKo1rwhXDLog+eWm5dubi0W2wNru/w= +github.com/cilium/ebpf v0.17.1 h1:G8mzU81R2JA1nE5/8SRubzqvBMmAmri2VL8BIZPWvV0= +github.com/cilium/ebpf v0.17.1/go.mod h1:vay2FaYSmIlv3r8dNACd4mW/OCaZLJKJOo+IHBvCIO8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -220,8 +224,9 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= -github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= +github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= +github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= +github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containers/common v0.64.2 h1:1xepE7QwQggUXxmyQ1Dbh6Cn0yd7ktk14sN3McSWf5I= @@ -244,12 +249,12 @@ github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkz github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4= github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54 h1:SG7nF6SRlWhcT7cNTs5R6Hk4V2lcmLz2NsG2VnInyNo= github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= -github.com/docker/cli v29.2.0+incompatible h1:9oBd9+YM7rxjZLfyMGxjraKBKE4/nVyvVfN4qNl9XRM= -github.com/docker/cli v29.2.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/docker v28.5.0+incompatible h1:ZdSQoRUE9XxhFI/B8YLvhnEFMmYN9Pp8Egd2qcaFk1E= -github.com/docker/docker v28.5.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8= -github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo= +github.com/docker/cli v29.3.0+incompatible h1:z3iWveU7h19Pqx7alZES8j+IeFQZ1lhTwb2F+V9SVvk= +github.com/docker/cli v29.3.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM= +github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY= +github.com/docker/docker-credential-helpers v0.9.5/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c= github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -266,21 +271,23 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= -github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= -github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= -github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= +github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= +github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= +github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= +github.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= -github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= -github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4= +github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA= +github.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds= github.com/facebookincubator/flog v0.0.0-20190930132826-d2511d0ce33c/go.mod h1:QGzNH9ujQ2ZUr/CjDGZGWeDAVStrWNjHeEcjJL96Nuk= github.com/facebookincubator/nvdtools v0.1.5 h1:jbmDT1nd6+k+rlvKhnkgMokrCAzHoASWE5LtHbX2qFQ= github.com/facebookincubator/nvdtools v0.1.5/go.mod h1:Kh55SAWnjckS96TBSrXI99KrEKH4iB0OJby3N8GRJO4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -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/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA= github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI= github.com/felixge/fgprof v0.9.5 h1:8+vR6yu2vvSKn08urWyEuxx75NWPEvybbkBirEpsbVY= @@ -304,11 +311,11 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= -github.com/gabriel-vasile/mimetype v1.4.10 h1:zyueNbySn/z8mJZHLt6IPw0KoZsiQNszIpU+bX4+ZK0= -github.com/gabriel-vasile/mimetype v1.4.10/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= +github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM= +github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/github/go-spdx/v2 v2.3.3 h1:QI7evnHWEfWkT54eJwkoV/f3a0xD3gLlnVmT5wQG6LE= -github.com/github/go-spdx/v2 v2.3.3/go.mod h1:2ZxKsOhvBp+OYBDlsGnUMcchLeo2mrpEBn2L1C+U3IQ= +github.com/github/go-spdx/v2 v2.4.0 h1:+4IwVwJJbm3rzvrQ6P1nI9BDMcy3la4RchRy5uehV/M= +github.com/github/go-spdx/v2 v2.4.0/go.mod h1:/5rwgS0txhGtRdUZwc02bTglzg6HK3FfuEbECKlK2Sg= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= @@ -322,8 +329,8 @@ github.com/go-gota/gota v0.12.0 h1:T5BDg1hTf5fZ/CO+T/N0E+DDqUhvoKBl+UVckgcAAQg= github.com/go-gota/gota v0.12.0/go.mod h1:UT+NsWpZC/FhaOyWb9Hui0jXg0Iq8e/YugZHTbyW/34= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= -github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= +github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA= +github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= 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-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= @@ -354,22 +361,24 @@ github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZ github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= +github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= +github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= 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/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U= github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= -github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= -github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= +github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/gohugoio/hashstructure v0.5.0 h1:G2fjSBU36RdwEJBWJ+919ERvOVqAg9tfcYp47K9swqg= -github.com/gohugoio/hashstructure v0.5.0/go.mod h1:Ser0TniXuu/eauYmrwM4o64EBvySxNzITEOLlm4igec= +github.com/gohugoio/hashstructure v0.6.0 h1:7wMB/2CfXoThFYhdWRGv3u3rUM761Cq29CxUW+NltUg= +github.com/gohugoio/hashstructure v0.6.0/go.mod h1:lapVLk9XidheHG1IQ4ZSbyYrXcaILU1ZEP/+vno5rBQ= github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= @@ -434,8 +443,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 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/go-containerregistry v0.20.6 h1:cvWX87UxxLgaH76b4hIvya6Dzz9qHB31qAwjAohdSTU= -github.com/google/go-containerregistry v0.20.6/go.mod h1:T0x8MuoAoKX/873bkeSfLD2FAkwCDf9/HZgsFJ02E2Y= +github.com/google/go-containerregistry v0.21.2 h1:vYaMU4nU55JJGFC9JR/s8NZcTjbE9DBBbvusTW9NeS0= +github.com/google/go-containerregistry v0.21.2/go.mod h1:ctO5aCaewH4AK1AumSF5DPW+0+R+d2FmylMJdp5G7p0= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -467,16 +476,16 @@ github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= -github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/enterprise-certificate-proxy v0.3.11 h1:vAe81Msw+8tKUxi2Dqh/NZMz7475yUvmRIkXr4oN2ao= +github.com/googleapis/enterprise-certificate-proxy v0.3.11/go.mod h1:RFV7MUdlb7AgEq2v7FmMCfeSMCllAzWxFgRdusoGks8= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= -github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= +github.com/googleapis/gax-go/v2 v2.17.0 h1:RksgfBpxqff0EZkDWYuz9q/uWsTVz+kf43LsZ1J6SMc= +github.com/googleapis/gax-go/v2 v2.17.0/go.mod h1:mzaqghpQp4JDh3HvADwrat+6M3MOIDp5YKHhb9PAgDY= github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg= github.com/gookit/color v1.6.0 h1:JjJXBTk1ETNyqyilJhkTXJYYigHG24TM9Xa2M1xAhRA= github.com/gookit/color v1.6.0/go.mod h1:9ACFc7/1IpHGBW8RwuDm/0YEnhg3dwwXpoMsmtyHfjs= @@ -486,8 +495,8 @@ github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWS github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -551,8 +560,8 @@ github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+ github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= 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/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= +github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= github.com/konsorten/go-windows-terminal-sequences v1.0.1/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= @@ -565,10 +574,10 @@ github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kubescape/go-logger v0.0.24 h1:JRNlblY16Ty7hD6MSYNPvWYDxNzVAufsDDX/sZJayL0= -github.com/kubescape/go-logger v0.0.24/go.mod h1:sMPVCr3VpW/e+SeMaXig5kClGvmZbDXN8YktUeNU4nY= -github.com/kubescape/k8s-interface v0.0.206 h1:qaYu4mlLmSBePanSGq+DBCssh4O785TAT0lQGNGWyGw= -github.com/kubescape/k8s-interface v0.0.206/go.mod h1:WNYUG93aZ5kDmuaRKFLtVhp18Yc6EfaHdD1gLYtVTN4= +github.com/kubescape/go-logger v0.0.28 h1:xulKTp9kOg3rD98sopFELQ6yZCHQoQXMDzteoSHDFKI= +github.com/kubescape/go-logger v0.0.28/go.mod h1:YZHFjwGCDar1hP9OyBLE46oR7a0Y/Z/0FperDo8+9D0= +github.com/kubescape/k8s-interface v0.0.214 h1:j7KP0/5VvYOoQdBGV2+gRM3qnR8PWLAGF8RM/k/DmJ0= +github.com/kubescape/k8s-interface v0.0.214/go.mod h1:WNYUG93aZ5kDmuaRKFLtVhp18Yc6EfaHdD1gLYtVTN4= github.com/kubescape/kubescape/v3 v3.0.4 h1:gZ5d8QMxLYZQ6Yz9wRvGcDQlBUIV+v/Y/41g56/YDy8= github.com/kubescape/kubescape/v3 v3.0.4/go.mod h1:upPCVTCRT3+LuZ1bawGtjreRmr/Xa+LT0fHtPzlylRU= github.com/kubescape/opa-utils v0.0.283 h1:URiTwOw8LEcIHBFDbHLHu758kRpF72dF61bH2+n6yOw= @@ -577,8 +586,8 @@ github.com/kubescape/rbac-utils v0.0.21-0.20230806101615-07e36f555520 h1:SqlwF8G github.com/kubescape/rbac-utils v0.0.21-0.20230806101615-07e36f555520/go.mod h1:wuxMUSDzGUyWd25IJfBzEJ/Udmw2Vy7npj+MV3u3GrU= github.com/kubescape/regolibrary v1.0.317-0.20240320124840-1d84ac7186ea h1:hLUe+1bdhiBD7xM/jliQozVd1NLYn1afQLxl5trQdPk= github.com/kubescape/regolibrary v1.0.317-0.20240320124840-1d84ac7186ea/go.mod h1:RK9dHjllKFnISDmVExQlI1B1z93TlQsAu/Kq9c0mt2U= -github.com/kubescape/storage v0.0.258 h1:0mL0z3dAmtP1qup7VgoEgwLgbBSROu5oOusBAPeMmus= -github.com/kubescape/storage v0.0.258/go.mod h1:VHs+xQzvZKE2lJDN8rR1sFmTa43N6XJAcatZ249gviU= +github.com/kubescape/storage v0.0.290 h1:oIXxz31vrbQiUjBE9I6t/sBmhrwlNTAN4Vs70FxFMA4= +github.com/kubescape/storage v0.0.290/go.mod h1:ARiTDaeDWLqEcOIbH+zz4dwdMEVxubfu5X5ehdDOqPc= 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/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= @@ -602,8 +611,8 @@ github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcME github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= 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.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.21 h1:xYae+lCNBP7QuW4PUnNG61ffM4hVIfm+zUzDuSzYLGs= +github.com/mattn/go-isatty v0.0.21/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= @@ -611,8 +620,8 @@ github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00v github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= -github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= +github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= +github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -654,8 +663,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/opencontainers/runtime-spec v1.2.1 h1:S4k4ryNgEpxW1dzyqffOmhI1BHYcjzU8lpJfSlR0xww= -github.com/opencontainers/runtime-spec v1.2.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg= +github.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.9.1-0.20250523060157-0ea5ed0382a2 h1:2xZEHOdeQBV6PW8ZtimN863bIOl7OCW/X10K0cnxKeA= github.com/opencontainers/runtime-tools v0.9.1-0.20250523060157-0ea5ed0382a2/go.mod h1:MXdPzqAA8pHC58USHqNCSjyLnRQ6D+NjbpP+02Z1U/0= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= @@ -761,8 +770,8 @@ github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYED github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af h1:Sp5TG9f7K39yfB+If0vjp97vuT74F72r8hfRpP8jLU0= -github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= +github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= @@ -776,8 +785,8 @@ github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= -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/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -817,8 +826,8 @@ github.com/uptrace/opentelemetry-go-extra/otelutil v0.3.2 h1:3/aHKUq7qaFMWxyQV0W github.com/uptrace/opentelemetry-go-extra/otelutil v0.3.2/go.mod h1:Zit4b8AQXaXvA68+nzmbyDzqiyFRISyw1JiD5JqUBjw= github.com/uptrace/opentelemetry-go-extra/otelzap v0.3.2 h1:cj/Z6FKTTYBnstI0Lni9PA+k2foounKIPUmj1LBwNiQ= github.com/uptrace/opentelemetry-go-extra/otelzap v0.3.2/go.mod h1:LDaXk90gKEC2nC7JH3Lpnhfu+2V7o/TsqomJJmqA39o= -github.com/uptrace/uptrace-go v1.38.0 h1:QdJfyQkaz7HNPbqM9OkaQ2L9jfdf0DpfZJv9em7YIgE= -github.com/uptrace/uptrace-go v1.38.0/go.mod h1:SdE9nA+/y+SOIzatuIK2tZeYhoWgrAzAr08kJEquZyM= +github.com/uptrace/uptrace-go v1.43.0 h1:5QuCdyFJdWUEXx6Fr6sYfezdgO6n6lnkOvUTLlyQO7U= +github.com/uptrace/uptrace-go v1.43.0/go.mod h1:ehDTIdtBSolg4Z0CCvg1C8yR6VX1YFDqBcg2KmsXWn0= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= github.com/vishvananda/netlink v1.3.1 h1:3AEMt62VKqz90r0tmNhog0r/PpWKmrEShJU0wJW6bV0= @@ -827,8 +836,8 @@ github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zd github.com/vishvananda/netns v0.0.5/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 h1:jIVmlAFIqV3d+DOxazTR9v+zgj8+VYuQBzPgBZvWBHA= github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651/go.mod h1:b26F2tHLqaoRQf8DywqzVaV1MQ9yvjb0OMcNl7Nxu20= -github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0 h1:0KGbf+0SMg+UFy4e1A/CPVvXn21f1qtWdeJwxZFoQG8= -github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0/go.mod h1:jLXFoL31zFaHKAAyZUh+sxiTDFe1L1ZHrcK2T1itVKA= +github.com/wagoodman/go-progress v0.0.0-20260303201901-10176f79b2c0 h1:EHsPe0Q0ANoLOZff1dBLAyeWLTA4sbPTpGI+2zb0FnM= +github.com/wagoodman/go-progress v0.0.0-20260303201901-10176f79b2c0/go.mod h1:g/D9uEUFp5YLyciwCpVsSOZOm56hfv4rzGJod6MlqIM= 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/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= @@ -863,43 +872,47 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= +go.opentelemetry.io/contrib/bridges/otelslog v0.18.0 h1:hhPGP3zvvy1xWT9RTy970wlniSxFttBIsAK1gvMguJM= +go.opentelemetry.io/contrib/bridges/otelslog v0.18.0/go.mod h1:twJF7inoMza6kxMcF8JOdL3mPmtOZu7GEr34CUNE6Dg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 h1:Hf9xI/XLML9ElpiHVDNwvqI0hIFlzV8dgIr35kV1kRU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0/go.mod h1:NfchwuyNoMcZ5MLHwPrODwUF1HWCXWrL31s8gSAdIKY= -go.opentelemetry.io/contrib/instrumentation/runtime v0.63.0 h1:PeBoRj6af6xMI7qCupwFvTbbnd49V7n5YpG6pg8iDYQ= -go.opentelemetry.io/contrib/instrumentation/runtime v0.63.0/go.mod h1:ingqBCtMCe8I4vpz/UVzCW6sxoqgZB37nao91mLQ3Bw= -go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 h1:QQqYw3lkrzwVsoEX0w//EhH/TCnpRdEenKBOOEIMjWc= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0/go.mod h1:gSVQcr17jk2ig4jqJ2DX30IdWH251JcNAecvrqTxH1s= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= -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.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 h1:kJxSDN4SgWWTjG/hPp3O7LCGLcHXFlvS2/FFOrwL+SE= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0/go.mod h1:mgIOzS7iZeKJdeB8/NYHrJ48fdGc71Llo5bJ1J4DWUE= -go.opentelemetry.io/otel/log v0.18.0 h1:XgeQIIBjZZrliksMEbcwMZefoOSMI1hdjiLEiiB0bAg= -go.opentelemetry.io/otel/log v0.18.0/go.mod h1:KEV1kad0NofR3ycsiDH4Yjcoj0+8206I6Ox2QYFSNgI= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/log v0.18.0 h1:n8OyZr7t7otkeTnPTbDNom6rW16TBYGtvyy2Gk6buQw= -go.opentelemetry.io/otel/sdk/log v0.18.0/go.mod h1:C0+wxkTwKpOCZLrlJ3pewPiiQwpzycPI/u6W0Z9fuYk= -go.opentelemetry.io/otel/sdk/log/logtest v0.18.0 h1:l3mYuPsuBx6UKE47BVcPrZoZ0q/KER57vbj2qkgDLXA= -go.opentelemetry.io/otel/sdk/log/logtest v0.18.0/go.mod h1:7cHtiVJpZebB3wybTa4NG+FUo5NPe3PROz1FqB0+qdw= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +go.opentelemetry.io/contrib/instrumentation/runtime v0.68.0 h1:jhVIQEprwUTV+KfzzliLidclhoTOoHTgdz96kAyR8mU= +go.opentelemetry.io/contrib/instrumentation/runtime v0.68.0/go.mod h1:4HsdbLUbernaTnA8CNaNE+1g026SciXb3juRYe3l8EY= +go.opentelemetry.io/contrib/processors/minsev v0.16.0 h1:bjTZkvAKnG1mqWgCjU7RkOkHRTMsGlJO/UlqjRCweeU= +go.opentelemetry.io/contrib/processors/minsev v0.16.0/go.mod h1:R2mmaDsqsWb+Y0mQkPifiCwifdotrG4fFoD4z0tim+g= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 h1:HIBTQ3VO5aupLKjC90JgMqpezVXwFuq6Ryjn0/izoag= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0/go.mod h1:ji9vId85hMxqfvICA0Jt8JqEdrXaAkcpkI9HPXya0ro= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 h1:w1K+pCJoPpQifuVpsKamUdn9U0zM3xUziVOqsGksUrY= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0/go.mod h1:HBy4BjzgVE8139ieRI75oXm3EcDN+6GhD88JT1Kjvxg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 h1:RAE+JPfvEmvy+0LzyUA25/SGawPwIUbZ6u0Wug54sLc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0/go.mod h1:AGmbycVGEsRx9mXMZ75CsOyhSP6MFIcj/6dnG+vhVjk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.43.0 h1:mS47AX77OtFfKG4vtp+84kuGSFZHTyxtXIN269vChY0= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.43.0/go.mod h1:PJnsC41lAGncJlPUniSwM81gc80GkgWJWr3cu2nKEtU= +go.opentelemetry.io/otel/log v0.19.0 h1:KUZs/GOsw79TBBMfDWsXS+KZ4g2Ckzksd1ymzsIEbo4= +go.opentelemetry.io/otel/log v0.19.0/go.mod h1:5DQYeGmxVIr4n0/BcJvF4upsraHjg6vudJJpnkL6Ipk= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/log v0.19.0 h1:scYVLqT22D2gqXItnWiocLUKGH9yvkkeql5dBDiXyko= +go.opentelemetry.io/otel/sdk/log v0.19.0/go.mod h1:vFBowwXGLlW9AvpuF7bMgnNI95LiW10szrOdvzBHlAg= +go.opentelemetry.io/otel/sdk/log/logtest v0.19.0 h1:BEbF7ZBB6qQloV/Ub1+3NQoOUnVtcGkU3XX4Ws3GQfk= +go.opentelemetry.io/otel/sdk/log/logtest v0.19.0/go.mod h1:Lua81/3yM0wOmoHTokLj9y9ADeA02v1naRrVrkAZuKk= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE= -go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0= +go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -907,8 +920,8 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i 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.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= @@ -929,8 +942,8 @@ golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3 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.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -945,8 +958,8 @@ 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-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= -golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= +golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY= +golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= 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= @@ -981,8 +994,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= +golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= 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= @@ -1030,8 +1043,8 @@ golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1051,8 +1064,8 @@ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= -golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= +golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= 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= @@ -1065,8 +1078,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/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.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 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= @@ -1136,16 +1149,14 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= -golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= +golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= +golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1155,14 +1166,14 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= -golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1222,8 +1233,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= 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= @@ -1231,8 +1242,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.1/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= @@ -1271,8 +1282,8 @@ google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdr google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= -google.golang.org/api v0.242.0 h1:7Lnb1nfnpvbkCiZek6IXKdJ0MFuAZNAJKQfA1ws62xg= -google.golang.org/api v0.242.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= +google.golang.org/api v0.267.0 h1:w+vfWPMPYeRs8qH1aYYsFX68jMls5acWl/jocfLomwE= +google.golang.org/api v0.267.0/go.mod h1:Jzc0+ZfLnyvXma3UtaTl023TdhZu6OMBP9tJ+0EmFD0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1349,12 +1360,12 @@ google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20250715232539-7130f93afb79 h1:Nt6z9UHqSlIdIGJdz6KhTIs2VRx/iOsA5iE8bmQNcxs= -google.golang.org/genproto v0.0.0-20250715232539-7130f93afb79/go.mod h1:kTmlBHMPqR5uCZPBvwa2B18mvubkjyY3CRLI0c6fj0s= -google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda h1:+2XxjfsAu6vqFxwGBRcHiMaDCuZiqXGDUDVWVtrFAnE= -google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda h1:i/Q+bfisr7gq6feoJnS/DlpdwEL4ihp41fvRiM3Ork0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 h1:VQZ/yAbAtjkHgH80teYd2em3xtIkkHd7ZhqfH2N9CsM= +google.golang.org/genproto v0.0.0-20260128011058-8636f8732409/go.mod h1:rxKD3IEILWEu3P44seeNOAwZN4SaoKaQ/2eTg4mM6EM= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= @@ -1385,8 +1396,10 @@ google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= 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= @@ -1454,8 +1467,8 @@ 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-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= -k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck= -k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20260319190234-28399d86e0b5 h1:kBawHLSnx/mYHmRnNUf9d4CpjREbeZuxoSGOX/J+aYM= +k8s.io/utils v0.0.0-20260319190234-28399d86e0b5/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= diff --git a/pkg/client/v1/proto/storage_service.pb.go b/pkg/client/v1/proto/storage_service.pb.go index b63e55b..2624a4f 100644 --- a/pkg/client/v1/proto/storage_service.pb.go +++ b/pkg/client/v1/proto/storage_service.pb.go @@ -290,10 +290,6 @@ type GetProfileResponse struct { ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` // Error code for programmatic error handling ErrorCode ErrorCode `protobuf:"varint,3,opt,name=error_code,json=errorCode,proto3,enum=storageserver.v1.ErrorCode" json:"error_code,omitempty"` - // ApplicationProfile is populated when kind is "applicationProfile" - ApplicationProfile *v1beta1.ApplicationProfile `protobuf:"bytes,4,opt,name=application_profile,json=applicationProfile,proto3" json:"application_profile,omitempty"` - // NetworkNeighborhood is populated when kind is "networkNeighborhood" - NetworkNeighborhood *v1beta1.NetworkNeighborhood `protobuf:"bytes,5,opt,name=network_neighborhood,json=networkNeighborhood,proto3" json:"network_neighborhood,omitempty"` // ContainerProfile is populated when kind is "containerProfile" ContainerProfile *v1beta1.ContainerProfile `protobuf:"bytes,6,opt,name=container_profile,json=containerProfile,proto3" json:"container_profile,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -346,20 +342,6 @@ func (m *GetProfileResponse) GetErrorCode() ErrorCode { return ErrorCode_ERROR_CODE_UNSPECIFIED } -func (m *GetProfileResponse) GetApplicationProfile() *v1beta1.ApplicationProfile { - if m != nil { - return m.ApplicationProfile - } - return nil -} - -func (m *GetProfileResponse) GetNetworkNeighborhood() *v1beta1.NetworkNeighborhood { - if m != nil { - return m.NetworkNeighborhood - } - return nil -} - func (m *GetProfileResponse) GetContainerProfile() *v1beta1.ContainerProfile { if m != nil { return m.ContainerProfile @@ -367,312 +349,6 @@ func (m *GetProfileResponse) GetContainerProfile() *v1beta1.ContainerProfile { return nil } -// ListApplicationProfilesRequest requests a list of ApplicationProfiles in a namespace -// customer_guid, cluster, host_type, and host_id are sent via gRPC metadata headers -type ListApplicationProfilesRequest struct { - // Namespace to list profiles from - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - // Limit number of items to return (0 means server default) - Limit int64 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` - // Continue token for pagination - Cont string `protobuf:"bytes,5,opt,name=cont,proto3" json:"cont,omitempty"` - // Region of the resource (non-k8s scope identifier, e.g. "us-east-1") - Region string `protobuf:"bytes,6,opt,name=region,proto3" json:"region,omitempty"` - // CloudAccountIdentifier of the resource (non-k8s scope identifier, e.g. AWS account ID "123456789012", GCP project ID) - CloudAccountIdentifier string `protobuf:"bytes,7,opt,name=cloud_account_identifier,json=cloudAccountIdentifier,proto3" json:"cloud_account_identifier,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ListApplicationProfilesRequest) Reset() { *m = ListApplicationProfilesRequest{} } -func (m *ListApplicationProfilesRequest) String() string { return proto.CompactTextString(m) } -func (*ListApplicationProfilesRequest) ProtoMessage() {} -func (*ListApplicationProfilesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{4} -} -func (m *ListApplicationProfilesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationProfilesRequest.Unmarshal(m, b) -} -func (m *ListApplicationProfilesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationProfilesRequest.Marshal(b, m, deterministic) -} -func (m *ListApplicationProfilesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationProfilesRequest.Merge(m, src) -} -func (m *ListApplicationProfilesRequest) XXX_Size() int { - return xxx_messageInfo_ListApplicationProfilesRequest.Size(m) -} -func (m *ListApplicationProfilesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationProfilesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListApplicationProfilesRequest proto.InternalMessageInfo - -func (m *ListApplicationProfilesRequest) GetNamespace() string { - if m != nil { - return m.Namespace - } - return "" -} - -func (m *ListApplicationProfilesRequest) GetLimit() int64 { - if m != nil { - return m.Limit - } - return 0 -} - -func (m *ListApplicationProfilesRequest) GetCont() string { - if m != nil { - return m.Cont - } - return "" -} - -func (m *ListApplicationProfilesRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *ListApplicationProfilesRequest) GetCloudAccountIdentifier() string { - if m != nil { - return m.CloudAccountIdentifier - } - return "" -} - -// ListApplicationProfilesResponse contains the list of ApplicationProfiles (with nil Spec) -type ListApplicationProfilesResponse struct { - // Success indicates if the list was successfully retrieved - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Error message if the operation failed - ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - // Error code for programmatic error handling - ErrorCode ErrorCode `protobuf:"varint,3,opt,name=error_code,json=errorCode,proto3,enum=storageserver.v1.ErrorCode" json:"error_code,omitempty"` - // ApplicationProfiles list (Spec will be nil for each item) - ApplicationProfiles []*v1beta1.ApplicationProfile `protobuf:"bytes,4,rep,name=application_profiles,json=applicationProfiles,proto3" json:"application_profiles,omitempty"` - // Continue token for next page (empty if no more results) - Cont string `protobuf:"bytes,5,opt,name=cont,proto3" json:"cont,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ListApplicationProfilesResponse) Reset() { *m = ListApplicationProfilesResponse{} } -func (m *ListApplicationProfilesResponse) String() string { return proto.CompactTextString(m) } -func (*ListApplicationProfilesResponse) ProtoMessage() {} -func (*ListApplicationProfilesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{5} -} -func (m *ListApplicationProfilesResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationProfilesResponse.Unmarshal(m, b) -} -func (m *ListApplicationProfilesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationProfilesResponse.Marshal(b, m, deterministic) -} -func (m *ListApplicationProfilesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationProfilesResponse.Merge(m, src) -} -func (m *ListApplicationProfilesResponse) XXX_Size() int { - return xxx_messageInfo_ListApplicationProfilesResponse.Size(m) -} -func (m *ListApplicationProfilesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationProfilesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListApplicationProfilesResponse proto.InternalMessageInfo - -func (m *ListApplicationProfilesResponse) GetSuccess() bool { - if m != nil { - return m.Success - } - return false -} - -func (m *ListApplicationProfilesResponse) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage - } - return "" -} - -func (m *ListApplicationProfilesResponse) GetErrorCode() ErrorCode { - if m != nil { - return m.ErrorCode - } - return ErrorCode_ERROR_CODE_UNSPECIFIED -} - -func (m *ListApplicationProfilesResponse) GetApplicationProfiles() []*v1beta1.ApplicationProfile { - if m != nil { - return m.ApplicationProfiles - } - return nil -} - -func (m *ListApplicationProfilesResponse) GetCont() string { - if m != nil { - return m.Cont - } - return "" -} - -// ListNetworkNeighborhoodsRequest requests a list of NetworkNeighborhoods in a namespace -// customer_guid, cluster, host_type, and host_id are sent via gRPC metadata headers -type ListNetworkNeighborhoodsRequest struct { - // Namespace to list neighborhoods from - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - // Limit number of items to return (0 means server default) - Limit int64 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` - // Continue token for pagination - Cont string `protobuf:"bytes,5,opt,name=cont,proto3" json:"cont,omitempty"` - // Region of the resource (non-k8s scope identifier, e.g. "us-east-1") - Region string `protobuf:"bytes,6,opt,name=region,proto3" json:"region,omitempty"` - // CloudAccountIdentifier of the resource (non-k8s scope identifier, e.g. AWS account ID "123456789012", GCP project ID) - CloudAccountIdentifier string `protobuf:"bytes,7,opt,name=cloud_account_identifier,json=cloudAccountIdentifier,proto3" json:"cloud_account_identifier,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ListNetworkNeighborhoodsRequest) Reset() { *m = ListNetworkNeighborhoodsRequest{} } -func (m *ListNetworkNeighborhoodsRequest) String() string { return proto.CompactTextString(m) } -func (*ListNetworkNeighborhoodsRequest) ProtoMessage() {} -func (*ListNetworkNeighborhoodsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{6} -} -func (m *ListNetworkNeighborhoodsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListNetworkNeighborhoodsRequest.Unmarshal(m, b) -} -func (m *ListNetworkNeighborhoodsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListNetworkNeighborhoodsRequest.Marshal(b, m, deterministic) -} -func (m *ListNetworkNeighborhoodsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListNetworkNeighborhoodsRequest.Merge(m, src) -} -func (m *ListNetworkNeighborhoodsRequest) XXX_Size() int { - return xxx_messageInfo_ListNetworkNeighborhoodsRequest.Size(m) -} -func (m *ListNetworkNeighborhoodsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListNetworkNeighborhoodsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListNetworkNeighborhoodsRequest proto.InternalMessageInfo - -func (m *ListNetworkNeighborhoodsRequest) GetNamespace() string { - if m != nil { - return m.Namespace - } - return "" -} - -func (m *ListNetworkNeighborhoodsRequest) GetLimit() int64 { - if m != nil { - return m.Limit - } - return 0 -} - -func (m *ListNetworkNeighborhoodsRequest) GetCont() string { - if m != nil { - return m.Cont - } - return "" -} - -func (m *ListNetworkNeighborhoodsRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *ListNetworkNeighborhoodsRequest) GetCloudAccountIdentifier() string { - if m != nil { - return m.CloudAccountIdentifier - } - return "" -} - -// ListNetworkNeighborhoodsResponse contains the list of NetworkNeighborhoods (with nil Spec) -type ListNetworkNeighborhoodsResponse struct { - // Success indicates if the list was successfully retrieved - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - // Error message if the operation failed - ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - // Error code for programmatic error handling - ErrorCode ErrorCode `protobuf:"varint,3,opt,name=error_code,json=errorCode,proto3,enum=storageserver.v1.ErrorCode" json:"error_code,omitempty"` - // NetworkNeighborhoods list (Spec will be nil for each item) - NetworkNeighborhoods []*v1beta1.NetworkNeighborhood `protobuf:"bytes,4,rep,name=network_neighborhoods,json=networkNeighborhoods,proto3" json:"network_neighborhoods,omitempty"` - // Continue token for next page (empty if no more results) - Cont string `protobuf:"bytes,5,opt,name=cont,proto3" json:"cont,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ListNetworkNeighborhoodsResponse) Reset() { *m = ListNetworkNeighborhoodsResponse{} } -func (m *ListNetworkNeighborhoodsResponse) String() string { return proto.CompactTextString(m) } -func (*ListNetworkNeighborhoodsResponse) ProtoMessage() {} -func (*ListNetworkNeighborhoodsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{7} -} -func (m *ListNetworkNeighborhoodsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListNetworkNeighborhoodsResponse.Unmarshal(m, b) -} -func (m *ListNetworkNeighborhoodsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListNetworkNeighborhoodsResponse.Marshal(b, m, deterministic) -} -func (m *ListNetworkNeighborhoodsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListNetworkNeighborhoodsResponse.Merge(m, src) -} -func (m *ListNetworkNeighborhoodsResponse) XXX_Size() int { - return xxx_messageInfo_ListNetworkNeighborhoodsResponse.Size(m) -} -func (m *ListNetworkNeighborhoodsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListNetworkNeighborhoodsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListNetworkNeighborhoodsResponse proto.InternalMessageInfo - -func (m *ListNetworkNeighborhoodsResponse) GetSuccess() bool { - if m != nil { - return m.Success - } - return false -} - -func (m *ListNetworkNeighborhoodsResponse) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage - } - return "" -} - -func (m *ListNetworkNeighborhoodsResponse) GetErrorCode() ErrorCode { - if m != nil { - return m.ErrorCode - } - return ErrorCode_ERROR_CODE_UNSPECIFIED -} - -func (m *ListNetworkNeighborhoodsResponse) GetNetworkNeighborhoods() []*v1beta1.NetworkNeighborhood { - if m != nil { - return m.NetworkNeighborhoods - } - return nil -} - -func (m *ListNetworkNeighborhoodsResponse) GetCont() string { - if m != nil { - return m.Cont - } - return "" -} - // ContainerProfileChunk is a single chunk of a streamed ContainerProfile // upload (SendContainerProfileStream). The first chunk in the stream MUST // set metadata. Subsequent chunks set only blob_chunk. Concatenated @@ -691,7 +367,7 @@ func (m *ContainerProfileChunk) Reset() { *m = ContainerProfileChunk{} } func (m *ContainerProfileChunk) String() string { return proto.CompactTextString(m) } func (*ContainerProfileChunk) ProtoMessage() {} func (*ContainerProfileChunk) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{8} + return fileDescriptor_3d90829bc66d9c54, []int{4} } func (m *ContainerProfileChunk) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ContainerProfileChunk.Unmarshal(m, b) @@ -740,7 +416,7 @@ func (m *ContainerProfileChunkMetadata) Reset() { *m = ContainerProfileC func (m *ContainerProfileChunkMetadata) String() string { return proto.CompactTextString(m) } func (*ContainerProfileChunkMetadata) ProtoMessage() {} func (*ContainerProfileChunkMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{9} + return fileDescriptor_3d90829bc66d9c54, []int{5} } func (m *ContainerProfileChunkMetadata) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ContainerProfileChunkMetadata.Unmarshal(m, b) @@ -781,7 +457,7 @@ func (m *GetContainerProfileStreamRequest) Reset() { *m = GetContainerPr func (m *GetContainerProfileStreamRequest) String() string { return proto.CompactTextString(m) } func (*GetContainerProfileStreamRequest) ProtoMessage() {} func (*GetContainerProfileStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{10} + return fileDescriptor_3d90829bc66d9c54, []int{6} } func (m *GetContainerProfileStreamRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetContainerProfileStreamRequest.Unmarshal(m, b) @@ -846,7 +522,7 @@ func (m *GetContainerProfileStreamChunk) Reset() { *m = GetContainerProf func (m *GetContainerProfileStreamChunk) String() string { return proto.CompactTextString(m) } func (*GetContainerProfileStreamChunk) ProtoMessage() {} func (*GetContainerProfileStreamChunk) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{11} + return fileDescriptor_3d90829bc66d9c54, []int{7} } func (m *GetContainerProfileStreamChunk) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetContainerProfileStreamChunk.Unmarshal(m, b) @@ -901,7 +577,7 @@ func (m *GetContainerProfileStreamChunkMetadata) Reset() { func (m *GetContainerProfileStreamChunkMetadata) String() string { return proto.CompactTextString(m) } func (*GetContainerProfileStreamChunkMetadata) ProtoMessage() {} func (*GetContainerProfileStreamChunkMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{12} + return fileDescriptor_3d90829bc66d9c54, []int{8} } func (m *GetContainerProfileStreamChunkMetadata) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetContainerProfileStreamChunkMetadata.Unmarshal(m, b) @@ -965,7 +641,7 @@ func (m *PutSBOMResponse) Reset() { *m = PutSBOMResponse{} } func (m *PutSBOMResponse) String() string { return proto.CompactTextString(m) } func (*PutSBOMResponse) ProtoMessage() {} func (*PutSBOMResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{13} + return fileDescriptor_3d90829bc66d9c54, []int{9} } func (m *PutSBOMResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PutSBOMResponse.Unmarshal(m, b) @@ -1024,7 +700,7 @@ func (m *PutSBOMChunk) Reset() { *m = PutSBOMChunk{} } func (m *PutSBOMChunk) String() string { return proto.CompactTextString(m) } func (*PutSBOMChunk) ProtoMessage() {} func (*PutSBOMChunk) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{14} + return fileDescriptor_3d90829bc66d9c54, []int{10} } func (m *PutSBOMChunk) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PutSBOMChunk.Unmarshal(m, b) @@ -1073,7 +749,7 @@ func (m *PutSBOMChunkMetadata) Reset() { *m = PutSBOMChunkMetadata{} } func (m *PutSBOMChunkMetadata) String() string { return proto.CompactTextString(m) } func (*PutSBOMChunkMetadata) ProtoMessage() {} func (*PutSBOMChunkMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{15} + return fileDescriptor_3d90829bc66d9c54, []int{11} } func (m *PutSBOMChunkMetadata) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PutSBOMChunkMetadata.Unmarshal(m, b) @@ -1137,7 +813,7 @@ func (m *GetSBOMRequest) Reset() { *m = GetSBOMRequest{} } func (m *GetSBOMRequest) String() string { return proto.CompactTextString(m) } func (*GetSBOMRequest) ProtoMessage() {} func (*GetSBOMRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{16} + return fileDescriptor_3d90829bc66d9c54, []int{12} } func (m *GetSBOMRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSBOMRequest.Unmarshal(m, b) @@ -1194,7 +870,7 @@ func (m *GetSBOMChunk) Reset() { *m = GetSBOMChunk{} } func (m *GetSBOMChunk) String() string { return proto.CompactTextString(m) } func (*GetSBOMChunk) ProtoMessage() {} func (*GetSBOMChunk) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{17} + return fileDescriptor_3d90829bc66d9c54, []int{13} } func (m *GetSBOMChunk) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSBOMChunk.Unmarshal(m, b) @@ -1247,7 +923,7 @@ func (m *GetSBOMChunkMetadata) Reset() { *m = GetSBOMChunkMetadata{} } func (m *GetSBOMChunkMetadata) String() string { return proto.CompactTextString(m) } func (*GetSBOMChunkMetadata) ProtoMessage() {} func (*GetSBOMChunkMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{18} + return fileDescriptor_3d90829bc66d9c54, []int{14} } func (m *GetSBOMChunkMetadata) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSBOMChunkMetadata.Unmarshal(m, b) @@ -1332,7 +1008,7 @@ func (m *SBOMMetadata) Reset() { *m = SBOMMetadata{} } func (m *SBOMMetadata) String() string { return proto.CompactTextString(m) } func (*SBOMMetadata) ProtoMessage() {} func (*SBOMMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_3d90829bc66d9c54, []int{19} + return fileDescriptor_3d90829bc66d9c54, []int{15} } func (m *SBOMMetadata) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SBOMMetadata.Unmarshal(m, b) @@ -1408,10 +1084,6 @@ func init() { proto.RegisterType((*SendContainerProfileResponse)(nil), "storageserver.v1.SendContainerProfileResponse") proto.RegisterType((*GetProfileRequest)(nil), "storageserver.v1.GetProfileRequest") proto.RegisterType((*GetProfileResponse)(nil), "storageserver.v1.GetProfileResponse") - proto.RegisterType((*ListApplicationProfilesRequest)(nil), "storageserver.v1.ListApplicationProfilesRequest") - proto.RegisterType((*ListApplicationProfilesResponse)(nil), "storageserver.v1.ListApplicationProfilesResponse") - proto.RegisterType((*ListNetworkNeighborhoodsRequest)(nil), "storageserver.v1.ListNetworkNeighborhoodsRequest") - proto.RegisterType((*ListNetworkNeighborhoodsResponse)(nil), "storageserver.v1.ListNetworkNeighborhoodsResponse") proto.RegisterType((*ContainerProfileChunk)(nil), "storageserver.v1.ContainerProfileChunk") proto.RegisterType((*ContainerProfileChunkMetadata)(nil), "storageserver.v1.ContainerProfileChunkMetadata") proto.RegisterType((*GetContainerProfileStreamRequest)(nil), "storageserver.v1.GetContainerProfileStreamRequest") @@ -1430,95 +1102,82 @@ func init() { func init() { proto.RegisterFile("storage_service.proto", fileDescriptor_3d90829bc66d9c54) } var fileDescriptor_3d90829bc66d9c54 = []byte{ - // 1433 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4f, 0x6f, 0x1a, 0x47, - 0x1b, 0x7f, 0x07, 0x1c, 0xdb, 0x3c, 0xb6, 0x93, 0xcd, 0x84, 0x38, 0x84, 0x38, 0x0e, 0x21, 0xaf, - 0xf2, 0x5a, 0xd1, 0xdb, 0xc5, 0xa6, 0x3d, 0x44, 0x39, 0x54, 0xc2, 0xb0, 0x71, 0x50, 0x30, 0xeb, - 0xcc, 0x42, 0xa2, 0xe6, 0xb2, 0x5a, 0x96, 0x31, 0x5e, 0x01, 0xbb, 0x64, 0x67, 0x70, 0xea, 0x54, - 0xaa, 0x5a, 0x45, 0xaa, 0x52, 0xb5, 0xa7, 0x54, 0x3d, 0xf4, 0xd6, 0x53, 0x7b, 0xe8, 0x37, 0x68, - 0x0e, 0xbd, 0xf4, 0xf3, 0xf4, 0x33, 0x54, 0x3b, 0xbb, 0x0b, 0x04, 0x16, 0x64, 0xa4, 0xa4, 0x4e, - 0x4f, 0xec, 0x3c, 0xff, 0xe6, 0xc7, 0xf3, 0xfc, 0x66, 0xe6, 0x99, 0x81, 0xcb, 0x8c, 0x3b, 0xae, - 0xd1, 0xa2, 0x3a, 0xa3, 0xee, 0xb1, 0x65, 0x52, 0xb9, 0xe7, 0x3a, 0xdc, 0xc1, 0x52, 0x20, 0xf6, - 0xa4, 0xd4, 0x95, 0x8f, 0x77, 0xd2, 0x8f, 0x5a, 0x16, 0x3f, 0xea, 0x37, 0x64, 0xd3, 0xe9, 0xe6, - 0xda, 0xfd, 0x06, 0x65, 0xa6, 0xd1, 0xa3, 0xb9, 0xc0, 0x2c, 0xd7, 0x6b, 0xb7, 0x72, 0x46, 0xcf, - 0x62, 0x39, 0xe6, 0x1c, 0xf2, 0xe7, 0x86, 0x4b, 0x4d, 0xa7, 0xdb, 0x73, 0x98, 0xc5, 0x2d, 0xc7, - 0xce, 0x1d, 0xef, 0x34, 0x28, 0x37, 0x76, 0x72, 0x2d, 0x6a, 0x53, 0xd7, 0xe0, 0xb4, 0xe9, 0x4f, - 0x92, 0xfd, 0x19, 0xc1, 0x35, 0x8d, 0xda, 0xcd, 0xa2, 0x63, 0x73, 0xc3, 0xb2, 0xa9, 0x7b, 0xe0, - 0x3a, 0x87, 0x56, 0x87, 0x12, 0xfa, 0xac, 0x4f, 0x19, 0xc7, 0x5f, 0x21, 0xb8, 0x68, 0x86, 0x3a, - 0xbd, 0xe7, 0x2b, 0x53, 0x28, 0x83, 0xb6, 0x56, 0xf2, 0x9a, 0x3c, 0xc4, 0x23, 0x0f, 0xf0, 0xc8, - 0x01, 0x1e, 0xb9, 0xd7, 0x6e, 0xc9, 0x1e, 0x1e, 0x39, 0x02, 0x8f, 0x1c, 0xe0, 0x91, 0x27, 0xe6, - 0x95, 0xcc, 0x31, 0x49, 0xf6, 0x27, 0x04, 0x1b, 0xd1, 0x10, 0x59, 0xcf, 0xb1, 0x19, 0xc5, 0x29, - 0x58, 0x62, 0x7d, 0xd3, 0xa4, 0x8c, 0x09, 0x60, 0xcb, 0x24, 0x1c, 0xe2, 0x5b, 0xb0, 0x46, 0x5d, - 0xd7, 0x71, 0xf5, 0x2e, 0x65, 0xcc, 0x68, 0xd1, 0x54, 0x2c, 0x83, 0xb6, 0x12, 0x64, 0x55, 0x08, - 0xf7, 0x7d, 0x19, 0xbe, 0x07, 0xe0, 0x1b, 0x99, 0x4e, 0x93, 0xa6, 0xe2, 0x19, 0xb4, 0x75, 0x3e, - 0x7f, 0x4d, 0x1e, 0x4f, 0xbe, 0xac, 0x78, 0x36, 0x45, 0xa7, 0x49, 0x49, 0x82, 0x86, 0x9f, 0xd9, - 0xdf, 0x10, 0x5c, 0xdc, 0xa3, 0x7c, 0x2c, 0x69, 0x18, 0x16, 0xda, 0x96, 0xdd, 0x14, 0x68, 0x12, - 0x44, 0x7c, 0xe3, 0x0d, 0x48, 0xd8, 0x46, 0x97, 0xb2, 0x9e, 0x61, 0x86, 0x30, 0x86, 0x02, 0xcf, - 0xc3, 0x1b, 0x88, 0xd9, 0x13, 0x44, 0x7c, 0xe3, 0x75, 0x58, 0x74, 0x69, 0xcb, 0x72, 0xec, 0xd4, - 0x82, 0x90, 0x06, 0x23, 0x7c, 0x17, 0x52, 0x66, 0xc7, 0xe9, 0x37, 0x75, 0xc3, 0x34, 0x9d, 0xbe, - 0xcd, 0x75, 0xab, 0x49, 0x6d, 0x6e, 0x1d, 0x5a, 0xd4, 0x4d, 0x9d, 0x13, 0x96, 0xeb, 0x42, 0x5f, - 0xf0, 0xd5, 0xe5, 0x81, 0x36, 0xfb, 0xeb, 0x02, 0xe0, 0x51, 0xb4, 0x67, 0x9e, 0x3f, 0xfc, 0x0d, - 0x82, 0x4b, 0x46, 0xaf, 0xd7, 0xb1, 0x4c, 0xc3, 0xa3, 0xc5, 0x80, 0x60, 0x0b, 0x82, 0x60, 0xf5, - 0x77, 0x40, 0xb0, 0xc2, 0x30, 0x7a, 0xf8, 0xbf, 0xb1, 0x31, 0x21, 0xc3, 0xdf, 0x22, 0x48, 0xda, - 0x94, 0x3f, 0x77, 0xdc, 0xb6, 0x6e, 0x53, 0xab, 0x75, 0xd4, 0x70, 0xdc, 0x23, 0xc7, 0x69, 0x8a, - 0x8c, 0xae, 0xe4, 0x1f, 0xbf, 0x03, 0x24, 0x55, 0x3f, 0x7c, 0x75, 0x24, 0x3a, 0xb9, 0x64, 0x4f, - 0x0a, 0xa7, 0xac, 0xb9, 0xc5, 0x7f, 0x72, 0xcd, 0xfd, 0x8e, 0x60, 0xb3, 0x62, 0x31, 0x3e, 0x99, - 0x3d, 0x16, 0x92, 0xfc, 0x2d, 0x42, 0xa3, 0x71, 0x42, 0x27, 0xe1, 0x5c, 0xc7, 0xea, 0x5a, 0x5c, - 0x54, 0x32, 0x4e, 0xfc, 0x81, 0x47, 0x73, 0x6f, 0xaa, 0x80, 0xa6, 0xe2, 0x7b, 0x84, 0xe6, 0x8b, - 0xa7, 0xa6, 0xf9, 0xd2, 0x4c, 0x9a, 0xbf, 0x89, 0xc1, 0x8d, 0xa9, 0xe0, 0xcf, 0x9e, 0xf3, 0xaf, - 0x10, 0x24, 0x23, 0x38, 0xcf, 0x52, 0x0b, 0x99, 0xf8, 0xfb, 0x23, 0xfd, 0xa5, 0x49, 0xd2, 0xb3, - 0xa8, 0x7a, 0x64, 0xdf, 0x20, 0x3f, 0x7b, 0x11, 0x74, 0xfd, 0x17, 0xd4, 0xfe, 0x8f, 0x18, 0x64, - 0xa6, 0xa3, 0x3f, 0xfb, 0xe2, 0x7f, 0x87, 0xe0, 0x72, 0xd4, 0x3e, 0x13, 0x56, 0xff, 0x7d, 0x6d, - 0x34, 0xc9, 0x88, 0x8d, 0x26, 0xba, 0xfe, 0x2f, 0x11, 0x5c, 0x1e, 0xdf, 0x21, 0x8a, 0x47, 0x7d, - 0xbb, 0x8d, 0x1f, 0xc2, 0x72, 0x97, 0x72, 0xa3, 0x69, 0x70, 0x23, 0xe8, 0x00, 0x72, 0x93, 0xff, - 0x3a, 0xd2, 0x75, 0x3f, 0x70, 0x23, 0x83, 0x00, 0xf8, 0x3a, 0x40, 0xa3, 0xe3, 0x34, 0x74, 0xd3, - 0xd3, 0x8b, 0x34, 0xaf, 0x92, 0x84, 0x27, 0x11, 0x0e, 0xd9, 0x1b, 0x70, 0x7d, 0x66, 0xa4, 0xec, - 0x2f, 0x08, 0x32, 0x7b, 0x94, 0x8f, 0x1b, 0x69, 0xdc, 0xa5, 0x46, 0xf7, 0x74, 0x3c, 0x0d, 0x0f, - 0xdd, 0x58, 0xe4, 0xa1, 0x1b, 0x3f, 0x35, 0x23, 0x17, 0x66, 0x32, 0xf2, 0x47, 0x04, 0x9b, 0x53, - 0x81, 0xfa, 0x89, 0xad, 0x4d, 0x24, 0xf6, 0xee, 0x64, 0x62, 0x67, 0xc7, 0x98, 0x3f, 0xc3, 0x6f, - 0x10, 0xdc, 0x3e, 0x5d, 0xcc, 0xb3, 0x5c, 0x2f, 0xeb, 0xb0, 0x48, 0x3f, 0xb7, 0x18, 0x67, 0x22, - 0xcb, 0xcb, 0x24, 0x18, 0x65, 0xbf, 0x47, 0x70, 0xe1, 0xa0, 0xcf, 0xb5, 0x5d, 0x75, 0xff, 0x43, - 0xe8, 0x03, 0x9f, 0xc1, 0x6a, 0x80, 0xc6, 0xaf, 0xe8, 0xee, 0x44, 0x45, 0x6f, 0x4f, 0x46, 0x1a, - 0xf5, 0x98, 0xbf, 0x7e, 0xaf, 0x11, 0x24, 0xa3, 0x22, 0xe0, 0x9b, 0xb0, 0x6a, 0x75, 0xbd, 0xeb, - 0x44, 0xd3, 0x6a, 0x51, 0xc6, 0x03, 0xde, 0xaf, 0x08, 0x59, 0x49, 0x88, 0x3c, 0x13, 0x76, 0x72, - 0xc8, 0xf5, 0x63, 0xea, 0x32, 0x8f, 0xeb, 0x7e, 0x3a, 0x56, 0x3c, 0xd9, 0x63, 0x5f, 0x84, 0x3f, - 0x81, 0x45, 0xe6, 0xf4, 0x5d, 0x33, 0xcc, 0xc4, 0xc6, 0x24, 0x7e, 0x6f, 0x6a, 0x4d, 0xd8, 0x90, - 0xc0, 0x36, 0xfb, 0x05, 0x9c, 0xdf, 0xa3, 0x41, 0x55, 0xfc, 0x25, 0xf8, 0x6e, 0xd0, 0xdc, 0x82, - 0xb5, 0x30, 0x2f, 0xba, 0x63, 0x77, 0x4e, 0x04, 0xa8, 0x65, 0xb2, 0x1a, 0x0a, 0x55, 0xbb, 0x73, - 0xe2, 0x15, 0x21, 0x98, 0x7c, 0x8e, 0x22, 0x8c, 0x7a, 0xcc, 0x5f, 0x84, 0xbf, 0x10, 0x24, 0xa3, - 0x22, 0x7c, 0x80, 0x4b, 0x06, 0x17, 0x61, 0x8d, 0x35, 0x9c, 0xae, 0x3e, 0xc8, 0x89, 0xdf, 0xda, - 0x6e, 0x46, 0x17, 0x76, 0x90, 0x8b, 0x55, 0xcf, 0x69, 0xb0, 0xed, 0xbe, 0x8e, 0xc3, 0xea, 0xa8, - 0xfa, 0x2c, 0xd9, 0x86, 0x6f, 0xc3, 0x05, 0x51, 0x1c, 0x66, 0xbd, 0xa0, 0x7a, 0xe3, 0x84, 0x53, - 0x16, 0xb4, 0x1c, 0x6b, 0x9e, 0x58, 0xb3, 0x5e, 0xd0, 0x5d, 0x4f, 0xe8, 0x15, 0xd1, 0x74, 0xa9, - 0x77, 0xeb, 0xd5, 0x8d, 0xf0, 0xb0, 0x4b, 0x04, 0x92, 0x02, 0xc7, 0xff, 0x07, 0xdc, 0x31, 0x18, - 0xd7, 0x5d, 0x7a, 0x48, 0x5d, 0x6a, 0x9b, 0xbe, 0x99, 0xdf, 0x91, 0x48, 0x9e, 0x86, 0x0c, 0x14, - 0x05, 0x8e, 0x1f, 0xc1, 0x8a, 0x61, 0xdb, 0x0e, 0x17, 0x9d, 0x14, 0x4b, 0x2d, 0x89, 0x63, 0x3b, - 0x37, 0x3b, 0x89, 0x72, 0x61, 0xe8, 0xa1, 0xd8, 0xdc, 0x3d, 0x21, 0xa3, 0x31, 0xd2, 0x9f, 0x82, - 0x34, 0x6e, 0x80, 0x25, 0x88, 0xb7, 0xe9, 0x49, 0x90, 0x4e, 0xef, 0xd3, 0x6b, 0xab, 0x8e, 0x8d, - 0x4e, 0x3f, 0x24, 0x8c, 0x3f, 0xb8, 0x17, 0xbb, 0x8b, 0xee, 0xfc, 0x19, 0x83, 0xc4, 0x80, 0x0a, - 0x38, 0x0d, 0xeb, 0x0a, 0x21, 0x2a, 0xd1, 0x8b, 0x6a, 0x49, 0xd1, 0xeb, 0x55, 0xed, 0x40, 0x29, - 0x96, 0xef, 0x97, 0x95, 0x92, 0xf4, 0x1f, 0xbc, 0x09, 0xe9, 0x11, 0x5d, 0xb9, 0xfa, 0xb8, 0x50, - 0x29, 0x97, 0x74, 0xa2, 0x3c, 0xaa, 0x2b, 0x5a, 0x4d, 0x42, 0xf8, 0x1a, 0x5c, 0x79, 0xcb, 0xb7, - 0x50, 0xaf, 0x3d, 0x50, 0x49, 0xf9, 0xa9, 0x52, 0x92, 0x62, 0x38, 0x03, 0x1b, 0x23, 0xca, 0x03, - 0xa2, 0xde, 0x2f, 0x57, 0x14, 0xbd, 0xa6, 0xaa, 0x7a, 0xa5, 0x40, 0xf6, 0x14, 0x29, 0x3e, 0xc5, - 0xa2, 0xa8, 0xee, 0x1f, 0x54, 0x94, 0x9a, 0x52, 0x92, 0x16, 0xa6, 0x58, 0x54, 0xd5, 0x9a, 0x7e, - 0x5f, 0xad, 0x57, 0x4b, 0xd2, 0x39, 0x7c, 0x1d, 0xae, 0xbe, 0x05, 0xb1, 0xa6, 0x90, 0x6a, 0xa1, - 0xa2, 0x0b, 0x99, 0xb4, 0x38, 0x86, 0xf0, 0xa0, 0x5e, 0xd1, 0x0a, 0x24, 0x50, 0x2e, 0x8d, 0xf9, - 0x7a, 0x15, 0x18, 0x09, 0xbd, 0x1c, 0xa5, 0x1e, 0xa2, 0x4f, 0xdc, 0x61, 0x00, 0x43, 0x92, 0x79, - 0x13, 0x09, 0x0b, 0x4d, 0xad, 0x93, 0xe2, 0x78, 0x1e, 0x53, 0x90, 0x1c, 0x55, 0x3e, 0x51, 0xc9, - 0xc3, 0x8a, 0x5a, 0x28, 0x49, 0x68, 0x5c, 0x43, 0x94, 0xbd, 0xb2, 0x56, 0x23, 0x9f, 0x49, 0x31, - 0x9c, 0x04, 0x69, 0x54, 0xf3, 0x40, 0xd5, 0x6a, 0x52, 0x3c, 0xff, 0xc3, 0x12, 0x9c, 0xd7, 0x7c, - 0xee, 0x68, 0xfe, 0xf3, 0x0f, 0x7e, 0x01, 0xc9, 0xa8, 0xf7, 0x0e, 0xfc, 0x51, 0x04, 0xc9, 0xa6, - 0x3f, 0xdd, 0xa4, 0xe5, 0xd3, 0x9a, 0xfb, 0xc7, 0x67, 0x36, 0xfe, 0x2a, 0x86, 0xf0, 0x13, 0x80, - 0xe1, 0x0b, 0x01, 0xbe, 0x15, 0xb9, 0x5f, 0x8e, 0xcd, 0xf3, 0xdf, 0xd9, 0x46, 0xc1, 0xe1, 0xfc, - 0x25, 0x5c, 0x99, 0x72, 0x27, 0xc3, 0xdb, 0x93, 0x01, 0x66, 0xdf, 0x3d, 0xd3, 0x3b, 0x73, 0x78, - 0x04, 0xf3, 0x7f, 0x8d, 0x20, 0x35, 0xed, 0x62, 0x80, 0xa7, 0xc4, 0x9b, 0x71, 0x05, 0x4a, 0xe7, - 0xe7, 0x71, 0x09, 0x30, 0x3c, 0x87, 0x74, 0x54, 0x05, 0xfc, 0x96, 0x0b, 0xff, 0xef, 0x94, 0xcd, - 0xf4, 0xbc, 0x85, 0xdd, 0x42, 0xf8, 0x25, 0x82, 0xab, 0x53, 0x7b, 0x3d, 0x9c, 0x9f, 0xa3, 0xd9, - 0x0c, 0xff, 0xfe, 0xf6, 0xbc, 0x0d, 0xea, 0x36, 0xc2, 0x35, 0x58, 0x0b, 0x1a, 0x96, 0x60, 0xe2, - 0xcd, 0xd9, 0x3d, 0x51, 0xfa, 0xe6, 0x54, 0xfd, 0xc8, 0x7f, 0xd3, 0x60, 0x2d, 0x38, 0x81, 0x83, - 0xa8, 0x99, 0xa9, 0x87, 0x7c, 0x08, 0x7e, 0x73, 0x76, 0x1b, 0xb0, 0x8d, 0x76, 0xf3, 0x4f, 0xb7, - 0x23, 0xdf, 0x5a, 0x1b, 0x86, 0xd9, 0xa6, 0x76, 0x53, 0xbc, 0xb5, 0x9a, 0x1d, 0x8b, 0xda, 0x3c, - 0x77, 0xbc, 0x93, 0x13, 0x4f, 0xa9, 0x8d, 0x45, 0xf1, 0xf3, 0xf1, 0xdf, 0x01, 0x00, 0x00, 0xff, - 0xff, 0xec, 0x01, 0x94, 0x70, 0xcf, 0x15, 0x00, 0x00, + // 1225 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xcf, 0x8f, 0xda, 0xc6, + 0x17, 0xff, 0x0e, 0xbf, 0x02, 0x6f, 0xd9, 0xc4, 0x19, 0x6d, 0xf6, 0x4b, 0xc8, 0x66, 0x4b, 0x48, + 0x95, 0xae, 0xa2, 0xd6, 0xec, 0x6e, 0x7b, 0x88, 0x72, 0xa8, 0xc4, 0x82, 0xb3, 0x21, 0x61, 0xd7, + 0x9b, 0x31, 0x24, 0x6a, 0x2e, 0x96, 0x31, 0xb3, 0xc4, 0x02, 0x6c, 0xe2, 0x19, 0x48, 0x49, 0x2f, + 0x95, 0x72, 0xe9, 0xa1, 0x52, 0xa5, 0x48, 0x3d, 0xf4, 0x52, 0xf5, 0xd4, 0x4b, 0xff, 0x84, 0x5e, + 0xfb, 0xf7, 0xf4, 0x6f, 0xa8, 0x3c, 0x36, 0xe0, 0x80, 0x41, 0x8b, 0x54, 0x75, 0x73, 0xc2, 0x7e, + 0x3f, 0x3f, 0xf3, 0x79, 0x0f, 0xbf, 0x37, 0x70, 0x83, 0x71, 0xc7, 0x35, 0x3a, 0x54, 0x67, 0xd4, + 0x1d, 0x59, 0x26, 0x95, 0x07, 0xae, 0xc3, 0x1d, 0x2c, 0x05, 0x62, 0x4f, 0x4a, 0x5d, 0x79, 0x74, + 0x90, 0x7f, 0xd6, 0xb1, 0xf8, 0xab, 0x61, 0x4b, 0x36, 0x9d, 0x7e, 0xa9, 0x3b, 0x6c, 0x51, 0x66, + 0x1a, 0x03, 0x5a, 0x0a, 0xcc, 0x4a, 0x83, 0x6e, 0xa7, 0x64, 0x0c, 0x2c, 0x56, 0x62, 0xce, 0x39, + 0x7f, 0x63, 0xb8, 0xd4, 0x74, 0xfa, 0x03, 0x87, 0x59, 0xdc, 0x72, 0xec, 0xd2, 0xe8, 0xa0, 0x45, + 0xb9, 0x71, 0x50, 0xea, 0x50, 0x9b, 0xba, 0x06, 0xa7, 0x6d, 0x3f, 0x49, 0xf1, 0x37, 0x04, 0xb7, + 0x34, 0x6a, 0xb7, 0x2b, 0x8e, 0xcd, 0x0d, 0xcb, 0xa6, 0xee, 0x99, 0xeb, 0x9c, 0x5b, 0x3d, 0x4a, + 0xe8, 0xeb, 0x21, 0x65, 0x1c, 0x7f, 0x8f, 0xe0, 0xba, 0x39, 0xd1, 0xe9, 0x03, 0x5f, 0x99, 0x43, + 0x05, 0xb4, 0xb7, 0x71, 0xa8, 0xc9, 0x33, 0x3c, 0xf2, 0x14, 0x8f, 0x1c, 0xe0, 0x91, 0x07, 0xdd, + 0x8e, 0xec, 0xe1, 0x91, 0x23, 0xf0, 0xc8, 0x01, 0x1e, 0x79, 0x21, 0xaf, 0x64, 0xce, 0x49, 0x8a, + 0xbf, 0x20, 0xd8, 0x89, 0x86, 0xc8, 0x06, 0x8e, 0xcd, 0x28, 0xce, 0xc1, 0x15, 0x36, 0x34, 0x4d, + 0xca, 0x98, 0x00, 0x96, 0x26, 0x93, 0x57, 0x7c, 0x17, 0x36, 0xa9, 0xeb, 0x3a, 0xae, 0xde, 0xa7, + 0x8c, 0x19, 0x1d, 0x9a, 0x8b, 0x15, 0xd0, 0x5e, 0x86, 0x64, 0x85, 0xf0, 0xc4, 0x97, 0xe1, 0x87, + 0x00, 0xbe, 0x91, 0xe9, 0xb4, 0x69, 0x2e, 0x5e, 0x40, 0x7b, 0x57, 0x0f, 0x6f, 0xc9, 0xf3, 0xe4, + 0xcb, 0x8a, 0x67, 0x53, 0x71, 0xda, 0x94, 0x64, 0xe8, 0xe4, 0xb1, 0xf8, 0x07, 0x82, 0xeb, 0xc7, + 0x94, 0xcf, 0x91, 0x86, 0x21, 0xd1, 0xb5, 0xec, 0xb6, 0x40, 0x93, 0x21, 0xe2, 0x19, 0xef, 0x40, + 0xc6, 0x36, 0xfa, 0x94, 0x0d, 0x0c, 0x73, 0x02, 0x63, 0x26, 0xf0, 0x3c, 0xbc, 0x17, 0x91, 0x3d, + 0x43, 0xc4, 0x33, 0xde, 0x86, 0x94, 0x4b, 0x3b, 0x96, 0x63, 0xe7, 0x12, 0x42, 0x1a, 0xbc, 0xe1, + 0x07, 0x90, 0x33, 0x7b, 0xce, 0xb0, 0xad, 0x1b, 0xa6, 0xe9, 0x0c, 0x6d, 0xae, 0x5b, 0x6d, 0x6a, + 0x73, 0xeb, 0xdc, 0xa2, 0x6e, 0x2e, 0x29, 0x2c, 0xb7, 0x85, 0xbe, 0xec, 0xab, 0x6b, 0x53, 0x6d, + 0xf1, 0xd7, 0x18, 0xe0, 0x30, 0xda, 0x4b, 0xe7, 0x6f, 0x49, 0x7b, 0xa5, 0xfe, 0xc3, 0xf6, 0x7a, + 0x92, 0x48, 0x27, 0xa4, 0xe4, 0x93, 0x44, 0x3a, 0x29, 0xa5, 0x8a, 0xef, 0x10, 0xdc, 0x98, 0x77, + 0xa9, 0xbc, 0x1a, 0xda, 0x5d, 0xfc, 0x14, 0xd2, 0x7d, 0xca, 0x8d, 0xb6, 0xc1, 0x8d, 0xa0, 0xfb, + 0x4b, 0x8b, 0x47, 0x8c, 0x74, 0x3d, 0x09, 0xdc, 0xc8, 0x34, 0x00, 0xbe, 0x0d, 0xd0, 0xea, 0x39, + 0x2d, 0xdd, 0xf4, 0xf4, 0x82, 0xd3, 0x2c, 0xc9, 0x78, 0x12, 0xe1, 0x50, 0xfc, 0x04, 0x6e, 0xaf, + 0x8c, 0x54, 0xfc, 0x1d, 0x41, 0xe1, 0x98, 0xf2, 0x79, 0x23, 0x8d, 0xbb, 0xd4, 0xe8, 0x4f, 0x9a, + 0xf0, 0x83, 0x86, 0x43, 0xcb, 0x1a, 0x2e, 0x16, 0xd9, 0x70, 0xf1, 0x0b, 0x37, 0x5c, 0x62, 0x65, + 0xc3, 0xfd, 0x8c, 0x60, 0x77, 0x29, 0x50, 0x9f, 0xd8, 0xc6, 0x02, 0xb1, 0x0f, 0x16, 0x89, 0x5d, + 0x1d, 0x63, 0x7d, 0x86, 0xff, 0x44, 0x70, 0xef, 0x62, 0x31, 0x2f, 0xf3, 0xcf, 0xb1, 0x0d, 0x29, + 0xfa, 0xad, 0xc5, 0x38, 0x13, 0x2c, 0xa7, 0x49, 0xf0, 0x56, 0xfc, 0x11, 0xc1, 0xb5, 0xb3, 0x21, + 0xd7, 0x8e, 0xd4, 0x93, 0x8f, 0xe1, 0x1b, 0xf8, 0x1a, 0xb2, 0x01, 0x1a, 0xbf, 0xa2, 0x47, 0x0b, + 0x15, 0xbd, 0xb7, 0x18, 0x29, 0xec, 0xb1, 0x7e, 0xfd, 0xde, 0x23, 0xd8, 0x8a, 0x8a, 0x80, 0xef, + 0x40, 0xd6, 0xea, 0x7b, 0xa3, 0xb4, 0x6d, 0x75, 0x28, 0xe3, 0x41, 0xdf, 0x6f, 0x08, 0x59, 0x55, + 0x88, 0x3c, 0x13, 0x36, 0x3e, 0xe7, 0xfa, 0x88, 0xba, 0xcc, 0xeb, 0x75, 0x9f, 0x8e, 0x0d, 0x4f, + 0xf6, 0xdc, 0x17, 0xe1, 0xaf, 0x20, 0xc5, 0x9c, 0xa1, 0x6b, 0x4e, 0x98, 0xd8, 0x59, 0xc4, 0xef, + 0xa5, 0xd6, 0x84, 0x0d, 0x09, 0x6c, 0x8b, 0xdf, 0xc1, 0xd5, 0x63, 0x1a, 0x54, 0xc5, 0xff, 0x0b, + 0xfe, 0x3b, 0x68, 0xee, 0xc2, 0xe6, 0x84, 0x17, 0xdd, 0xb1, 0x7b, 0x63, 0x01, 0x2a, 0x4d, 0xb2, + 0x13, 0xa1, 0x6a, 0xf7, 0xc6, 0x5e, 0x11, 0x82, 0xe4, 0x6b, 0x14, 0x21, 0xec, 0xb1, 0x7e, 0x11, + 0xfe, 0x46, 0xb0, 0x15, 0x15, 0xe1, 0x23, 0xfc, 0xcb, 0xe0, 0x0a, 0x6c, 0xb2, 0x96, 0xd3, 0xd7, + 0xa7, 0x9c, 0x24, 0x05, 0x27, 0xbb, 0xd1, 0x85, 0x9d, 0x72, 0x91, 0xf5, 0x9c, 0xa6, 0x9f, 0xdd, + 0xf7, 0x71, 0xc8, 0x86, 0xd5, 0x97, 0xd9, 0x6d, 0xf8, 0x1e, 0x5c, 0x13, 0xc5, 0x61, 0xd6, 0x5b, + 0xaa, 0xb7, 0xc6, 0x9c, 0xfa, 0x47, 0x8e, 0x93, 0x4d, 0x4f, 0xac, 0x59, 0x6f, 0xe9, 0x91, 0x27, + 0xf4, 0x8a, 0x68, 0xba, 0xd4, 0xdb, 0xf8, 0x74, 0x83, 0x07, 0xfb, 0x41, 0x26, 0x90, 0x94, 0x39, + 0xfe, 0x1c, 0x70, 0xcf, 0x60, 0x5c, 0x77, 0xe9, 0x39, 0x75, 0xa9, 0x6d, 0xfa, 0x66, 0x29, 0x61, + 0x26, 0x79, 0x1a, 0x32, 0x55, 0x94, 0x39, 0x7e, 0x06, 0x1b, 0x86, 0x6d, 0x3b, 0xdc, 0xf0, 0x86, + 0x2c, 0xcb, 0x5d, 0x29, 0xc4, 0xa3, 0x07, 0x61, 0x98, 0x25, 0xb9, 0x3c, 0xf3, 0x50, 0x6c, 0xee, + 0x8e, 0x49, 0x38, 0x46, 0xfe, 0x6b, 0x90, 0xe6, 0x0d, 0xb0, 0x04, 0xf1, 0x2e, 0x1d, 0x07, 0x74, + 0x7a, 0x8f, 0x78, 0x0b, 0x92, 0x23, 0xa3, 0x37, 0x9c, 0x34, 0x8c, 0xff, 0xf2, 0x30, 0xf6, 0x00, + 0xdd, 0xff, 0x2b, 0x06, 0x99, 0x69, 0x2b, 0xe0, 0x3c, 0x6c, 0x2b, 0x84, 0xa8, 0x44, 0xaf, 0xa8, + 0x55, 0x45, 0x6f, 0x9e, 0x6a, 0x67, 0x4a, 0xa5, 0xf6, 0xa8, 0xa6, 0x54, 0xa5, 0xff, 0xe1, 0x5d, + 0xc8, 0x87, 0x74, 0xb5, 0xd3, 0xe7, 0xe5, 0x7a, 0xad, 0xaa, 0x13, 0xe5, 0x59, 0x53, 0xd1, 0x1a, + 0x12, 0xc2, 0xb7, 0xe0, 0xff, 0x1f, 0xf8, 0x96, 0x9b, 0x8d, 0xc7, 0x2a, 0xa9, 0xbd, 0x54, 0xaa, + 0x52, 0x0c, 0x17, 0x60, 0x27, 0xa4, 0x3c, 0x23, 0xea, 0xa3, 0x5a, 0x5d, 0xd1, 0x1b, 0xaa, 0xaa, + 0xd7, 0xcb, 0xe4, 0x58, 0x91, 0xe2, 0x4b, 0x2c, 0x2a, 0xea, 0xc9, 0x59, 0x5d, 0x69, 0x28, 0x55, + 0x29, 0xb1, 0xc4, 0xe2, 0x54, 0x6d, 0xe8, 0x8f, 0xd4, 0xe6, 0x69, 0x55, 0x4a, 0xe2, 0xdb, 0x70, + 0xf3, 0x03, 0x88, 0x0d, 0x85, 0x9c, 0x96, 0xeb, 0xba, 0x90, 0x49, 0xa9, 0x39, 0x84, 0x67, 0xcd, + 0xba, 0x56, 0x26, 0x81, 0xf2, 0xca, 0x9c, 0xaf, 0x57, 0x81, 0x50, 0xe8, 0x74, 0x94, 0x7a, 0x86, + 0x3e, 0x73, 0x9f, 0x01, 0xcc, 0x9a, 0xcc, 0x4b, 0x24, 0x2c, 0x34, 0xb5, 0x49, 0x2a, 0xf3, 0x3c, + 0xe6, 0x60, 0x2b, 0xac, 0x7c, 0xa1, 0x92, 0xa7, 0x75, 0xb5, 0x5c, 0x95, 0xd0, 0xbc, 0x86, 0x28, + 0xc7, 0x35, 0xad, 0x41, 0xbe, 0x91, 0x62, 0x78, 0x0b, 0xa4, 0xb0, 0xe6, 0xb1, 0xaa, 0x35, 0xa4, + 0xf8, 0xe1, 0x4f, 0x49, 0xb8, 0xaa, 0xf9, 0xbd, 0xa3, 0xf9, 0x57, 0x1f, 0xfc, 0x16, 0xb6, 0xa2, + 0x76, 0x7d, 0xfc, 0x45, 0x44, 0x93, 0x2d, 0xbf, 0xb6, 0xe4, 0xe5, 0x8b, 0x9a, 0xfb, 0xe3, 0xb3, + 0x18, 0xff, 0x21, 0x86, 0xf0, 0x0b, 0x80, 0xd9, 0x76, 0x8c, 0xef, 0x46, 0x7e, 0x2f, 0xe7, 0xf2, + 0x7c, 0xba, 0xda, 0x28, 0x18, 0xce, 0x6f, 0x20, 0x1f, 0x95, 0xdd, 0x5f, 0x37, 0xf0, 0x67, 0x17, + 0x5c, 0x24, 0xd7, 0x3d, 0xd4, 0x1e, 0xc2, 0xef, 0x10, 0xdc, 0x5c, 0xba, 0xe7, 0xe0, 0xc3, 0x35, + 0x16, 0xad, 0xc9, 0x81, 0xf7, 0xd7, 0x5d, 0xce, 0xf6, 0x11, 0x6e, 0xc0, 0x66, 0x30, 0xac, 0x83, + 0xc4, 0xbb, 0xab, 0xf7, 0x81, 0xfc, 0x9d, 0xa5, 0xfa, 0xd0, 0xd9, 0x34, 0xd8, 0x0c, 0xa6, 0x4f, + 0x10, 0xb5, 0xb0, 0x74, 0xc0, 0x4d, 0xc0, 0xef, 0xae, 0x1e, 0x81, 0xfb, 0xe8, 0xe8, 0xf0, 0xe5, + 0x7e, 0xe4, 0x1d, 0xbb, 0x65, 0x98, 0x5d, 0x6a, 0xb7, 0xc5, 0x1d, 0xdb, 0xec, 0x59, 0xd4, 0xe6, + 0xa5, 0xd1, 0x41, 0x49, 0x5c, 0xa1, 0x5b, 0x29, 0xf1, 0xf3, 0xe5, 0x3f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x84, 0xe3, 0x93, 0xcb, 0xc7, 0x0f, 0x00, 0x00, } diff --git a/pkg/client/v1/proto/storage_service.proto b/pkg/client/v1/proto/storage_service.proto index d48ff71..c9a39f4 100644 --- a/pkg/client/v1/proto/storage_service.proto +++ b/pkg/client/v1/proto/storage_service.proto @@ -20,19 +20,12 @@ service StorageService { option deprecated = true; } - // GetProfile retrieves an aggregated profile (ApplicationProfile, NetworkNeighborhood, - // or ContainerProfile) by fetching them from S3. + // GetProfile retrieves a ContainerProfile by fetching it from S3. // // Note: for ContainerProfile specifically, prefer GetContainerProfileStream, // which is not subject to the default 4 MiB unary gRPC message limit. rpc GetProfile(GetProfileRequest) returns (GetProfileResponse); - // ListApplicationProfiles lists all ApplicationProfiles in a namespace (returns metadata only, nil Spec) - rpc ListApplicationProfiles(ListApplicationProfilesRequest) returns (ListApplicationProfilesResponse); - - // ListNetworkNeighborhoods lists all NetworkNeighborhoods in a namespace (returns metadata only, nil Spec) - rpc ListNetworkNeighborhoods(ListNetworkNeighborhoodsRequest) returns (ListNetworkNeighborhoodsResponse); - // SendContainerProfileStream is the streaming replacement for // SendContainerProfile. Client-streaming so the caller need not know the // payload size in advance — required because container profiles with @@ -126,14 +119,11 @@ message GetProfileResponse { // Error code for programmatic error handling ErrorCode error_code = 3; - // ApplicationProfile is populated when kind is "applicationProfile" - github.com.kubescape.storage.pkg.apis.softwarecomposition.v1beta1.ApplicationProfile application_profile = 4; - - // NetworkNeighborhood is populated when kind is "networkNeighborhood" - github.com.kubescape.storage.pkg.apis.softwarecomposition.v1beta1.NetworkNeighborhood network_neighborhood = 5; - // ContainerProfile is populated when kind is "containerProfile" github.com.kubescape.storage.pkg.apis.softwarecomposition.v1beta1.ContainerProfile container_profile = 6; + + // Field numbers 4 and 5 previously held application_profile / network_neighborhood. + reserved 4, 5; } // ErrorCode provides specific error types for programmatic handling @@ -161,80 +151,6 @@ enum SBOMSource { SBOM_SOURCE_HOST = 3; } -// ListApplicationProfilesRequest requests a list of ApplicationProfiles in a namespace -// customer_guid, cluster, host_type, and host_id are sent via gRPC metadata headers -message ListApplicationProfilesRequest { - // Namespace to list profiles from - string namespace = 1; - - // Limit number of items to return (0 means server default) - int64 limit = 4; - - // Continue token for pagination - string cont = 5; - - // Region of the resource (non-k8s scope identifier, e.g. "us-east-1") - string region = 6; - - // CloudAccountIdentifier of the resource (non-k8s scope identifier, e.g. AWS account ID "123456789012", GCP project ID) - string cloud_account_identifier = 7; -} - -// ListApplicationProfilesResponse contains the list of ApplicationProfiles (with nil Spec) -message ListApplicationProfilesResponse { - // Success indicates if the list was successfully retrieved - bool success = 1; - - // Error message if the operation failed - string error_message = 2; - - // Error code for programmatic error handling - ErrorCode error_code = 3; - - // ApplicationProfiles list (Spec will be nil for each item) - repeated github.com.kubescape.storage.pkg.apis.softwarecomposition.v1beta1.ApplicationProfile application_profiles = 4; - - // Continue token for next page (empty if no more results) - string cont = 5; -} - -// ListNetworkNeighborhoodsRequest requests a list of NetworkNeighborhoods in a namespace -// customer_guid, cluster, host_type, and host_id are sent via gRPC metadata headers -message ListNetworkNeighborhoodsRequest { - // Namespace to list neighborhoods from - string namespace = 1; - - // Limit number of items to return (0 means server default) - int64 limit = 4; - - // Continue token for pagination - string cont = 5; - - // Region of the resource (non-k8s scope identifier, e.g. "us-east-1") - string region = 6; - - // CloudAccountIdentifier of the resource (non-k8s scope identifier, e.g. AWS account ID "123456789012", GCP project ID) - string cloud_account_identifier = 7; -} - -// ListNetworkNeighborhoodsResponse contains the list of NetworkNeighborhoods (with nil Spec) -message ListNetworkNeighborhoodsResponse { - // Success indicates if the list was successfully retrieved - bool success = 1; - - // Error message if the operation failed - string error_message = 2; - - // Error code for programmatic error handling - ErrorCode error_code = 3; - - // NetworkNeighborhoods list (Spec will be nil for each item) - repeated github.com.kubescape.storage.pkg.apis.softwarecomposition.v1beta1.NetworkNeighborhood network_neighborhoods = 4; - - // Continue token for next page (empty if no more results) - string cont = 5; -} - // ContainerProfileChunk is a single chunk of a streamed ContainerProfile // upload (SendContainerProfileStream). The first chunk in the stream MUST // set metadata. Subsequent chunks set only blob_chunk. Concatenated diff --git a/pkg/client/v1/proto/storage_service_grpc.pb.go b/pkg/client/v1/proto/storage_service_grpc.pb.go index cc6a00b..058ed3f 100644 --- a/pkg/client/v1/proto/storage_service_grpc.pb.go +++ b/pkg/client/v1/proto/storage_service_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc v6.33.1 +// - protoc-gen-go-grpc v1.6.2 +// - protoc v3.21.12 // source: storage_service.proto package proto @@ -21,8 +21,6 @@ const _ = grpc.SupportPackageIsVersion9 const ( StorageService_SendContainerProfile_FullMethodName = "/storageserver.v1.StorageService/SendContainerProfile" StorageService_GetProfile_FullMethodName = "/storageserver.v1.StorageService/GetProfile" - StorageService_ListApplicationProfiles_FullMethodName = "/storageserver.v1.StorageService/ListApplicationProfiles" - StorageService_ListNetworkNeighborhoods_FullMethodName = "/storageserver.v1.StorageService/ListNetworkNeighborhoods" StorageService_SendContainerProfileStream_FullMethodName = "/storageserver.v1.StorageService/SendContainerProfileStream" StorageService_GetContainerProfileStream_FullMethodName = "/storageserver.v1.StorageService/GetContainerProfileStream" StorageService_PutSBOMStream_FullMethodName = "/storageserver.v1.StorageService/PutSBOMStream" @@ -45,16 +43,11 @@ type StorageServiceClient interface { // exceed this and fail on the wire. The streaming variant has no such // bound. SendContainerProfile(ctx context.Context, in *SendContainerProfileRequest, opts ...grpc.CallOption) (*SendContainerProfileResponse, error) - // GetProfile retrieves an aggregated profile (ApplicationProfile, NetworkNeighborhood, - // or ContainerProfile) by fetching them from S3. + // GetProfile retrieves a ContainerProfile by fetching it from S3. // // Note: for ContainerProfile specifically, prefer GetContainerProfileStream, // which is not subject to the default 4 MiB unary gRPC message limit. GetProfile(ctx context.Context, in *GetProfileRequest, opts ...grpc.CallOption) (*GetProfileResponse, error) - // ListApplicationProfiles lists all ApplicationProfiles in a namespace (returns metadata only, nil Spec) - ListApplicationProfiles(ctx context.Context, in *ListApplicationProfilesRequest, opts ...grpc.CallOption) (*ListApplicationProfilesResponse, error) - // ListNetworkNeighborhoods lists all NetworkNeighborhoods in a namespace (returns metadata only, nil Spec) - ListNetworkNeighborhoods(ctx context.Context, in *ListNetworkNeighborhoodsRequest, opts ...grpc.CallOption) (*ListNetworkNeighborhoodsResponse, error) // SendContainerProfileStream is the streaming replacement for // SendContainerProfile. Client-streaming so the caller need not know the // payload size in advance — required because container profiles with @@ -125,26 +118,6 @@ func (c *storageServiceClient) GetProfile(ctx context.Context, in *GetProfileReq return out, nil } -func (c *storageServiceClient) ListApplicationProfiles(ctx context.Context, in *ListApplicationProfilesRequest, opts ...grpc.CallOption) (*ListApplicationProfilesResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ListApplicationProfilesResponse) - err := c.cc.Invoke(ctx, StorageService_ListApplicationProfiles_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *storageServiceClient) ListNetworkNeighborhoods(ctx context.Context, in *ListNetworkNeighborhoodsRequest, opts ...grpc.CallOption) (*ListNetworkNeighborhoodsResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ListNetworkNeighborhoodsResponse) - err := c.cc.Invoke(ctx, StorageService_ListNetworkNeighborhoods_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *storageServiceClient) SendContainerProfileStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[ContainerProfileChunk, SendContainerProfileResponse], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) stream, err := c.cc.NewStream(ctx, &StorageService_ServiceDesc.Streams[0], StorageService_SendContainerProfileStream_FullMethodName, cOpts...) @@ -225,16 +198,11 @@ type StorageServiceServer interface { // exceed this and fail on the wire. The streaming variant has no such // bound. SendContainerProfile(context.Context, *SendContainerProfileRequest) (*SendContainerProfileResponse, error) - // GetProfile retrieves an aggregated profile (ApplicationProfile, NetworkNeighborhood, - // or ContainerProfile) by fetching them from S3. + // GetProfile retrieves a ContainerProfile by fetching it from S3. // // Note: for ContainerProfile specifically, prefer GetContainerProfileStream, // which is not subject to the default 4 MiB unary gRPC message limit. GetProfile(context.Context, *GetProfileRequest) (*GetProfileResponse, error) - // ListApplicationProfiles lists all ApplicationProfiles in a namespace (returns metadata only, nil Spec) - ListApplicationProfiles(context.Context, *ListApplicationProfilesRequest) (*ListApplicationProfilesResponse, error) - // ListNetworkNeighborhoods lists all NetworkNeighborhoods in a namespace (returns metadata only, nil Spec) - ListNetworkNeighborhoods(context.Context, *ListNetworkNeighborhoodsRequest) (*ListNetworkNeighborhoodsResponse, error) // SendContainerProfileStream is the streaming replacement for // SendContainerProfile. Client-streaming so the caller need not know the // payload size in advance — required because container profiles with @@ -285,28 +253,22 @@ type StorageServiceServer interface { type UnimplementedStorageServiceServer struct{} func (UnimplementedStorageServiceServer) SendContainerProfile(context.Context, *SendContainerProfileRequest) (*SendContainerProfileResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SendContainerProfile not implemented") + return nil, status.Error(codes.Unimplemented, "method SendContainerProfile not implemented") } func (UnimplementedStorageServiceServer) GetProfile(context.Context, *GetProfileRequest) (*GetProfileResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetProfile not implemented") -} -func (UnimplementedStorageServiceServer) ListApplicationProfiles(context.Context, *ListApplicationProfilesRequest) (*ListApplicationProfilesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListApplicationProfiles not implemented") -} -func (UnimplementedStorageServiceServer) ListNetworkNeighborhoods(context.Context, *ListNetworkNeighborhoodsRequest) (*ListNetworkNeighborhoodsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListNetworkNeighborhoods not implemented") + return nil, status.Error(codes.Unimplemented, "method GetProfile not implemented") } func (UnimplementedStorageServiceServer) SendContainerProfileStream(grpc.ClientStreamingServer[ContainerProfileChunk, SendContainerProfileResponse]) error { - return status.Errorf(codes.Unimplemented, "method SendContainerProfileStream not implemented") + return status.Error(codes.Unimplemented, "method SendContainerProfileStream not implemented") } func (UnimplementedStorageServiceServer) GetContainerProfileStream(*GetContainerProfileStreamRequest, grpc.ServerStreamingServer[GetContainerProfileStreamChunk]) error { - return status.Errorf(codes.Unimplemented, "method GetContainerProfileStream not implemented") + return status.Error(codes.Unimplemented, "method GetContainerProfileStream not implemented") } func (UnimplementedStorageServiceServer) PutSBOMStream(grpc.ClientStreamingServer[PutSBOMChunk, PutSBOMResponse]) error { - return status.Errorf(codes.Unimplemented, "method PutSBOMStream not implemented") + return status.Error(codes.Unimplemented, "method PutSBOMStream not implemented") } func (UnimplementedStorageServiceServer) GetSBOMStream(*GetSBOMRequest, grpc.ServerStreamingServer[GetSBOMChunk]) error { - return status.Errorf(codes.Unimplemented, "method GetSBOMStream not implemented") + return status.Error(codes.Unimplemented, "method GetSBOMStream not implemented") } func (UnimplementedStorageServiceServer) mustEmbedUnimplementedStorageServiceServer() {} func (UnimplementedStorageServiceServer) testEmbeddedByValue() {} @@ -319,7 +281,7 @@ type UnsafeStorageServiceServer interface { } func RegisterStorageServiceServer(s grpc.ServiceRegistrar, srv StorageServiceServer) { - // If the following call pancis, it indicates UnimplementedStorageServiceServer was + // If the following call panics, it indicates UnimplementedStorageServiceServer was // embedded by pointer and is nil. This will cause panics if an // unimplemented method is ever invoked, so we test this at initialization // time to prevent it from happening at runtime later due to I/O. @@ -365,42 +327,6 @@ func _StorageService_GetProfile_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } -func _StorageService_ListApplicationProfiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApplicationProfilesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StorageServiceServer).ListApplicationProfiles(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StorageService_ListApplicationProfiles_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageServiceServer).ListApplicationProfiles(ctx, req.(*ListApplicationProfilesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StorageService_ListNetworkNeighborhoods_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNetworkNeighborhoodsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StorageServiceServer).ListNetworkNeighborhoods(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StorageService_ListNetworkNeighborhoods_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageServiceServer).ListNetworkNeighborhoods(ctx, req.(*ListNetworkNeighborhoodsRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _StorageService_SendContainerProfileStream_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(StorageServiceServer).SendContainerProfileStream(&grpc.GenericServerStream[ContainerProfileChunk, SendContainerProfileResponse]{ServerStream: stream}) } @@ -452,14 +378,6 @@ var StorageService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetProfile", Handler: _StorageService_GetProfile_Handler, }, - { - MethodName: "ListApplicationProfiles", - Handler: _StorageService_ListApplicationProfiles_Handler, - }, - { - MethodName: "ListNetworkNeighborhoods", - Handler: _StorageService_ListNetworkNeighborhoods_Handler, - }, }, Streams: []grpc.StreamDesc{ { diff --git a/pkg/client/v1/storageclient.go b/pkg/client/v1/storageclient.go index a08eab9..9977aa9 100644 --- a/pkg/client/v1/storageclient.go +++ b/pkg/client/v1/storageclient.go @@ -399,84 +399,6 @@ func (c *StorageClient) GetContainerProfileStream(ctx context.Context, namespace return profile, nil } -// GetApplicationProfile retrieves an aggregated ApplicationProfile from the storage server -// For backward compatibility, region and cloudAccountIdentifier can be provided via ProfileOption -// Old way: GetApplicationProfile(ctx, "ns", "name") -// New way: GetApplicationProfile(ctx, "ns", "name", WithProfileRegion("us-east-1"), WithProfileCloudAccountIdentifier("123")) -func (c *StorageClient) GetApplicationProfile(ctx context.Context, namespace, name string, opts ...ProfileOption) (*v1beta1.ApplicationProfile, error) { - if c.protoClient == nil { - return nil, fmt.Errorf("client is not connected") - } - - profileOpts := profileOptionsWithDefaults(opts) - - req := &proto.GetProfileRequest{ - Kind: "ApplicationProfile", - Namespace: namespace, - Name: name, - Region: profileOpts.Region, - CloudAccountIdentifier: profileOpts.CloudAccountIdentifier, - } - - ctx = c.withMetadata(ctx) - - if c.callTimeout != nil && *c.callTimeout > 0 { - var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, *c.callTimeout) - defer cancel() - } - - resp, err := c.protoClient.GetProfile(ctx, req) - if err != nil { - return nil, err - } - - if !resp.Success { - return nil, fmt.Errorf("failed to get application profile: %s (code: %v)", resp.ErrorMessage, resp.ErrorCode) - } - - return resp.ApplicationProfile, nil -} - -// GetNetworkNeighborhood retrieves an aggregated NetworkNeighborhood from the storage server -// For backward compatibility, region and cloudAccountIdentifier can be provided via ProfileOption -// Old way: GetNetworkNeighborhood(ctx, "ns", "name") -// New way: GetNetworkNeighborhood(ctx, "ns", "name", WithProfileRegion("us-east-1"), WithProfileCloudAccountIdentifier("123")) -func (c *StorageClient) GetNetworkNeighborhood(ctx context.Context, namespace, name string, opts ...ProfileOption) (*v1beta1.NetworkNeighborhood, error) { - if c.protoClient == nil { - return nil, fmt.Errorf("client is not connected") - } - - profileOpts := profileOptionsWithDefaults(opts) - - req := &proto.GetProfileRequest{ - Kind: "NetworkNeighborhood", - Namespace: namespace, - Name: name, - Region: profileOpts.Region, - CloudAccountIdentifier: profileOpts.CloudAccountIdentifier, - } - - ctx = c.withMetadata(ctx) - - if c.callTimeout != nil && *c.callTimeout > 0 { - var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, *c.callTimeout) - defer cancel() - } - - resp, err := c.protoClient.GetProfile(ctx, req) - if err != nil { - return nil, err - } - - if !resp.Success { - return nil, fmt.Errorf("failed to get network neighborhood: %s (code: %v)", resp.ErrorMessage, resp.ErrorCode) - } - - return resp.NetworkNeighborhood, nil -} - // GetContainerProfile retrieves a ContainerProfile from the storage server. // // Deprecated: use GetContainerProfileStream. The unary form goes through @@ -518,117 +440,6 @@ func (c *StorageClient) GetContainerProfile(ctx context.Context, namespace, name return resp.ContainerProfile, nil } -// ListApplicationProfiles lists all ApplicationProfiles in a namespace (returns metadata only, nil Spec) -// For backward compatibility, region and cloudAccountIdentifier can be provided via ProfileOption -// Old way: ListApplicationProfiles(ctx, "ns", 100, "") -// New way: ListApplicationProfiles(ctx, "ns", 100, "", WithProfileRegion("us-east-1"), WithProfileCloudAccountIdentifier("123")) -func (c *StorageClient) ListApplicationProfiles(ctx context.Context, namespace string, limit int64, cont string, opts ...ProfileOption) (*v1beta1.ApplicationProfileList, error) { - if c.protoClient == nil { - return nil, fmt.Errorf("client is not connected") - } - - profileOpts := profileOptionsWithDefaults(opts) - - req := &proto.ListApplicationProfilesRequest{ - Namespace: namespace, - Limit: limit, - Cont: cont, - Region: profileOpts.Region, - CloudAccountIdentifier: profileOpts.CloudAccountIdentifier, - } - - ctx = c.withMetadata(ctx) - - if c.callTimeout != nil && *c.callTimeout > 0 { - var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, *c.callTimeout) - defer cancel() - } - - resp, err := c.protoClient.ListApplicationProfiles(ctx, req) - if err != nil { - return nil, err - } - - if !resp.Success { - return nil, fmt.Errorf("failed to list application profiles: %s (code: %v)", resp.ErrorMessage, resp.ErrorCode) - } - - // Convert pointer slice to value slice for ApplicationProfileList - items := make([]v1beta1.ApplicationProfile, len(resp.ApplicationProfiles)) - for i, p := range resp.ApplicationProfiles { - if p != nil { - items[i] = *p - } - } - - list := &v1beta1.ApplicationProfileList{ - Items: items, - } - - // Set continue token for Kubernetes-style pagination - if resp.Cont != "" { - list.Continue = resp.Cont - } - - return list, nil -} - -// ListNetworkNeighborhoods lists all NetworkNeighborhoods in a namespace (returns metadata only, nil Spec) -// For backward compatibility, region and cloudAccountIdentifier can be provided via ProfileOption -// Old way: ListNetworkNeighborhoods(ctx, "ns", 100, "") -// New way: ListNetworkNeighborhoods(ctx, "ns", 100, "", WithProfileRegion("us-east-1"), WithProfileCloudAccountIdentifier("123")) -func (c *StorageClient) ListNetworkNeighborhoods(ctx context.Context, namespace string, limit int64, cont string, opts ...ProfileOption) (*v1beta1.NetworkNeighborhoodList, error) { - if c.protoClient == nil { - return nil, fmt.Errorf("client is not connected") - } - - profileOpts := profileOptionsWithDefaults(opts) - - req := &proto.ListNetworkNeighborhoodsRequest{ - Namespace: namespace, - Limit: limit, - Cont: cont, - Region: profileOpts.Region, - CloudAccountIdentifier: profileOpts.CloudAccountIdentifier, - } - - ctx = c.withMetadata(ctx) - - if c.callTimeout != nil && *c.callTimeout > 0 { - var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, *c.callTimeout) - defer cancel() - } - - resp, err := c.protoClient.ListNetworkNeighborhoods(ctx, req) - if err != nil { - return nil, err - } - - if !resp.Success { - return nil, fmt.Errorf("failed to list network neighborhoods: %s (code: %v)", resp.ErrorMessage, resp.ErrorCode) - } - - // Convert pointer slice to value slice for NetworkNeighborhoodList - items := make([]v1beta1.NetworkNeighborhood, len(resp.NetworkNeighborhoods)) - for i, p := range resp.NetworkNeighborhoods { - if p != nil { - items[i] = *p - } - } - - list := &v1beta1.NetworkNeighborhoodList{ - Items: items, - } - - if resp.Cont != "" { - list.Continue = resp.Cont - } - - return list, nil -} - // PutSBOMStream uploads an SBOM identified by (image_digest, syft_version, // source). The payload is the marshaled SBOMSyft proto, read from r and // sent to the server in chunks of sbomStreamChunkSize. Callers with a diff --git a/pkg/client/v1/storageclient_coverage_test.go b/pkg/client/v1/storageclient_coverage_test.go new file mode 100644 index 0000000..87a50e6 --- /dev/null +++ b/pkg/client/v1/storageclient_coverage_test.go @@ -0,0 +1,357 @@ +package v1 + +import ( + "context" + "strings" + "testing" + + "github.com/kubescape/backend/pkg/client/v1/proto" + "github.com/kubescape/storage/pkg/apis/softwarecomposition/v1beta1" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// --------------------------------------------------------------------------- +// Connect / Close / IsConnected / GetAddress lifecycle +// --------------------------------------------------------------------------- + +// TestStorageClient_ConnectLifecycle exercises the full dial lifecycle for the +// insecure (grpc://) path: a fresh client is not connected; Connect wires up +// the conn (IsConnected true, GetAddress reflects the parsed host:port); a +// second Connect is rejected as already-connected; Close tears the conn down +// (IsConnected false); and a second Close is a no-op. +func TestStorageClient_ConnectLifecycle(t *testing.T) { + client, err := NewStorageClient("grpc://storage.example.com:50051", "acct", "key", "cluster") + require.NoError(t, err) + + // Before Connect. + assert.False(t, client.IsConnected(), "new client must not report connected") + assert.Equal(t, "storage.example.com:50051", client.GetAddress()) + + // Connect wires up the conn. + require.NoError(t, client.Connect()) + assert.True(t, client.IsConnected(), "client must report connected after Connect") + assert.NotNil(t, client.protoClient) + + // Second Connect is rejected. + err = client.Connect() + require.Error(t, err) + assert.Contains(t, err.Error(), "already connected") + assert.True(t, client.IsConnected(), "failed re-Connect must not drop the existing conn") + + // Close tears it down. + require.NoError(t, client.Close()) + assert.False(t, client.IsConnected(), "client must not report connected after Close") + assert.Nil(t, client.protoClient) + + // Second Close is a no-op (conn already nil). + assert.NoError(t, client.Close()) +} + +// TestStorageClient_ConnectSecure covers the TLS branch of Connect: a grpcs:// +// URL takes the credentials.NewTLS dial path. grpc.NewClient is lazy so no +// real handshake happens; we only assert the conn is established and torn down. +func TestStorageClient_ConnectSecure(t *testing.T) { + client, err := NewStorageClient("grpcs://storage.example.com:443", "acct", "key", "cluster") + require.NoError(t, err) + + require.NoError(t, client.Connect()) + assert.True(t, client.IsConnected()) + assert.Equal(t, "storage.example.com:443", client.GetAddress()) + require.NoError(t, client.Close()) + assert.False(t, client.IsConnected()) +} + +// --------------------------------------------------------------------------- +// Unary GetContainerProfile / SendContainerProfile — real bufconn round-trips +// --------------------------------------------------------------------------- + +// TestStorageClient_SendContainerProfile_RoundTrip drives the unary +// SendContainerProfile over bufconn (not a mock): the server records the +// request it received and the client surfaces the server's response. +// Covers both the success and the !resp.Success paths — note the unary +// SendContainerProfile has no !Success branch in the client itself (it returns +// the response verbatim), so the second case simply asserts the failure fields +// propagate to the caller unchanged. +func TestStorageClient_SendContainerProfile_RoundTrip(t *testing.T) { + t.Run("success", func(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.unarySendSuccess = true + + resp, err := client.SendContainerProfile(context.Background(), sampleContainerProfile()) + require.NoError(t, err) + require.NotNil(t, resp) + assert.True(t, resp.Success) + + require.NotNil(t, rtSrv.unarySendReceived) + require.NotNil(t, rtSrv.unarySendReceived.ContainerProfile) + assert.Equal(t, "nginx-7d4f8b9c-abc12", rtSrv.unarySendReceived.ContainerProfile.Name) + }) + + t.Run("server reports failure", func(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.unarySendSuccess = false + rtSrv.unarySendErrMsg = "pulsar unavailable" + rtSrv.unarySendErrCode = proto.ErrorCode_ERROR_CODE_PULSAR_ERROR + + resp, err := client.SendContainerProfile(context.Background(), sampleContainerProfile()) + require.NoError(t, err) // unary SendContainerProfile returns the response verbatim + require.NotNil(t, resp) + assert.False(t, resp.Success) + assert.Equal(t, "pulsar unavailable", resp.ErrorMessage) + assert.Equal(t, proto.ErrorCode_ERROR_CODE_PULSAR_ERROR, resp.ErrorCode) + }) +} + +// TestStorageClient_GetContainerProfile_RoundTrip drives the unary +// GetContainerProfile (GetProfile RPC) over bufconn. The success case returns a +// profile; the failure case sets resp.Success=false and asserts the client's +// !resp.Success branch converts it into a non-nil error carrying the server's +// message and code. +func TestStorageClient_GetContainerProfile_RoundTrip(t *testing.T) { + t.Run("success", func(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.unaryGetSuccess = true + rtSrv.unaryGetProfile = sampleContainerProfile() + + got, err := client.GetContainerProfile(context.Background(), "default", "nginx-7d4f8b9c-abc12") + require.NoError(t, err) + require.NotNil(t, got) + assert.Equal(t, "nginx-7d4f8b9c-abc12", got.Name) + + require.NotNil(t, rtSrv.unaryGetReceived) + assert.Equal(t, "ContainerProfile", rtSrv.unaryGetReceived.Kind) + assert.Equal(t, "default", rtSrv.unaryGetReceived.Namespace) + assert.Equal(t, "nginx-7d4f8b9c-abc12", rtSrv.unaryGetReceived.Name) + }) + + t.Run("server reports failure", func(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.unaryGetSuccess = false + rtSrv.unaryGetErrMsg = "profile not found" + rtSrv.unaryGetErrCode = proto.ErrorCode_ERROR_CODE_PROFILE_NOT_FOUND + + got, err := client.GetContainerProfile(context.Background(), "default", "missing") + require.Error(t, err) + assert.Nil(t, got) + assert.Contains(t, err.Error(), "profile not found") + assert.Contains(t, err.Error(), "ERROR_CODE_PROFILE_NOT_FOUND") + }) +} + +// --------------------------------------------------------------------------- +// GetContainerProfileStream — error branches +// --------------------------------------------------------------------------- + +func TestStorageClient_GetContainerProfileStream_NotConnected(t *testing.T) { + client, err := NewStorageClient("grpc://storage.example.com:50051", "acct", "key", "cluster") + require.NoError(t, err) + + got, err := client.GetContainerProfileStream(context.Background(), "default", "x") + require.Error(t, err) + assert.Nil(t, got) + assert.Contains(t, err.Error(), "not connected") +} + +// TestStorageClient_GetContainerProfileStream_OpenError forces the RPC open +// (c.protoClient.GetContainerProfileStream) to fail by closing the underlying +// connection first, so NewStream is rejected before any chunk flows. +func TestStorageClient_GetContainerProfileStream_OpenError(t *testing.T) { + _, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + + require.NoError(t, client.conn.Close()) // break the conn so NewStream fails + + got, err := client.GetContainerProfileStream(context.Background(), "default", "x") + require.Error(t, err) + assert.Nil(t, got) + assert.Contains(t, err.Error(), "failed to open GetContainerProfileStream") +} + +// TestStorageClient_GetContainerProfileStream_FirstRecvError covers the branch +// where the very first stream.Recv returns an error (server refused before +// sending any chunk). +func TestStorageClient_GetContainerProfileStream_FirstRecvError(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.cpGetFirstRecvErr = true + + got, err := client.GetContainerProfileStream(context.Background(), "default", "x") + require.Error(t, err) + assert.Nil(t, got) + assert.Contains(t, err.Error(), "failed to receive first chunk") +} + +// TestStorageClient_GetContainerProfileStream_NilMetadata covers the branch +// where the first chunk arrives but carries no metadata header. +func TestStorageClient_GetContainerProfileStream_NilMetadata(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.cpGetNilMetadata = true + + got, err := client.GetContainerProfileStream(context.Background(), "default", "x") + require.Error(t, err) + assert.Nil(t, got) + assert.Contains(t, err.Error(), "missing metadata") +} + +// TestStorageClient_GetContainerProfileStream_ServerError covers the +// !md.Success branch: the server returns a metadata header reporting a +// server-side failure, and the client must convert it into an error that +// carries the server's message and error code. +func TestStorageClient_GetContainerProfileStream_ServerError(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.cpGetNotSuccess = true + + got, err := client.GetContainerProfileStream(context.Background(), "default", "x") + require.Error(t, err) + assert.Nil(t, got) + assert.Contains(t, err.Error(), "failed to get container profile") + assert.Contains(t, err.Error(), "boom on the server") + assert.Contains(t, err.Error(), "ERROR_CODE_INTERNAL_ERROR") +} + +// TestStorageClient_GetContainerProfileStream_MidStreamRecvError covers the +// error branch inside the reassembly loop: metadata + one blob chunk arrive, +// then the server aborts, so a subsequent stream.Recv returns a non-EOF error. +func TestStorageClient_GetContainerProfileStream_MidStreamRecvError(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.cpGetMidStreamErr = true + + got, err := client.GetContainerProfileStream(context.Background(), "default", "x") + require.Error(t, err) + assert.Nil(t, got) + assert.Contains(t, err.Error(), "failed to receive chunk") +} + +// TestStorageClient_GetContainerProfileStream_UnmarshalError covers the final +// branch: the reassembled bytes are not a valid ContainerProfile proto, so +// profile.Unmarshal fails. The server serves exists=true with garbage bytes. +func TestStorageClient_GetContainerProfileStream_UnmarshalError(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.cpServeExists = true + // A truncated / invalid protobuf: a field-0 tag is illegal, so Unmarshal + // rejects it. Splitting across chunks also exercises the reassembly path. + rtSrv.cpServeBytes = []byte{0x00, 0x01, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff} + rtSrv.cpServeChunkSize = 3 + + got, err := client.GetContainerProfileStream(context.Background(), "default", "x") + require.Error(t, err) + assert.Nil(t, got) + assert.Contains(t, err.Error(), "failed to unmarshal ContainerProfile") +} + +// --------------------------------------------------------------------------- +// SendContainerProfileStream — error branches + chunk-split proof +// --------------------------------------------------------------------------- + +func TestStorageClient_SendContainerProfileStream_NotConnected(t *testing.T) { + client, err := NewStorageClient("grpc://storage.example.com:50051", "acct", "key", "cluster") + require.NoError(t, err) + + resp, err := client.SendContainerProfileStream(context.Background(), sampleContainerProfile()) + require.Error(t, err) + assert.Nil(t, resp) + assert.Contains(t, err.Error(), "not connected") +} + +// TestStorageClient_SendContainerProfileStream_OpenError forces the RPC open to +// fail by closing the underlying connection before the call. +func TestStorageClient_SendContainerProfileStream_OpenError(t *testing.T) { + _, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + + require.NoError(t, client.conn.Close()) + + resp, err := client.SendContainerProfileStream(context.Background(), sampleContainerProfile()) + require.Error(t, err) + assert.Nil(t, resp) + assert.Contains(t, err.Error(), "failed to open SendContainerProfileStream") +} + +// TestStorageClient_SendContainerProfileStream_ServerAbort covers the Send +// error branch(es): the server accepts the first chunk then aborts, so the +// client's subsequent Send calls in the chunk loop observe the broken stream +// and fail. A multi-chunk (>1 MiB) payload guarantees the loop runs and hits +// the "failed to send chunk" branch. +// +// Note: the sibling "failed to send first chunk" branch is the same failure +// mode but is NOT deterministically reachable over a healthy bufconn — the +// first Send is buffered and almost always succeeds before any server RST is +// observed, so the error surfaces in the loop (or at CloseAndRecv) instead. +// We therefore pin the deterministic loop branch here. +func TestStorageClient_SendContainerProfileStream_ServerAbort(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + rtSrv.cpSendAbort = true + + profile := largeContainerProfile(t, 4*sbomStreamChunkSize) // several chunks + + resp, err := client.SendContainerProfileStream(context.Background(), profile) + require.Error(t, err) + assert.Nil(t, resp) + assert.Contains(t, err.Error(), "failed to send") +} + +// TestStorageClient_SendContainerProfileStream_ChunkSplit is the load-bearing +// proof that the streaming API actually splits a large ContainerProfile into +// multiple gRPC messages rather than shipping one oversized frame. It builds a +// profile whose marshaled size exceeds gRPC's default 4 MiB unary limit, sends +// it, and asserts the round-trip server received MORE THAN ONE chunk — exactly +// ceil(payloadSize / sbomStreamChunkSize) of them. This is the whole reason +// SendContainerProfileStream exists over the deprecated unary form. +func TestStorageClient_SendContainerProfileStream_ChunkSplit(t *testing.T) { + rtSrv, client, cleanup := startBufconnStorageServer(t) + defer cleanup() + + const fourMiB = 4 << 20 + profile := largeContainerProfile(t, fourMiB+1) // force the payload over 4 MiB + + payload, err := profile.Marshal() + require.NoError(t, err) + require.Greater(t, len(payload), fourMiB, + "payload must exceed the 4 MiB unary limit for this test to prove anything") + + resp, err := client.SendContainerProfileStream(context.Background(), profile) + require.NoError(t, err) + assert.True(t, resp.Success) + + // The client cuts the payload into sbomStreamChunkSize (1 MiB) pieces: + // the first chunk plus one per remaining piece. + expectedChunks := (len(payload) + sbomStreamChunkSize - 1) / sbomStreamChunkSize + assert.Greater(t, expectedChunks, 1, "sanity: payload should span multiple chunks") + assert.Equal(t, expectedChunks, rtSrv.cpReceivedChunks, + "server must receive exactly ceil(payload/chunkSize) chunks — proves the client SPLIT the payload") + + // And the reassembled bytes must equal the originally marshaled payload. + assert.Equal(t, payload, rtSrv.cpReceivedBytes, + "reassembled chunks must reconstruct the exact marshaled ContainerProfile") +} + +// largeContainerProfile builds a ContainerProfile whose marshaled size is at +// least approxBytes, by stuffing a single large annotation value. Used to drive +// the chunking loop and the >4 MiB split proof. +func largeContainerProfile(t *testing.T, approxBytes int) *v1beta1.ContainerProfile { + t.Helper() + return &v1beta1.ContainerProfile{ + TypeMeta: metav1.TypeMeta{ + Kind: "ContainerProfile", + APIVersion: "spdx.softwarecomposition.kubescape.io/v1beta1", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "big-profile", + Namespace: "default", + Annotations: map[string]string{ + "kubescape.io/blob": strings.Repeat("a", approxBytes), + }, + }, + } +} diff --git a/pkg/client/v1/storageclient_test.go b/pkg/client/v1/storageclient_test.go index 846de8b..45f30b5 100644 --- a/pkg/client/v1/storageclient_test.go +++ b/pkg/client/v1/storageclient_test.go @@ -24,8 +24,6 @@ import ( type mockStorageServiceClient struct { sendContainerProfileFunc func(ctx context.Context, in *proto.SendContainerProfileRequest, opts ...grpc.CallOption) (*proto.SendContainerProfileResponse, error) getProfileFunc func(ctx context.Context, in *proto.GetProfileRequest, opts ...grpc.CallOption) (*proto.GetProfileResponse, error) - listApplicationProfilesFunc func(ctx context.Context, in *proto.ListApplicationProfilesRequest, opts ...grpc.CallOption) (*proto.ListApplicationProfilesResponse, error) - listNetworkNeighborhoodsFunc func(ctx context.Context, in *proto.ListNetworkNeighborhoodsRequest, opts ...grpc.CallOption) (*proto.ListNetworkNeighborhoodsResponse, error) putSBOMStreamFunc func(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[proto.PutSBOMChunk, proto.PutSBOMResponse], error) getSBOMStreamFunc func(ctx context.Context, in *proto.GetSBOMRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[proto.GetSBOMChunk], error) sendContainerProfileStreamFunc func(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[proto.ContainerProfileChunk, proto.SendContainerProfileResponse], error) @@ -46,20 +44,6 @@ func (m *mockStorageServiceClient) GetProfile(ctx context.Context, in *proto.Get return &proto.GetProfileResponse{Success: true}, nil } -func (m *mockStorageServiceClient) ListApplicationProfiles(ctx context.Context, in *proto.ListApplicationProfilesRequest, opts ...grpc.CallOption) (*proto.ListApplicationProfilesResponse, error) { - if m.listApplicationProfilesFunc != nil { - return m.listApplicationProfilesFunc(ctx, in, opts...) - } - return &proto.ListApplicationProfilesResponse{Success: true}, nil -} - -func (m *mockStorageServiceClient) ListNetworkNeighborhoods(ctx context.Context, in *proto.ListNetworkNeighborhoodsRequest, opts ...grpc.CallOption) (*proto.ListNetworkNeighborhoodsResponse, error) { - if m.listNetworkNeighborhoodsFunc != nil { - return m.listNetworkNeighborhoodsFunc(ctx, in, opts...) - } - return &proto.ListNetworkNeighborhoodsResponse{Success: true}, nil -} - func (m *mockStorageServiceClient) PutSBOMStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[proto.PutSBOMChunk, proto.PutSBOMResponse], error) { if m.putSBOMStreamFunc != nil { return m.putSBOMStreamFunc(ctx, opts...) @@ -248,38 +232,6 @@ func TestStorageClient_GetProfile(t *testing.T) { region string cloudAccountIdentifier string }{ - { - name: "ApplicationProfile without region and cloudAccountIdentifier (k8s)", - kind: armotypes.ApplicationProfileKind, - namespace: "default", - profileName: "my-app", - region: "", - cloudAccountIdentifier: "", - }, - { - name: "ApplicationProfile with region and cloudAccountIdentifier (ECS/EC2)", - kind: armotypes.ApplicationProfileKind, - namespace: "", - profileName: "ecs-task-profile", - region: "us-east-1", - cloudAccountIdentifier: "123456789012", - }, - { - name: "NetworkNeighborhood without region and cloudAccountIdentifier (k8s)", - kind: armotypes.NetworkNeighborhoodKind, - namespace: "kube-system", - profileName: "core-dns-nn", - region: "", - cloudAccountIdentifier: "", - }, - { - name: "NetworkNeighborhood with region and cloudAccountIdentifier (ECS/EC2)", - kind: armotypes.NetworkNeighborhoodKind, - namespace: "", - profileName: "ec2-instance-nn", - region: "us-west-2", - cloudAccountIdentifier: "987654321098", - }, { name: "ContainerProfile k8s", kind: armotypes.ContainerProfileKind, @@ -308,41 +260,17 @@ func TestStorageClient_GetProfile(t *testing.T) { assert.Equal(t, tt.profileName, in.Name) assert.Equal(t, tt.region, in.Region) assert.Equal(t, tt.cloudAccountIdentifier, in.CloudAccountIdentifier) - switch tt.kind { - case armotypes.ApplicationProfileKind: - return &proto.GetProfileResponse{ - Success: true, - ApplicationProfile: &v1beta1.ApplicationProfile{}, - }, nil - case armotypes.ContainerProfileKind: - return &proto.GetProfileResponse{ - Success: true, - ContainerProfile: &v1beta1.ContainerProfile{}, - }, nil - default: - return &proto.GetProfileResponse{ - Success: true, - NetworkNeighborhood: &v1beta1.NetworkNeighborhood{}, - }, nil - } + return &proto.GetProfileResponse{ + Success: true, + ContainerProfile: &v1beta1.ContainerProfile{}, + }, nil }, } client.protoClient = mockClient - switch tt.kind { - case armotypes.ApplicationProfileKind: - resp, err := client.GetApplicationProfile(context.Background(), tt.namespace, tt.profileName, WithProfileRegion(tt.region), WithProfileCloudAccountIdentifier(tt.cloudAccountIdentifier)) - require.NoError(t, err) - assert.NotNil(t, resp) - case armotypes.ContainerProfileKind: - resp, err := client.GetContainerProfile(context.Background(), tt.namespace, tt.profileName, WithProfileRegion(tt.region), WithProfileCloudAccountIdentifier(tt.cloudAccountIdentifier)) - require.NoError(t, err) - assert.NotNil(t, resp) - default: - resp, err := client.GetNetworkNeighborhood(context.Background(), tt.namespace, tt.profileName, WithProfileRegion(tt.region), WithProfileCloudAccountIdentifier(tt.cloudAccountIdentifier)) - require.NoError(t, err) - assert.NotNil(t, resp) - } + resp, err := client.GetContainerProfile(context.Background(), tt.namespace, tt.profileName, WithProfileRegion(tt.region), WithProfileCloudAccountIdentifier(tt.cloudAccountIdentifier)) + require.NoError(t, err) + assert.NotNil(t, resp) }) } } @@ -357,152 +285,6 @@ func TestStorageClient_NotConnected(t *testing.T) { assert.Contains(t, err.Error(), "not connected") } -func TestStorageClient_ListApplicationProfiles(t *testing.T) { - client, err := NewStorageClient("grpc://storage.example.com:50051", "test-account", "test-key", "test-cluster") - require.NoError(t, err) - - tests := []struct { - name string - namespace string - limit int64 - cont string - region string - cloudAccountIdentifier string - expectedLen int - }{ - { - name: "k8s with namespace, no region/cloudAccountIdentifier", - namespace: "default", - limit: 10, - cont: "next-token", - region: "", - cloudAccountIdentifier: "", - expectedLen: 2, - }, - { - name: "ECS/EC2 with region and cloudAccountIdentifier, empty namespace", - namespace: "", - limit: 25, - cont: "cont-token", - region: "us-east-1", - cloudAccountIdentifier: "123456789012", - expectedLen: 3, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - tt := tt - mockClient := &mockStorageServiceClient{ - listApplicationProfilesFunc: func(ctx context.Context, in *proto.ListApplicationProfilesRequest, opts ...grpc.CallOption) (*proto.ListApplicationProfilesResponse, error) { - assert.Equal(t, tt.namespace, in.Namespace) - assert.Equal(t, tt.limit, in.Limit) - assert.Equal(t, tt.cont, in.Cont) - assert.Equal(t, tt.region, in.Region) - assert.Equal(t, tt.cloudAccountIdentifier, in.CloudAccountIdentifier) - profiles := make([]*v1beta1.ApplicationProfile, tt.expectedLen) - for i := range profiles { - profiles[i] = &v1beta1.ApplicationProfile{} - } - return &proto.ListApplicationProfilesResponse{ - Success: true, - ApplicationProfiles: profiles, - }, nil - }, - } - client.protoClient = mockClient - - list, err := client.ListApplicationProfiles(context.Background(), tt.namespace, tt.limit, tt.cont, WithProfileRegion(tt.region), WithProfileCloudAccountIdentifier(tt.cloudAccountIdentifier)) - require.NoError(t, err) - assert.NotNil(t, list) - assert.Len(t, list.Items, tt.expectedLen) - }) - } -} - -func TestStorageClient_ListNetworkNeighborhoods(t *testing.T) { - client, err := NewStorageClient("grpc://storage.example.com:50051", "test-account", "test-key", "test-cluster") - require.NoError(t, err) - - tests := []struct { - name string - namespace string - limit int64 - cont string - region string - cloudAccountIdentifier string - expectedLen int - }{ - { - name: "k8s with namespace, no region/cloudAccountIdentifier", - namespace: "kube-system", - limit: 25, - cont: "cont-token", - region: "", - cloudAccountIdentifier: "", - expectedLen: 3, - }, - { - name: "ECS/EC2 with region and cloudAccountIdentifier, empty namespace", - namespace: "", - limit: 50, - cont: "next-page", - region: "us-west-2", - cloudAccountIdentifier: "987654321098", - expectedLen: 2, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - tt := tt - mockClient := &mockStorageServiceClient{ - listNetworkNeighborhoodsFunc: func(ctx context.Context, in *proto.ListNetworkNeighborhoodsRequest, opts ...grpc.CallOption) (*proto.ListNetworkNeighborhoodsResponse, error) { - assert.Equal(t, tt.namespace, in.Namespace) - assert.Equal(t, tt.limit, in.Limit) - assert.Equal(t, tt.cont, in.Cont) - assert.Equal(t, tt.region, in.Region) - assert.Equal(t, tt.cloudAccountIdentifier, in.CloudAccountIdentifier) - neighborhoods := make([]*v1beta1.NetworkNeighborhood, tt.expectedLen) - for i := range neighborhoods { - neighborhoods[i] = &v1beta1.NetworkNeighborhood{} - } - return &proto.ListNetworkNeighborhoodsResponse{ - Success: true, - NetworkNeighborhoods: neighborhoods, - }, nil - }, - } - client.protoClient = mockClient - - list, err := client.ListNetworkNeighborhoods(context.Background(), tt.namespace, tt.limit, tt.cont, WithProfileRegion(tt.region), WithProfileCloudAccountIdentifier(tt.cloudAccountIdentifier)) - require.NoError(t, err) - assert.NotNil(t, list) - assert.Len(t, list.Items, tt.expectedLen) - }) - } -} - -func TestStorageClient_ListApplicationProfiles_NotConnected(t *testing.T) { - client, err := NewStorageClient("grpc://storage.example.com:50051", "test-account", "test-key", "test-cluster") - require.NoError(t, err) - - list, err := client.ListApplicationProfiles(context.Background(), "default", 0, "") - assert.Error(t, err) - assert.Nil(t, list) - assert.Contains(t, err.Error(), "not connected") -} - -func TestStorageClient_ListNetworkNeighborhoods_NotConnected(t *testing.T) { - client, err := NewStorageClient("grpc://storage.example.com:50051", "test-account", "test-key", "test-cluster") - require.NoError(t, err) - - list, err := client.ListNetworkNeighborhoods(context.Background(), "default", 0, "") - assert.Error(t, err) - assert.Nil(t, list) - assert.Contains(t, err.Error(), "not connected") -} - func TestStorageClientOptions(t *testing.T) { t.Run("default options", func(t *testing.T) { opts := storageClientOptionsWithDefaults(nil) @@ -686,6 +468,31 @@ type storageRoundTripServer struct { cpServeExists bool cpServeBytes []byte cpServeChunkSize int + + // ContainerProfile upload extras: chunk accounting + abort injection for + // the SendContainerProfileStream error/chunking tests. + cpReceivedChunks int // number of ContainerProfileChunk messages received + cpSendAbort bool // if true, Recv one chunk then return an error (mid-stream abort) + + // GetContainerProfileStream error-injection knobs. At most one should be + // set per test; they are checked in the handler in the order below. + cpGetFirstRecvErr bool // return an error before sending anything (client's first Recv fails) + cpGetNilMetadata bool // send a first chunk whose Metadata is nil + cpGetNotSuccess bool // send metadata with Success=false + error fields + cpGetMidStreamErr bool // send valid metadata + one blob chunk, then return an error + + // Unary SendContainerProfile config. + unarySendReceived *proto.SendContainerProfileRequest + unarySendSuccess bool + unarySendErrMsg string + unarySendErrCode proto.ErrorCode + + // Unary GetProfile config. + unaryGetReceived *proto.GetProfileRequest + unaryGetSuccess bool + unaryGetProfile *v1beta1.ContainerProfile + unaryGetErrMsg string + unaryGetErrCode proto.ErrorCode } func (s *storageRoundTripServer) PutSBOMStream(stream grpc.ClientStreamingServer[proto.PutSBOMChunk, proto.PutSBOMResponse]) error { @@ -758,7 +565,12 @@ func (s *storageRoundTripServer) GetSBOMStream(req *proto.GetSBOMRequest, stream } func (s *storageRoundTripServer) SendContainerProfileStream(stream grpc.ClientStreamingServer[proto.ContainerProfileChunk, proto.SendContainerProfileResponse]) error { + s.mu.Lock() + abort := s.cpSendAbort + s.mu.Unlock() + var buf []byte + var count int for { chunk, err := stream.Recv() if err == io.EOF { @@ -767,10 +579,21 @@ func (s *storageRoundTripServer) SendContainerProfileStream(stream grpc.ClientSt if err != nil { return err } + count++ buf = append(buf, chunk.BlobChunk...) + if abort { + // Terminate the stream mid-upload. Once this handler returns an + // error, the client's subsequent stream.Send calls observe the + // closed stream and fail. + s.mu.Lock() + s.cpReceivedChunks = count + s.mu.Unlock() + return fmt.Errorf("server aborting mid-stream") + } } s.mu.Lock() s.cpReceivedBytes = buf + s.cpReceivedChunks = count s.mu.Unlock() return stream.SendAndClose(&proto.SendContainerProfileResponse{Success: true}) } @@ -780,8 +603,48 @@ func (s *storageRoundTripServer) GetContainerProfileStream(req *proto.GetContain exists := s.cpServeExists payload := s.cpServeBytes chunkSize := s.cpServeChunkSize + firstRecvErr := s.cpGetFirstRecvErr + nilMetadata := s.cpGetNilMetadata + notSuccess := s.cpGetNotSuccess + midStreamErr := s.cpGetMidStreamErr s.mu.Unlock() + // Fail before sending anything: the client's first stream.Recv observes + // the RPC error. + if firstRecvErr { + return fmt.Errorf("server refused the request") + } + + // Send a first chunk that carries no metadata header. + if nilMetadata { + return stream.Send(&proto.GetContainerProfileStreamChunk{BlobChunk: []byte("no-metadata")}) + } + + // Send a metadata header that reports a server-side failure. + if notSuccess { + return stream.Send(&proto.GetContainerProfileStreamChunk{ + Metadata: &proto.GetContainerProfileStreamChunkMetadata{ + Success: false, + ErrorMessage: "boom on the server", + ErrorCode: proto.ErrorCode_ERROR_CODE_INTERNAL_ERROR, + }, + }) + } + + // Send valid metadata + one blob chunk, then abort so the client's + // mid-stream Recv (inside the reassembly loop) observes an error. + if midStreamErr { + if err := stream.Send(&proto.GetContainerProfileStreamChunk{ + Metadata: &proto.GetContainerProfileStreamChunkMetadata{Success: true, Exists: true}, + }); err != nil { + return err + } + if err := stream.Send(&proto.GetContainerProfileStreamChunk{BlobChunk: []byte("partial")}); err != nil { + return err + } + return fmt.Errorf("server aborting mid-stream") + } + first := &proto.GetContainerProfileStreamChunk{ Metadata: &proto.GetContainerProfileStreamChunkMetadata{ Success: true, @@ -809,6 +672,31 @@ func (s *storageRoundTripServer) GetContainerProfileStream(req *proto.GetContain return nil } +func (s *storageRoundTripServer) SendContainerProfile(ctx context.Context, req *proto.SendContainerProfileRequest) (*proto.SendContainerProfileResponse, error) { + s.mu.Lock() + s.unarySendReceived = req + resp := &proto.SendContainerProfileResponse{ + Success: s.unarySendSuccess, + ErrorMessage: s.unarySendErrMsg, + ErrorCode: s.unarySendErrCode, + } + s.mu.Unlock() + return resp, nil +} + +func (s *storageRoundTripServer) GetProfile(ctx context.Context, req *proto.GetProfileRequest) (*proto.GetProfileResponse, error) { + s.mu.Lock() + s.unaryGetReceived = req + resp := &proto.GetProfileResponse{ + Success: s.unaryGetSuccess, + ContainerProfile: s.unaryGetProfile, + ErrorMessage: s.unaryGetErrMsg, + ErrorCode: s.unaryGetErrCode, + } + s.mu.Unlock() + return resp, nil +} + // startBufconnStorageServer starts the round-trip server on an in-memory // bufconn listener and returns a client connected to it. Optional client // options (e.g. WithCallTimeout) are forwarded to NewStorageClient.