Skip to content

Commit 5f30960

Browse files
authored
Change k8s client for aws eks resource detector (#9284)
Signed-off-by: Israel Blancas <iblancasa@gmail.com>
1 parent 6f4f7e9 commit 5f30960

7 files changed

Lines changed: 91 additions & 78 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
4040
- Handle nil response bodies from custom `RoundTripper` implementations in `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` without panicking. (#9184)
4141
- Fix incorrect (overestimated) sum calculation for runtime histograms in `go.opentelemetry.io/contrib/instrumentation/runtime`. (#9063)
4242
- Fix `Severity.UnmarshalText` round trip for positive `FATAL` offsets above the named range in `go.opentelemetry.io/contrib/processors/minsev`. (#9197)
43+
- Reduce binary size by fetching ConfigMaps via `rest.HTTPClientFor` instead of the Kubernetes clientset in `go.opentelemetry.io/contrib/detectors/aws/eks`. (#9284)
4344
- `TextMapPropagator` in `go.opentelemetry.io/contrib/propagators/autoprop` returns the no-op propagator for empty input, matching the behavior of `none`. An unknown `OTEL_PROPAGATORS` value still returns an error with a nil propagator so `NewTextMapPropagator` falls back to the default TraceContext and Baggage propagators instead of disabling propagation. (#9163)
4445
- Preserve error-valued attributes nested in a group as grouped attributes instead of silently dropping them in `go.opentelemetry.io/contrib/bridges/otelslog`. (#9238)
4546
- Fix a data race in `go.opentelemetry.io/contrib/bridges/otelslog` where concurrent `Handle` calls could corrupt each other's log attributes because `kvBuffer.KeyValues` returned a slice aliasing a shared buffer. (#9229)

detectors/aws/eks/detector.go

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@ package eks
66

77
import (
88
"context"
9+
"encoding/json"
910
"errors"
1011
"fmt"
12+
"net/http"
13+
"net/url"
1114
"os"
1215
"regexp"
1316
"strings"
1417

1518
"go.opentelemetry.io/otel/attribute"
1619
"go.opentelemetry.io/otel/sdk/resource"
1720
semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
18-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
19-
"k8s.io/client-go/kubernetes"
2021
"k8s.io/client-go/rest"
2122
)
2223

@@ -40,7 +41,13 @@ type detectorUtils interface {
4041

4142
// This struct will implement the detectorUtils interface.
4243
type eksDetectorUtils struct {
43-
clientset *kubernetes.Clientset
44+
host string
45+
client *http.Client
46+
}
47+
48+
// configMap is the subset of a Kubernetes ConfigMap response needed by the detector.
49+
type configMap struct {
50+
Data map[string]string `json:"data"`
4451
}
4552

4653
// resourceDetector for detecting resources running on Amazon EKS.
@@ -127,21 +134,20 @@ func isEKS(ctx context.Context, utils detectorUtils) (bool, error) {
127134
return awsAuth != nil, nil
128135
}
129136

130-
// newK8sDetectorUtils creates the Kubernetes clientset.
137+
// newK8sDetectorUtils creates utilities that fetch ConfigMaps over the in-cluster HTTP client.
131138
func newK8sDetectorUtils() (*eksDetectorUtils, error) {
132139
// Get cluster configuration
133140
confs, err := rest.InClusterConfig()
134141
if err != nil {
135142
return nil, fmt.Errorf("failed to create config: %w", err)
136143
}
137144

138-
// Create clientset using generated configuration
139-
clientset, err := kubernetes.NewForConfig(confs)
145+
client, err := rest.HTTPClientFor(confs)
140146
if err != nil {
141-
return nil, errors.New("failed to create clientset for Kubernetes client")
147+
return nil, fmt.Errorf("failed to create HTTP client for Kubernetes: %w", err)
142148
}
143149

144-
return &eksDetectorUtils{clientset: clientset}, nil
150+
return &eksDetectorUtils{host: confs.Host, client: client}, nil
145151
}
146152

147153
// isK8s checks if the current environment is running in a Kubernetes environment.
@@ -157,10 +163,31 @@ func (eksDetectorUtils) fileExists(filename string) bool {
157163

158164
// getConfigMap retrieves the configuration map from the k8s API.
159165
func (eksUtils eksDetectorUtils) getConfigMap(ctx context.Context, namespace, name string) (map[string]string, error) {
160-
cm, err := eksUtils.clientset.CoreV1().ConfigMaps(namespace).Get(ctx, name, metav1.GetOptions{})
166+
u, err := url.JoinPath(eksUtils.host, "api", "v1", "namespaces", namespace, "configmaps", name)
167+
if err != nil {
168+
return nil, fmt.Errorf("failed to build ConfigMap URL for %s/%s: %w", namespace, name, err)
169+
}
170+
171+
req, err := http.NewRequestWithContext(ctx, http.MethodGet, u, http.NoBody)
172+
if err != nil {
173+
return nil, fmt.Errorf("failed to create ConfigMap request for %s/%s: %w", namespace, name, err)
174+
}
175+
req.Header.Set("Accept", "application/json")
176+
177+
resp, err := eksUtils.client.Do(req)
161178
if err != nil {
162179
return nil, fmt.Errorf("failed to retrieve ConfigMap %s/%s: %w", namespace, name, err)
163180
}
181+
defer resp.Body.Close()
182+
183+
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
184+
return nil, fmt.Errorf("failed to retrieve ConfigMap %s/%s: unexpected status %s", namespace, name, resp.Status)
185+
}
186+
187+
var cm configMap
188+
if err := json.NewDecoder(resp.Body).Decode(&cm); err != nil {
189+
return nil, fmt.Errorf("failed to decode ConfigMap %s/%s: %w", namespace, name, err)
190+
}
164191

165192
return cm.Data, nil
166193
}

detectors/aws/eks/detector_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ package eks
55

66
import (
77
"context"
8+
"net/http"
9+
"net/http/httptest"
810
"testing"
911

1012
"github.com/stretchr/testify/assert"
@@ -92,3 +94,32 @@ func TestNotK8S(t *testing.T) {
9294
assert.Equal(t, resource.Empty(), r, "Resource object should be empty")
9395
detectorUtils.AssertExpectations(t)
9496
}
97+
98+
func TestGetConfigMapSuccess(t *testing.T) {
99+
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
100+
assert.Equal(t, http.MethodGet, r.Method)
101+
assert.Equal(t, "/api/v1/namespaces/kube-system/configmaps/aws-auth", r.URL.Path)
102+
assert.Equal(t, "application/json", r.Header.Get("Accept"))
103+
w.Header().Set("Content-Type", "application/json")
104+
_, err := w.Write([]byte(`{"data":{"mapRoles":"test-role"}}`))
105+
assert.NoError(t, err)
106+
}))
107+
t.Cleanup(srv.Close)
108+
109+
utils := &eksDetectorUtils{host: srv.URL, client: srv.Client()}
110+
data, err := utils.getConfigMap(t.Context(), authConfigmapNS, authConfigmapName)
111+
require.NoError(t, err)
112+
assert.Equal(t, map[string]string{"mapRoles": "test-role"}, data)
113+
}
114+
115+
func TestGetConfigMapNon2xx(t *testing.T) {
116+
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
117+
w.WriteHeader(http.StatusNotFound)
118+
}))
119+
t.Cleanup(srv.Close)
120+
121+
utils := &eksDetectorUtils{host: srv.URL, client: srv.Client()}
122+
_, err := utils.getConfigMap(t.Context(), authConfigmapNS, authConfigmapName)
123+
require.Error(t, err)
124+
assert.ErrorContains(t, err, "unexpected status")
125+
}

detectors/aws/eks/go.mod

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,16 @@ require (
66
github.com/stretchr/testify v1.11.1
77
go.opentelemetry.io/otel v1.44.1-0.20260723093731-251b96b24897
88
go.opentelemetry.io/otel/sdk v1.44.1-0.20260625150014-c84013202f01
9-
k8s.io/apimachinery v0.35.4
109
k8s.io/client-go v0.35.4
1110
)
1211

1312
require (
1413
github.com/cespare/xxhash/v2 v2.3.0 // indirect
1514
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
16-
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
1715
github.com/fxamacker/cbor/v2 v2.9.2 // indirect
1816
github.com/go-logr/logr v1.4.4 // indirect
1917
github.com/go-logr/stdr v1.2.2 // indirect
20-
github.com/go-openapi/jsonpointer v1.0.0 // indirect
21-
github.com/go-openapi/jsonreference v1.0.0 // indirect
2218
github.com/go-openapi/swag v0.28.0 // indirect
23-
github.com/go-openapi/swag/cmdutils v0.28.0 // indirect
24-
github.com/go-openapi/swag/conv v0.28.0 // indirect
25-
github.com/go-openapi/swag/fileutils v0.28.0 // indirect
26-
github.com/go-openapi/swag/jsonutils v0.28.0 // indirect
27-
github.com/go-openapi/swag/loading v0.28.0 // indirect
28-
github.com/go-openapi/swag/mangling v0.28.0 // indirect
29-
github.com/go-openapi/swag/netutils v0.28.0 // indirect
30-
github.com/go-openapi/swag/pools v0.28.0 // indirect
31-
github.com/go-openapi/swag/stringutils v0.28.0 // indirect
32-
github.com/go-openapi/swag/typeutils v0.28.0 // indirect
33-
github.com/go-openapi/swag/yamlutils v0.28.0 // indirect
3419
github.com/google/gnostic-models v0.7.1 // indirect
3520
github.com/google/uuid v1.6.0 // indirect
3621
github.com/json-iterator/go v1.1.12 // indirect
@@ -52,10 +37,9 @@ require (
5237
golang.org/x/text v0.40.0 // indirect
5338
golang.org/x/time v0.15.0 // indirect
5439
google.golang.org/protobuf v1.36.11 // indirect
55-
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
5640
gopkg.in/inf.v0 v0.9.1 // indirect
5741
gopkg.in/yaml.v3 v3.0.1 // indirect
58-
k8s.io/api v0.35.4 // indirect
42+
k8s.io/apimachinery v0.35.4 // indirect
5943
k8s.io/klog/v2 v2.140.0 // indirect
6044
k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad // indirect
6145
k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 // indirect

detectors/aws/eks/go.sum

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ github.com/go-openapi/swag/fileutils v0.28.0 h1:Z04XWQD7R8Eq+7GnOrjovBxPPmZzsS4g
2727
github.com/go-openapi/swag/fileutils v0.28.0/go.mod h1:VvJFZLTZS0AI854gEQz5tk7dBESdLjiNUMSZ/th2ry8=
2828
github.com/go-openapi/swag/jsonutils v0.28.0 h1:YIch6FwO7RXzeAnbO8Tu7dWBZeUEH+4nA0HXltVTnv4=
2929
github.com/go-openapi/swag/jsonutils v0.28.0/go.mod h1:CYM3WlTUcagR2ZoHdz54di/cbBqt82tuxuXgAjxw+mg=
30-
github.com/go-openapi/swag/jsonutils/fixtures_test v0.28.0 h1:qV+VVUAx5Oro8WjVWpZeql7YReTKhT4smR4zhcOQZr0=
31-
github.com/go-openapi/swag/jsonutils/fixtures_test v0.28.0/go.mod h1:mofwUWx70wvskwESqRJ//k/9kURmCgyJl5m5Ppoh5kY=
3230
github.com/go-openapi/swag/loading v0.28.0 h1:td8QZdZC9MIYGGSnSPKShKiK22I2tU5UQvuUhIBPRLU=
3331
github.com/go-openapi/swag/loading v0.28.0/go.mod h1:rXB0QiQX5mMveXEA7ouM4KiiM9jVJe4K6BVbwhD1M4k=
3432
github.com/go-openapi/swag/mangling v0.28.0 h1:pH8eyeNO9SLYsTMWJrurnNfKmDa28XrlA+HePVD53VM=
@@ -43,10 +41,6 @@ github.com/go-openapi/swag/typeutils v0.28.0 h1:nRBKSBXjDgf01VDPB3fWeD9nQuhCOVeI
4341
github.com/go-openapi/swag/typeutils v0.28.0/go.mod h1:Srm0xFNRZ1Y+vCxJclo5qzx8aj+1pAKda/YfFPrG0dQ=
4442
github.com/go-openapi/swag/yamlutils v0.28.0 h1:TV3JXH6DS46KUroDtMLAYHGkdWf5VDq3wVWFirmzROY=
4543
github.com/go-openapi/swag/yamlutils v0.28.0/go.mod h1:x0q/yndZHEgk9Rx3DyDqzFUmHy55KTvIZldvF2dTJXs=
46-
github.com/go-openapi/testify/enable/yaml/v2 v2.6.0 h1:gGHwAJ0R/5jU8BEGDbfRNR3hL68dAVi84WuOApp29B0=
47-
github.com/go-openapi/testify/enable/yaml/v2 v2.6.0/go.mod h1:tY+St1SGq4NFl0QIqdTY4aEdbChAHxhyB77XQi9iJCo=
48-
github.com/go-openapi/testify/v2 v2.6.0 h1:5PKH2HE7YJ/LuRPQGvSxBRlFXNQhSetBLlGAgUEu3ug=
49-
github.com/go-openapi/testify/v2 v2.6.0/go.mod h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw=
5044
github.com/google/gnostic-models v0.7.1 h1:SisTfuFKJSKM5CPZkffwi6coztzzeYUhc3v4yxLWH8c=
5145
github.com/google/gnostic-models v0.7.1/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
5246
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=

otelconf/go.mod

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,25 +43,9 @@ require (
4343
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
4444
github.com/cespare/xxhash/v2 v2.3.0 // indirect
4545
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
46-
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
4746
github.com/fxamacker/cbor/v2 v2.9.2 // indirect
4847
github.com/go-logr/logr v1.4.4 // indirect
4948
github.com/go-logr/stdr v1.2.2 // indirect
50-
github.com/go-openapi/jsonpointer v1.0.0 // indirect
51-
github.com/go-openapi/jsonreference v1.0.0 // indirect
52-
github.com/go-openapi/swag v0.28.0 // indirect
53-
github.com/go-openapi/swag/cmdutils v0.28.0 // indirect
54-
github.com/go-openapi/swag/conv v0.28.0 // indirect
55-
github.com/go-openapi/swag/fileutils v0.28.0 // indirect
56-
github.com/go-openapi/swag/jsonutils v0.28.0 // indirect
57-
github.com/go-openapi/swag/loading v0.28.0 // indirect
58-
github.com/go-openapi/swag/mangling v0.28.0 // indirect
59-
github.com/go-openapi/swag/netutils v0.28.0 // indirect
60-
github.com/go-openapi/swag/pools v0.28.0 // indirect
61-
github.com/go-openapi/swag/stringutils v0.28.0 // indirect
62-
github.com/go-openapi/swag/typeutils v0.28.0 // indirect
63-
github.com/go-openapi/swag/yamlutils v0.28.0 // indirect
64-
github.com/google/gnostic-models v0.7.1 // indirect
6549
github.com/google/uuid v1.6.0 // indirect
6650
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect
6751
github.com/json-iterator/go v1.1.12 // indirect
@@ -90,10 +74,8 @@ require (
9074
google.golang.org/genproto/googleapis/api v0.0.0-20260727163830-6c54dddc4772 // indirect
9175
google.golang.org/genproto/googleapis/rpc v0.0.0-20260727163830-6c54dddc4772 // indirect
9276
google.golang.org/protobuf v1.36.11 // indirect
93-
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
9477
gopkg.in/inf.v0 v0.9.1 // indirect
9578
gopkg.in/yaml.v3 v3.0.1 // indirect
96-
k8s.io/api v0.35.4 // indirect
9779
k8s.io/apimachinery v0.35.4 // indirect
9880
k8s.io/client-go v0.35.4 // indirect
9981
k8s.io/klog/v2 v2.140.0 // indirect

otelconf/go.sum

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -29,34 +29,28 @@ github.com/go-openapi/jsonreference v1.0.0 h1:jlmTr6torcd1YgDQvSfNmRtKzYDO4FGBkr
2929
github.com/go-openapi/jsonreference v1.0.0/go.mod h1:jtwdyGbJk0Xhe5Y+rwtglQP6Sb1WZST4rT32LWB+sv0=
3030
github.com/go-openapi/swag v0.28.0 h1:xkgbOSKj6DZziNpyqRRAOt3GJGtgjgsd2RoyT30VWuw=
3131
github.com/go-openapi/swag v0.28.0/go.mod h1:4qYnT3Cqr1p1VknOdPo70evN4rgQnAg6jwApHyxSGIg=
32-
github.com/go-openapi/swag/cmdutils v0.28.0 h1:7TOeNtkYru1SG8Y34tDh9WBbLsMqGnptuxWiHREPZ4Q=
33-
github.com/go-openapi/swag/cmdutils v0.28.0/go.mod h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM=
34-
github.com/go-openapi/swag/conv v0.28.0 h1:GtqqbyFe7vR5Y7ehxG9W6/OvrSFdf1OLeTGp40TqxH8=
35-
github.com/go-openapi/swag/conv v0.28.0/go.mod h1:mbUE+mzctnhxi864m0Q07SpN8OowD9JhxmxuYvZZD/k=
36-
github.com/go-openapi/swag/fileutils v0.28.0 h1:Z04XWQD7R8Eq+7GnOrjovBxPPmZzsS4gt2H2GPGIViU=
37-
github.com/go-openapi/swag/fileutils v0.28.0/go.mod h1:VvJFZLTZS0AI854gEQz5tk7dBESdLjiNUMSZ/th2ry8=
38-
github.com/go-openapi/swag/jsonutils v0.28.0 h1:YIch6FwO7RXzeAnbO8Tu7dWBZeUEH+4nA0HXltVTnv4=
39-
github.com/go-openapi/swag/jsonutils v0.28.0/go.mod h1:CYM3WlTUcagR2ZoHdz54di/cbBqt82tuxuXgAjxw+mg=
40-
github.com/go-openapi/swag/jsonutils/fixtures_test v0.28.0 h1:qV+VVUAx5Oro8WjVWpZeql7YReTKhT4smR4zhcOQZr0=
41-
github.com/go-openapi/swag/jsonutils/fixtures_test v0.28.0/go.mod h1:mofwUWx70wvskwESqRJ//k/9kURmCgyJl5m5Ppoh5kY=
42-
github.com/go-openapi/swag/loading v0.28.0 h1:td8QZdZC9MIYGGSnSPKShKiK22I2tU5UQvuUhIBPRLU=
43-
github.com/go-openapi/swag/loading v0.28.0/go.mod h1:rXB0QiQX5mMveXEA7ouM4KiiM9jVJe4K6BVbwhD1M4k=
44-
github.com/go-openapi/swag/mangling v0.28.0 h1:pH8eyeNO9SLYsTMWJrurnNfKmDa28XrlA+HePVD53VM=
45-
github.com/go-openapi/swag/mangling v0.28.0/go.mod h1:jtBE2+V+3pILxOR7Vgce+Cwp6A2PgZbvVqfNntbVs0w=
46-
github.com/go-openapi/swag/netutils v0.28.0 h1:YXN6TALEi2pzts8/8GNm6T61HTAZsieukGZidap989k=
47-
github.com/go-openapi/swag/netutils v0.28.0/go.mod h1:J+WYyFMLtvtCGqa6jLv+YNUmIKI3ZRQRrvfNDMoQoEQ=
48-
github.com/go-openapi/swag/pools v0.28.0 h1:HPMZWSAfce3rdVTFcjFiCIBtDg9h4x2QlRrHipwhxeU=
49-
github.com/go-openapi/swag/pools v0.28.0/go.mod h1:kVQefhSK5RWuRe7BXsL8htgBPAMpN7HDGpGEknqugeE=
50-
github.com/go-openapi/swag/stringutils v0.28.0 h1:ixsc9iYgDPubHL/8nSkbnryEHpD2VRlBMLKpQyPXcDU=
51-
github.com/go-openapi/swag/stringutils v0.28.0/go.mod h1:lzRN95CxXmA03XcDWHLOb6nOMcxCqR5rGY0lOgsfRoM=
52-
github.com/go-openapi/swag/typeutils v0.28.0 h1:nRBKSBXjDgf01VDPB3fWeD9nQuhCOVeIYAkUx2tbkyY=
53-
github.com/go-openapi/swag/typeutils v0.28.0/go.mod h1:Srm0xFNRZ1Y+vCxJclo5qzx8aj+1pAKda/YfFPrG0dQ=
54-
github.com/go-openapi/swag/yamlutils v0.28.0 h1:TV3JXH6DS46KUroDtMLAYHGkdWf5VDq3wVWFirmzROY=
55-
github.com/go-openapi/swag/yamlutils v0.28.0/go.mod h1:x0q/yndZHEgk9Rx3DyDqzFUmHy55KTvIZldvF2dTJXs=
56-
github.com/go-openapi/testify/enable/yaml/v2 v2.6.0 h1:gGHwAJ0R/5jU8BEGDbfRNR3hL68dAVi84WuOApp29B0=
57-
github.com/go-openapi/testify/enable/yaml/v2 v2.6.0/go.mod h1:tY+St1SGq4NFl0QIqdTY4aEdbChAHxhyB77XQi9iJCo=
58-
github.com/go-openapi/testify/v2 v2.6.0 h1:5PKH2HE7YJ/LuRPQGvSxBRlFXNQhSetBLlGAgUEu3ug=
59-
github.com/go-openapi/testify/v2 v2.6.0/go.mod h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw=
32+
github.com/go-openapi/swag/cmdutils v0.27.1 h1:I7sYqaWVl5mq0NEmNQkAmFDyNin9ufvMX/p2zwtQaOE=
33+
github.com/go-openapi/swag/cmdutils v0.27.1/go.mod h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM=
34+
github.com/go-openapi/swag/conv v0.27.1 h1:8wi9ZG+olmY1wXphl93EWniPtbSPkXM/feH7FgjsvrU=
35+
github.com/go-openapi/swag/conv v0.27.1/go.mod h1:QbqMivkpKhC3g1B1GGGOJ6ANewI3S62dbzYu3Duowqs=
36+
github.com/go-openapi/swag/fileutils v0.27.1 h1:QQqBSoi5mW4XpU85nS0mLcA+zAE6vLzrb0QkmLKf9oM=
37+
github.com/go-openapi/swag/fileutils v0.27.1/go.mod h1:VvJFZLTZS0AI854gEQz5tk7dBESdLjiNUMSZ/th2ry8=
38+
github.com/go-openapi/swag/jsonutils v0.27.1 h1:SVgK3i4USzCU5mibOOS/l4ea2h9UQXy7J7RNLTjuXjU=
39+
github.com/go-openapi/swag/jsonutils v0.27.1/go.mod h1:tdlEpZqdcQ17uj6J4YdK9vd8It5qWMwjWXOs0tjpRlk=
40+
github.com/go-openapi/swag/loading v0.27.1 h1:/DxUgDXKbBX4bcn7r9uEXfJyzN5XpiJmZplzQTjrRCY=
41+
github.com/go-openapi/swag/loading v0.27.1/go.mod h1:jvGh3iA2+zyUUycB5fgJWzeHnhrpvGnJJM0RVE9ZShE=
42+
github.com/go-openapi/swag/mangling v0.27.1 h1:yC9D0HyUE8gbP+BfmGx9+AA89ikwZTMjESK3OnnoaqA=
43+
github.com/go-openapi/swag/mangling v0.27.1/go.mod h1:jtBE2+V+3pILxOR7Vgce+Cwp6A2PgZbvVqfNntbVs0w=
44+
github.com/go-openapi/swag/netutils v0.27.1 h1:mICMFoS82F5TZ4Zy3cqmcQk+BFeCp3Uyq3Np7GI0/qU=
45+
github.com/go-openapi/swag/netutils v0.27.1/go.mod h1:J+WYyFMLtvtCGqa6jLv+YNUmIKI3ZRQRrvfNDMoQoEQ=
46+
github.com/go-openapi/swag/pools v0.27.1 h1:9LeadcMyb2GJCbXX5hVQDbZ2Lq9TL4dCs/nx1j5DO0E=
47+
github.com/go-openapi/swag/pools v0.27.1/go.mod h1:kVQefhSK5RWuRe7BXsL8htgBPAMpN7HDGpGEknqugeE=
48+
github.com/go-openapi/swag/stringutils v0.27.1 h1:ZXePZ0r2p1qSjo8tD3Un4vFj8+FqlCkczxDrJIhYUp8=
49+
github.com/go-openapi/swag/stringutils v0.27.1/go.mod h1:lzRN95CxXmA03XcDWHLOb6nOMcxCqR5rGY0lOgsfRoM=
50+
github.com/go-openapi/swag/typeutils v0.27.1 h1:KSTdFlfnse4r6dP9IrEnwMldjE+zs71UeEB3//PtVXc=
51+
github.com/go-openapi/swag/typeutils v0.27.1/go.mod h1:Srm0xFNRZ1Y+vCxJclo5qzx8aj+1pAKda/YfFPrG0dQ=
52+
github.com/go-openapi/swag/yamlutils v0.27.1 h1:ftxv6xvXb1E3zohUc+okZ9nSqNb9StQX/FXnKZ98sQA=
53+
github.com/go-openapi/swag/yamlutils v0.27.1/go.mod h1:bnxFIB1qewGRiZHypXGZ3fNgf13/0HfRgnS/iZBDrOo=
6054
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
6155
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
6256
github.com/google/gnostic-models v0.7.1 h1:SisTfuFKJSKM5CPZkffwi6coztzzeYUhc3v4yxLWH8c=

0 commit comments

Comments
 (0)