fix: CVE-2023-5528
This commit is contained in:
parent
f201d45f24
commit
0f67321d4c
71
go.mod
71
go.mod
@ -13,12 +13,12 @@ require (
|
|||||||
golang.org/x/net v0.18.0
|
golang.org/x/net v0.18.0
|
||||||
google.golang.org/grpc v1.59.0
|
google.golang.org/grpc v1.59.0
|
||||||
google.golang.org/protobuf v1.31.0
|
google.golang.org/protobuf v1.31.0
|
||||||
k8s.io/api v0.26.9
|
k8s.io/api v0.26.11
|
||||||
k8s.io/apimachinery v0.28.3
|
k8s.io/apimachinery v0.28.3
|
||||||
k8s.io/client-go v0.26.9
|
k8s.io/client-go v0.26.11
|
||||||
k8s.io/klog/v2 v2.100.1
|
k8s.io/klog/v2 v2.100.1
|
||||||
k8s.io/kubernetes v1.26.9
|
k8s.io/kubernetes v1.26.11
|
||||||
k8s.io/mount-utils v0.26.9
|
k8s.io/mount-utils v0.26.11
|
||||||
k8s.io/pod-security-admission v0.0.0
|
k8s.io/pod-security-admission v0.0.0
|
||||||
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d
|
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d
|
||||||
sigs.k8s.io/yaml v1.4.0
|
sigs.k8s.io/yaml v1.4.0
|
||||||
@ -48,7 +48,7 @@ require (
|
|||||||
github.com/google/gofuzz v1.1.0 // indirect
|
github.com/google/gofuzz v1.1.0 // indirect
|
||||||
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect
|
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect
|
||||||
github.com/google/uuid v1.3.1 // indirect
|
github.com/google/uuid v1.3.1 // indirect
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
|
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect
|
||||||
github.com/imdario/mergo v0.3.6 // indirect
|
github.com/imdario/mergo v0.3.6 // indirect
|
||||||
github.com/inconshreveable/mousetrap v1.0.1 // indirect
|
github.com/inconshreveable/mousetrap v1.0.1 // indirect
|
||||||
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||||
@ -96,9 +96,9 @@ require (
|
|||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
k8s.io/apiextensions-apiserver v0.0.0 // indirect
|
k8s.io/apiextensions-apiserver v0.0.0 // indirect
|
||||||
k8s.io/apiserver v0.28.3 // indirect
|
k8s.io/apiserver v0.28.3 // indirect
|
||||||
k8s.io/cloud-provider v0.26.9 // indirect
|
k8s.io/cloud-provider v0.26.11 // indirect
|
||||||
k8s.io/component-base v0.26.9 // indirect
|
k8s.io/component-base v0.26.11 // indirect
|
||||||
k8s.io/component-helpers v0.26.9 // indirect
|
k8s.io/component-helpers v0.26.11 // indirect
|
||||||
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect
|
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect
|
||||||
k8s.io/kubectl v0.0.0 // indirect
|
k8s.io/kubectl v0.0.0 // indirect
|
||||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.37 // indirect
|
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.37 // indirect
|
||||||
@ -107,32 +107,31 @@ require (
|
|||||||
)
|
)
|
||||||
|
|
||||||
replace (
|
replace (
|
||||||
k8s.io/api => k8s.io/api v0.26.9
|
k8s.io/api => k8s.io/api v0.26.11
|
||||||
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.9
|
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.11
|
||||||
k8s.io/apimachinery => k8s.io/apimachinery v0.26.9
|
k8s.io/apimachinery => k8s.io/apimachinery v0.26.11
|
||||||
k8s.io/apiserver => k8s.io/apiserver v0.26.9
|
k8s.io/apiserver => k8s.io/apiserver v0.26.11
|
||||||
k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.9
|
k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.11
|
||||||
k8s.io/client-go => k8s.io/client-go v0.26.9
|
k8s.io/client-go => k8s.io/client-go v0.26.11
|
||||||
k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.9
|
k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.11
|
||||||
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.9
|
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.11
|
||||||
k8s.io/code-generator => k8s.io/code-generator v0.26.9
|
k8s.io/code-generator => k8s.io/code-generator v0.26.11
|
||||||
k8s.io/component-base => k8s.io/component-base v0.26.9
|
k8s.io/component-base => k8s.io/component-base v0.26.11
|
||||||
k8s.io/component-helpers => k8s.io/component-helpers v0.26.9
|
k8s.io/component-helpers => k8s.io/component-helpers v0.26.11
|
||||||
k8s.io/controller-manager => k8s.io/controller-manager v0.26.9
|
k8s.io/controller-manager => k8s.io/controller-manager v0.26.11
|
||||||
k8s.io/cri-api => k8s.io/cri-api v0.26.9
|
k8s.io/cri-api => k8s.io/cri-api v0.26.11
|
||||||
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.9
|
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.11
|
||||||
k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.26.9
|
k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.26.11
|
||||||
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.9
|
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.11
|
||||||
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.9
|
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.11
|
||||||
k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.9
|
k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.11
|
||||||
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.9
|
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.11
|
||||||
k8s.io/kubectl => k8s.io/kubectl v0.26.9
|
k8s.io/kubectl => k8s.io/kubectl v0.26.11
|
||||||
k8s.io/kubelet => k8s.io/kubelet v0.26.9
|
k8s.io/kubelet => k8s.io/kubelet v0.26.11
|
||||||
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.9
|
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.11
|
||||||
k8s.io/metrics => k8s.io/metrics v0.26.9
|
k8s.io/metrics => k8s.io/metrics v0.26.11
|
||||||
k8s.io/mount-utils => k8s.io/mount-utils v0.0.0-20230103133730-1df1a57439e2
|
k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.26.11
|
||||||
k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.26.9
|
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.11
|
||||||
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.9
|
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.11
|
||||||
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.9
|
k8s.io/sample-controller => k8s.io/sample-controller v0.26.11
|
||||||
k8s.io/sample-controller => k8s.io/sample-controller v0.26.9
|
|
||||||
)
|
)
|
||||||
|
|||||||
1
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/parse.go
generated
vendored
1
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/parse.go
generated
vendored
@ -275,6 +275,7 @@ func (p *parser) accept(term termType) (string, error) {
|
|||||||
// expectPChars determines if "t" consists of only pchars defined in RFC3986.
|
// expectPChars determines if "t" consists of only pchars defined in RFC3986.
|
||||||
//
|
//
|
||||||
// https://www.ietf.org/rfc/rfc3986.txt, P.49
|
// https://www.ietf.org/rfc/rfc3986.txt, P.49
|
||||||
|
//
|
||||||
// pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
|
// pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
|
||||||
// unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
|
// unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
|
||||||
// sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
|
// sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
|
||||||
|
|||||||
6
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/BUILD.bazel
generated
vendored
6
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/BUILD.bazel
generated
vendored
@ -30,6 +30,7 @@ go_library(
|
|||||||
"@io_bazel_rules_go//proto/wkt:field_mask_go_proto",
|
"@io_bazel_rules_go//proto/wkt:field_mask_go_proto",
|
||||||
"@org_golang_google_grpc//codes",
|
"@org_golang_google_grpc//codes",
|
||||||
"@org_golang_google_grpc//grpclog",
|
"@org_golang_google_grpc//grpclog",
|
||||||
|
"@org_golang_google_grpc//health/grpc_health_v1",
|
||||||
"@org_golang_google_grpc//metadata",
|
"@org_golang_google_grpc//metadata",
|
||||||
"@org_golang_google_grpc//status",
|
"@org_golang_google_grpc//status",
|
||||||
"@org_golang_google_protobuf//encoding/protojson",
|
"@org_golang_google_protobuf//encoding/protojson",
|
||||||
@ -37,6 +38,7 @@ go_library(
|
|||||||
"@org_golang_google_protobuf//reflect/protoreflect",
|
"@org_golang_google_protobuf//reflect/protoreflect",
|
||||||
"@org_golang_google_protobuf//reflect/protoregistry",
|
"@org_golang_google_protobuf//reflect/protoregistry",
|
||||||
"@org_golang_google_protobuf//types/known/durationpb",
|
"@org_golang_google_protobuf//types/known/durationpb",
|
||||||
|
"@org_golang_google_protobuf//types/known/structpb",
|
||||||
"@org_golang_google_protobuf//types/known/timestamppb",
|
"@org_golang_google_protobuf//types/known/timestamppb",
|
||||||
"@org_golang_google_protobuf//types/known/wrapperspb",
|
"@org_golang_google_protobuf//types/known/wrapperspb",
|
||||||
],
|
],
|
||||||
@ -56,8 +58,10 @@ go_test(
|
|||||||
"marshal_jsonpb_test.go",
|
"marshal_jsonpb_test.go",
|
||||||
"marshal_proto_test.go",
|
"marshal_proto_test.go",
|
||||||
"marshaler_registry_test.go",
|
"marshaler_registry_test.go",
|
||||||
|
"mux_internal_test.go",
|
||||||
"mux_test.go",
|
"mux_test.go",
|
||||||
"pattern_test.go",
|
"pattern_test.go",
|
||||||
|
"query_fuzz_test.go",
|
||||||
"query_test.go",
|
"query_test.go",
|
||||||
],
|
],
|
||||||
embed = [":runtime"],
|
embed = [":runtime"],
|
||||||
@ -70,7 +74,9 @@ go_test(
|
|||||||
"@go_googleapis//google/rpc:errdetails_go_proto",
|
"@go_googleapis//google/rpc:errdetails_go_proto",
|
||||||
"@go_googleapis//google/rpc:status_go_proto",
|
"@go_googleapis//google/rpc:status_go_proto",
|
||||||
"@io_bazel_rules_go//proto/wkt:field_mask_go_proto",
|
"@io_bazel_rules_go//proto/wkt:field_mask_go_proto",
|
||||||
|
"@org_golang_google_grpc//:go_default_library",
|
||||||
"@org_golang_google_grpc//codes",
|
"@org_golang_google_grpc//codes",
|
||||||
|
"@org_golang_google_grpc//health/grpc_health_v1",
|
||||||
"@org_golang_google_grpc//metadata",
|
"@org_golang_google_grpc//metadata",
|
||||||
"@org_golang_google_grpc//status",
|
"@org_golang_google_grpc//status",
|
||||||
"@org_golang_google_protobuf//encoding/protojson",
|
"@org_golang_google_protobuf//encoding/protojson",
|
||||||
|
|||||||
19
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.go
generated
vendored
19
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.go
generated
vendored
@ -41,6 +41,12 @@ var (
|
|||||||
DefaultContextTimeout = 0 * time.Second
|
DefaultContextTimeout = 0 * time.Second
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// malformedHTTPHeaders lists the headers that the gRPC server may reject outright as malformed.
|
||||||
|
// See https://github.com/grpc/grpc-go/pull/4803#issuecomment-986093310 for more context.
|
||||||
|
var malformedHTTPHeaders = map[string]struct{}{
|
||||||
|
"connection": {},
|
||||||
|
}
|
||||||
|
|
||||||
type (
|
type (
|
||||||
rpcMethodKey struct{}
|
rpcMethodKey struct{}
|
||||||
httpPathPatternKey struct{}
|
httpPathPatternKey struct{}
|
||||||
@ -172,11 +178,17 @@ type serverMetadataKey struct{}
|
|||||||
|
|
||||||
// NewServerMetadataContext creates a new context with ServerMetadata
|
// NewServerMetadataContext creates a new context with ServerMetadata
|
||||||
func NewServerMetadataContext(ctx context.Context, md ServerMetadata) context.Context {
|
func NewServerMetadataContext(ctx context.Context, md ServerMetadata) context.Context {
|
||||||
|
if ctx == nil {
|
||||||
|
ctx = context.Background()
|
||||||
|
}
|
||||||
return context.WithValue(ctx, serverMetadataKey{}, md)
|
return context.WithValue(ctx, serverMetadataKey{}, md)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerMetadataFromContext returns the ServerMetadata in ctx
|
// ServerMetadataFromContext returns the ServerMetadata in ctx
|
||||||
func ServerMetadataFromContext(ctx context.Context) (md ServerMetadata, ok bool) {
|
func ServerMetadataFromContext(ctx context.Context) (md ServerMetadata, ok bool) {
|
||||||
|
if ctx == nil {
|
||||||
|
return md, false
|
||||||
|
}
|
||||||
md, ok = ctx.Value(serverMetadataKey{}).(ServerMetadata)
|
md, ok = ctx.Value(serverMetadataKey{}).(ServerMetadata)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -308,6 +320,13 @@ func isPermanentHTTPHeader(hdr string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// isMalformedHTTPHeader checks whether header belongs to the list of
|
||||||
|
// "malformed headers" and would be rejected by the gRPC server.
|
||||||
|
func isMalformedHTTPHeader(header string) bool {
|
||||||
|
_, isMalformed := malformedHTTPHeaders[strings.ToLower(header)]
|
||||||
|
return isMalformed
|
||||||
|
}
|
||||||
|
|
||||||
// RPCMethod returns the method string for the server context. The returned
|
// RPCMethod returns the method string for the server context. The returned
|
||||||
// string is in the format of "/package.service/method".
|
// string is in the format of "/package.service/method".
|
||||||
func RPCMethod(ctx context.Context) (string, bool) {
|
func RPCMethod(ctx context.Context) (string, bool) {
|
||||||
|
|||||||
2
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.go
generated
vendored
2
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.go
generated
vendored
@ -265,7 +265,7 @@ func EnumSlice(val, sep string, enumValMap map[string]int32) ([]int32, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Support fot google.protobuf.wrappers on top of primitive types
|
Support for google.protobuf.wrappers on top of primitive types
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// StringValue well-known type support as wrapper around string type
|
// StringValue well-known type support as wrapper around string type
|
||||||
|
|||||||
1
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.go
generated
vendored
1
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.go
generated
vendored
@ -162,6 +162,7 @@ func DefaultStreamErrorHandler(_ context.Context, err error) *status.Status {
|
|||||||
|
|
||||||
// DefaultRoutingErrorHandler is our default handler for routing errors.
|
// DefaultRoutingErrorHandler is our default handler for routing errors.
|
||||||
// By default http error codes mapped on the following error codes:
|
// By default http error codes mapped on the following error codes:
|
||||||
|
//
|
||||||
// NotFound -> grpc.NotFound
|
// NotFound -> grpc.NotFound
|
||||||
// StatusBadRequest -> grpc.InvalidArgument
|
// StatusBadRequest -> grpc.InvalidArgument
|
||||||
// MethodNotAllowed -> grpc.Unimplemented
|
// MethodNotAllowed -> grpc.Unimplemented
|
||||||
|
|||||||
2
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.go
generated
vendored
2
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.go
generated
vendored
@ -53,7 +53,7 @@ func FieldMaskFromRequestBody(r io.Reader, msg proto.Message) (*field_mask.Field
|
|||||||
}
|
}
|
||||||
|
|
||||||
if isDynamicProtoMessage(fd.Message()) {
|
if isDynamicProtoMessage(fd.Message()) {
|
||||||
for _, p := range buildPathsBlindly(k, v) {
|
for _, p := range buildPathsBlindly(string(fd.FullName().Name()), v) {
|
||||||
newPath := p
|
newPath := p
|
||||||
if item.path != "" {
|
if item.path != "" {
|
||||||
newPath = item.path + "." + newPath
|
newPath = item.path + "." + newPath
|
||||||
|
|||||||
12
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.go
generated
vendored
12
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.go
generated
vendored
@ -52,11 +52,11 @@ func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshal
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err)
|
handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err, delimiter)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err := handleForwardResponseOptions(ctx, w, resp, opts); err != nil {
|
if err := handleForwardResponseOptions(ctx, w, resp, opts); err != nil {
|
||||||
handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err)
|
handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err, delimiter)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshal
|
|||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
grpclog.Infof("Failed to marshal response chunk: %v", err)
|
grpclog.Infof("Failed to marshal response chunk: %v", err)
|
||||||
handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err)
|
handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err, delimiter)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if _, err = w.Write(buf); err != nil {
|
if _, err = w.Write(buf); err != nil {
|
||||||
@ -200,7 +200,7 @@ func handleForwardResponseOptions(ctx context.Context, w http.ResponseWriter, re
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleForwardResponseStreamError(ctx context.Context, wroteHeader bool, marshaler Marshaler, w http.ResponseWriter, req *http.Request, mux *ServeMux, err error) {
|
func handleForwardResponseStreamError(ctx context.Context, wroteHeader bool, marshaler Marshaler, w http.ResponseWriter, req *http.Request, mux *ServeMux, err error, delimiter []byte) {
|
||||||
st := mux.streamErrorHandler(ctx, err)
|
st := mux.streamErrorHandler(ctx, err)
|
||||||
msg := errorChunk(st)
|
msg := errorChunk(st)
|
||||||
if !wroteHeader {
|
if !wroteHeader {
|
||||||
@ -216,6 +216,10 @@ func handleForwardResponseStreamError(ctx context.Context, wroteHeader bool, mar
|
|||||||
grpclog.Infof("Failed to notify error to client: %v", werr)
|
grpclog.Infof("Failed to notify error to client: %v", werr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if _, derr := w.Write(delimiter); derr != nil {
|
||||||
|
grpclog.Infof("Failed to send delimiter chunk: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func errorChunk(st *status.Status) map[string]proto.Message {
|
func errorChunk(st *status.Status) map[string]proto.Message {
|
||||||
|
|||||||
11
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.go
generated
vendored
11
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.go
generated
vendored
@ -280,6 +280,17 @@ func decodeNonProtoField(d *json.Decoder, unmarshaler protojson.UnmarshalOptions
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if rv.Kind() == reflect.Slice {
|
if rv.Kind() == reflect.Slice {
|
||||||
|
if rv.Type().Elem().Kind() == reflect.Uint8 {
|
||||||
|
var sl []byte
|
||||||
|
if err := d.Decode(&sl); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if sl != nil {
|
||||||
|
rv.SetBytes(sl)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
var sl []json.RawMessage
|
var sl []json.RawMessage
|
||||||
if err := d.Decode(&sl); err != nil {
|
if err := d.Decode(&sl); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
98
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.go
generated
vendored
98
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.go
generated
vendored
@ -6,10 +6,13 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/textproto"
|
"net/textproto"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule"
|
"github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
|
"google.golang.org/grpc/grpclog"
|
||||||
|
"google.golang.org/grpc/health/grpc_health_v1"
|
||||||
"google.golang.org/grpc/metadata"
|
"google.golang.org/grpc/metadata"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
@ -23,15 +26,15 @@ const (
|
|||||||
// path string before doing any routing.
|
// path string before doing any routing.
|
||||||
UnescapingModeLegacy UnescapingMode = iota
|
UnescapingModeLegacy UnescapingMode = iota
|
||||||
|
|
||||||
// EscapingTypeExceptReserved unescapes all path parameters except RFC 6570
|
// UnescapingModeAllExceptReserved unescapes all path parameters except RFC 6570
|
||||||
// reserved characters.
|
// reserved characters.
|
||||||
UnescapingModeAllExceptReserved
|
UnescapingModeAllExceptReserved
|
||||||
|
|
||||||
// EscapingTypeExceptSlash unescapes URL path parameters except path
|
// UnescapingModeAllExceptSlash unescapes URL path parameters except path
|
||||||
// seperators, which will be left as "%2F".
|
// separators, which will be left as "%2F".
|
||||||
UnescapingModeAllExceptSlash
|
UnescapingModeAllExceptSlash
|
||||||
|
|
||||||
// URL path parameters will be fully decoded.
|
// UnescapingModeAllCharacters unescapes all URL path parameters.
|
||||||
UnescapingModeAllCharacters
|
UnescapingModeAllCharacters
|
||||||
|
|
||||||
// UnescapingModeDefault is the default escaping type.
|
// UnescapingModeDefault is the default escaping type.
|
||||||
@ -40,6 +43,10 @@ const (
|
|||||||
UnescapingModeDefault = UnescapingModeLegacy
|
UnescapingModeDefault = UnescapingModeLegacy
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
encodedPathSplitter = regexp.MustCompile("(/|%2F)")
|
||||||
|
)
|
||||||
|
|
||||||
// A HandlerFunc handles a specific pair of path pattern and HTTP method.
|
// A HandlerFunc handles a specific pair of path pattern and HTTP method.
|
||||||
type HandlerFunc func(w http.ResponseWriter, r *http.Request, pathParams map[string]string)
|
type HandlerFunc func(w http.ResponseWriter, r *http.Request, pathParams map[string]string)
|
||||||
|
|
||||||
@ -113,11 +120,30 @@ func DefaultHeaderMatcher(key string) (string, bool) {
|
|||||||
// This matcher will be called with each header in http.Request. If matcher returns true, that header will be
|
// This matcher will be called with each header in http.Request. If matcher returns true, that header will be
|
||||||
// passed to gRPC context. To transform the header before passing to gRPC context, matcher should return modified header.
|
// passed to gRPC context. To transform the header before passing to gRPC context, matcher should return modified header.
|
||||||
func WithIncomingHeaderMatcher(fn HeaderMatcherFunc) ServeMuxOption {
|
func WithIncomingHeaderMatcher(fn HeaderMatcherFunc) ServeMuxOption {
|
||||||
|
for _, header := range fn.matchedMalformedHeaders() {
|
||||||
|
grpclog.Warningf("The configured forwarding filter would allow %q to be sent to the gRPC server, which will likely cause errors. See https://github.com/grpc/grpc-go/pull/4803#issuecomment-986093310 for more information.", header)
|
||||||
|
}
|
||||||
|
|
||||||
return func(mux *ServeMux) {
|
return func(mux *ServeMux) {
|
||||||
mux.incomingHeaderMatcher = fn
|
mux.incomingHeaderMatcher = fn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// matchedMalformedHeaders returns the malformed headers that would be forwarded to gRPC server.
|
||||||
|
func (fn HeaderMatcherFunc) matchedMalformedHeaders() []string {
|
||||||
|
if fn == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
headers := make([]string, 0)
|
||||||
|
for header := range malformedHTTPHeaders {
|
||||||
|
out, accept := fn(header)
|
||||||
|
if accept && isMalformedHTTPHeader(out) {
|
||||||
|
headers = append(headers, out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return headers
|
||||||
|
}
|
||||||
|
|
||||||
// WithOutgoingHeaderMatcher returns a ServeMuxOption representing a headerMatcher for outgoing response from gateway.
|
// WithOutgoingHeaderMatcher returns a ServeMuxOption representing a headerMatcher for outgoing response from gateway.
|
||||||
//
|
//
|
||||||
// This matcher will be called with each header in response header metadata. If matcher returns true, that header will be
|
// This matcher will be called with each header in response header metadata. If matcher returns true, that header will be
|
||||||
@ -179,6 +205,57 @@ func WithDisablePathLengthFallback() ServeMuxOption {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithHealthEndpointAt returns a ServeMuxOption that will add an endpoint to the created ServeMux at the path specified by endpointPath.
|
||||||
|
// When called the handler will forward the request to the upstream grpc service health check (defined in the
|
||||||
|
// gRPC Health Checking Protocol).
|
||||||
|
//
|
||||||
|
// See here https://grpc-ecosystem.github.io/grpc-gateway/docs/operations/health_check/ for more information on how
|
||||||
|
// to setup the protocol in the grpc server.
|
||||||
|
//
|
||||||
|
// If you define a service as query parameter, this will also be forwarded as service in the HealthCheckRequest.
|
||||||
|
func WithHealthEndpointAt(healthCheckClient grpc_health_v1.HealthClient, endpointPath string) ServeMuxOption {
|
||||||
|
return func(s *ServeMux) {
|
||||||
|
// error can be ignored since pattern is definitely valid
|
||||||
|
_ = s.HandlePath(
|
||||||
|
http.MethodGet, endpointPath, func(w http.ResponseWriter, r *http.Request, _ map[string]string,
|
||||||
|
) {
|
||||||
|
_, outboundMarshaler := MarshalerForRequest(s, r)
|
||||||
|
|
||||||
|
resp, err := healthCheckClient.Check(r.Context(), &grpc_health_v1.HealthCheckRequest{
|
||||||
|
Service: r.URL.Query().Get("service"),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
s.errorHandler(r.Context(), s, outboundMarshaler, w, r, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
|
||||||
|
if resp.GetStatus() != grpc_health_v1.HealthCheckResponse_SERVING {
|
||||||
|
var err error
|
||||||
|
switch resp.GetStatus() {
|
||||||
|
case grpc_health_v1.HealthCheckResponse_NOT_SERVING, grpc_health_v1.HealthCheckResponse_UNKNOWN:
|
||||||
|
err = status.Error(codes.Unavailable, resp.String())
|
||||||
|
case grpc_health_v1.HealthCheckResponse_SERVICE_UNKNOWN:
|
||||||
|
err = status.Error(codes.NotFound, resp.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
s.errorHandler(r.Context(), s, outboundMarshaler, w, r, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_ = outboundMarshaler.NewEncoder(w).Encode(resp)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithHealthzEndpoint returns a ServeMuxOption that will add a /healthz endpoint to the created ServeMux.
|
||||||
|
//
|
||||||
|
// See WithHealthEndpointAt for the general implementation.
|
||||||
|
func WithHealthzEndpoint(healthCheckClient grpc_health_v1.HealthClient) ServeMuxOption {
|
||||||
|
return WithHealthEndpointAt(healthCheckClient, "/healthz")
|
||||||
|
}
|
||||||
|
|
||||||
// NewServeMux returns a new ServeMux whose internal mapping is empty.
|
// NewServeMux returns a new ServeMux whose internal mapping is empty.
|
||||||
func NewServeMux(opts ...ServeMuxOption) *ServeMux {
|
func NewServeMux(opts ...ServeMuxOption) *ServeMux {
|
||||||
serveMux := &ServeMux{
|
serveMux := &ServeMux{
|
||||||
@ -229,7 +306,7 @@ func (s *ServeMux) HandlePath(meth string, pathPattern string, h HandlerFunc) er
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServeHTTP dispatches the request to the first handler whose pattern matches to r.Method and r.Path.
|
// ServeHTTP dispatches the request to the first handler whose pattern matches to r.Method and r.URL.Path.
|
||||||
func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
||||||
@ -245,7 +322,16 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
path = r.URL.RawPath
|
path = r.URL.RawPath
|
||||||
}
|
}
|
||||||
|
|
||||||
components := strings.Split(path[1:], "/")
|
var components []string
|
||||||
|
// since in UnescapeModeLegacy, the URL will already have been fully unescaped, if we also split on "%2F"
|
||||||
|
// in this escaping mode we would be double unescaping but in UnescapingModeAllCharacters, we still do as the
|
||||||
|
// path is the RawPath (i.e. unescaped). That does mean that the behavior of this function will change its default
|
||||||
|
// behavior when the UnescapingModeDefault gets changed from UnescapingModeLegacy to UnescapingModeAllExceptReserved
|
||||||
|
if s.unescapingMode == UnescapingModeAllCharacters {
|
||||||
|
components = encodedPathSplitter.Split(path[1:], -1)
|
||||||
|
} else {
|
||||||
|
components = strings.Split(path[1:], "/")
|
||||||
|
}
|
||||||
|
|
||||||
if override := r.Header.Get("X-HTTP-Method-Override"); override != "" && s.isPathLengthFallback(r) {
|
if override := r.Header.Get("X-HTTP-Method-Override"); override != "" && s.isPathLengthFallback(r) {
|
||||||
r.Method = strings.ToUpper(override)
|
r.Method = strings.ToUpper(override)
|
||||||
|
|||||||
37
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.go
generated
vendored
37
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.go
generated
vendored
@ -1,7 +1,6 @@
|
|||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/base64"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
@ -13,17 +12,19 @@ import (
|
|||||||
"github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
|
"github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
|
||||||
"google.golang.org/genproto/protobuf/field_mask"
|
"google.golang.org/genproto/protobuf/field_mask"
|
||||||
"google.golang.org/grpc/grpclog"
|
"google.golang.org/grpc/grpclog"
|
||||||
|
"google.golang.org/protobuf/encoding/protojson"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
"google.golang.org/protobuf/reflect/protoreflect"
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
"google.golang.org/protobuf/reflect/protoregistry"
|
"google.golang.org/protobuf/reflect/protoregistry"
|
||||||
"google.golang.org/protobuf/types/known/durationpb"
|
"google.golang.org/protobuf/types/known/durationpb"
|
||||||
|
"google.golang.org/protobuf/types/known/structpb"
|
||||||
"google.golang.org/protobuf/types/known/timestamppb"
|
"google.golang.org/protobuf/types/known/timestamppb"
|
||||||
"google.golang.org/protobuf/types/known/wrapperspb"
|
"google.golang.org/protobuf/types/known/wrapperspb"
|
||||||
)
|
)
|
||||||
|
|
||||||
var valuesKeyRegexp = regexp.MustCompile(`^(.*)\[(.*)\]$`)
|
var valuesKeyRegexp = regexp.MustCompile(`^(.*)\[(.*)\]$`)
|
||||||
|
|
||||||
var currentQueryParser QueryParameterParser = &defaultQueryParser{}
|
var currentQueryParser QueryParameterParser = &DefaultQueryParser{}
|
||||||
|
|
||||||
// QueryParameterParser defines interface for all query parameter parsers
|
// QueryParameterParser defines interface for all query parameter parsers
|
||||||
type QueryParameterParser interface {
|
type QueryParameterParser interface {
|
||||||
@ -36,11 +37,15 @@ func PopulateQueryParameters(msg proto.Message, values url.Values, filter *utili
|
|||||||
return currentQueryParser.Parse(msg, values, filter)
|
return currentQueryParser.Parse(msg, values, filter)
|
||||||
}
|
}
|
||||||
|
|
||||||
type defaultQueryParser struct{}
|
// DefaultQueryParser is a QueryParameterParser which implements the default
|
||||||
|
// query parameters parsing behavior.
|
||||||
|
//
|
||||||
|
// See https://github.com/grpc-ecosystem/grpc-gateway/issues/2632 for more context.
|
||||||
|
type DefaultQueryParser struct{}
|
||||||
|
|
||||||
// Parse populates "values" into "msg".
|
// Parse populates "values" into "msg".
|
||||||
// A value is ignored if its key starts with one of the elements in "filter".
|
// A value is ignored if its key starts with one of the elements in "filter".
|
||||||
func (*defaultQueryParser) Parse(msg proto.Message, values url.Values, filter *utilities.DoubleArray) error {
|
func (*DefaultQueryParser) Parse(msg proto.Message, values url.Values, filter *utilities.DoubleArray) error {
|
||||||
for key, values := range values {
|
for key, values := range values {
|
||||||
match := valuesKeyRegexp.FindStringSubmatch(key)
|
match := valuesKeyRegexp.FindStringSubmatch(key)
|
||||||
if len(match) == 3 {
|
if len(match) == 3 {
|
||||||
@ -234,7 +239,7 @@ func parseField(fieldDescriptor protoreflect.FieldDescriptor, value string) (pro
|
|||||||
case protoreflect.StringKind:
|
case protoreflect.StringKind:
|
||||||
return protoreflect.ValueOfString(value), nil
|
return protoreflect.ValueOfString(value), nil
|
||||||
case protoreflect.BytesKind:
|
case protoreflect.BytesKind:
|
||||||
v, err := base64.URLEncoding.DecodeString(value)
|
v, err := Bytes(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return protoreflect.Value{}, err
|
return protoreflect.Value{}, err
|
||||||
}
|
}
|
||||||
@ -250,18 +255,12 @@ func parseMessage(msgDescriptor protoreflect.MessageDescriptor, value string) (p
|
|||||||
var msg proto.Message
|
var msg proto.Message
|
||||||
switch msgDescriptor.FullName() {
|
switch msgDescriptor.FullName() {
|
||||||
case "google.protobuf.Timestamp":
|
case "google.protobuf.Timestamp":
|
||||||
if value == "null" {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
t, err := time.Parse(time.RFC3339Nano, value)
|
t, err := time.Parse(time.RFC3339Nano, value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return protoreflect.Value{}, err
|
return protoreflect.Value{}, err
|
||||||
}
|
}
|
||||||
msg = timestamppb.New(t)
|
msg = timestamppb.New(t)
|
||||||
case "google.protobuf.Duration":
|
case "google.protobuf.Duration":
|
||||||
if value == "null" {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
d, err := time.ParseDuration(value)
|
d, err := time.ParseDuration(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return protoreflect.Value{}, err
|
return protoreflect.Value{}, err
|
||||||
@ -312,7 +311,7 @@ func parseMessage(msgDescriptor protoreflect.MessageDescriptor, value string) (p
|
|||||||
case "google.protobuf.StringValue":
|
case "google.protobuf.StringValue":
|
||||||
msg = &wrapperspb.StringValue{Value: value}
|
msg = &wrapperspb.StringValue{Value: value}
|
||||||
case "google.protobuf.BytesValue":
|
case "google.protobuf.BytesValue":
|
||||||
v, err := base64.URLEncoding.DecodeString(value)
|
v, err := Bytes(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return protoreflect.Value{}, err
|
return protoreflect.Value{}, err
|
||||||
}
|
}
|
||||||
@ -321,6 +320,20 @@ func parseMessage(msgDescriptor protoreflect.MessageDescriptor, value string) (p
|
|||||||
fm := &field_mask.FieldMask{}
|
fm := &field_mask.FieldMask{}
|
||||||
fm.Paths = append(fm.Paths, strings.Split(value, ",")...)
|
fm.Paths = append(fm.Paths, strings.Split(value, ",")...)
|
||||||
msg = fm
|
msg = fm
|
||||||
|
case "google.protobuf.Value":
|
||||||
|
var v structpb.Value
|
||||||
|
err := protojson.Unmarshal([]byte(value), &v)
|
||||||
|
if err != nil {
|
||||||
|
return protoreflect.Value{}, err
|
||||||
|
}
|
||||||
|
msg = &v
|
||||||
|
case "google.protobuf.Struct":
|
||||||
|
var v structpb.Struct
|
||||||
|
err := protojson.Unmarshal([]byte(value), &v)
|
||||||
|
if err != nil {
|
||||||
|
return protoreflect.Value{}, err
|
||||||
|
}
|
||||||
|
msg = &v
|
||||||
default:
|
default:
|
||||||
return protoreflect.Value{}, fmt.Errorf("unsupported message type: %q", string(msgDescriptor.FullName()))
|
return protoreflect.Value{}, fmt.Errorf("unsupported message type: %q", string(msgDescriptor.FullName()))
|
||||||
}
|
}
|
||||||
|
|||||||
6
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/BUILD.bazel
generated
vendored
6
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/BUILD.bazel
generated
vendored
@ -8,6 +8,7 @@ go_library(
|
|||||||
"doc.go",
|
"doc.go",
|
||||||
"pattern.go",
|
"pattern.go",
|
||||||
"readerfactory.go",
|
"readerfactory.go",
|
||||||
|
"string_array_flag.go",
|
||||||
"trie.go",
|
"trie.go",
|
||||||
],
|
],
|
||||||
importpath = "github.com/grpc-ecosystem/grpc-gateway/v2/utilities",
|
importpath = "github.com/grpc-ecosystem/grpc-gateway/v2/utilities",
|
||||||
@ -16,7 +17,10 @@ go_library(
|
|||||||
go_test(
|
go_test(
|
||||||
name = "utilities_test",
|
name = "utilities_test",
|
||||||
size = "small",
|
size = "small",
|
||||||
srcs = ["trie_test.go"],
|
srcs = [
|
||||||
|
"string_array_flag_test.go",
|
||||||
|
"trie_test.go",
|
||||||
|
],
|
||||||
deps = [":utilities"],
|
deps = [":utilities"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
33
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.go
generated
vendored
Normal file
33
vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.go
generated
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package utilities
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// flagInterface is an cut down interface to `flag`
|
||||||
|
type flagInterface interface {
|
||||||
|
Var(value flag.Value, name string, usage string)
|
||||||
|
}
|
||||||
|
|
||||||
|
// StringArrayFlag defines a flag with the specified name and usage string.
|
||||||
|
// The return value is the address of a `StringArrayFlags` variable that stores the repeated values of the flag.
|
||||||
|
func StringArrayFlag(f flagInterface, name string, usage string) *StringArrayFlags {
|
||||||
|
value := &StringArrayFlags{}
|
||||||
|
f.Var(value, name, usage)
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
// StringArrayFlags is a wrapper of `[]string` to provider an interface for `flag.Var`
|
||||||
|
type StringArrayFlags []string
|
||||||
|
|
||||||
|
// String returns a string representation of `StringArrayFlags`
|
||||||
|
func (i *StringArrayFlags) String() string {
|
||||||
|
return strings.Join(*i, ",")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set appends a value to `StringArrayFlags`
|
||||||
|
func (i *StringArrayFlags) Set(value string) error {
|
||||||
|
*i = append(*i, value)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
308
vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
generated
vendored
Normal file
308
vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
generated
vendored
Normal file
@ -0,0 +1,308 @@
|
|||||||
|
// Copyright 2015 The gRPC Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// The canonical version of this proto can be found at
|
||||||
|
// https://github.com/grpc/grpc-proto/blob/master/grpc/health/v1/health.proto
|
||||||
|
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.31.0
|
||||||
|
// protoc v4.22.0
|
||||||
|
// source: grpc/health/v1/health.proto
|
||||||
|
|
||||||
|
package grpc_health_v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
type HealthCheckResponse_ServingStatus int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
HealthCheckResponse_UNKNOWN HealthCheckResponse_ServingStatus = 0
|
||||||
|
HealthCheckResponse_SERVING HealthCheckResponse_ServingStatus = 1
|
||||||
|
HealthCheckResponse_NOT_SERVING HealthCheckResponse_ServingStatus = 2
|
||||||
|
HealthCheckResponse_SERVICE_UNKNOWN HealthCheckResponse_ServingStatus = 3 // Used only by the Watch method.
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for HealthCheckResponse_ServingStatus.
|
||||||
|
var (
|
||||||
|
HealthCheckResponse_ServingStatus_name = map[int32]string{
|
||||||
|
0: "UNKNOWN",
|
||||||
|
1: "SERVING",
|
||||||
|
2: "NOT_SERVING",
|
||||||
|
3: "SERVICE_UNKNOWN",
|
||||||
|
}
|
||||||
|
HealthCheckResponse_ServingStatus_value = map[string]int32{
|
||||||
|
"UNKNOWN": 0,
|
||||||
|
"SERVING": 1,
|
||||||
|
"NOT_SERVING": 2,
|
||||||
|
"SERVICE_UNKNOWN": 3,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x HealthCheckResponse_ServingStatus) Enum() *HealthCheckResponse_ServingStatus {
|
||||||
|
p := new(HealthCheckResponse_ServingStatus)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x HealthCheckResponse_ServingStatus) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (HealthCheckResponse_ServingStatus) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_grpc_health_v1_health_proto_enumTypes[0].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (HealthCheckResponse_ServingStatus) Type() protoreflect.EnumType {
|
||||||
|
return &file_grpc_health_v1_health_proto_enumTypes[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x HealthCheckResponse_ServingStatus) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use HealthCheckResponse_ServingStatus.Descriptor instead.
|
||||||
|
func (HealthCheckResponse_ServingStatus) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_grpc_health_v1_health_proto_rawDescGZIP(), []int{1, 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
type HealthCheckRequest struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HealthCheckRequest) Reset() {
|
||||||
|
*x = HealthCheckRequest{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_grpc_health_v1_health_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HealthCheckRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*HealthCheckRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_grpc_health_v1_health_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*HealthCheckRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_grpc_health_v1_health_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HealthCheckRequest) GetService() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Service
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type HealthCheckResponse struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Status HealthCheckResponse_ServingStatus `protobuf:"varint,1,opt,name=status,proto3,enum=grpc.health.v1.HealthCheckResponse_ServingStatus" json:"status,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HealthCheckResponse) Reset() {
|
||||||
|
*x = HealthCheckResponse{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_grpc_health_v1_health_proto_msgTypes[1]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HealthCheckResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*HealthCheckResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_grpc_health_v1_health_proto_msgTypes[1]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use HealthCheckResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*HealthCheckResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_grpc_health_v1_health_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *HealthCheckResponse) GetStatus() HealthCheckResponse_ServingStatus {
|
||||||
|
if x != nil {
|
||||||
|
return x.Status
|
||||||
|
}
|
||||||
|
return HealthCheckResponse_UNKNOWN
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_grpc_health_v1_health_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_grpc_health_v1_health_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x1b, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2f, 0x76, 0x31,
|
||||||
|
0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x67,
|
||||||
|
0x72, 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x22, 0x2e, 0x0a,
|
||||||
|
0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
|
||||||
|
0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01,
|
||||||
|
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xb1, 0x01,
|
||||||
|
0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73,
|
||||||
|
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
|
||||||
|
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61,
|
||||||
|
0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
|
||||||
|
0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69,
|
||||||
|
0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||||
|
0x22, 0x4f, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75,
|
||||||
|
0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b,
|
||||||
|
0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e,
|
||||||
|
0x4f, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f,
|
||||||
|
0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
|
||||||
|
0x03, 0x32, 0xae, 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x50, 0x0a, 0x05,
|
||||||
|
0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61,
|
||||||
|
0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
|
||||||
|
0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63,
|
||||||
|
0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74,
|
||||||
|
0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52,
|
||||||
|
0x0a, 0x05, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68,
|
||||||
|
0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43,
|
||||||
|
0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72,
|
||||||
|
0x70, 0x63, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61,
|
||||||
|
0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
||||||
|
0x30, 0x01, 0x42, 0x61, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65,
|
||||||
|
0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50,
|
||||||
|
0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
|
||||||
|
0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x68,
|
||||||
|
0x65, 0x61, 0x6c, 0x74, 0x68, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74,
|
||||||
|
0x68, 0x5f, 0x76, 0x31, 0xaa, 0x02, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x65, 0x61, 0x6c,
|
||||||
|
0x74, 0x68, 0x2e, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_grpc_health_v1_health_proto_rawDescOnce sync.Once
|
||||||
|
file_grpc_health_v1_health_proto_rawDescData = file_grpc_health_v1_health_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_grpc_health_v1_health_proto_rawDescGZIP() []byte {
|
||||||
|
file_grpc_health_v1_health_proto_rawDescOnce.Do(func() {
|
||||||
|
file_grpc_health_v1_health_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_health_v1_health_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_grpc_health_v1_health_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_grpc_health_v1_health_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||||
|
var file_grpc_health_v1_health_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
||||||
|
var file_grpc_health_v1_health_proto_goTypes = []interface{}{
|
||||||
|
(HealthCheckResponse_ServingStatus)(0), // 0: grpc.health.v1.HealthCheckResponse.ServingStatus
|
||||||
|
(*HealthCheckRequest)(nil), // 1: grpc.health.v1.HealthCheckRequest
|
||||||
|
(*HealthCheckResponse)(nil), // 2: grpc.health.v1.HealthCheckResponse
|
||||||
|
}
|
||||||
|
var file_grpc_health_v1_health_proto_depIdxs = []int32{
|
||||||
|
0, // 0: grpc.health.v1.HealthCheckResponse.status:type_name -> grpc.health.v1.HealthCheckResponse.ServingStatus
|
||||||
|
1, // 1: grpc.health.v1.Health.Check:input_type -> grpc.health.v1.HealthCheckRequest
|
||||||
|
1, // 2: grpc.health.v1.Health.Watch:input_type -> grpc.health.v1.HealthCheckRequest
|
||||||
|
2, // 3: grpc.health.v1.Health.Check:output_type -> grpc.health.v1.HealthCheckResponse
|
||||||
|
2, // 4: grpc.health.v1.Health.Watch:output_type -> grpc.health.v1.HealthCheckResponse
|
||||||
|
3, // [3:5] is the sub-list for method output_type
|
||||||
|
1, // [1:3] is the sub-list for method input_type
|
||||||
|
1, // [1:1] is the sub-list for extension type_name
|
||||||
|
1, // [1:1] is the sub-list for extension extendee
|
||||||
|
0, // [0:1] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_grpc_health_v1_health_proto_init() }
|
||||||
|
func file_grpc_health_v1_health_proto_init() {
|
||||||
|
if File_grpc_health_v1_health_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_grpc_health_v1_health_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*HealthCheckRequest); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_grpc_health_v1_health_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*HealthCheckResponse); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_grpc_health_v1_health_proto_rawDesc,
|
||||||
|
NumEnums: 1,
|
||||||
|
NumMessages: 2,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 1,
|
||||||
|
},
|
||||||
|
GoTypes: file_grpc_health_v1_health_proto_goTypes,
|
||||||
|
DependencyIndexes: file_grpc_health_v1_health_proto_depIdxs,
|
||||||
|
EnumInfos: file_grpc_health_v1_health_proto_enumTypes,
|
||||||
|
MessageInfos: file_grpc_health_v1_health_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_grpc_health_v1_health_proto = out.File
|
||||||
|
file_grpc_health_v1_health_proto_rawDesc = nil
|
||||||
|
file_grpc_health_v1_health_proto_goTypes = nil
|
||||||
|
file_grpc_health_v1_health_proto_depIdxs = nil
|
||||||
|
}
|
||||||
237
vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go
generated
vendored
Normal file
237
vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go
generated
vendored
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
// Copyright 2015 The gRPC Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
// The canonical version of this proto can be found at
|
||||||
|
// https://github.com/grpc/grpc-proto/blob/master/grpc/health/v1/health.proto
|
||||||
|
|
||||||
|
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// - protoc-gen-go-grpc v1.3.0
|
||||||
|
// - protoc v4.22.0
|
||||||
|
// source: grpc/health/v1/health.proto
|
||||||
|
|
||||||
|
package grpc_health_v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "context"
|
||||||
|
grpc "google.golang.org/grpc"
|
||||||
|
codes "google.golang.org/grpc/codes"
|
||||||
|
status "google.golang.org/grpc/status"
|
||||||
|
)
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the grpc package it is being compiled against.
|
||||||
|
// Requires gRPC-Go v1.32.0 or later.
|
||||||
|
const _ = grpc.SupportPackageIsVersion7
|
||||||
|
|
||||||
|
const (
|
||||||
|
Health_Check_FullMethodName = "/grpc.health.v1.Health/Check"
|
||||||
|
Health_Watch_FullMethodName = "/grpc.health.v1.Health/Watch"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HealthClient is the client API for Health service.
|
||||||
|
//
|
||||||
|
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||||
|
type HealthClient interface {
|
||||||
|
// Check gets the health of the specified service. If the requested service
|
||||||
|
// is unknown, the call will fail with status NOT_FOUND. If the caller does
|
||||||
|
// not specify a service name, the server should respond with its overall
|
||||||
|
// health status.
|
||||||
|
//
|
||||||
|
// Clients should set a deadline when calling Check, and can declare the
|
||||||
|
// server unhealthy if they do not receive a timely response.
|
||||||
|
//
|
||||||
|
// Check implementations should be idempotent and side effect free.
|
||||||
|
Check(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (*HealthCheckResponse, error)
|
||||||
|
// Performs a watch for the serving status of the requested service.
|
||||||
|
// The server will immediately send back a message indicating the current
|
||||||
|
// serving status. It will then subsequently send a new message whenever
|
||||||
|
// the service's serving status changes.
|
||||||
|
//
|
||||||
|
// If the requested service is unknown when the call is received, the
|
||||||
|
// server will send a message setting the serving status to
|
||||||
|
// SERVICE_UNKNOWN but will *not* terminate the call. If at some
|
||||||
|
// future point, the serving status of the service becomes known, the
|
||||||
|
// server will send a new message with the service's serving status.
|
||||||
|
//
|
||||||
|
// If the call terminates with status UNIMPLEMENTED, then clients
|
||||||
|
// should assume this method is not supported and should not retry the
|
||||||
|
// call. If the call terminates with any other status (including OK),
|
||||||
|
// clients should retry the call with appropriate exponential backoff.
|
||||||
|
Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type healthClient struct {
|
||||||
|
cc grpc.ClientConnInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewHealthClient(cc grpc.ClientConnInterface) HealthClient {
|
||||||
|
return &healthClient{cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *healthClient) Check(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (*HealthCheckResponse, error) {
|
||||||
|
out := new(HealthCheckResponse)
|
||||||
|
err := c.cc.Invoke(ctx, Health_Check_FullMethodName, in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error) {
|
||||||
|
stream, err := c.cc.NewStream(ctx, &Health_ServiceDesc.Streams[0], Health_Watch_FullMethodName, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
x := &healthWatchClient{stream}
|
||||||
|
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := x.ClientStream.CloseSend(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type Health_WatchClient interface {
|
||||||
|
Recv() (*HealthCheckResponse, error)
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type healthWatchClient struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *healthWatchClient) Recv() (*HealthCheckResponse, error) {
|
||||||
|
m := new(HealthCheckResponse)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// HealthServer is the server API for Health service.
|
||||||
|
// All implementations should embed UnimplementedHealthServer
|
||||||
|
// for forward compatibility
|
||||||
|
type HealthServer interface {
|
||||||
|
// Check gets the health of the specified service. If the requested service
|
||||||
|
// is unknown, the call will fail with status NOT_FOUND. If the caller does
|
||||||
|
// not specify a service name, the server should respond with its overall
|
||||||
|
// health status.
|
||||||
|
//
|
||||||
|
// Clients should set a deadline when calling Check, and can declare the
|
||||||
|
// server unhealthy if they do not receive a timely response.
|
||||||
|
//
|
||||||
|
// Check implementations should be idempotent and side effect free.
|
||||||
|
Check(context.Context, *HealthCheckRequest) (*HealthCheckResponse, error)
|
||||||
|
// Performs a watch for the serving status of the requested service.
|
||||||
|
// The server will immediately send back a message indicating the current
|
||||||
|
// serving status. It will then subsequently send a new message whenever
|
||||||
|
// the service's serving status changes.
|
||||||
|
//
|
||||||
|
// If the requested service is unknown when the call is received, the
|
||||||
|
// server will send a message setting the serving status to
|
||||||
|
// SERVICE_UNKNOWN but will *not* terminate the call. If at some
|
||||||
|
// future point, the serving status of the service becomes known, the
|
||||||
|
// server will send a new message with the service's serving status.
|
||||||
|
//
|
||||||
|
// If the call terminates with status UNIMPLEMENTED, then clients
|
||||||
|
// should assume this method is not supported and should not retry the
|
||||||
|
// call. If the call terminates with any other status (including OK),
|
||||||
|
// clients should retry the call with appropriate exponential backoff.
|
||||||
|
Watch(*HealthCheckRequest, Health_WatchServer) error
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnimplementedHealthServer should be embedded to have forward compatible implementations.
|
||||||
|
type UnimplementedHealthServer struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (UnimplementedHealthServer) Check(context.Context, *HealthCheckRequest) (*HealthCheckResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method Check not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedHealthServer) Watch(*HealthCheckRequest, Health_WatchServer) error {
|
||||||
|
return status.Errorf(codes.Unimplemented, "method Watch not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnsafeHealthServer may be embedded to opt out of forward compatibility for this service.
|
||||||
|
// Use of this interface is not recommended, as added methods to HealthServer will
|
||||||
|
// result in compilation errors.
|
||||||
|
type UnsafeHealthServer interface {
|
||||||
|
mustEmbedUnimplementedHealthServer()
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterHealthServer(s grpc.ServiceRegistrar, srv HealthServer) {
|
||||||
|
s.RegisterService(&Health_ServiceDesc, srv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _Health_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(HealthCheckRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(HealthServer).Check(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: Health_Check_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(HealthServer).Check(ctx, req.(*HealthCheckRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _Health_Watch_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
|
m := new(HealthCheckRequest)
|
||||||
|
if err := stream.RecvMsg(m); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return srv.(HealthServer).Watch(m, &healthWatchServer{stream})
|
||||||
|
}
|
||||||
|
|
||||||
|
type Health_WatchServer interface {
|
||||||
|
Send(*HealthCheckResponse) error
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type healthWatchServer struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *healthWatchServer) Send(m *HealthCheckResponse) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Health_ServiceDesc is the grpc.ServiceDesc for Health service.
|
||||||
|
// It's only intended for direct use with grpc.RegisterService,
|
||||||
|
// and not to be introspected or modified (even as a copy)
|
||||||
|
var Health_ServiceDesc = grpc.ServiceDesc{
|
||||||
|
ServiceName: "grpc.health.v1.Health",
|
||||||
|
HandlerType: (*HealthServer)(nil),
|
||||||
|
Methods: []grpc.MethodDesc{
|
||||||
|
{
|
||||||
|
MethodName: "Check",
|
||||||
|
Handler: _Health_Check_Handler,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Streams: []grpc.StreamDesc{
|
||||||
|
{
|
||||||
|
StreamName: "Watch",
|
||||||
|
Handler: _Health_Watch_Handler,
|
||||||
|
ServerStreams: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Metadata: "grpc/health/v1/health.proto",
|
||||||
|
}
|
||||||
810
vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go
generated
vendored
Normal file
810
vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go
generated
vendored
Normal file
@ -0,0 +1,810 @@
|
|||||||
|
// Protocol Buffers - Google's data interchange format
|
||||||
|
// Copyright 2008 Google Inc. All rights reserved.
|
||||||
|
// https://developers.google.com/protocol-buffers/
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are
|
||||||
|
// met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
// * Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following disclaimer
|
||||||
|
// in the documentation and/or other materials provided with the
|
||||||
|
// distribution.
|
||||||
|
// * Neither the name of Google Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from
|
||||||
|
// this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// source: google/protobuf/struct.proto
|
||||||
|
|
||||||
|
// Package structpb contains generated types for google/protobuf/struct.proto.
|
||||||
|
//
|
||||||
|
// The messages (i.e., Value, Struct, and ListValue) defined in struct.proto are
|
||||||
|
// used to represent arbitrary JSON. The Value message represents a JSON value,
|
||||||
|
// the Struct message represents a JSON object, and the ListValue message
|
||||||
|
// represents a JSON array. See https://json.org for more information.
|
||||||
|
//
|
||||||
|
// The Value, Struct, and ListValue types have generated MarshalJSON and
|
||||||
|
// UnmarshalJSON methods such that they serialize JSON equivalent to what the
|
||||||
|
// messages themselves represent. Use of these types with the
|
||||||
|
// "google.golang.org/protobuf/encoding/protojson" package
|
||||||
|
// ensures that they will be serialized as their JSON equivalent.
|
||||||
|
//
|
||||||
|
// # Conversion to and from a Go interface
|
||||||
|
//
|
||||||
|
// The standard Go "encoding/json" package has functionality to serialize
|
||||||
|
// arbitrary types to a large degree. The Value.AsInterface, Struct.AsMap, and
|
||||||
|
// ListValue.AsSlice methods can convert the protobuf message representation into
|
||||||
|
// a form represented by interface{}, map[string]interface{}, and []interface{}.
|
||||||
|
// This form can be used with other packages that operate on such data structures
|
||||||
|
// and also directly with the standard json package.
|
||||||
|
//
|
||||||
|
// In order to convert the interface{}, map[string]interface{}, and []interface{}
|
||||||
|
// forms back as Value, Struct, and ListValue messages, use the NewStruct,
|
||||||
|
// NewList, and NewValue constructor functions.
|
||||||
|
//
|
||||||
|
// # Example usage
|
||||||
|
//
|
||||||
|
// Consider the following example JSON object:
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// "firstName": "John",
|
||||||
|
// "lastName": "Smith",
|
||||||
|
// "isAlive": true,
|
||||||
|
// "age": 27,
|
||||||
|
// "address": {
|
||||||
|
// "streetAddress": "21 2nd Street",
|
||||||
|
// "city": "New York",
|
||||||
|
// "state": "NY",
|
||||||
|
// "postalCode": "10021-3100"
|
||||||
|
// },
|
||||||
|
// "phoneNumbers": [
|
||||||
|
// {
|
||||||
|
// "type": "home",
|
||||||
|
// "number": "212 555-1234"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "type": "office",
|
||||||
|
// "number": "646 555-4567"
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "children": [],
|
||||||
|
// "spouse": null
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// To construct a Value message representing the above JSON object:
|
||||||
|
//
|
||||||
|
// m, err := structpb.NewValue(map[string]interface{}{
|
||||||
|
// "firstName": "John",
|
||||||
|
// "lastName": "Smith",
|
||||||
|
// "isAlive": true,
|
||||||
|
// "age": 27,
|
||||||
|
// "address": map[string]interface{}{
|
||||||
|
// "streetAddress": "21 2nd Street",
|
||||||
|
// "city": "New York",
|
||||||
|
// "state": "NY",
|
||||||
|
// "postalCode": "10021-3100",
|
||||||
|
// },
|
||||||
|
// "phoneNumbers": []interface{}{
|
||||||
|
// map[string]interface{}{
|
||||||
|
// "type": "home",
|
||||||
|
// "number": "212 555-1234",
|
||||||
|
// },
|
||||||
|
// map[string]interface{}{
|
||||||
|
// "type": "office",
|
||||||
|
// "number": "646 555-4567",
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// "children": []interface{}{},
|
||||||
|
// "spouse": nil,
|
||||||
|
// })
|
||||||
|
// if err != nil {
|
||||||
|
// ... // handle error
|
||||||
|
// }
|
||||||
|
// ... // make use of m as a *structpb.Value
|
||||||
|
package structpb
|
||||||
|
|
||||||
|
import (
|
||||||
|
base64 "encoding/base64"
|
||||||
|
protojson "google.golang.org/protobuf/encoding/protojson"
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
math "math"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
utf8 "unicode/utf8"
|
||||||
|
)
|
||||||
|
|
||||||
|
// `NullValue` is a singleton enumeration to represent the null value for the
|
||||||
|
// `Value` type union.
|
||||||
|
//
|
||||||
|
// The JSON representation for `NullValue` is JSON `null`.
|
||||||
|
type NullValue int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Null value.
|
||||||
|
NullValue_NULL_VALUE NullValue = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for NullValue.
|
||||||
|
var (
|
||||||
|
NullValue_name = map[int32]string{
|
||||||
|
0: "NULL_VALUE",
|
||||||
|
}
|
||||||
|
NullValue_value = map[string]int32{
|
||||||
|
"NULL_VALUE": 0,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x NullValue) Enum() *NullValue {
|
||||||
|
p := new(NullValue)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x NullValue) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (NullValue) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_google_protobuf_struct_proto_enumTypes[0].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (NullValue) Type() protoreflect.EnumType {
|
||||||
|
return &file_google_protobuf_struct_proto_enumTypes[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x NullValue) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use NullValue.Descriptor instead.
|
||||||
|
func (NullValue) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_google_protobuf_struct_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
// `Struct` represents a structured data value, consisting of fields
|
||||||
|
// which map to dynamically typed values. In some languages, `Struct`
|
||||||
|
// might be supported by a native representation. For example, in
|
||||||
|
// scripting languages like JS a struct is represented as an
|
||||||
|
// object. The details of that representation are described together
|
||||||
|
// with the proto support for the language.
|
||||||
|
//
|
||||||
|
// The JSON representation for `Struct` is JSON object.
|
||||||
|
type Struct struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Unordered map of dynamically typed values.
|
||||||
|
Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewStruct constructs a Struct from a general-purpose Go map.
|
||||||
|
// The map keys must be valid UTF-8.
|
||||||
|
// The map values are converted using NewValue.
|
||||||
|
func NewStruct(v map[string]interface{}) (*Struct, error) {
|
||||||
|
x := &Struct{Fields: make(map[string]*Value, len(v))}
|
||||||
|
for k, v := range v {
|
||||||
|
if !utf8.ValidString(k) {
|
||||||
|
return nil, protoimpl.X.NewError("invalid UTF-8 in string: %q", k)
|
||||||
|
}
|
||||||
|
var err error
|
||||||
|
x.Fields[k], err = NewValue(v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AsMap converts x to a general-purpose Go map.
|
||||||
|
// The map values are converted by calling Value.AsInterface.
|
||||||
|
func (x *Struct) AsMap() map[string]interface{} {
|
||||||
|
f := x.GetFields()
|
||||||
|
vs := make(map[string]interface{}, len(f))
|
||||||
|
for k, v := range f {
|
||||||
|
vs[k] = v.AsInterface()
|
||||||
|
}
|
||||||
|
return vs
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Struct) MarshalJSON() ([]byte, error) {
|
||||||
|
return protojson.Marshal(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Struct) UnmarshalJSON(b []byte) error {
|
||||||
|
return protojson.Unmarshal(b, x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Struct) Reset() {
|
||||||
|
*x = Struct{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_google_protobuf_struct_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Struct) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Struct) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Struct) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_google_protobuf_struct_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Struct.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Struct) Descriptor() ([]byte, []int) {
|
||||||
|
return file_google_protobuf_struct_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Struct) GetFields() map[string]*Value {
|
||||||
|
if x != nil {
|
||||||
|
return x.Fields
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// `Value` represents a dynamically typed value which can be either
|
||||||
|
// null, a number, a string, a boolean, a recursive struct value, or a
|
||||||
|
// list of values. A producer of value is expected to set one of these
|
||||||
|
// variants. Absence of any variant indicates an error.
|
||||||
|
//
|
||||||
|
// The JSON representation for `Value` is JSON value.
|
||||||
|
type Value struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// The kind of value.
|
||||||
|
//
|
||||||
|
// Types that are assignable to Kind:
|
||||||
|
//
|
||||||
|
// *Value_NullValue
|
||||||
|
// *Value_NumberValue
|
||||||
|
// *Value_StringValue
|
||||||
|
// *Value_BoolValue
|
||||||
|
// *Value_StructValue
|
||||||
|
// *Value_ListValue
|
||||||
|
Kind isValue_Kind `protobuf_oneof:"kind"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewValue constructs a Value from a general-purpose Go interface.
|
||||||
|
//
|
||||||
|
// ╔════════════════════════╤════════════════════════════════════════════╗
|
||||||
|
// ║ Go type │ Conversion ║
|
||||||
|
// ╠════════════════════════╪════════════════════════════════════════════╣
|
||||||
|
// ║ nil │ stored as NullValue ║
|
||||||
|
// ║ bool │ stored as BoolValue ║
|
||||||
|
// ║ int, int32, int64 │ stored as NumberValue ║
|
||||||
|
// ║ uint, uint32, uint64 │ stored as NumberValue ║
|
||||||
|
// ║ float32, float64 │ stored as NumberValue ║
|
||||||
|
// ║ string │ stored as StringValue; must be valid UTF-8 ║
|
||||||
|
// ║ []byte │ stored as StringValue; base64-encoded ║
|
||||||
|
// ║ map[string]interface{} │ stored as StructValue ║
|
||||||
|
// ║ []interface{} │ stored as ListValue ║
|
||||||
|
// ╚════════════════════════╧════════════════════════════════════════════╝
|
||||||
|
//
|
||||||
|
// When converting an int64 or uint64 to a NumberValue, numeric precision loss
|
||||||
|
// is possible since they are stored as a float64.
|
||||||
|
func NewValue(v interface{}) (*Value, error) {
|
||||||
|
switch v := v.(type) {
|
||||||
|
case nil:
|
||||||
|
return NewNullValue(), nil
|
||||||
|
case bool:
|
||||||
|
return NewBoolValue(v), nil
|
||||||
|
case int:
|
||||||
|
return NewNumberValue(float64(v)), nil
|
||||||
|
case int32:
|
||||||
|
return NewNumberValue(float64(v)), nil
|
||||||
|
case int64:
|
||||||
|
return NewNumberValue(float64(v)), nil
|
||||||
|
case uint:
|
||||||
|
return NewNumberValue(float64(v)), nil
|
||||||
|
case uint32:
|
||||||
|
return NewNumberValue(float64(v)), nil
|
||||||
|
case uint64:
|
||||||
|
return NewNumberValue(float64(v)), nil
|
||||||
|
case float32:
|
||||||
|
return NewNumberValue(float64(v)), nil
|
||||||
|
case float64:
|
||||||
|
return NewNumberValue(float64(v)), nil
|
||||||
|
case string:
|
||||||
|
if !utf8.ValidString(v) {
|
||||||
|
return nil, protoimpl.X.NewError("invalid UTF-8 in string: %q", v)
|
||||||
|
}
|
||||||
|
return NewStringValue(v), nil
|
||||||
|
case []byte:
|
||||||
|
s := base64.StdEncoding.EncodeToString(v)
|
||||||
|
return NewStringValue(s), nil
|
||||||
|
case map[string]interface{}:
|
||||||
|
v2, err := NewStruct(v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return NewStructValue(v2), nil
|
||||||
|
case []interface{}:
|
||||||
|
v2, err := NewList(v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return NewListValue(v2), nil
|
||||||
|
default:
|
||||||
|
return nil, protoimpl.X.NewError("invalid type: %T", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewNullValue constructs a new null Value.
|
||||||
|
func NewNullValue() *Value {
|
||||||
|
return &Value{Kind: &Value_NullValue{NullValue: NullValue_NULL_VALUE}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewBoolValue constructs a new boolean Value.
|
||||||
|
func NewBoolValue(v bool) *Value {
|
||||||
|
return &Value{Kind: &Value_BoolValue{BoolValue: v}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewNumberValue constructs a new number Value.
|
||||||
|
func NewNumberValue(v float64) *Value {
|
||||||
|
return &Value{Kind: &Value_NumberValue{NumberValue: v}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewStringValue constructs a new string Value.
|
||||||
|
func NewStringValue(v string) *Value {
|
||||||
|
return &Value{Kind: &Value_StringValue{StringValue: v}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewStructValue constructs a new struct Value.
|
||||||
|
func NewStructValue(v *Struct) *Value {
|
||||||
|
return &Value{Kind: &Value_StructValue{StructValue: v}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewListValue constructs a new list Value.
|
||||||
|
func NewListValue(v *ListValue) *Value {
|
||||||
|
return &Value{Kind: &Value_ListValue{ListValue: v}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// AsInterface converts x to a general-purpose Go interface.
|
||||||
|
//
|
||||||
|
// Calling Value.MarshalJSON and "encoding/json".Marshal on this output produce
|
||||||
|
// semantically equivalent JSON (assuming no errors occur).
|
||||||
|
//
|
||||||
|
// Floating-point values (i.e., "NaN", "Infinity", and "-Infinity") are
|
||||||
|
// converted as strings to remain compatible with MarshalJSON.
|
||||||
|
func (x *Value) AsInterface() interface{} {
|
||||||
|
switch v := x.GetKind().(type) {
|
||||||
|
case *Value_NumberValue:
|
||||||
|
if v != nil {
|
||||||
|
switch {
|
||||||
|
case math.IsNaN(v.NumberValue):
|
||||||
|
return "NaN"
|
||||||
|
case math.IsInf(v.NumberValue, +1):
|
||||||
|
return "Infinity"
|
||||||
|
case math.IsInf(v.NumberValue, -1):
|
||||||
|
return "-Infinity"
|
||||||
|
default:
|
||||||
|
return v.NumberValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case *Value_StringValue:
|
||||||
|
if v != nil {
|
||||||
|
return v.StringValue
|
||||||
|
}
|
||||||
|
case *Value_BoolValue:
|
||||||
|
if v != nil {
|
||||||
|
return v.BoolValue
|
||||||
|
}
|
||||||
|
case *Value_StructValue:
|
||||||
|
if v != nil {
|
||||||
|
return v.StructValue.AsMap()
|
||||||
|
}
|
||||||
|
case *Value_ListValue:
|
||||||
|
if v != nil {
|
||||||
|
return v.ListValue.AsSlice()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) MarshalJSON() ([]byte, error) {
|
||||||
|
return protojson.Marshal(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) UnmarshalJSON(b []byte) error {
|
||||||
|
return protojson.Unmarshal(b, x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) Reset() {
|
||||||
|
*x = Value{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_google_protobuf_struct_proto_msgTypes[1]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Value) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Value) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_google_protobuf_struct_proto_msgTypes[1]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Value.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Value) Descriptor() ([]byte, []int) {
|
||||||
|
return file_google_protobuf_struct_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Value) GetKind() isValue_Kind {
|
||||||
|
if m != nil {
|
||||||
|
return m.Kind
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) GetNullValue() NullValue {
|
||||||
|
if x, ok := x.GetKind().(*Value_NullValue); ok {
|
||||||
|
return x.NullValue
|
||||||
|
}
|
||||||
|
return NullValue_NULL_VALUE
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) GetNumberValue() float64 {
|
||||||
|
if x, ok := x.GetKind().(*Value_NumberValue); ok {
|
||||||
|
return x.NumberValue
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) GetStringValue() string {
|
||||||
|
if x, ok := x.GetKind().(*Value_StringValue); ok {
|
||||||
|
return x.StringValue
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) GetBoolValue() bool {
|
||||||
|
if x, ok := x.GetKind().(*Value_BoolValue); ok {
|
||||||
|
return x.BoolValue
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) GetStructValue() *Struct {
|
||||||
|
if x, ok := x.GetKind().(*Value_StructValue); ok {
|
||||||
|
return x.StructValue
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Value) GetListValue() *ListValue {
|
||||||
|
if x, ok := x.GetKind().(*Value_ListValue); ok {
|
||||||
|
return x.ListValue
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type isValue_Kind interface {
|
||||||
|
isValue_Kind()
|
||||||
|
}
|
||||||
|
|
||||||
|
type Value_NullValue struct {
|
||||||
|
// Represents a null value.
|
||||||
|
NullValue NullValue `protobuf:"varint,1,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Value_NumberValue struct {
|
||||||
|
// Represents a double value.
|
||||||
|
NumberValue float64 `protobuf:"fixed64,2,opt,name=number_value,json=numberValue,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Value_StringValue struct {
|
||||||
|
// Represents a string value.
|
||||||
|
StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Value_BoolValue struct {
|
||||||
|
// Represents a boolean value.
|
||||||
|
BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Value_StructValue struct {
|
||||||
|
// Represents a structured value.
|
||||||
|
StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Value_ListValue struct {
|
||||||
|
// Represents a repeated `Value`.
|
||||||
|
ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Value_NullValue) isValue_Kind() {}
|
||||||
|
|
||||||
|
func (*Value_NumberValue) isValue_Kind() {}
|
||||||
|
|
||||||
|
func (*Value_StringValue) isValue_Kind() {}
|
||||||
|
|
||||||
|
func (*Value_BoolValue) isValue_Kind() {}
|
||||||
|
|
||||||
|
func (*Value_StructValue) isValue_Kind() {}
|
||||||
|
|
||||||
|
func (*Value_ListValue) isValue_Kind() {}
|
||||||
|
|
||||||
|
// `ListValue` is a wrapper around a repeated field of values.
|
||||||
|
//
|
||||||
|
// The JSON representation for `ListValue` is JSON array.
|
||||||
|
type ListValue struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Repeated field of dynamically typed values.
|
||||||
|
Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewList constructs a ListValue from a general-purpose Go slice.
|
||||||
|
// The slice elements are converted using NewValue.
|
||||||
|
func NewList(v []interface{}) (*ListValue, error) {
|
||||||
|
x := &ListValue{Values: make([]*Value, len(v))}
|
||||||
|
for i, v := range v {
|
||||||
|
var err error
|
||||||
|
x.Values[i], err = NewValue(v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AsSlice converts x to a general-purpose Go slice.
|
||||||
|
// The slice elements are converted by calling Value.AsInterface.
|
||||||
|
func (x *ListValue) AsSlice() []interface{} {
|
||||||
|
vals := x.GetValues()
|
||||||
|
vs := make([]interface{}, len(vals))
|
||||||
|
for i, v := range vals {
|
||||||
|
vs[i] = v.AsInterface()
|
||||||
|
}
|
||||||
|
return vs
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListValue) MarshalJSON() ([]byte, error) {
|
||||||
|
return protojson.Marshal(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListValue) UnmarshalJSON(b []byte) error {
|
||||||
|
return protojson.Unmarshal(b, x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListValue) Reset() {
|
||||||
|
*x = ListValue{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_google_protobuf_struct_proto_msgTypes[2]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListValue) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ListValue) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ListValue) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_google_protobuf_struct_proto_msgTypes[2]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ListValue.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ListValue) Descriptor() ([]byte, []int) {
|
||||||
|
return file_google_protobuf_struct_proto_rawDescGZIP(), []int{2}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListValue) GetValues() []*Value {
|
||||||
|
if x != nil {
|
||||||
|
return x.Values
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_google_protobuf_struct_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_google_protobuf_struct_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
|
||||||
|
0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f,
|
||||||
|
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22,
|
||||||
|
0x98, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x66, 0x69,
|
||||||
|
0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f,
|
||||||
|
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72,
|
||||||
|
0x75, 0x63, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
|
||||||
|
0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x51, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64,
|
||||||
|
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
|
||||||
|
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
|
||||||
|
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
||||||
|
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
|
||||||
|
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb2, 0x02, 0x0a, 0x05, 0x56,
|
||||||
|
0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c,
|
||||||
|
0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||||
|
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56,
|
||||||
|
0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75,
|
||||||
|
0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75,
|
||||||
|
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x62, 0x65,
|
||||||
|
0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
|
||||||
|
0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b,
|
||||||
|
0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62,
|
||||||
|
0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48,
|
||||||
|
0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, 0x0a, 0x0c,
|
||||||
|
0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01,
|
||||||
|
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||||
|
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73,
|
||||||
|
0x74, 0x72, 0x75, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6c, 0x69,
|
||||||
|
0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
|
||||||
|
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
||||||
|
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x69,
|
||||||
|
0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22,
|
||||||
|
0x3b, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x06,
|
||||||
|
0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67,
|
||||||
|
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56,
|
||||||
|
0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0x1b, 0x0a, 0x09,
|
||||||
|
0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x55, 0x4c,
|
||||||
|
0x4c, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x42, 0x7f, 0x0a, 0x13, 0x63, 0x6f, 0x6d,
|
||||||
|
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
||||||
|
0x42, 0x0b, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
|
||||||
|
0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
|
||||||
|
0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65,
|
||||||
|
0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x70, 0x62,
|
||||||
|
0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67,
|
||||||
|
0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c,
|
||||||
|
0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
|
||||||
|
0x6f, 0x33,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_google_protobuf_struct_proto_rawDescOnce sync.Once
|
||||||
|
file_google_protobuf_struct_proto_rawDescData = file_google_protobuf_struct_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_google_protobuf_struct_proto_rawDescGZIP() []byte {
|
||||||
|
file_google_protobuf_struct_proto_rawDescOnce.Do(func() {
|
||||||
|
file_google_protobuf_struct_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_struct_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_google_protobuf_struct_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_google_protobuf_struct_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||||
|
var file_google_protobuf_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
|
||||||
|
var file_google_protobuf_struct_proto_goTypes = []interface{}{
|
||||||
|
(NullValue)(0), // 0: google.protobuf.NullValue
|
||||||
|
(*Struct)(nil), // 1: google.protobuf.Struct
|
||||||
|
(*Value)(nil), // 2: google.protobuf.Value
|
||||||
|
(*ListValue)(nil), // 3: google.protobuf.ListValue
|
||||||
|
nil, // 4: google.protobuf.Struct.FieldsEntry
|
||||||
|
}
|
||||||
|
var file_google_protobuf_struct_proto_depIdxs = []int32{
|
||||||
|
4, // 0: google.protobuf.Struct.fields:type_name -> google.protobuf.Struct.FieldsEntry
|
||||||
|
0, // 1: google.protobuf.Value.null_value:type_name -> google.protobuf.NullValue
|
||||||
|
1, // 2: google.protobuf.Value.struct_value:type_name -> google.protobuf.Struct
|
||||||
|
3, // 3: google.protobuf.Value.list_value:type_name -> google.protobuf.ListValue
|
||||||
|
2, // 4: google.protobuf.ListValue.values:type_name -> google.protobuf.Value
|
||||||
|
2, // 5: google.protobuf.Struct.FieldsEntry.value:type_name -> google.protobuf.Value
|
||||||
|
6, // [6:6] is the sub-list for method output_type
|
||||||
|
6, // [6:6] is the sub-list for method input_type
|
||||||
|
6, // [6:6] is the sub-list for extension type_name
|
||||||
|
6, // [6:6] is the sub-list for extension extendee
|
||||||
|
0, // [0:6] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_google_protobuf_struct_proto_init() }
|
||||||
|
func file_google_protobuf_struct_proto_init() {
|
||||||
|
if File_google_protobuf_struct_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_google_protobuf_struct_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*Struct); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_google_protobuf_struct_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*Value); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_google_protobuf_struct_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*ListValue); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_google_protobuf_struct_proto_msgTypes[1].OneofWrappers = []interface{}{
|
||||||
|
(*Value_NullValue)(nil),
|
||||||
|
(*Value_NumberValue)(nil),
|
||||||
|
(*Value_StringValue)(nil),
|
||||||
|
(*Value_BoolValue)(nil),
|
||||||
|
(*Value_StructValue)(nil),
|
||||||
|
(*Value_ListValue)(nil),
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_google_protobuf_struct_proto_rawDesc,
|
||||||
|
NumEnums: 1,
|
||||||
|
NumMessages: 4,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_google_protobuf_struct_proto_goTypes,
|
||||||
|
DependencyIndexes: file_google_protobuf_struct_proto_depIdxs,
|
||||||
|
EnumInfos: file_google_protobuf_struct_proto_enumTypes,
|
||||||
|
MessageInfos: file_google_protobuf_struct_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_google_protobuf_struct_proto = out.File
|
||||||
|
file_google_protobuf_struct_proto_rawDesc = nil
|
||||||
|
file_google_protobuf_struct_proto_goTypes = nil
|
||||||
|
file_google_protobuf_struct_proto_depIdxs = nil
|
||||||
|
}
|
||||||
15
vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go
generated
vendored
15
vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go
generated
vendored
@ -126,14 +126,17 @@ type rudimentaryErrorBackoff struct {
|
|||||||
// OnError will block if it is called more often than the embedded period time.
|
// OnError will block if it is called more often than the embedded period time.
|
||||||
// This will prevent overly tight hot error loops.
|
// This will prevent overly tight hot error loops.
|
||||||
func (r *rudimentaryErrorBackoff) OnError(error) {
|
func (r *rudimentaryErrorBackoff) OnError(error) {
|
||||||
|
now := time.Now() // start the timer before acquiring the lock
|
||||||
r.lastErrorTimeLock.Lock()
|
r.lastErrorTimeLock.Lock()
|
||||||
defer r.lastErrorTimeLock.Unlock()
|
d := now.Sub(r.lastErrorTime)
|
||||||
d := time.Since(r.lastErrorTime)
|
|
||||||
if d < r.minPeriod {
|
|
||||||
// If the time moves backwards for any reason, do nothing
|
|
||||||
time.Sleep(r.minPeriod - d)
|
|
||||||
}
|
|
||||||
r.lastErrorTime = time.Now()
|
r.lastErrorTime = time.Now()
|
||||||
|
r.lastErrorTimeLock.Unlock()
|
||||||
|
|
||||||
|
// Do not sleep with the lock held because that causes all callers of HandleError to block.
|
||||||
|
// We only want the current goroutine to block.
|
||||||
|
// A negative or zero duration causes time.Sleep to return immediately.
|
||||||
|
// If the time moves backwards for any reason, do nothing.
|
||||||
|
time.Sleep(r.minPeriod - d)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCaller returns the caller of the function that calls it.
|
// GetCaller returns the caller of the function that calls it.
|
||||||
|
|||||||
20
vendor/k8s.io/apiserver/pkg/features/kube_features.go
generated
vendored
20
vendor/k8s.io/apiserver/pkg/features/kube_features.go
generated
vendored
@ -177,6 +177,24 @@ const (
|
|||||||
// Enables server-side field validation.
|
// Enables server-side field validation.
|
||||||
ServerSideFieldValidation featuregate.Feature = "ServerSideFieldValidation"
|
ServerSideFieldValidation featuregate.Feature = "ServerSideFieldValidation"
|
||||||
|
|
||||||
|
// owner: @enj
|
||||||
|
// beta: v1.29
|
||||||
|
//
|
||||||
|
// Enables http2 DOS mitigations for unauthenticated clients.
|
||||||
|
//
|
||||||
|
// Some known reasons to disable these mitigations:
|
||||||
|
//
|
||||||
|
// An API server that is fronted by an L7 load balancer that is set up
|
||||||
|
// to mitigate http2 attacks may opt to disable this protection to prevent
|
||||||
|
// unauthenticated clients from disabling connection reuse between the load
|
||||||
|
// balancer and the API server (many incoming connections could share the
|
||||||
|
// same backend connection).
|
||||||
|
//
|
||||||
|
// An API server that is on a private network may opt to disable this
|
||||||
|
// protection to prevent performance regressions for unauthenticated
|
||||||
|
// clients.
|
||||||
|
UnauthenticatedHTTP2DOSMitigation featuregate.Feature = "UnauthenticatedHTTP2DOSMitigation"
|
||||||
|
|
||||||
// owner: @caesarxuchao @roycaihw
|
// owner: @caesarxuchao @roycaihw
|
||||||
// alpha: v1.20
|
// alpha: v1.20
|
||||||
//
|
//
|
||||||
@ -248,5 +266,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
|
|
||||||
StorageVersionHash: {Default: true, PreRelease: featuregate.Beta},
|
StorageVersionHash: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
|
UnauthenticatedHTTP2DOSMitigation: {Default: false, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
WatchBookmark: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
|
WatchBookmark: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
|
||||||
}
|
}
|
||||||
|
|||||||
2
vendor/k8s.io/kubernetes/pkg/features/kube_features.go
generated
vendored
2
vendor/k8s.io/kubernetes/pkg/features/kube_features.go
generated
vendored
@ -1184,6 +1184,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
|
|
||||||
genericfeatures.ServerSideFieldValidation: {Default: true, PreRelease: featuregate.Beta},
|
genericfeatures.ServerSideFieldValidation: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
|
genericfeatures.UnauthenticatedHTTP2DOSMitigation: {Default: false, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
// features that enable backwards compatibility but are scheduled to be removed
|
// features that enable backwards compatibility but are scheduled to be removed
|
||||||
// ...
|
// ...
|
||||||
HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha},
|
HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
|||||||
2
vendor/k8s.io/kubernetes/test/utils/image/manifest.go
generated
vendored
2
vendor/k8s.io/kubernetes/test/utils/image/manifest.go
generated
vendored
@ -241,7 +241,7 @@ func initImageConfigs(list RegistryList) (map[ImageID]Config, map[ImageID]Config
|
|||||||
configs[CudaVectorAdd] = Config{list.PromoterE2eRegistry, "cuda-vector-add", "1.0"}
|
configs[CudaVectorAdd] = Config{list.PromoterE2eRegistry, "cuda-vector-add", "1.0"}
|
||||||
configs[CudaVectorAdd2] = Config{list.PromoterE2eRegistry, "cuda-vector-add", "2.2"}
|
configs[CudaVectorAdd2] = Config{list.PromoterE2eRegistry, "cuda-vector-add", "2.2"}
|
||||||
configs[DistrolessIptables] = Config{list.BuildImageRegistry, "distroless-iptables", "v0.1.2"}
|
configs[DistrolessIptables] = Config{list.BuildImageRegistry, "distroless-iptables", "v0.1.2"}
|
||||||
configs[Etcd] = Config{list.GcEtcdRegistry, "etcd", "3.5.6-0"}
|
configs[Etcd] = Config{list.GcEtcdRegistry, "etcd", "3.5.9-0"}
|
||||||
configs[GlusterDynamicProvisioner] = Config{list.PromoterE2eRegistry, "glusterdynamic-provisioner", "v1.3"}
|
configs[GlusterDynamicProvisioner] = Config{list.PromoterE2eRegistry, "glusterdynamic-provisioner", "v1.3"}
|
||||||
configs[Httpd] = Config{list.PromoterE2eRegistry, "httpd", "2.4.38-4"}
|
configs[Httpd] = Config{list.PromoterE2eRegistry, "httpd", "2.4.38-4"}
|
||||||
configs[HttpdNew] = Config{list.PromoterE2eRegistry, "httpd", "2.4.39-4"}
|
configs[HttpdNew] = Config{list.PromoterE2eRegistry, "httpd", "2.4.39-4"}
|
||||||
|
|||||||
2
vendor/k8s.io/mount-utils/fake_mounter.go
generated
vendored
2
vendor/k8s.io/mount-utils/fake_mounter.go
generated
vendored
@ -218,7 +218,7 @@ func (f *FakeMounter) IsLikelyNotMountPoint(file string) (bool, error) {
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakeMounter) CanSafelySkipMountPointCheck() bool {
|
func (f *FakeMounter) canSafelySkipMountPointCheck() bool {
|
||||||
return f.skipMountPointCheck
|
return f.skipMountPointCheck
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
vendor/k8s.io/mount-utils/mount.go
generated
vendored
4
vendor/k8s.io/mount-utils/mount.go
generated
vendored
@ -65,10 +65,10 @@ type Interface interface {
|
|||||||
// care about such situations, this is a faster alternative to calling List()
|
// care about such situations, this is a faster alternative to calling List()
|
||||||
// and scanning that output.
|
// and scanning that output.
|
||||||
IsLikelyNotMountPoint(file string) (bool, error)
|
IsLikelyNotMountPoint(file string) (bool, error)
|
||||||
// CanSafelySkipMountPointCheck indicates whether this mounter returns errors on
|
// canSafelySkipMountPointCheck indicates whether this mounter returns errors on
|
||||||
// operations for targets that are not mount points. If this returns true, no such
|
// operations for targets that are not mount points. If this returns true, no such
|
||||||
// errors will be returned.
|
// errors will be returned.
|
||||||
CanSafelySkipMountPointCheck() bool
|
canSafelySkipMountPointCheck() bool
|
||||||
// IsMountPoint determines if a directory is a mountpoint.
|
// IsMountPoint determines if a directory is a mountpoint.
|
||||||
// It should return ErrNotExist when the directory does not exist.
|
// It should return ErrNotExist when the directory does not exist.
|
||||||
// IsMountPoint is more expensive than IsLikelyNotMountPoint.
|
// IsMountPoint is more expensive than IsLikelyNotMountPoint.
|
||||||
|
|||||||
8
vendor/k8s.io/mount-utils/mount_helper_common.go
generated
vendored
8
vendor/k8s.io/mount-utils/mount_helper_common.go
generated
vendored
@ -52,9 +52,9 @@ func CleanupMountWithForce(mountPath string, mounter MounterForceUnmounter, exte
|
|||||||
return fmt.Errorf("Error checking path: %v", pathErr)
|
return fmt.Errorf("Error checking path: %v", pathErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
if corruptedMnt || mounter.CanSafelySkipMountPointCheck() {
|
if corruptedMnt || mounter.canSafelySkipMountPointCheck() {
|
||||||
klog.V(4).Infof("unmounting %q (corruptedMount: %t, mounterCanSkipMountPointChecks: %t)",
|
klog.V(4).Infof("unmounting %q (corruptedMount: %t, mounterCanSkipMountPointChecks: %t)",
|
||||||
mountPath, corruptedMnt, mounter.CanSafelySkipMountPointCheck())
|
mountPath, corruptedMnt, mounter.canSafelySkipMountPointCheck())
|
||||||
if err := mounter.UnmountWithForce(mountPath, umountTimeout); err != nil {
|
if err := mounter.UnmountWithForce(mountPath, umountTimeout); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -89,9 +89,9 @@ func CleanupMountWithForce(mountPath string, mounter MounterForceUnmounter, exte
|
|||||||
// if corruptedMnt is true, it means that the mountPath is a corrupted mountpoint, and the mount point check
|
// if corruptedMnt is true, it means that the mountPath is a corrupted mountpoint, and the mount point check
|
||||||
// will be skipped. The mount point check will also be skipped if the mounter supports it.
|
// will be skipped. The mount point check will also be skipped if the mounter supports it.
|
||||||
func doCleanupMountPoint(mountPath string, mounter Interface, extensiveMountPointCheck bool, corruptedMnt bool) error {
|
func doCleanupMountPoint(mountPath string, mounter Interface, extensiveMountPointCheck bool, corruptedMnt bool) error {
|
||||||
if corruptedMnt || mounter.CanSafelySkipMountPointCheck() {
|
if corruptedMnt || mounter.canSafelySkipMountPointCheck() {
|
||||||
klog.V(4).Infof("unmounting %q (corruptedMount: %t, mounterCanSkipMountPointChecks: %t)",
|
klog.V(4).Infof("unmounting %q (corruptedMount: %t, mounterCanSkipMountPointChecks: %t)",
|
||||||
mountPath, corruptedMnt, mounter.CanSafelySkipMountPointCheck())
|
mountPath, corruptedMnt, mounter.canSafelySkipMountPointCheck())
|
||||||
if err := mounter.Unmount(mountPath); err != nil {
|
if err := mounter.Unmount(mountPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
68
vendor/k8s.io/mount-utils/mount_linux.go
generated
vendored
68
vendor/k8s.io/mount-utils/mount_linux.go
generated
vendored
@ -23,6 +23,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/moby/sys/mountinfo"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
@ -33,8 +34,6 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/moby/sys/mountinfo"
|
|
||||||
|
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
utilexec "k8s.io/utils/exec"
|
utilexec "k8s.io/utils/exec"
|
||||||
utilio "k8s.io/utils/io"
|
utilio "k8s.io/utils/io"
|
||||||
@ -363,19 +362,7 @@ func (mounter *Mounter) Unmount(target string) error {
|
|||||||
command := exec.Command("umount", target)
|
command := exec.Command("umount", target)
|
||||||
output, err := command.CombinedOutput()
|
output, err := command.CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err.Error() == errNoChildProcesses {
|
return checkUmountError(target, command, output, err, mounter.withSafeNotMountedBehavior)
|
||||||
if command.ProcessState.Success() {
|
|
||||||
// We don't consider errNoChildProcesses an error if the process itself succeeded (see - k/k issue #103753).
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
// Rewrite err with the actual exit error of the process.
|
|
||||||
err = &exec.ExitError{ProcessState: command.ProcessState}
|
|
||||||
}
|
|
||||||
if mounter.withSafeNotMountedBehavior && strings.Contains(string(output), errNotMounted) {
|
|
||||||
klog.V(4).Infof("ignoring 'not mounted' error for %s", target)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return fmt.Errorf("unmount failed: %v\nUnmounting arguments: %s\nOutput: %s", err, target, string(output))
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -383,11 +370,11 @@ func (mounter *Mounter) Unmount(target string) error {
|
|||||||
// UnmountWithForce unmounts given target but will retry unmounting with force option
|
// UnmountWithForce unmounts given target but will retry unmounting with force option
|
||||||
// after given timeout.
|
// after given timeout.
|
||||||
func (mounter *Mounter) UnmountWithForce(target string, umountTimeout time.Duration) error {
|
func (mounter *Mounter) UnmountWithForce(target string, umountTimeout time.Duration) error {
|
||||||
err := tryUnmount(mounter, target, umountTimeout)
|
err := tryUnmount(target, mounter.withSafeNotMountedBehavior, umountTimeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == context.DeadlineExceeded {
|
if err == context.DeadlineExceeded {
|
||||||
klog.V(2).Infof("Timed out waiting for unmount of %s, trying with -f", target)
|
klog.V(2).Infof("Timed out waiting for unmount of %s, trying with -f", target)
|
||||||
err = forceUmount(target)
|
err = forceUmount(target, mounter.withSafeNotMountedBehavior)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -423,8 +410,8 @@ func (mounter *Mounter) IsLikelyNotMountPoint(file string) (bool, error) {
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CanSafelySkipMountPointCheck relies on the detected behavior of umount when given a target that is not a mount point.
|
// canSafelySkipMountPointCheck relies on the detected behavior of umount when given a target that is not a mount point.
|
||||||
func (mounter *Mounter) CanSafelySkipMountPointCheck() bool {
|
func (mounter *Mounter) canSafelySkipMountPointCheck() bool {
|
||||||
return mounter.withSafeNotMountedBehavior
|
return mounter.withSafeNotMountedBehavior
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -775,13 +762,13 @@ func (mounter *Mounter) IsMountPoint(file string) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// tryUnmount calls plain "umount" and waits for unmountTimeout for it to finish.
|
// tryUnmount calls plain "umount" and waits for unmountTimeout for it to finish.
|
||||||
func tryUnmount(mounter *Mounter, path string, unmountTimeout time.Duration) error {
|
func tryUnmount(target string, withSafeNotMountedBehavior bool, unmountTimeout time.Duration) error {
|
||||||
klog.V(4).Infof("Unmounting %s", path)
|
klog.V(4).Infof("Unmounting %s", target)
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), unmountTimeout)
|
ctx, cancel := context.WithTimeout(context.Background(), unmountTimeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
cmd := exec.CommandContext(ctx, "umount", path)
|
command := exec.CommandContext(ctx, "umount", target)
|
||||||
out, cmderr := cmd.CombinedOutput()
|
output, err := command.CombinedOutput()
|
||||||
|
|
||||||
// CombinedOutput() does not return DeadlineExceeded, make sure it's
|
// CombinedOutput() does not return DeadlineExceeded, make sure it's
|
||||||
// propagated on timeout.
|
// propagated on timeout.
|
||||||
@ -789,22 +776,35 @@ func tryUnmount(mounter *Mounter, path string, unmountTimeout time.Duration) err
|
|||||||
return ctx.Err()
|
return ctx.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
if cmderr != nil {
|
if err != nil {
|
||||||
if mounter.withSafeNotMountedBehavior && strings.Contains(string(out), errNotMounted) {
|
return checkUmountError(target, command, output, err, withSafeNotMountedBehavior)
|
||||||
klog.V(4).Infof("ignoring 'not mounted' error for %s", path)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return fmt.Errorf("unmount failed: %v\nUnmounting arguments: %s\nOutput: %s", cmderr, path, string(out))
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func forceUmount(path string) error {
|
func forceUmount(target string, withSafeNotMountedBehavior bool) error {
|
||||||
cmd := exec.Command("umount", "-f", path)
|
command := exec.Command("umount", "-f", target)
|
||||||
out, cmderr := cmd.CombinedOutput()
|
output, err := command.CombinedOutput()
|
||||||
|
|
||||||
if cmderr != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unmount failed: %v\nUnmounting arguments: %s\nOutput: %s", cmderr, path, string(out))
|
return checkUmountError(target, command, output, err, withSafeNotMountedBehavior)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// checkUmountError checks a result of umount command and determine a return value.
|
||||||
|
func checkUmountError(target string, command *exec.Cmd, output []byte, err error, withSafeNotMountedBehavior bool) error {
|
||||||
|
if err.Error() == errNoChildProcesses {
|
||||||
|
if command.ProcessState.Success() {
|
||||||
|
// We don't consider errNoChildProcesses an error if the process itself succeeded (see - k/k issue #103753).
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
// Rewrite err with the actual exit error of the process.
|
||||||
|
err = &exec.ExitError{ProcessState: command.ProcessState}
|
||||||
|
}
|
||||||
|
if withSafeNotMountedBehavior && strings.Contains(string(output), errNotMounted) {
|
||||||
|
klog.V(4).Infof("ignoring 'not mounted' error for %s", target)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return fmt.Errorf("unmount failed: %v\nUnmounting arguments: %s\nOutput: %s", err, target, string(output))
|
||||||
|
}
|
||||||
|
|||||||
4
vendor/k8s.io/mount-utils/mount_unsupported.go
generated
vendored
4
vendor/k8s.io/mount-utils/mount_unsupported.go
generated
vendored
@ -74,8 +74,8 @@ func (mounter *Mounter) IsLikelyNotMountPoint(file string) (bool, error) {
|
|||||||
return true, errUnsupported
|
return true, errUnsupported
|
||||||
}
|
}
|
||||||
|
|
||||||
// CanSafelySkipMountPointCheck always returns false on unsupported platforms
|
// canSafelySkipMountPointCheck always returns false on unsupported platforms
|
||||||
func (mounter *Mounter) CanSafelySkipMountPointCheck() bool {
|
func (mounter *Mounter) canSafelySkipMountPointCheck() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
39
vendor/k8s.io/mount-utils/mount_windows.go
generated
vendored
39
vendor/k8s.io/mount-utils/mount_windows.go
generated
vendored
@ -150,12 +150,12 @@ func (mounter *Mounter) MountSensitive(source string, target string, fstype stri
|
|||||||
mklinkSource = mklinkSource + "\\"
|
mklinkSource = mklinkSource + "\\"
|
||||||
}
|
}
|
||||||
|
|
||||||
output, err := exec.Command("cmd", "/c", "mklink", "/D", target, mklinkSource).CombinedOutput()
|
err := os.Symlink(mklinkSource, target)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("mklink failed: %v, source(%q) target(%q) output: %q", err, mklinkSource, target, string(output))
|
klog.Errorf("symlink failed: %v, source(%q) target(%q)", err, mklinkSource, target)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
klog.V(2).Infof("mklink source(%q) on target(%q) successfully, output: %q", mklinkSource, target, string(output))
|
klog.V(2).Infof("symlink source(%q) on target(%q) successfully", mklinkSource, target)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -219,8 +219,9 @@ func removeSMBMapping(remotepath string) (string, error) {
|
|||||||
func (mounter *Mounter) Unmount(target string) error {
|
func (mounter *Mounter) Unmount(target string) error {
|
||||||
klog.V(4).Infof("Unmount target (%q)", target)
|
klog.V(4).Infof("Unmount target (%q)", target)
|
||||||
target = NormalizeWindowsPath(target)
|
target = NormalizeWindowsPath(target)
|
||||||
if output, err := exec.Command("cmd", "/c", "rmdir", target).CombinedOutput(); err != nil {
|
|
||||||
klog.Errorf("rmdir failed: %v, output: %q", err, string(output))
|
if err := os.Remove(target); err != nil {
|
||||||
|
klog.Errorf("removing directory %s failed: %v", target, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -244,8 +245,8 @@ func (mounter *Mounter) IsLikelyNotMountPoint(file string) (bool, error) {
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CanSafelySkipMountPointCheck always returns false on Windows
|
// canSafelySkipMountPointCheck always returns false on Windows
|
||||||
func (mounter *Mounter) CanSafelySkipMountPointCheck() bool {
|
func (mounter *Mounter) canSafelySkipMountPointCheck() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -287,14 +288,20 @@ func (mounter *SafeFormatAndMount) formatAndMountSensitive(source string, target
|
|||||||
fstype = "NTFS"
|
fstype = "NTFS"
|
||||||
}
|
}
|
||||||
|
|
||||||
// format disk if it is unformatted(raw)
|
|
||||||
formatOptionsUnwrapped := ""
|
|
||||||
if len(formatOptions) > 0 {
|
if len(formatOptions) > 0 {
|
||||||
formatOptionsUnwrapped = " " + strings.Join(formatOptions, " ")
|
return fmt.Errorf("diskMount: formatOptions are not supported on Windows")
|
||||||
}
|
}
|
||||||
cmd := fmt.Sprintf("Get-Disk -Number %s | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle GPT -PassThru"+
|
|
||||||
" | New-Partition -UseMaximumSize | Format-Volume -FileSystem %s -Confirm:$false%s", source, fstype, formatOptionsUnwrapped)
|
cmdString := "Get-Disk -Number $env:source | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle GPT -PassThru" +
|
||||||
if output, err := mounter.Exec.Command("powershell", "/c", cmd).CombinedOutput(); err != nil {
|
" | New-Partition -UseMaximumSize | Format-Volume -FileSystem $env:fstype -Confirm:$false"
|
||||||
|
cmd := mounter.Exec.Command("powershell", "/c", cmdString)
|
||||||
|
env := append(os.Environ(),
|
||||||
|
fmt.Sprintf("source=%s", source),
|
||||||
|
fmt.Sprintf("fstype=%s", fstype),
|
||||||
|
)
|
||||||
|
cmd.SetEnv(env)
|
||||||
|
klog.V(8).Infof("Executing command: %q", cmdString)
|
||||||
|
if output, err := cmd.CombinedOutput(); err != nil {
|
||||||
return fmt.Errorf("diskMount: format disk failed, error: %v, output: %q", err, string(output))
|
return fmt.Errorf("diskMount: format disk failed, error: %v, output: %q", err, string(output))
|
||||||
}
|
}
|
||||||
klog.V(4).Infof("diskMount: Disk successfully formatted, disk: %q, fstype: %q", source, fstype)
|
klog.V(4).Infof("diskMount: Disk successfully formatted, disk: %q, fstype: %q", source, fstype)
|
||||||
@ -316,8 +323,10 @@ func (mounter *SafeFormatAndMount) formatAndMountSensitive(source string, target
|
|||||||
|
|
||||||
// ListVolumesOnDisk - returns back list of volumes(volumeIDs) in the disk (requested in diskID).
|
// ListVolumesOnDisk - returns back list of volumes(volumeIDs) in the disk (requested in diskID).
|
||||||
func listVolumesOnDisk(diskID string) (volumeIDs []string, err error) {
|
func listVolumesOnDisk(diskID string) (volumeIDs []string, err error) {
|
||||||
cmd := fmt.Sprintf("(Get-Disk -DeviceId %s | Get-Partition | Get-Volume).UniqueId", diskID)
|
cmd := exec.Command("powershell", "/c", "(Get-Disk -DeviceId $env:diskID | Get-Partition | Get-Volume).UniqueId")
|
||||||
output, err := exec.Command("powershell", "/c", cmd).CombinedOutput()
|
cmd.Env = append(os.Environ(), fmt.Sprintf("diskID=%s", diskID))
|
||||||
|
klog.V(8).Infof("Executing command: %q", cmd.String())
|
||||||
|
output, err := cmd.CombinedOutput()
|
||||||
klog.V(4).Infof("listVolumesOnDisk id from %s: %s", diskID, string(output))
|
klog.V(4).Infof("listVolumesOnDisk id from %s: %s", diskID, string(output))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []string{}, fmt.Errorf("error list volumes on disk. cmd: %s, output: %s, error: %v", cmd, string(output), err)
|
return []string{}, fmt.Errorf("error list volumes on disk. cmd: %s, output: %s, error: %v", cmd, string(output), err)
|
||||||
|
|||||||
33
vendor/k8s.io/mount-utils/resizefs_linux.go
generated
vendored
33
vendor/k8s.io/mount-utils/resizefs_linux.go
generated
vendored
@ -28,10 +28,6 @@ import (
|
|||||||
utilexec "k8s.io/utils/exec"
|
utilexec "k8s.io/utils/exec"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
blockDev = "blockdev"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ResizeFs Provides support for resizing file systems
|
// ResizeFs Provides support for resizing file systems
|
||||||
type ResizeFs struct {
|
type ResizeFs struct {
|
||||||
exec utilexec.Interface
|
exec utilexec.Interface
|
||||||
@ -108,17 +104,6 @@ func (resizefs *ResizeFs) btrfsResize(deviceMountPath string) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (resizefs *ResizeFs) NeedResize(devicePath string, deviceMountPath string) (bool, error) {
|
func (resizefs *ResizeFs) NeedResize(devicePath string, deviceMountPath string) (bool, error) {
|
||||||
// Do nothing if device is mounted as readonly
|
|
||||||
readonly, err := resizefs.getDeviceRO(devicePath)
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if readonly {
|
|
||||||
klog.V(3).Infof("ResizeFs.needResize - no resize possible since filesystem %s is readonly", devicePath)
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
deviceSize, err := resizefs.getDeviceSize(devicePath)
|
deviceSize, err := resizefs.getDeviceSize(devicePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
@ -162,7 +147,7 @@ func (resizefs *ResizeFs) NeedResize(devicePath string, deviceMountPath string)
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
func (resizefs *ResizeFs) getDeviceSize(devicePath string) (uint64, error) {
|
func (resizefs *ResizeFs) getDeviceSize(devicePath string) (uint64, error) {
|
||||||
output, err := resizefs.exec.Command(blockDev, "--getsize64", devicePath).CombinedOutput()
|
output, err := resizefs.exec.Command("blockdev", "--getsize64", devicePath).CombinedOutput()
|
||||||
outStr := strings.TrimSpace(string(output))
|
outStr := strings.TrimSpace(string(output))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, fmt.Errorf("failed to read size of device %s: %s: %s", devicePath, err, outStr)
|
return 0, fmt.Errorf("failed to read size of device %s: %s: %s", devicePath, err, outStr)
|
||||||
@ -174,22 +159,6 @@ func (resizefs *ResizeFs) getDeviceSize(devicePath string) (uint64, error) {
|
|||||||
return size, nil
|
return size, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (resizefs *ResizeFs) getDeviceRO(devicePath string) (bool, error) {
|
|
||||||
output, err := resizefs.exec.Command(blockDev, "--getro", devicePath).CombinedOutput()
|
|
||||||
outStr := strings.TrimSpace(string(output))
|
|
||||||
if err != nil {
|
|
||||||
return false, fmt.Errorf("failed to get readonly bit from device %s: %s: %s", devicePath, err, outStr)
|
|
||||||
}
|
|
||||||
switch outStr {
|
|
||||||
case "0":
|
|
||||||
return false, nil
|
|
||||||
case "1":
|
|
||||||
return true, nil
|
|
||||||
default:
|
|
||||||
return false, fmt.Errorf("Failed readonly device check. Expected 1 or 0, got '%s'", outStr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (resizefs *ResizeFs) getExtSize(devicePath string) (uint64, uint64, error) {
|
func (resizefs *ResizeFs) getExtSize(devicePath string) (uint64, uint64, error) {
|
||||||
output, err := resizefs.exec.Command("dumpe2fs", "-h", devicePath).CombinedOutput()
|
output, err := resizefs.exec.Command("dumpe2fs", "-h", devicePath).CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
85
vendor/modules.txt
vendored
85
vendor/modules.txt
vendored
@ -116,8 +116,8 @@ github.com/google/pprof/profile
|
|||||||
# github.com/google/uuid v1.3.1
|
# github.com/google/uuid v1.3.1
|
||||||
## explicit
|
## explicit
|
||||||
github.com/google/uuid
|
github.com/google/uuid
|
||||||
# github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0
|
# github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3
|
||||||
## explicit; go 1.14
|
## explicit; go 1.17
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule
|
github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2/runtime
|
github.com/grpc-ecosystem/grpc-gateway/v2/runtime
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2/utilities
|
github.com/grpc-ecosystem/grpc-gateway/v2/utilities
|
||||||
@ -403,6 +403,7 @@ google.golang.org/grpc/encoding
|
|||||||
google.golang.org/grpc/encoding/gzip
|
google.golang.org/grpc/encoding/gzip
|
||||||
google.golang.org/grpc/encoding/proto
|
google.golang.org/grpc/encoding/proto
|
||||||
google.golang.org/grpc/grpclog
|
google.golang.org/grpc/grpclog
|
||||||
|
google.golang.org/grpc/health/grpc_health_v1
|
||||||
google.golang.org/grpc/internal
|
google.golang.org/grpc/internal
|
||||||
google.golang.org/grpc/internal/backoff
|
google.golang.org/grpc/internal/backoff
|
||||||
google.golang.org/grpc/internal/balancer/gracefulswitch
|
google.golang.org/grpc/internal/balancer/gracefulswitch
|
||||||
@ -470,6 +471,7 @@ google.golang.org/protobuf/types/descriptorpb
|
|||||||
google.golang.org/protobuf/types/known/anypb
|
google.golang.org/protobuf/types/known/anypb
|
||||||
google.golang.org/protobuf/types/known/durationpb
|
google.golang.org/protobuf/types/known/durationpb
|
||||||
google.golang.org/protobuf/types/known/fieldmaskpb
|
google.golang.org/protobuf/types/known/fieldmaskpb
|
||||||
|
google.golang.org/protobuf/types/known/structpb
|
||||||
google.golang.org/protobuf/types/known/timestamppb
|
google.golang.org/protobuf/types/known/timestamppb
|
||||||
google.golang.org/protobuf/types/known/wrapperspb
|
google.golang.org/protobuf/types/known/wrapperspb
|
||||||
# gopkg.in/inf.v0 v0.9.1
|
# gopkg.in/inf.v0 v0.9.1
|
||||||
@ -481,7 +483,7 @@ gopkg.in/yaml.v2
|
|||||||
# gopkg.in/yaml.v3 v3.0.1
|
# gopkg.in/yaml.v3 v3.0.1
|
||||||
## explicit
|
## explicit
|
||||||
gopkg.in/yaml.v3
|
gopkg.in/yaml.v3
|
||||||
# k8s.io/api v0.26.9 => k8s.io/api v0.26.9
|
# k8s.io/api v0.26.11 => k8s.io/api v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/api/admission/v1
|
k8s.io/api/admission/v1
|
||||||
k8s.io/api/admission/v1beta1
|
k8s.io/api/admission/v1beta1
|
||||||
@ -536,11 +538,11 @@ k8s.io/api/scheduling/v1beta1
|
|||||||
k8s.io/api/storage/v1
|
k8s.io/api/storage/v1
|
||||||
k8s.io/api/storage/v1alpha1
|
k8s.io/api/storage/v1alpha1
|
||||||
k8s.io/api/storage/v1beta1
|
k8s.io/api/storage/v1beta1
|
||||||
# k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.26.9
|
# k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
|
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
|
||||||
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1
|
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1
|
||||||
# k8s.io/apimachinery v0.28.3 => k8s.io/apimachinery v0.26.9
|
# k8s.io/apimachinery v0.28.3 => k8s.io/apimachinery v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/apimachinery/pkg/api/equality
|
k8s.io/apimachinery/pkg/api/equality
|
||||||
k8s.io/apimachinery/pkg/api/errors
|
k8s.io/apimachinery/pkg/api/errors
|
||||||
@ -596,7 +598,7 @@ k8s.io/apimachinery/pkg/watch
|
|||||||
k8s.io/apimachinery/third_party/forked/golang/json
|
k8s.io/apimachinery/third_party/forked/golang/json
|
||||||
k8s.io/apimachinery/third_party/forked/golang/netutil
|
k8s.io/apimachinery/third_party/forked/golang/netutil
|
||||||
k8s.io/apimachinery/third_party/forked/golang/reflect
|
k8s.io/apimachinery/third_party/forked/golang/reflect
|
||||||
# k8s.io/apiserver v0.28.3 => k8s.io/apiserver v0.26.9
|
# k8s.io/apiserver v0.28.3 => k8s.io/apiserver v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/apiserver/pkg/admission
|
k8s.io/apiserver/pkg/admission
|
||||||
k8s.io/apiserver/pkg/admission/configuration
|
k8s.io/apiserver/pkg/admission/configuration
|
||||||
@ -634,7 +636,7 @@ k8s.io/apiserver/pkg/util/feature
|
|||||||
k8s.io/apiserver/pkg/util/webhook
|
k8s.io/apiserver/pkg/util/webhook
|
||||||
k8s.io/apiserver/pkg/util/x509metrics
|
k8s.io/apiserver/pkg/util/x509metrics
|
||||||
k8s.io/apiserver/pkg/warning
|
k8s.io/apiserver/pkg/warning
|
||||||
# k8s.io/client-go v0.26.9 => k8s.io/client-go v0.26.9
|
# k8s.io/client-go v0.26.11 => k8s.io/client-go v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/client-go/applyconfigurations/admissionregistration/v1
|
k8s.io/client-go/applyconfigurations/admissionregistration/v1
|
||||||
k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1
|
k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1
|
||||||
@ -893,10 +895,10 @@ k8s.io/client-go/util/homedir
|
|||||||
k8s.io/client-go/util/keyutil
|
k8s.io/client-go/util/keyutil
|
||||||
k8s.io/client-go/util/retry
|
k8s.io/client-go/util/retry
|
||||||
k8s.io/client-go/util/workqueue
|
k8s.io/client-go/util/workqueue
|
||||||
# k8s.io/cloud-provider v0.26.9 => k8s.io/cloud-provider v0.26.9
|
# k8s.io/cloud-provider v0.26.11 => k8s.io/cloud-provider v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/cloud-provider
|
k8s.io/cloud-provider
|
||||||
# k8s.io/component-base v0.26.9 => k8s.io/component-base v0.26.9
|
# k8s.io/component-base v0.26.11 => k8s.io/component-base v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/component-base/cli/flag
|
k8s.io/component-base/cli/flag
|
||||||
k8s.io/component-base/featuregate
|
k8s.io/component-base/featuregate
|
||||||
@ -909,7 +911,7 @@ k8s.io/component-base/metrics/prometheusextension
|
|||||||
k8s.io/component-base/tracing
|
k8s.io/component-base/tracing
|
||||||
k8s.io/component-base/tracing/api/v1
|
k8s.io/component-base/tracing/api/v1
|
||||||
k8s.io/component-base/version
|
k8s.io/component-base/version
|
||||||
# k8s.io/component-helpers v0.26.9 => k8s.io/component-helpers v0.26.9
|
# k8s.io/component-helpers v0.26.11 => k8s.io/component-helpers v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/component-helpers/node/util/sysctl
|
k8s.io/component-helpers/node/util/sysctl
|
||||||
k8s.io/component-helpers/scheduling/corev1
|
k8s.io/component-helpers/scheduling/corev1
|
||||||
@ -937,11 +939,11 @@ k8s.io/kube-openapi/pkg/schemamutation
|
|||||||
k8s.io/kube-openapi/pkg/spec3
|
k8s.io/kube-openapi/pkg/spec3
|
||||||
k8s.io/kube-openapi/pkg/util/proto
|
k8s.io/kube-openapi/pkg/util/proto
|
||||||
k8s.io/kube-openapi/pkg/validation/spec
|
k8s.io/kube-openapi/pkg/validation/spec
|
||||||
# k8s.io/kubectl v0.0.0 => k8s.io/kubectl v0.26.9
|
# k8s.io/kubectl v0.0.0 => k8s.io/kubectl v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/kubectl/pkg/scale
|
k8s.io/kubectl/pkg/scale
|
||||||
k8s.io/kubectl/pkg/util/podutils
|
k8s.io/kubectl/pkg/util/podutils
|
||||||
# k8s.io/kubernetes v1.26.9
|
# k8s.io/kubernetes v1.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/kubernetes/pkg/api/legacyscheme
|
k8s.io/kubernetes/pkg/api/legacyscheme
|
||||||
k8s.io/kubernetes/pkg/api/service
|
k8s.io/kubernetes/pkg/api/service
|
||||||
@ -1003,10 +1005,10 @@ k8s.io/kubernetes/test/e2e/testing-manifests
|
|||||||
k8s.io/kubernetes/test/utils
|
k8s.io/kubernetes/test/utils
|
||||||
k8s.io/kubernetes/test/utils/image
|
k8s.io/kubernetes/test/utils/image
|
||||||
k8s.io/kubernetes/test/utils/kubeconfig
|
k8s.io/kubernetes/test/utils/kubeconfig
|
||||||
# k8s.io/mount-utils v0.26.9 => k8s.io/mount-utils v0.0.0-20230103133730-1df1a57439e2
|
# k8s.io/mount-utils v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/mount-utils
|
k8s.io/mount-utils
|
||||||
# k8s.io/pod-security-admission v0.0.0 => k8s.io/pod-security-admission v0.26.9
|
# k8s.io/pod-security-admission v0.0.0 => k8s.io/pod-security-admission v0.26.11
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
k8s.io/pod-security-admission/api
|
k8s.io/pod-security-admission/api
|
||||||
k8s.io/pod-security-admission/policy
|
k8s.io/pod-security-admission/policy
|
||||||
@ -1049,31 +1051,30 @@ sigs.k8s.io/structured-merge-diff/v4/value
|
|||||||
## explicit; go 1.12
|
## explicit; go 1.12
|
||||||
sigs.k8s.io/yaml
|
sigs.k8s.io/yaml
|
||||||
sigs.k8s.io/yaml/goyaml.v2
|
sigs.k8s.io/yaml/goyaml.v2
|
||||||
# k8s.io/api => k8s.io/api v0.26.9
|
# k8s.io/api => k8s.io/api v0.26.11
|
||||||
# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.9
|
# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.26.11
|
||||||
# k8s.io/apimachinery => k8s.io/apimachinery v0.26.9
|
# k8s.io/apimachinery => k8s.io/apimachinery v0.26.11
|
||||||
# k8s.io/apiserver => k8s.io/apiserver v0.26.9
|
# k8s.io/apiserver => k8s.io/apiserver v0.26.11
|
||||||
# k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.9
|
# k8s.io/cli-runtime => k8s.io/cli-runtime v0.26.11
|
||||||
# k8s.io/client-go => k8s.io/client-go v0.26.9
|
# k8s.io/client-go => k8s.io/client-go v0.26.11
|
||||||
# k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.9
|
# k8s.io/cloud-provider => k8s.io/cloud-provider v0.26.11
|
||||||
# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.9
|
# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.26.11
|
||||||
# k8s.io/code-generator => k8s.io/code-generator v0.26.9
|
# k8s.io/code-generator => k8s.io/code-generator v0.26.11
|
||||||
# k8s.io/component-base => k8s.io/component-base v0.26.9
|
# k8s.io/component-base => k8s.io/component-base v0.26.11
|
||||||
# k8s.io/component-helpers => k8s.io/component-helpers v0.26.9
|
# k8s.io/component-helpers => k8s.io/component-helpers v0.26.11
|
||||||
# k8s.io/controller-manager => k8s.io/controller-manager v0.26.9
|
# k8s.io/controller-manager => k8s.io/controller-manager v0.26.11
|
||||||
# k8s.io/cri-api => k8s.io/cri-api v0.26.9
|
# k8s.io/cri-api => k8s.io/cri-api v0.26.11
|
||||||
# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.9
|
# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.26.11
|
||||||
# k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.26.9
|
# k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.26.11
|
||||||
# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.9
|
# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.26.11
|
||||||
# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.9
|
# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.26.11
|
||||||
# k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.9
|
# k8s.io/kube-proxy => k8s.io/kube-proxy v0.26.11
|
||||||
# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.9
|
# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.26.11
|
||||||
# k8s.io/kubectl => k8s.io/kubectl v0.26.9
|
# k8s.io/kubectl => k8s.io/kubectl v0.26.11
|
||||||
# k8s.io/kubelet => k8s.io/kubelet v0.26.9
|
# k8s.io/kubelet => k8s.io/kubelet v0.26.11
|
||||||
# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.9
|
# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.26.11
|
||||||
# k8s.io/metrics => k8s.io/metrics v0.26.9
|
# k8s.io/metrics => k8s.io/metrics v0.26.11
|
||||||
# k8s.io/mount-utils => k8s.io/mount-utils v0.0.0-20230103133730-1df1a57439e2
|
# k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.26.11
|
||||||
# k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.26.9
|
# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.11
|
||||||
# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.26.9
|
# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.11
|
||||||
# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.9
|
# k8s.io/sample-controller => k8s.io/sample-controller v0.26.11
|
||||||
# k8s.io/sample-controller => k8s.io/sample-controller v0.26.9
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user