mirror of
https://github.com/kubernetes/sample-controller.git
synced 2025-04-03 06:11:53 +08:00
Merge pull request #55650 from smarterclayton/make_unstructured_conversion
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Move unstructured conversion into pkg/runtime Scheme conversion should support unstructured conversion natively to allow going from unstructured to typed and back. It is not a higher level responsibility to do that conversion because the scheme is the only one who knows what types it supports. @liggitt @kubernetes/sig-cli-api-reviews I am going to make Scheme support unstructured in ConvertToVersion and Convert, which means resource.Builder and the CLI can get simpler for all existing use cases where versioned and unstructured need to coexist. Kubernetes-commit: a67abac7654cc3e05618d41191d71730cf9565ac
This commit is contained in:
commit
773784112f
362
Godeps/Godeps.json
generated
362
Godeps/Godeps.json
generated
@ -240,719 +240,711 @@
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/admissionregistration/v1alpha1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/apps/v1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/apps/v1beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/apps/v1beta2",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authentication/v1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authentication/v1beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authorization/v1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authorization/v1beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/autoscaling/v1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/autoscaling/v2beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/batch/v1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/batch/v1beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/batch/v2alpha1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/certificates/v1beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/core/v1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/extensions/v1beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/networking/v1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/policy/v1beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/rbac/v1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/rbac/v1alpha1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/rbac/v1beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/scheduling/v1alpha1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/settings/v1alpha1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/storage/v1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/storage/v1alpha1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/storage/v1beta1",
|
||||
"Rev": "42558894029e0453e560ff39f84da83a3b673b5a"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "2de4f10de999ef5b857c77223949ff104db5e9dd"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/fields",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/labels",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/selection",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/types",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/version",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/watch",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
|
||||
"Rev": "cce56d3a154c7e0dd7a79092ce825f8d3b5ec2e1"
|
||||
"Rev": "8d2e26d0cd42a060b527f3c91ebea1015959008e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/discovery",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/discovery/fake",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/admissionregistration",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/admissionregistration/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/apps",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/apps/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/apps/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/apps/v1beta2",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/autoscaling",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/autoscaling/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/batch",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/batch/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/batch/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/batch/v2alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/certificates",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/certificates/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/core",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/core/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/extensions",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/extensions/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/internalinterfaces",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/networking",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/networking/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/policy",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/policy/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/rbac",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/rbac/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/rbac/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/rbac/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/scheduling",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/scheduling/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/settings",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/settings/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/storage",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/storage/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/storage/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/informers/storage/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/scheme",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/admissionregistration/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/apps/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/apps/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/apps/v1beta2",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/autoscaling/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/batch/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/batch/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/batch/v2alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/certificates/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/core/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/extensions/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/networking/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/policy/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/rbac/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/rbac/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/rbac/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/scheduling/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/settings/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/storage/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/storage/v1alpha1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/listers/storage/v1beta1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/pkg/version",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/rest",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/rest/watch",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/testing",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/auth",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/cache",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/clientcmd",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/clientcmd/api",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/latest",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/v1",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/metrics",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/pager",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/record",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/tools/reference",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/transport",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/util/buffer",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/util/cert",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/util/flowcontrol",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/util/homedir",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/util/integer",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/client-go/util/workqueue",
|
||||
"Rev": "be88969207dfd2ca8a1678c59f4f8dc9ad691bc4"
|
||||
"Rev": "a9b11fb1b4206132fe333a2969417bb6fe0f626f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/kube-openapi/pkg/common",
|
||||
|
2671
vendor/k8s.io/api/core/v1/generated.pb.go
generated
vendored
2671
vendor/k8s.io/api/core/v1/generated.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
21
vendor/k8s.io/api/core/v1/generated.proto
generated
vendored
21
vendor/k8s.io/api/core/v1/generated.proto
generated
vendored
@ -170,6 +170,23 @@ message Binding {
|
||||
optional ObjectReference target = 2;
|
||||
}
|
||||
|
||||
// Represents storage that is managed by an external CSI volume driver
|
||||
message CSIPersistentVolumeSource {
|
||||
// Driver is the name of the driver to use for this volume.
|
||||
// Required.
|
||||
optional string driver = 1;
|
||||
|
||||
// VolumeHandle is the unique volume name returned by the CSI volume
|
||||
// plugin’s CreateVolume to refer to the volume on all subsequent calls.
|
||||
// Required.
|
||||
optional string volumeHandle = 2;
|
||||
|
||||
// Optional: The value to pass to ControllerPublishVolumeRequest.
|
||||
// Defaults to false (read/write).
|
||||
// +optional
|
||||
optional bool readOnly = 3;
|
||||
}
|
||||
|
||||
// Adds and removes POSIX capabilities from running containers.
|
||||
message Capabilities {
|
||||
// Added capabilities
|
||||
@ -2356,6 +2373,10 @@ message PersistentVolumeSource {
|
||||
// More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md
|
||||
// +optional
|
||||
optional StorageOSPersistentVolumeSource storageos = 21;
|
||||
|
||||
// CSI represents storage that handled by an external CSI driver
|
||||
// +optional
|
||||
optional CSIPersistentVolumeSource csi = 22;
|
||||
}
|
||||
|
||||
// PersistentVolumeSpec is the specification of a persistent volume.
|
||||
|
20
vendor/k8s.io/api/core/v1/types.go
generated
vendored
20
vendor/k8s.io/api/core/v1/types.go
generated
vendored
@ -448,6 +448,9 @@ type PersistentVolumeSource struct {
|
||||
// More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md
|
||||
// +optional
|
||||
StorageOS *StorageOSPersistentVolumeSource `json:"storageos,omitempty" protobuf:"bytes,21,opt,name=storageos"`
|
||||
// CSI represents storage that handled by an external CSI driver
|
||||
// +optional
|
||||
CSI *CSIPersistentVolumeSource `json:"csi,omitempty" protobuf:"bytes,22,opt,name=csi"`
|
||||
}
|
||||
|
||||
const (
|
||||
@ -1621,6 +1624,23 @@ type LocalVolumeSource struct {
|
||||
Path string `json:"path" protobuf:"bytes,1,opt,name=path"`
|
||||
}
|
||||
|
||||
// Represents storage that is managed by an external CSI volume driver
|
||||
type CSIPersistentVolumeSource struct {
|
||||
// Driver is the name of the driver to use for this volume.
|
||||
// Required.
|
||||
Driver string `json:"driver" protobuf:"bytes,1,opt,name=driver"`
|
||||
|
||||
// VolumeHandle is the unique volume name returned by the CSI volume
|
||||
// plugin’s CreateVolume to refer to the volume on all subsequent calls.
|
||||
// Required.
|
||||
VolumeHandle string `json:"volumeHandle" protobuf:"bytes,2,opt,name=volumeHandle"`
|
||||
|
||||
// Optional: The value to pass to ControllerPublishVolumeRequest.
|
||||
// Defaults to false (read/write).
|
||||
// +optional
|
||||
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"`
|
||||
}
|
||||
|
||||
// ContainerPort represents a network port in a single container.
|
||||
type ContainerPort struct {
|
||||
// If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
|
||||
|
12
vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
generated
vendored
12
vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
generated
vendored
@ -116,6 +116,17 @@ func (Binding) SwaggerDoc() map[string]string {
|
||||
return map_Binding
|
||||
}
|
||||
|
||||
var map_CSIPersistentVolumeSource = map[string]string{
|
||||
"": "Represents storage that is managed by an external CSI volume driver",
|
||||
"driver": "Driver is the name of the driver to use for this volume. Required.",
|
||||
"volumeHandle": "VolumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.",
|
||||
"readOnly": "Optional: The value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).",
|
||||
}
|
||||
|
||||
func (CSIPersistentVolumeSource) SwaggerDoc() map[string]string {
|
||||
return map_CSIPersistentVolumeSource
|
||||
}
|
||||
|
||||
var map_Capabilities = map[string]string{
|
||||
"": "Adds and removes POSIX capabilities from running containers.",
|
||||
"add": "Added capabilities",
|
||||
@ -1212,6 +1223,7 @@ var map_PersistentVolumeSource = map[string]string{
|
||||
"scaleIO": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.",
|
||||
"local": "Local represents directly-attached storage with node affinity",
|
||||
"storageos": "StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md",
|
||||
"csi": "CSI represents storage that handled by an external CSI driver",
|
||||
}
|
||||
|
||||
func (PersistentVolumeSource) SwaggerDoc() map[string]string {
|
||||
|
25
vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
generated
vendored
25
vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
generated
vendored
@ -246,6 +246,22 @@ func (in *Binding) DeepCopyObject() runtime.Object {
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *CSIPersistentVolumeSource) DeepCopyInto(out *CSIPersistentVolumeSource) {
|
||||
*out = *in
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CSIPersistentVolumeSource.
|
||||
func (in *CSIPersistentVolumeSource) DeepCopy() *CSIPersistentVolumeSource {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(CSIPersistentVolumeSource)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *Capabilities) DeepCopyInto(out *Capabilities) {
|
||||
*out = *in
|
||||
@ -3145,6 +3161,15 @@ func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) {
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
if in.CSI != nil {
|
||||
in, out := &in.CSI, &out.CSI
|
||||
if *in == nil {
|
||||
*out = nil
|
||||
} else {
|
||||
*out = new(CSIPersistentVolumeSource)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
32
vendor/k8s.io/apimachinery/pkg/api/equality/BUILD
generated
vendored
32
vendor/k8s.io/apimachinery/pkg/api/equality/BUILD
generated
vendored
@ -1,32 +0,0 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["semantic.go"],
|
||||
importpath = "k8s.io/apimachinery/pkg/api/equality",
|
||||
deps = [
|
||||
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
)
|
49
vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go
generated
vendored
49
vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go
generated
vendored
@ -1,49 +0,0 @@
|
||||
/*
|
||||
Copyright 2014 The Kubernetes 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 equality
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/conversion"
|
||||
"k8s.io/apimachinery/pkg/fields"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
)
|
||||
|
||||
// Semantic can do semantic deep equality checks for api objects.
|
||||
// Example: apiequality.Semantic.DeepEqual(aPod, aPodWithNonNilButEmptyMaps) == true
|
||||
var Semantic = conversion.EqualitiesOrDie(
|
||||
func(a, b resource.Quantity) bool {
|
||||
// Ignore formatting, only care that numeric value stayed the same.
|
||||
// TODO: if we decide it's important, it should be safe to start comparing the format.
|
||||
//
|
||||
// Uninitialized quantities are equivalent to 0 quantities.
|
||||
return a.Cmp(b) == 0
|
||||
},
|
||||
func(a, b metav1.MicroTime) bool {
|
||||
return a.UTC() == b.UTC()
|
||||
},
|
||||
func(a, b metav1.Time) bool {
|
||||
return a.UTC() == b.UTC()
|
||||
},
|
||||
func(a, b labels.Selector) bool {
|
||||
return a.String() == b.String()
|
||||
},
|
||||
func(a, b fields.Selector) bool {
|
||||
return a.String() == b.String()
|
||||
},
|
||||
)
|
1
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD
generated
vendored
1
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD
generated
vendored
@ -32,7 +32,6 @@ go_library(
|
||||
importpath = "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
||||
deps = [
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/conversion/unstructured:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
|
11
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go
generated
vendored
11
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go
generated
vendored
@ -24,7 +24,6 @@ import (
|
||||
"strings"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/conversion/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
@ -39,7 +38,7 @@ func NestedFieldCopy(obj map[string]interface{}, fields ...string) (interface{},
|
||||
if !ok {
|
||||
return nil, false
|
||||
}
|
||||
return unstructured.DeepCopyJSONValue(val), true
|
||||
return runtime.DeepCopyJSONValue(val), true
|
||||
}
|
||||
|
||||
func nestedFieldNoCopy(obj map[string]interface{}, fields ...string) (interface{}, bool) {
|
||||
@ -131,7 +130,7 @@ func NestedSlice(obj map[string]interface{}, fields ...string) ([]interface{}, b
|
||||
return nil, false
|
||||
}
|
||||
if _, ok := val.([]interface{}); ok {
|
||||
return unstructured.DeepCopyJSONValue(val).([]interface{}), true
|
||||
return runtime.DeepCopyJSONValue(val).([]interface{}), true
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
@ -165,7 +164,7 @@ func NestedMap(obj map[string]interface{}, fields ...string) (map[string]interfa
|
||||
return nil, false
|
||||
}
|
||||
if m, ok := val.(map[string]interface{}); ok {
|
||||
return unstructured.DeepCopyJSON(m), true
|
||||
return runtime.DeepCopyJSON(m), true
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
@ -173,7 +172,7 @@ func NestedMap(obj map[string]interface{}, fields ...string) (map[string]interfa
|
||||
// SetNestedField sets the value of a nested field to a deep copy of the value provided.
|
||||
// Returns false if value cannot be set because one of the nesting levels is not a map[string]interface{}.
|
||||
func SetNestedField(obj map[string]interface{}, value interface{}, fields ...string) bool {
|
||||
return setNestedFieldNoCopy(obj, unstructured.DeepCopyJSONValue(value), fields...)
|
||||
return setNestedFieldNoCopy(obj, runtime.DeepCopyJSONValue(value), fields...)
|
||||
}
|
||||
|
||||
func setNestedFieldNoCopy(obj map[string]interface{}, value interface{}, fields ...string) bool {
|
||||
@ -288,8 +287,6 @@ func setOwnerReference(src metav1.OwnerReference) map[string]interface{} {
|
||||
return ret
|
||||
}
|
||||
|
||||
var converter = unstructured.NewConverter(false)
|
||||
|
||||
// UnstructuredJSONScheme is capable of converting JSON data into the Unstructured
|
||||
// type, which can be used for generic access to objects without a predefined scheme.
|
||||
// TODO: move into serializer/json.
|
||||
|
13
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go
generated
vendored
13
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go
generated
vendored
@ -21,7 +21,6 @@ import (
|
||||
"fmt"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/conversion/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
@ -50,8 +49,6 @@ var _ runtime.Unstructured = &Unstructured{}
|
||||
|
||||
func (obj *Unstructured) GetObjectKind() schema.ObjectKind { return obj }
|
||||
|
||||
func (obj *Unstructured) IsUnstructuredObject() {}
|
||||
|
||||
func (obj *Unstructured) IsList() bool {
|
||||
if obj.Object != nil {
|
||||
_, ok := obj.Object["items"]
|
||||
@ -91,6 +88,10 @@ func (obj *Unstructured) UnstructuredContent() map[string]interface{} {
|
||||
return obj.Object
|
||||
}
|
||||
|
||||
func (obj *Unstructured) SetUnstructuredContent(content map[string]interface{}) {
|
||||
obj.Object = content
|
||||
}
|
||||
|
||||
// MarshalJSON ensures that the unstructured object produces proper
|
||||
// JSON when passed to Go's standard JSON library.
|
||||
func (u *Unstructured) MarshalJSON() ([]byte, error) {
|
||||
@ -112,7 +113,7 @@ func (in *Unstructured) DeepCopy() *Unstructured {
|
||||
}
|
||||
out := new(Unstructured)
|
||||
*out = *in
|
||||
out.Object = unstructured.DeepCopyJSON(in.Object)
|
||||
out.Object = runtime.DeepCopyJSON(in.Object)
|
||||
return out
|
||||
}
|
||||
|
||||
@ -348,7 +349,7 @@ func (u *Unstructured) GetInitializers() *metav1.Initializers {
|
||||
return nil
|
||||
}
|
||||
out := &metav1.Initializers{}
|
||||
if err := converter.FromUnstructured(obj, out); err != nil {
|
||||
if err := runtime.DefaultUnstructuredConverter.FromUnstructured(obj, out); err != nil {
|
||||
utilruntime.HandleError(fmt.Errorf("unable to retrieve initializers for object: %v", err))
|
||||
}
|
||||
return out
|
||||
@ -359,7 +360,7 @@ func (u *Unstructured) SetInitializers(initializers *metav1.Initializers) {
|
||||
RemoveNestedField(u.Object, "metadata", "initializers")
|
||||
return
|
||||
}
|
||||
out, err := converter.ToUnstructured(initializers)
|
||||
out, err := runtime.DefaultUnstructuredConverter.ToUnstructured(initializers)
|
||||
if err != nil {
|
||||
utilruntime.HandleError(fmt.Errorf("unable to retrieve initializers for object: %v", err))
|
||||
}
|
||||
|
32
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_list.go
generated
vendored
32
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_list.go
generated
vendored
@ -20,7 +20,6 @@ import (
|
||||
"bytes"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/conversion/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
)
|
||||
@ -42,8 +41,6 @@ type UnstructuredList struct {
|
||||
|
||||
func (u *UnstructuredList) GetObjectKind() schema.ObjectKind { return u }
|
||||
|
||||
func (u *UnstructuredList) IsUnstructuredObject() {}
|
||||
|
||||
func (u *UnstructuredList) IsList() bool { return true }
|
||||
|
||||
func (u *UnstructuredList) EachListItem(fn func(runtime.Object) error) error {
|
||||
@ -74,13 +71,40 @@ func (u *UnstructuredList) UnstructuredContent() map[string]interface{} {
|
||||
return out
|
||||
}
|
||||
|
||||
// SetUnstructuredContent obeys the conventions of List and keeps Items and the items
|
||||
// array in sync. If items is not an array of objects in the incoming map, then any
|
||||
// mismatched item will be removed.
|
||||
func (obj *UnstructuredList) SetUnstructuredContent(content map[string]interface{}) {
|
||||
obj.Object = content
|
||||
if content == nil {
|
||||
obj.Items = nil
|
||||
return
|
||||
}
|
||||
items, ok := obj.Object["items"].([]interface{})
|
||||
if !ok || items == nil {
|
||||
items = []interface{}{}
|
||||
}
|
||||
unstructuredItems := make([]Unstructured, 0, len(items))
|
||||
newItems := make([]interface{}, 0, len(items))
|
||||
for _, item := range items {
|
||||
o, ok := item.(map[string]interface{})
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
unstructuredItems = append(unstructuredItems, Unstructured{Object: o})
|
||||
newItems = append(newItems, o)
|
||||
}
|
||||
obj.Items = unstructuredItems
|
||||
obj.Object["items"] = newItems
|
||||
}
|
||||
|
||||
func (u *UnstructuredList) DeepCopy() *UnstructuredList {
|
||||
if u == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(UnstructuredList)
|
||||
*out = *u
|
||||
out.Object = unstructured.DeepCopyJSON(u.Object)
|
||||
out.Object = runtime.DeepCopyJSON(u.Object)
|
||||
out.Items = make([]Unstructured, len(u.Items))
|
||||
for i := range u.Items {
|
||||
u.Items[i].DeepCopyInto(&out.Items[i])
|
||||
|
1
vendor/k8s.io/apimachinery/pkg/conversion/BUILD
generated
vendored
1
vendor/k8s.io/apimachinery/pkg/conversion/BUILD
generated
vendored
@ -45,7 +45,6 @@ filegroup(
|
||||
srcs = [
|
||||
":package-srcs",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/conversion/queryparams:all-srcs",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/conversion/unstructured:all-srcs",
|
||||
],
|
||||
tags = ["automanaged"],
|
||||
)
|
||||
|
39
vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD
generated
vendored
39
vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD
generated
vendored
@ -1,39 +0,0 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"converter.go",
|
||||
"doc.go",
|
||||
],
|
||||
importpath = "k8s.io/apimachinery/pkg/conversion/unstructured",
|
||||
deps = [
|
||||
"//vendor/github.com/golang/glog:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [
|
||||
":package-srcs",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/conversion/unstructured/testing:all-srcs",
|
||||
],
|
||||
tags = ["automanaged"],
|
||||
)
|
19
vendor/k8s.io/apimachinery/pkg/conversion/unstructured/doc.go
generated
vendored
19
vendor/k8s.io/apimachinery/pkg/conversion/unstructured/doc.go
generated
vendored
@ -1,19 +0,0 @@
|
||||
/*
|
||||
Copyright 2017 The Kubernetes 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 unstructured provides conversion from runtime objects
|
||||
// to map[string]interface{} representation.
|
||||
package unstructured
|
9
vendor/k8s.io/apimachinery/pkg/runtime/BUILD
generated
vendored
9
vendor/k8s.io/apimachinery/pkg/runtime/BUILD
generated
vendored
@ -19,6 +19,7 @@ go_library(
|
||||
"codec.go",
|
||||
"codec_check.go",
|
||||
"conversion.go",
|
||||
"converter.go",
|
||||
"doc.go",
|
||||
"embedded.go",
|
||||
"error.go",
|
||||
@ -37,10 +38,13 @@ go_library(
|
||||
importpath = "k8s.io/apimachinery/pkg/runtime",
|
||||
deps = [
|
||||
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
|
||||
"//vendor/github.com/golang/glog:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/conversion/queryparams:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
@ -48,6 +52,7 @@ go_test(
|
||||
name = "go_default_xtest",
|
||||
srcs = [
|
||||
"conversion_test.go",
|
||||
"converter_test.go",
|
||||
"embedded_test.go",
|
||||
"extension_test.go",
|
||||
"scheme_test.go",
|
||||
@ -56,13 +61,17 @@ go_test(
|
||||
deps = [
|
||||
"//vendor/github.com/google/gofuzz:go_default_library",
|
||||
"//vendor/github.com/spf13/pflag:go_default_library",
|
||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||
"//vendor/github.com/stretchr/testify/require:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/testing:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package unstructured
|
||||
package runtime
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@ -27,19 +27,18 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/diff"
|
||||
"k8s.io/apimachinery/pkg/conversion"
|
||||
"k8s.io/apimachinery/pkg/util/json"
|
||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
// Converter is an interface for converting between interface{}
|
||||
// UnstructuredConverter is an interface for converting between interface{}
|
||||
// and map[string]interface representation.
|
||||
type Converter interface {
|
||||
type UnstructuredConverter interface {
|
||||
ToUnstructured(obj interface{}) (map[string]interface{}, error)
|
||||
FromUnstructured(u map[string]interface{}, obj interface{}) error
|
||||
}
|
||||
@ -78,7 +77,16 @@ var (
|
||||
float64Type = reflect.TypeOf(float64(0))
|
||||
boolType = reflect.TypeOf(bool(false))
|
||||
fieldCache = newFieldsCache()
|
||||
DefaultConverter = NewConverter(parseBool(os.Getenv("KUBE_PATCH_CONVERSION_DETECTOR")))
|
||||
|
||||
// DefaultUnstructuredConverter performs unstructured to Go typed object conversions.
|
||||
DefaultUnstructuredConverter = &unstructuredConverter{
|
||||
mismatchDetection: parseBool(os.Getenv("KUBE_PATCH_CONVERSION_DETECTOR")),
|
||||
comparison: conversion.EqualitiesOrDie(
|
||||
func(a, b time.Time) bool {
|
||||
return a.UTC() == b.UTC()
|
||||
},
|
||||
),
|
||||
}
|
||||
)
|
||||
|
||||
func parseBool(key string) bool {
|
||||
@ -92,24 +100,30 @@ func parseBool(key string) bool {
|
||||
return value
|
||||
}
|
||||
|
||||
// ConverterImpl knows how to convert between interface{} and
|
||||
// unstructuredConverter knows how to convert between interface{} and
|
||||
// Unstructured in both ways.
|
||||
type converterImpl struct {
|
||||
type unstructuredConverter struct {
|
||||
// If true, we will be additionally running conversion via json
|
||||
// to ensure that the result is true.
|
||||
// This is supposed to be set only in tests.
|
||||
mismatchDetection bool
|
||||
// comparison is the default test logic used to compare
|
||||
comparison conversion.Equalities
|
||||
}
|
||||
|
||||
func NewConverter(mismatchDetection bool) Converter {
|
||||
return &converterImpl{
|
||||
mismatchDetection: mismatchDetection,
|
||||
// NewTestUnstructuredConverter creates an UnstructuredConverter that accepts JSON typed maps and translates them
|
||||
// to Go types via reflection. It performs mismatch detection automatically and is intended for use by external
|
||||
// test tools. Use DefaultUnstructuredConverter if you do not explicitly need mismatch detection.
|
||||
func NewTestUnstructuredConverter(comparison conversion.Equalities) UnstructuredConverter {
|
||||
return &unstructuredConverter{
|
||||
mismatchDetection: true,
|
||||
comparison: comparison,
|
||||
}
|
||||
}
|
||||
|
||||
// FromUnstructured converts an object from map[string]interface{} representation into a concrete type.
|
||||
// It uses encoding/json/Unmarshaler if object implements it or reflection if not.
|
||||
func (c *converterImpl) FromUnstructured(u map[string]interface{}, obj interface{}) error {
|
||||
func (c *unstructuredConverter) FromUnstructured(u map[string]interface{}, obj interface{}) error {
|
||||
t := reflect.TypeOf(obj)
|
||||
value := reflect.ValueOf(obj)
|
||||
if t.Kind() != reflect.Ptr || value.IsNil() {
|
||||
@ -122,8 +136,8 @@ func (c *converterImpl) FromUnstructured(u map[string]interface{}, obj interface
|
||||
if (err != nil) != (newErr != nil) {
|
||||
glog.Fatalf("FromUnstructured unexpected error for %v: error: %v", u, err)
|
||||
}
|
||||
if err == nil && !apiequality.Semantic.DeepEqual(obj, newObj) {
|
||||
glog.Fatalf("FromUnstructured mismatch for %#v, diff: %v", obj, diff.ObjectReflectDiff(obj, newObj))
|
||||
if err == nil && !c.comparison.DeepEqual(obj, newObj) {
|
||||
glog.Fatalf("FromUnstructured mismatch\nobj1: %#v\nobj2: %#v", obj, newObj)
|
||||
}
|
||||
}
|
||||
return err
|
||||
@ -393,10 +407,10 @@ func interfaceFromUnstructured(sv, dv reflect.Value) error {
|
||||
|
||||
// ToUnstructured converts an object into map[string]interface{} representation.
|
||||
// It uses encoding/json/Marshaler if object implements it or reflection if not.
|
||||
func (c *converterImpl) ToUnstructured(obj interface{}) (map[string]interface{}, error) {
|
||||
func (c *unstructuredConverter) ToUnstructured(obj interface{}) (map[string]interface{}, error) {
|
||||
var u map[string]interface{}
|
||||
var err error
|
||||
if unstr, ok := obj.(runtime.Unstructured); ok {
|
||||
if unstr, ok := obj.(Unstructured); ok {
|
||||
u = DeepCopyJSON(unstr.UnstructuredContent())
|
||||
} else {
|
||||
t := reflect.TypeOf(obj)
|
||||
@ -413,8 +427,8 @@ func (c *converterImpl) ToUnstructured(obj interface{}) (map[string]interface{},
|
||||
if (err != nil) != (newErr != nil) {
|
||||
glog.Fatalf("ToUnstructured unexpected error for %v: error: %v; newErr: %v", obj, err, newErr)
|
||||
}
|
||||
if err == nil && !apiequality.Semantic.DeepEqual(u, newUnstr) {
|
||||
glog.Fatalf("ToUnstructured mismatch for %#v, diff: %v", u, diff.ObjectReflectDiff(u, newUnstr))
|
||||
if err == nil && !c.comparison.DeepEqual(u, newUnstr) {
|
||||
glog.Fatalf("ToUnstructured mismatch\nobj1: %#v\nobj2: %#v", u, newUnstr)
|
||||
}
|
||||
}
|
||||
if err != nil {
|
6
vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go
generated
vendored
6
vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go
generated
vendored
@ -233,13 +233,13 @@ type Object interface {
|
||||
// Unstructured objects store values as map[string]interface{}, with only values that can be serialized
|
||||
// to JSON allowed.
|
||||
type Unstructured interface {
|
||||
// IsUnstructuredObject is a marker interface to allow objects that can be serialized but not introspected
|
||||
// to bypass conversion.
|
||||
IsUnstructuredObject()
|
||||
Object
|
||||
// UnstructuredContent returns a non-nil, mutable map of the contents of this object. Values may be
|
||||
// []interface{}, map[string]interface{}, or any primitive type. Contents are typically serialized to
|
||||
// and from JSON.
|
||||
UnstructuredContent() map[string]interface{}
|
||||
// SetUnstructuredContent updates the object content to match the provided map.
|
||||
SetUnstructuredContent(map[string]interface{})
|
||||
// IsList returns true if this type is a list or matches the list convention - has an array called "items".
|
||||
IsList() bool
|
||||
// EachListItem should pass a single item out of the list as an Object to the provided function. Any
|
||||
|
144
vendor/k8s.io/apimachinery/pkg/runtime/scheme.go
generated
vendored
144
vendor/k8s.io/apimachinery/pkg/runtime/scheme.go
generated
vendored
@ -217,19 +217,22 @@ func (s *Scheme) AllKnownTypes() map[schema.GroupVersionKind]reflect.Type {
|
||||
return s.gvkToType
|
||||
}
|
||||
|
||||
// ObjectKind returns the group,version,kind of the go object and true if this object
|
||||
// is considered unversioned, or an error if it's not a pointer or is unregistered.
|
||||
func (s *Scheme) ObjectKind(obj Object) (schema.GroupVersionKind, bool, error) {
|
||||
gvks, unversionedType, err := s.ObjectKinds(obj)
|
||||
if err != nil {
|
||||
return schema.GroupVersionKind{}, false, err
|
||||
}
|
||||
return gvks[0], unversionedType, nil
|
||||
}
|
||||
|
||||
// ObjectKinds returns all possible group,version,kind of the go object, true if the
|
||||
// object is considered unversioned, or an error if it's not a pointer or is unregistered.
|
||||
func (s *Scheme) ObjectKinds(obj Object) ([]schema.GroupVersionKind, bool, error) {
|
||||
// Unstructured objects are always considered to have their declared GVK
|
||||
if _, ok := obj.(Unstructured); ok {
|
||||
// we require that the GVK be populated in order to recognize the object
|
||||
gvk := obj.GetObjectKind().GroupVersionKind()
|
||||
if len(gvk.Kind) == 0 {
|
||||
return nil, false, NewMissingKindErr("unstructured object has no kind")
|
||||
}
|
||||
if len(gvk.Version) == 0 {
|
||||
return nil, false, NewMissingVersionErr("unstructured object has no version")
|
||||
}
|
||||
return []schema.GroupVersionKind{gvk}, false, nil
|
||||
}
|
||||
|
||||
v, err := conversion.EnforcePtr(obj)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
@ -338,7 +341,7 @@ func (s *Scheme) AddConversionFuncs(conversionFuncs ...interface{}) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Similar to AddConversionFuncs, but registers conversion functions that were
|
||||
// AddGeneratedConversionFuncs registers conversion functions that were
|
||||
// automatically generated.
|
||||
func (s *Scheme) AddGeneratedConversionFuncs(conversionFuncs ...interface{}) error {
|
||||
for _, f := range conversionFuncs {
|
||||
@ -396,10 +399,68 @@ func (s *Scheme) Default(src Object) {
|
||||
// testing of conversion functions. Returns an error if the conversion isn't
|
||||
// possible. You can call this with types that haven't been registered (for example,
|
||||
// a to test conversion of types that are nested within registered types). The
|
||||
// context interface is passed to the convertor.
|
||||
// TODO: identify whether context should be hidden, or behind a formal context/scope
|
||||
// interface
|
||||
// context interface is passed to the convertor. Convert also supports Unstructured
|
||||
// types and will convert them intelligently.
|
||||
func (s *Scheme) Convert(in, out interface{}, context interface{}) error {
|
||||
unstructuredIn, okIn := in.(Unstructured)
|
||||
unstructuredOut, okOut := out.(Unstructured)
|
||||
switch {
|
||||
case okIn && okOut:
|
||||
// converting unstructured input to an unstructured output is a straight copy - unstructured
|
||||
// is a "smart holder" and the contents are passed by reference between the two objects
|
||||
unstructuredOut.SetUnstructuredContent(unstructuredIn.UnstructuredContent())
|
||||
return nil
|
||||
|
||||
case okOut:
|
||||
// if the output is an unstructured object, use the standard Go type to unstructured
|
||||
// conversion. The object must not be internal.
|
||||
obj, ok := in.(Object)
|
||||
if !ok {
|
||||
return fmt.Errorf("unable to convert object type %T to Unstructured, must be a runtime.Object", in)
|
||||
}
|
||||
gvks, unversioned, err := s.ObjectKinds(obj)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
gvk := gvks[0]
|
||||
|
||||
// if no conversion is necessary, convert immediately
|
||||
if unversioned || gvk.Version != APIVersionInternal {
|
||||
content, err := DefaultUnstructuredConverter.ToUnstructured(in)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
unstructuredOut.SetUnstructuredContent(content)
|
||||
return nil
|
||||
}
|
||||
|
||||
// attempt to convert the object to an external version first.
|
||||
target, ok := context.(GroupVersioner)
|
||||
if !ok {
|
||||
return fmt.Errorf("unable to convert the internal object type %T to Unstructured without providing a preferred version to convert to", in)
|
||||
}
|
||||
// Convert is implicitly unsafe, so we don't need to perform a safe conversion
|
||||
versioned, err := s.UnsafeConvertToVersion(obj, target)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
content, err := DefaultUnstructuredConverter.ToUnstructured(versioned)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
unstructuredOut.SetUnstructuredContent(content)
|
||||
return nil
|
||||
|
||||
case okIn:
|
||||
// converting an unstructured object to any type is modeled by first converting
|
||||
// the input to a versioned type, then running standard conversions
|
||||
typed, err := s.unstructuredToTyped(unstructuredIn)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
in = typed
|
||||
}
|
||||
|
||||
flags, meta := s.generateConvertMeta(in)
|
||||
meta.Context = context
|
||||
if flags == 0 {
|
||||
@ -408,8 +469,8 @@ func (s *Scheme) Convert(in, out interface{}, context interface{}) error {
|
||||
return s.converter.Convert(in, out, flags, meta)
|
||||
}
|
||||
|
||||
// Converts the given field label and value for an kind field selector from
|
||||
// versioned representation to an unversioned one.
|
||||
// ConvertFieldLabel alters the given field label and value for an kind field selector from
|
||||
// versioned representation to an unversioned one or returns an error.
|
||||
func (s *Scheme) ConvertFieldLabel(version, kind, label, value string) (string, string, error) {
|
||||
if s.fieldLabelConversionFuncs[version] == nil {
|
||||
return DefaultMetaV1FieldSelectorConversion(label, value)
|
||||
@ -439,15 +500,30 @@ func (s *Scheme) UnsafeConvertToVersion(in Object, target GroupVersioner) (Objec
|
||||
|
||||
// convertToVersion handles conversion with an optional copy.
|
||||
func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) (Object, error) {
|
||||
// determine the incoming kinds with as few allocations as possible.
|
||||
t := reflect.TypeOf(in)
|
||||
if t.Kind() != reflect.Ptr {
|
||||
return nil, fmt.Errorf("only pointer types may be converted: %v", t)
|
||||
}
|
||||
t = t.Elem()
|
||||
if t.Kind() != reflect.Struct {
|
||||
return nil, fmt.Errorf("only pointers to struct types may be converted: %v", t)
|
||||
var t reflect.Type
|
||||
|
||||
if u, ok := in.(Unstructured); ok {
|
||||
typed, err := s.unstructuredToTyped(u)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
in = typed
|
||||
// unstructuredToTyped returns an Object, which must be a pointer to a struct.
|
||||
t = reflect.TypeOf(in).Elem()
|
||||
|
||||
} else {
|
||||
// determine the incoming kinds with as few allocations as possible.
|
||||
t = reflect.TypeOf(in)
|
||||
if t.Kind() != reflect.Ptr {
|
||||
return nil, fmt.Errorf("only pointer types may be converted: %v", t)
|
||||
}
|
||||
t = t.Elem()
|
||||
if t.Kind() != reflect.Struct {
|
||||
return nil, fmt.Errorf("only pointers to struct types may be converted: %v", t)
|
||||
}
|
||||
}
|
||||
|
||||
kinds, ok := s.typeToGVK[t]
|
||||
if !ok || len(kinds) == 0 {
|
||||
return nil, NewNotRegisteredErrForType(t)
|
||||
@ -463,7 +539,6 @@ func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) (
|
||||
}
|
||||
return copyAndSetTargetKind(copy, in, unversionedKind)
|
||||
}
|
||||
|
||||
return nil, NewNotRegisteredErrForTarget(t, target)
|
||||
}
|
||||
|
||||
@ -501,6 +576,25 @@ func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) (
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// unstructuredToTyped attempts to transform an unstructured object to a typed
|
||||
// object if possible. It will return an error if conversion is not possible, or the versioned
|
||||
// Go form of the object. Note that this conversion will lose fields.
|
||||
func (s *Scheme) unstructuredToTyped(in Unstructured) (Object, error) {
|
||||
// the type must be something we recognize
|
||||
gvks, _, err := s.ObjectKinds(in)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
typed, err := s.New(gvks[0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := DefaultUnstructuredConverter.FromUnstructured(in.UnstructuredContent(), typed); err != nil {
|
||||
return nil, fmt.Errorf("unable to convert unstructured object to %v: %v", gvks[0], err)
|
||||
}
|
||||
return typed, nil
|
||||
}
|
||||
|
||||
// generateConvertMeta constructs the meta value we pass to Convert.
|
||||
func (s *Scheme) generateConvertMeta(in interface{}) (conversion.FieldMatchingFlags, *conversion.Meta) {
|
||||
return s.converter.DefaultMeta(reflect.TypeOf(in))
|
||||
|
3
vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go
generated
vendored
3
vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go
generated
vendored
@ -150,9 +150,10 @@ func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, i
|
||||
}
|
||||
|
||||
if into != nil {
|
||||
_, isUnstructured := into.(runtime.Unstructured)
|
||||
types, _, err := s.typer.ObjectKinds(into)
|
||||
switch {
|
||||
case runtime.IsNotRegisteredError(err):
|
||||
case runtime.IsNotRegisteredError(err), isUnstructured:
|
||||
if err := jsoniter.ConfigFastest.Unmarshal(data, into); err != nil {
|
||||
return nil, actual, err
|
||||
}
|
||||
|
36
vendor/k8s.io/client-go/discovery/unstructured.go
generated
vendored
36
vendor/k8s.io/client-go/discovery/unstructured.go
generated
vendored
@ -49,28 +49,22 @@ func NewUnstructuredObjectTyper(groupResources []*APIGroupResources) *Unstructur
|
||||
return dot
|
||||
}
|
||||
|
||||
// ObjectKind returns the group,version,kind of the provided object, or an error
|
||||
// if the object in not runtime.Unstructured or has no group,version,kind
|
||||
// information.
|
||||
func (d *UnstructuredObjectTyper) ObjectKind(obj runtime.Object) (schema.GroupVersionKind, error) {
|
||||
if _, ok := obj.(runtime.Unstructured); !ok {
|
||||
return schema.GroupVersionKind{}, fmt.Errorf("type %T is invalid for dynamic object typer", obj)
|
||||
}
|
||||
|
||||
return obj.GetObjectKind().GroupVersionKind(), nil
|
||||
}
|
||||
|
||||
// ObjectKinds returns a slice of one element with the group,version,kind of the
|
||||
// provided object, or an error if the object is not runtime.Unstructured or
|
||||
// has no group,version,kind information. unversionedType will always be false
|
||||
// because runtime.Unstructured object should always have group,version,kind
|
||||
// information set.
|
||||
func (d *UnstructuredObjectTyper) ObjectKinds(obj runtime.Object) (gvks []schema.GroupVersionKind, unversionedType bool, err error) {
|
||||
gvk, err := d.ObjectKind(obj)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
if _, ok := obj.(runtime.Unstructured); !ok {
|
||||
return nil, false, fmt.Errorf("type %T is invalid for dynamic object typer", obj)
|
||||
}
|
||||
gvk := obj.GetObjectKind().GroupVersionKind()
|
||||
if len(gvk.Kind) == 0 {
|
||||
return nil, false, runtime.NewMissingKindErr("unstructured object has no kind")
|
||||
}
|
||||
if len(gvk.Version) == 0 {
|
||||
return nil, false, runtime.NewMissingVersionErr("unstructured object has no version")
|
||||
}
|
||||
|
||||
return []schema.GroupVersionKind{gvk}, false, nil
|
||||
}
|
||||
|
||||
@ -80,16 +74,4 @@ func (d *UnstructuredObjectTyper) Recognizes(gvk schema.GroupVersionKind) bool {
|
||||
return d.registered[gvk]
|
||||
}
|
||||
|
||||
// IsUnversioned returns false always because runtime.Unstructured objects
|
||||
// should always have group,version,kind information set. ok will be true if the
|
||||
// object's group,version,kind is api.Registry.
|
||||
func (d *UnstructuredObjectTyper) IsUnversioned(obj runtime.Object) (unversioned bool, ok bool) {
|
||||
gvk, err := d.ObjectKind(obj)
|
||||
if err != nil {
|
||||
return false, false
|
||||
}
|
||||
|
||||
return false, d.registered[gvk]
|
||||
}
|
||||
|
||||
var _ runtime.ObjectTyper = &UnstructuredObjectTyper{}
|
||||
|
Loading…
x
Reference in New Issue
Block a user