vendor: bump containerd/typeurl v1.0.1
full diff: https://github.com/containerd/typeurl/compare/v1.0.0...v1.0.1 Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
5494d6ffad
commit
fe3a018f51
@ -15,7 +15,7 @@ github.com/containerd/continuity 0ec596719c75bfd42908850990ac
|
|||||||
github.com/containerd/fifo bda0ff6ed73c67bfb5e62bc9c697f146b7fd7f13
|
github.com/containerd/fifo bda0ff6ed73c67bfb5e62bc9c697f146b7fd7f13
|
||||||
github.com/containerd/go-runc a5c2862aed5e6358b305b0e16bfce58e0549b1cd
|
github.com/containerd/go-runc a5c2862aed5e6358b305b0e16bfce58e0549b1cd
|
||||||
github.com/containerd/ttrpc 72bb1b21c5b0a4a107f59dd85f6ab58e564b68d6 # v1.0.1
|
github.com/containerd/ttrpc 72bb1b21c5b0a4a107f59dd85f6ab58e564b68d6 # v1.0.1
|
||||||
github.com/containerd/typeurl a93fcdb778cd272c6e9b3028b2f42d813e785d40 # v1.0.0
|
github.com/containerd/typeurl cd3ce7159eae562a4f60ceff37dada11a939d247 # v1.0.1
|
||||||
github.com/coreos/go-systemd/v22 2d78030078ef61b3cae27f42ad6d0e46db51b339 # v22.0.0
|
github.com/coreos/go-systemd/v22 2d78030078ef61b3cae27f42ad6d0e46db51b339 # v22.0.0
|
||||||
github.com/cpuguy83/go-md2man 7762f7e404f8416dfa1d9bb6a8c192aa9acb4d19 # v1.0.10
|
github.com/cpuguy83/go-md2man 7762f7e404f8416dfa1d9bb6a8c192aa9acb4d19 # v1.0.10
|
||||||
github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9
|
github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9
|
||||||
|
18
vendor/github.com/containerd/typeurl/LICENSE
generated
vendored
18
vendor/github.com/containerd/typeurl/LICENSE
generated
vendored
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
Apache License
|
Apache License
|
||||||
Version 2.0, January 2004
|
Version 2.0, January 2004
|
||||||
http://www.apache.org/licenses/
|
https://www.apache.org/licenses/
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
@ -175,24 +176,13 @@
|
|||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
Copyright The containerd Authors
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
You may obtain a copy of the License at
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
Unless required by applicable law or agreed to in writing, software
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
12
vendor/github.com/containerd/typeurl/README.md
generated
vendored
12
vendor/github.com/containerd/typeurl/README.md
generated
vendored
@ -6,4 +6,14 @@
|
|||||||
|
|
||||||
A Go package for managing the registration, marshaling, and unmarshaling of encoded types.
|
A Go package for managing the registration, marshaling, and unmarshaling of encoded types.
|
||||||
|
|
||||||
This package helps when types are sent over a GRPC API and marshaled as a [protobuf.Any]().
|
This package helps when types are sent over a GRPC API and marshaled as a [protobuf.Any](https://github.com/gogo/protobuf/blob/master/protobuf/google/protobuf/any.proto).
|
||||||
|
|
||||||
|
## Project details
|
||||||
|
|
||||||
|
**typeurl** is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE).
|
||||||
|
As a containerd sub-project, you will find the:
|
||||||
|
* [Project governance](https://github.com/containerd/project/blob/master/GOVERNANCE.md),
|
||||||
|
* [Maintainers](https://github.com/containerd/project/blob/master/MAINTAINERS),
|
||||||
|
* and [Contributing guidelines](https://github.com/containerd/project/blob/master/CONTRIBUTING.md)
|
||||||
|
|
||||||
|
information in our [`containerd/project`](https://github.com/containerd/project) repository.
|
||||||
|
83
vendor/github.com/containerd/typeurl/doc.go
generated
vendored
Normal file
83
vendor/github.com/containerd/typeurl/doc.go
generated
vendored
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
Copyright The containerd Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package typeurl
|
||||||
|
|
||||||
|
// Package typeurl assists with managing the registration, marshaling, and
|
||||||
|
// unmarshaling of types encoded as protobuf.Any.
|
||||||
|
//
|
||||||
|
// A protobuf.Any is a proto message that can contain any arbitrary data. It
|
||||||
|
// consists of two components, a TypeUrl and a Value, and its proto definition
|
||||||
|
// looks like this:
|
||||||
|
//
|
||||||
|
// message Any {
|
||||||
|
// string type_url = 1;
|
||||||
|
// bytes value = 2;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// The TypeUrl is used to distinguish the contents from other proto.Any
|
||||||
|
// messages. This typeurl library manages these URLs to enable automagic
|
||||||
|
// marshaling and unmarshaling of the contents.
|
||||||
|
//
|
||||||
|
// For example, consider this go struct:
|
||||||
|
//
|
||||||
|
// type Foo struct {
|
||||||
|
// Field1 string
|
||||||
|
// Field2 string
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// To use typeurl, types must first be registered. This is typically done in
|
||||||
|
// the init function
|
||||||
|
//
|
||||||
|
// func init() {
|
||||||
|
// typeurl.Register(&Foo{}, "Foo")
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// This will register the type Foo with the url path "Foo". The arguments to
|
||||||
|
// Register are variadic, and are used to construct a url path. Consider this
|
||||||
|
// example, from the github.com/containerd/containerd/client package:
|
||||||
|
//
|
||||||
|
// func init() {
|
||||||
|
// const prefix = "types.containerd.io"
|
||||||
|
// // register TypeUrls for commonly marshaled external types
|
||||||
|
// major := strconv.Itoa(specs.VersionMajor)
|
||||||
|
// typeurl.Register(&specs.Spec{}, prefix, "opencontainers/runtime-spec", major, "Spec")
|
||||||
|
// // this function has more Register calls, which are elided.
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// This registers several types under a more complex url, which ends up mapping
|
||||||
|
// to `types.containerd.io/opencontainers/runtime-spec/1/Spec` (or some other
|
||||||
|
// value for major).
|
||||||
|
//
|
||||||
|
// Once a type is registered, it can be marshaled to a proto.Any message simply
|
||||||
|
// by calling `MarshalAny`, like this:
|
||||||
|
//
|
||||||
|
// foo := &Foo{Field1: "value1", Field2: "value2"}
|
||||||
|
// anyFoo, err := typeurl.MarshalAny(foo)
|
||||||
|
//
|
||||||
|
// MarshalAny will resolve the correct URL for the type. If the type in
|
||||||
|
// question implements the proto.Message interface, then it will be marshaled
|
||||||
|
// as a proto message. Otherwise, it will be marshaled as json. This means that
|
||||||
|
// typeurl will work on any arbitrary data, whether or not it has a proto
|
||||||
|
// definition, as long as it can be serialized to json.
|
||||||
|
//
|
||||||
|
// To unmarshal, the process is simply inverse:
|
||||||
|
//
|
||||||
|
// iface, err := typeurl.UnmarshalAny(anyFoo)
|
||||||
|
// foo := iface.(*Foo)
|
||||||
|
//
|
||||||
|
// The correct type is automatically chosen from the type registry, and the
|
||||||
|
// returned interface can be cast straight to that type.
|
8
vendor/github.com/containerd/typeurl/go.mod
generated
vendored
Normal file
8
vendor/github.com/containerd/typeurl/go.mod
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
module github.com/containerd/typeurl
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/gogo/protobuf v1.3.1
|
||||||
|
github.com/pkg/errors v0.9.1
|
||||||
|
)
|
59
vendor/github.com/containerd/typeurl/types.go
generated
vendored
59
vendor/github.com/containerd/typeurl/types.go
generated
vendored
@ -34,7 +34,10 @@ var (
|
|||||||
|
|
||||||
var ErrNotFound = errors.New("not found")
|
var ErrNotFound = errors.New("not found")
|
||||||
|
|
||||||
// Register a type with the base url of the type
|
// Register a type with a base URL for JSON marshaling. When the MarshalAny and
|
||||||
|
// UnmarshalAny functions are called they will treat the Any type value as JSON.
|
||||||
|
// To use protocol buffers for handling the Any value the proto.Register
|
||||||
|
// function should be used instead of this function.
|
||||||
func Register(v interface{}, args ...string) {
|
func Register(v interface{}, args ...string) {
|
||||||
var (
|
var (
|
||||||
t = tryDereference(v)
|
t = tryDereference(v)
|
||||||
@ -44,14 +47,14 @@ func Register(v interface{}, args ...string) {
|
|||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
if et, ok := registry[t]; ok {
|
if et, ok := registry[t]; ok {
|
||||||
if et != p {
|
if et != p {
|
||||||
panic(errors.Errorf("type registred with alternate path %q != %q", et, p))
|
panic(errors.Errorf("type registered with alternate path %q != %q", et, p))
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
registry[t] = p
|
registry[t] = p
|
||||||
}
|
}
|
||||||
|
|
||||||
// TypeURL returns the type url for a registred type
|
// TypeURL returns the type url for a registered type.
|
||||||
func TypeURL(v interface{}) (string, error) {
|
func TypeURL(v interface{}) (string, error) {
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
u, ok := registry[tryDereference(v)]
|
u, ok := registry[tryDereference(v)]
|
||||||
@ -67,7 +70,7 @@ func TypeURL(v interface{}) (string, error) {
|
|||||||
return u, nil
|
return u, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Is returns true if the type of the Any is the same as v
|
// Is returns true if the type of the Any is the same as v.
|
||||||
func Is(any *types.Any, v interface{}) bool {
|
func Is(any *types.Any, v interface{}) bool {
|
||||||
// call to check that v is a pointer
|
// call to check that v is a pointer
|
||||||
tryDereference(v)
|
tryDereference(v)
|
||||||
@ -78,7 +81,10 @@ func Is(any *types.Any, v interface{}) bool {
|
|||||||
return any.TypeUrl == url
|
return any.TypeUrl == url
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalAny marshals the value v into an any with the correct TypeUrl
|
// MarshalAny marshals the value v into an any with the correct TypeUrl.
|
||||||
|
// If the provided object is already a proto.Any message, then it will be
|
||||||
|
// returned verbatim. If it is of type proto.Message, it will be marshaled as a
|
||||||
|
// protocol buffer. Otherwise, the object will be marshaled to json.
|
||||||
func MarshalAny(v interface{}) (*types.Any, error) {
|
func MarshalAny(v interface{}) (*types.Any, error) {
|
||||||
var marshal func(v interface{}) ([]byte, error)
|
var marshal func(v interface{}) ([]byte, error)
|
||||||
switch t := v.(type) {
|
switch t := v.(type) {
|
||||||
@ -108,18 +114,49 @@ func MarshalAny(v interface{}) (*types.Any, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnmarshalAny unmarshals the any type into a concrete type
|
// UnmarshalAny unmarshals the any type into a concrete type.
|
||||||
func UnmarshalAny(any *types.Any) (interface{}, error) {
|
func UnmarshalAny(any *types.Any) (interface{}, error) {
|
||||||
t, err := getTypeByUrl(any.TypeUrl)
|
return UnmarshalByTypeURL(any.TypeUrl, any.Value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func UnmarshalByTypeURL(typeURL string, value []byte) (interface{}, error) {
|
||||||
|
return unmarshal(typeURL, value, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func UnmarshalTo(any *types.Any, out interface{}) error {
|
||||||
|
return UnmarshalToByTypeURL(any.TypeUrl, any.Value, out)
|
||||||
|
}
|
||||||
|
|
||||||
|
func UnmarshalToByTypeURL(typeURL string, value []byte, out interface{}) error {
|
||||||
|
_, err := unmarshal(typeURL, value, out)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func unmarshal(typeURL string, value []byte, v interface{}) (interface{}, error) {
|
||||||
|
t, err := getTypeByUrl(typeURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
v := reflect.New(t.t).Interface()
|
|
||||||
if t.isProto {
|
if v == nil {
|
||||||
err = proto.Unmarshal(any.Value, v.(proto.Message))
|
v = reflect.New(t.t).Interface()
|
||||||
} else {
|
} else {
|
||||||
err = json.Unmarshal(any.Value, v)
|
// Validate interface type provided by client
|
||||||
|
vURL, err := TypeURL(v)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if typeURL != vURL {
|
||||||
|
return nil, errors.Errorf("can't unmarshal type %q to output %q", typeURL, vURL)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if t.isProto {
|
||||||
|
err = proto.Unmarshal(value, v.(proto.Message))
|
||||||
|
} else {
|
||||||
|
err = json.Unmarshal(value, v)
|
||||||
|
}
|
||||||
|
|
||||||
return v, err
|
return v, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user