Skip to content

Commit 08189bf

Browse files
authored
[cherry-pick] Update Kubernetes v1.18.9 dependencies (#291) (#293)
/cherry-pick Signed-off-by: 1gtm <1gtm@appscode.com>
1 parent 80103d0 commit 08189bf

File tree

12 files changed

+228
-26
lines changed

12 files changed

+228
-26
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ require (
66
github.com/codeskyblue/go-sh v0.0.0-20200712050446-30169cf553fe
77
github.com/google/gofuzz v1.1.0
88
github.com/spf13/cobra v1.1.1
9-
go.bytebuilders.dev/license-verifier/kubernetes v0.5.1
9+
go.bytebuilders.dev/license-verifier/kubernetes v0.6.1
1010
gomodules.xyz/x v0.0.0-20201105065653-91c568df6331
1111
k8s.io/api v0.18.9
1212
k8s.io/apimachinery v0.18.9
1313
k8s.io/client-go v0.18.9
14-
kmodules.xyz/client-go v0.0.0-20210108092221-c3812eb92bd0
14+
kmodules.xyz/client-go v0.0.0-20210118094617-273ba20ad7ca
1515
kmodules.xyz/custom-resources v0.0.0-20201124062543-bd8d35c21b0c
1616
kmodules.xyz/offshoot-api v0.0.0-20201105074700-8675f5f686f2
1717
kmodules.xyz/schema-checker v0.1.0

go.sum

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc
129129
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
130130
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
131131
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
132+
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8/go.mod h1:4abs/jPXcmJzYoYGF91JF9Uq9s/KL5n1jvFDix8KcqY=
132133
github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4=
133134
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
134135
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -171,6 +172,7 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo
171172
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
172173
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
173174
github.com/gabriel-vasile/mimetype v1.1.1/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To=
175+
github.com/gabriel-vasile/mimetype v1.1.2/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To=
174176
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
175177
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
176178
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
@@ -642,10 +644,10 @@ github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDf
642644
github.com/yudai/pp v2.0.1+incompatible h1:Q4//iY4pNF6yPLZIigmvcl7k/bPgrcTPIFIcmawg5bI=
643645
github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
644646
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
645-
go.bytebuilders.dev/license-verifier v0.5.1 h1:GfYRI8rhGO98FmanlzPoOzDfthoY8ATNY3xDdRKs5jQ=
646-
go.bytebuilders.dev/license-verifier v0.5.1/go.mod h1:SNXpEKh3gg2ljHzh6Dxa7qMZS6hM6L9eQ+U0vaGyfFQ=
647-
go.bytebuilders.dev/license-verifier/kubernetes v0.5.1 h1:X6arsotN7dT5UHNL4cpwBmOJTR16fsQGACIB1IKepYQ=
648-
go.bytebuilders.dev/license-verifier/kubernetes v0.5.1/go.mod h1:WXm+QeT10DcIJu6S4e2WmN2pP/QG+X/h4rKnM5bivkE=
647+
go.bytebuilders.dev/license-verifier v0.6.1 h1:HhtVt+K4TBlOwUNhE4HJWBm5S7nsAizOLuirLmIz2ZA=
648+
go.bytebuilders.dev/license-verifier v0.6.1/go.mod h1:SNXpEKh3gg2ljHzh6Dxa7qMZS6hM6L9eQ+U0vaGyfFQ=
649+
go.bytebuilders.dev/license-verifier/kubernetes v0.6.1 h1:WTT81asc7ykKI6E9BzeV0EFkaTniqaghKsybvHQlaGc=
650+
go.bytebuilders.dev/license-verifier/kubernetes v0.6.1/go.mod h1:YyvxUrqALordUC9554S2J93ozJ6PK4GVEyUCmUgUSbo=
649651
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
650652
go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk=
651653
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
@@ -987,6 +989,8 @@ kmodules.xyz/client-go v0.0.0-20201105071625-0b277310b9b8 h1:zs2+yI/Ola5HjdtfP29
987989
kmodules.xyz/client-go v0.0.0-20201105071625-0b277310b9b8/go.mod h1:WXDwZBmvrcLgGcuO9iZpI9jcfPuDFfWbxA4EnhAFtGw=
988990
kmodules.xyz/client-go v0.0.0-20210108092221-c3812eb92bd0 h1:VHpZt3cG/yY6UrA3vjoUc4pJtc/jVbjt2A3OPuMXBOQ=
989991
kmodules.xyz/client-go v0.0.0-20210108092221-c3812eb92bd0/go.mod h1:WXDwZBmvrcLgGcuO9iZpI9jcfPuDFfWbxA4EnhAFtGw=
992+
kmodules.xyz/client-go v0.0.0-20210118094617-273ba20ad7ca h1:w2vMnu71zJf8RB0qAMV3yt7zHnwg456u6B0S9OHz2lc=
993+
kmodules.xyz/client-go v0.0.0-20210118094617-273ba20ad7ca/go.mod h1:GdX1CHOpjL4F8P9O/7dE9m0fIOs05BNHKVT+kM51rk8=
990994
kmodules.xyz/constants v0.0.0-20200923054614-6b87dbbae4d6/go.mod h1:DbiFk1bJ1KEO94t1SlAn7tzc+Zz95rSXgyUKa2nzPmY=
991995
kmodules.xyz/crd-schema-fuzz v0.0.0-20200922204806-c1426cd7fcf4 h1:NWWv+Qju8xzHZT9hIk1+BbgQtIytNOoCU4g4vqUmh3M=
992996
kmodules.xyz/crd-schema-fuzz v0.0.0-20200922204806-c1426cd7fcf4/go.mod h1:WrO3fryNyFCgqqyWnwI89lnzWA7kN072Ehya7ELGfzE=

vendor/go.bytebuilders.dev/license-verifier/kubernetes/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ CODE_GENERATOR_IMAGE ?= appscode/gengo:release-1.18
2525
API_GROUPS ?= licenses:v1alpha1
2626

2727
# Where to push the docker image.
28-
REGISTRY ?= kubeshield
28+
REGISTRY ?= bytebuilders
2929

3030
# This version-strategy uses git tags to set the version string
3131
git_branch := $(shell git rev-parse --abbrev-ref HEAD)
@@ -64,7 +64,7 @@ ARCH := $(if $(GOARCH),$(GOARCH),$(shell go env GOARCH))
6464
BASEIMAGE_PROD ?= gcr.io/distroless/static
6565
BASEIMAGE_DBG ?= debian:stretch
6666

67-
GO_VERSION ?= 1.14
67+
GO_VERSION ?= 1.15
6868
BUILD_IMAGE ?= appscode/golang-dev:$(GO_VERSION)
6969

7070
OUTBIN = bin/$(OS)_$(ARCH)/$(BIN)

vendor/go.bytebuilders.dev/license-verifier/kubernetes/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.14
44

55
require (
66
github.com/gogo/protobuf v1.3.1
7-
go.bytebuilders.dev/license-verifier v0.5.1
7+
go.bytebuilders.dev/license-verifier v0.6.1
88
golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
99
k8s.io/api v0.18.9
1010
k8s.io/apimachinery v0.18.9

vendor/go.bytebuilders.dev/license-verifier/kubernetes/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,8 +379,8 @@ github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3Ifn
379379
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
380380
github.com/yudai/pp v2.0.1+incompatible h1:Q4//iY4pNF6yPLZIigmvcl7k/bPgrcTPIFIcmawg5bI=
381381
github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
382-
go.bytebuilders.dev/license-verifier v0.5.1 h1:GfYRI8rhGO98FmanlzPoOzDfthoY8ATNY3xDdRKs5jQ=
383-
go.bytebuilders.dev/license-verifier v0.5.1/go.mod h1:SNXpEKh3gg2ljHzh6Dxa7qMZS6hM6L9eQ+U0vaGyfFQ=
382+
go.bytebuilders.dev/license-verifier v0.6.1 h1:HhtVt+K4TBlOwUNhE4HJWBm5S7nsAizOLuirLmIz2ZA=
383+
go.bytebuilders.dev/license-verifier v0.6.1/go.mod h1:SNXpEKh3gg2ljHzh6Dxa7qMZS6hM6L9eQ+U0vaGyfFQ=
384384
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
385385
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
386386
go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=

vendor/go.bytebuilders.dev/license-verifier/lib.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import (
2020
"crypto/x509"
2121
"encoding/pem"
2222
"fmt"
23+
"strings"
24+
2325
"github.com/pkg/errors"
2426
"gomodules.xyz/sets"
2527
)
@@ -35,14 +37,9 @@ func VerifyLicense(opts *Options) error {
3537
if opts == nil {
3638
return fmt.Errorf("missing license")
3739
}
38-
block, _ := pem.Decode(opts.License)
39-
if block == nil {
40-
// This probably is a JWT token, should be check for that when ready
41-
return errors.New("failed to parse certificate PEM")
42-
}
43-
cert, err := x509.ParseCertificate(block.Bytes)
40+
cert, err := parseCertificate(opts.License)
4441
if err != nil {
45-
return errors.Wrap(err, "failed to parse certificate")
42+
return err
4643
}
4744

4845
// First, create the set of root certificates. For this example we only
@@ -61,6 +58,18 @@ func VerifyLicense(opts *Options) error {
6158
x509.ExtKeyUsageClientAuth,
6259
},
6360
}
61+
62+
// wildcard certificate
63+
if strings.HasPrefix(cert.Subject.CommonName, "*.") {
64+
caCert, err := parseCertificate(opts.CACert)
65+
if err != nil {
66+
return err
67+
}
68+
if len(caCert.Subject.Organization) > 0 {
69+
crtopts.DNSName = "*." + caCert.Subject.Organization[0]
70+
}
71+
}
72+
6473
if _, err := cert.Verify(crtopts); err != nil {
6574
return errors.Wrap(err, "failed to verify certificate")
6675
}
@@ -69,3 +78,12 @@ func VerifyLicense(opts *Options) error {
6978
}
7079
return nil
7180
}
81+
82+
func parseCertificate(data []byte) (*x509.Certificate, error) {
83+
block, _ := pem.Decode(data)
84+
if block == nil {
85+
// This probably is a JWT token, should be check for that when ready
86+
return nil, errors.New("failed to parse certificate PEM")
87+
}
88+
return x509.ParseCertificate(block.Bytes)
89+
}

vendor/kmodules.xyz/client-go/core/v1/pod.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,23 @@ func TryUpdatePod(ctx context.Context, c kubernetes.Interface, meta metav1.Objec
100100
return
101101
}
102102

103+
// IsPodReady returns true if a pod is ready considering readiness gates; false otherwise.
104+
func IsPodReady(pod *core.Pod) bool {
105+
conditions := []core.PodConditionType{
106+
core.PodReady,
107+
}
108+
for _, gate := range pod.Spec.ReadinessGates {
109+
conditions = append(conditions, gate.ConditionType)
110+
}
111+
112+
for _, condition := range conditions {
113+
if !IsPodConditionTrue(pod.Status.Conditions, condition) {
114+
return false
115+
}
116+
}
117+
return true
118+
}
119+
103120
// ref: https://github.com/coreos/prometheus-operator/blob/c79166fcff3dae7bb8bc1e6bddc81837c2d97c04/pkg/k8sutil/k8sutil.go#L64
104121
// PodRunningAndReady returns whether a pod is running and each container has
105122
// passed it's ready state.
@@ -108,11 +125,8 @@ func PodRunningAndReady(pod core.Pod) (bool, error) {
108125
case core.PodFailed, core.PodSucceeded:
109126
return false, errors.New("pod completed")
110127
case core.PodRunning:
111-
for _, cond := range pod.Status.Conditions {
112-
if cond.Type != core.PodReady {
113-
continue
114-
}
115-
return cond.Status == core.ConditionTrue, nil
128+
if IsPodReady(&pod) {
129+
return true, nil
116130
}
117131
return false, errors.New("pod ready condition not found")
118132
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/*
2+
Copyright AppsCode Inc. and Contributors
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package v1
18+
19+
import (
20+
core "k8s.io/api/core/v1"
21+
)
22+
23+
const (
24+
PodConditionTypeReady = core.PodConditionType("kubedb.com/Ready")
25+
)
26+
27+
// HasCondition returns "true" if the desired condition provided in "condType" is present in the condition list.
28+
// Otherwise, it returns "false".
29+
func HasPodCondition(conditions []core.PodCondition, condType core.PodConditionType) bool {
30+
for i := range conditions {
31+
if conditions[i].Type == condType {
32+
return true
33+
}
34+
}
35+
return false
36+
}
37+
38+
// GetPodCondition returns a pointer to the desired condition referred by "condType". Otherwise, it returns nil.
39+
func GetPodCondition(conditions []core.PodCondition, condType core.PodConditionType) (int, *core.PodCondition) {
40+
for i := range conditions {
41+
c := conditions[i]
42+
if c.Type == condType {
43+
return i, &c
44+
}
45+
}
46+
return -1, nil
47+
}
48+
49+
// SetPodCondition add/update the desired condition to the condition list. It does nothing if the condition is already in
50+
// its desired state.
51+
func SetPodCondition(conditions []core.PodCondition, newCondition core.PodCondition) []core.PodCondition {
52+
idx, curCond := GetPodCondition(conditions, newCondition.Type)
53+
// The desired conditions is not in the condition list or is not in its desired state.
54+
// If the current condition status is in its desired state, we have nothing to do. Just return the original condition list.
55+
// Update it if present in the condition list, or append the new condition if it does not present.
56+
if curCond == nil || idx == -1 {
57+
return append(conditions, newCondition)
58+
} else if curCond.Status == newCondition.Status {
59+
return conditions
60+
} else if curCond.Status != newCondition.Status {
61+
conditions[idx].Status = newCondition.Status
62+
conditions[idx].LastTransitionTime = newCondition.LastTransitionTime
63+
conditions[idx].Reason = newCondition.Reason
64+
conditions[idx].Message = newCondition.Message
65+
}
66+
return conditions
67+
}
68+
69+
// RemovePodCondition remove a condition from the condition list referred by "condType" parameter.
70+
func RemovePodCondition(conditions []core.PodCondition, condType core.PodConditionType) []core.PodCondition {
71+
idx, _ := GetPodCondition(conditions, condType)
72+
if idx == -1 {
73+
// The desired condition is not present in the condition list. So, nothing to do.
74+
return conditions
75+
}
76+
return append(conditions[:idx], conditions[idx+1:]...)
77+
}
78+
79+
// IsPodConditionTrue returns "true" if the desired condition is in true state.
80+
// It returns "false" if the desired condition is not in "true" state or is not in the condition list.
81+
func IsPodConditionTrue(conditions []core.PodCondition, condType core.PodConditionType) bool {
82+
for i := range conditions {
83+
if conditions[i].Type == condType && conditions[i].Status == core.ConditionTrue {
84+
return true
85+
}
86+
}
87+
return false
88+
}
89+
90+
// IsPodConditionFalse returns "true" if the desired condition is in false state.
91+
// It returns "false" if the desired condition is not in "false" state or is not in the condition list.
92+
func IsPodConditionFalse(conditions []core.PodCondition, condType core.PodConditionType) bool {
93+
for i := range conditions {
94+
if conditions[i].Type == condType && conditions[i].Status == core.ConditionFalse {
95+
return true
96+
}
97+
}
98+
return false
99+
}
100+
101+
func UpsertPodReadinessGateConditionType(readinessGates []core.PodReadinessGate, conditionType core.PodConditionType) []core.PodReadinessGate {
102+
for i := range readinessGates {
103+
if readinessGates[i].ConditionType == conditionType {
104+
return readinessGates
105+
}
106+
}
107+
return append(readinessGates, core.PodReadinessGate{
108+
ConditionType: conditionType,
109+
})
110+
}

vendor/kmodules.xyz/client-go/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ module kmodules.xyz/client-go
33
go 1.12
44

55
require (
6+
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8
67
github.com/davecgh/go-spew v1.1.1
78
github.com/evanphx/json-patch v4.9.0+incompatible
89
github.com/fatih/structs v1.1.0
910
github.com/fsnotify/fsnotify v1.4.9
11+
github.com/gabriel-vasile/mimetype v1.1.2
1012
github.com/go-openapi/spec v0.19.3
1113
github.com/gogo/protobuf v1.3.1
1214
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b

vendor/kmodules.xyz/client-go/go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc
7474
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
7575
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
7676
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
77+
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8 h1:Z9lwXumT5ACSmJ7WGnFl+OMLLjpz5uR2fyz7dC255FI=
78+
github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8/go.mod h1:4abs/jPXcmJzYoYGF91JF9Uq9s/KL5n1jvFDix8KcqY=
7779
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
7880
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
7981
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -105,6 +107,8 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga
105107
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
106108
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
107109
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
110+
github.com/gabriel-vasile/mimetype v1.1.2 h1:gaPnPcNor5aZSVCJVSGipcpbgMWiAAj9z182ocSGbHU=
111+
github.com/gabriel-vasile/mimetype v1.1.2/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To=
108112
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
109113
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
110114
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=

0 commit comments

Comments
 (0)