mirror of
https://github.com/kubernetes/client-go.git
synced 2025-06-23 13:47:19 +00:00
Merge pull request #63253 from deads2k/client-05-dynamic-update
Automatic merge from submit-queue (batch tested with PRs 63152, 63253). 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>. make dynamic client slightly easier to use and add fakes Tweaks the dynamic client to make it more "normal" for resources to namespaces. Adds a fake dynamic client. @kubernetes/sig-api-machinery-pr-reviews /assign @hzxuzhonghu /assign @sttts ```release-note NONE ``` Kubernetes-commit: 8e99d621e95c38d6e773a631c7179915ed952a2f
This commit is contained in:
commit
01d6a1350d
164
Godeps/Godeps.json
generated
164
Godeps/Godeps.json
generated
@ -252,331 +252,331 @@
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/admissionregistration/v1alpha1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/admissionregistration/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/apps/v1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/apps/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/apps/v1beta2",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authentication/v1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authentication/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authorization/v1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authorization/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/autoscaling/v1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/autoscaling/v2beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/batch/v1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/batch/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/batch/v2alpha1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/certificates/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/core/v1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/events/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/extensions/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/imagepolicy/v1alpha1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/networking/v1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/policy/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/rbac/v1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/rbac/v1alpha1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/rbac/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/scheduling/v1alpha1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/settings/v1alpha1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/storage/v1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/storage/v1alpha1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/storage/v1beta1",
|
||||
"Rev": "c416ded332245f3aa810919a74cc5b561142696c"
|
||||
"Rev": "b7d77fa220f5130ec63c2ca7167dd9653449c64d"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/testing",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/fields",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/labels",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/selection",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/types",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/version",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/watch",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
|
||||
"Rev": "2ad92c37230c7d04408c333e1d1db20450abdc7e"
|
||||
"Rev": "b54e2be8c5c22805a615d4e84c3cbffcdca8654f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
|
||||
|
236
dynamic/fake/simple.go
Normal file
236
dynamic/fake/simple.go
Normal file
@ -0,0 +1,236 @@
|
||||
/*
|
||||
Copyright 2018 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 fake
|
||||
|
||||
import (
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
"k8s.io/client-go/dynamic"
|
||||
"k8s.io/client-go/testing"
|
||||
)
|
||||
|
||||
func NewSimpleDynamicClient(scheme *runtime.Scheme, objects ...runtime.Object) *FakeDynamicClient {
|
||||
codecs := serializer.NewCodecFactory(scheme)
|
||||
o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder())
|
||||
for _, obj := range objects {
|
||||
if err := o.Add(obj); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
cs := &FakeDynamicClient{}
|
||||
cs.AddReactor("*", "*", testing.ObjectReaction(o))
|
||||
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
|
||||
gvr := action.GetResource()
|
||||
ns := action.GetNamespace()
|
||||
watch, err := o.Watch(gvr, ns)
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
return true, watch, nil
|
||||
})
|
||||
|
||||
return cs
|
||||
}
|
||||
|
||||
// Clientset implements clientset.Interface. Meant to be embedded into a
|
||||
// struct to get a default implementation. This makes faking out just the method
|
||||
// you want to test easier.
|
||||
type FakeDynamicClient struct {
|
||||
testing.Fake
|
||||
scheme *runtime.Scheme
|
||||
}
|
||||
|
||||
type dynamicResourceClient struct {
|
||||
client *FakeDynamicClient
|
||||
namespace string
|
||||
resource schema.GroupVersionResource
|
||||
subresource string
|
||||
}
|
||||
|
||||
var _ dynamic.DynamicInterface = &FakeDynamicClient{}
|
||||
|
||||
func (c *FakeDynamicClient) Resource(resource schema.GroupVersionResource) dynamic.NamespaceableDynamicResourceInterface {
|
||||
return &dynamicResourceClient{client: c, resource: resource}
|
||||
}
|
||||
|
||||
// Deprecated, this isn't how we want to do it
|
||||
func (c *FakeDynamicClient) ClusterSubresource(resource schema.GroupVersionResource, subresource string) dynamic.DynamicResourceInterface {
|
||||
return &dynamicResourceClient{client: c, resource: resource, subresource: subresource}
|
||||
}
|
||||
|
||||
// Deprecated, this isn't how we want to do it
|
||||
func (c *FakeDynamicClient) NamespacedSubresource(resource schema.GroupVersionResource, subresource, namespace string) dynamic.DynamicResourceInterface {
|
||||
return &dynamicResourceClient{client: c, resource: resource, namespace: namespace, subresource: subresource}
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) Namespace(ns string) dynamic.DynamicResourceInterface {
|
||||
ret := *c
|
||||
ret.namespace = ns
|
||||
return &ret
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) Create(obj *unstructured.Unstructured) (*unstructured.Unstructured, error) {
|
||||
uncastRet, err := c.client.Fake.
|
||||
Invokes(testing.NewCreateAction(c.resource, c.namespace, obj), obj)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if uncastRet == nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ret := &unstructured.Unstructured{}
|
||||
if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ret, err
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) Update(obj *unstructured.Unstructured) (*unstructured.Unstructured, error) {
|
||||
uncastRet, err := c.client.Fake.
|
||||
Invokes(testing.NewUpdateAction(c.resource, c.namespace, obj), obj)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if uncastRet == nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ret := &unstructured.Unstructured{}
|
||||
if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ret, err
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) UpdateStatus(obj *unstructured.Unstructured) (*unstructured.Unstructured, error) {
|
||||
uncastRet, err := c.client.Fake.
|
||||
Invokes(testing.NewUpdateSubresourceAction(c.resource, "status", c.namespace, obj), obj)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if uncastRet == nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ret := &unstructured.Unstructured{}
|
||||
if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ret, err
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) Delete(name string, opts *metav1.DeleteOptions) error {
|
||||
_, err := c.client.Fake.
|
||||
Invokes(testing.NewDeleteAction(c.resource, c.namespace, name), &metav1.Status{Status: "dynamic delete fail"})
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) DeleteCollection(opts *metav1.DeleteOptions, listOptions metav1.ListOptions) error {
|
||||
action := testing.NewDeleteCollectionAction(c.resource, c.namespace, listOptions)
|
||||
|
||||
_, err := c.client.Fake.Invokes(action, &metav1.Status{Status: "dynamic deletecollection fail"})
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) Get(name string, opts metav1.GetOptions) (*unstructured.Unstructured, error) {
|
||||
uncastRet, err := c.client.Fake.
|
||||
Invokes(testing.NewGetAction(c.resource, c.namespace, name), &metav1.Status{Status: "dynamic get fail"})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if uncastRet == nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ret := &unstructured.Unstructured{}
|
||||
if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ret, err
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) List(opts metav1.ListOptions) (*unstructured.UnstructuredList, error) {
|
||||
obj, err := c.client.Fake.
|
||||
Invokes(testing.NewListAction(c.resource, schema.GroupVersionKind{Version: "v1", Kind: "List"}, c.namespace, opts), &metav1.Status{Status: "dynamic list fail"})
|
||||
|
||||
if obj == nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||
if label == nil {
|
||||
label = labels.Everything()
|
||||
}
|
||||
|
||||
retUnstructured := &unstructured.Unstructured{}
|
||||
if err := c.client.scheme.Convert(obj, retUnstructured, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
entireList, err := retUnstructured.ToList()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list := &unstructured.UnstructuredList{}
|
||||
for _, item := range entireList.Items {
|
||||
metadata, err := meta.Accessor(item)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if label.Matches(labels.Set(metadata.GetLabels())) {
|
||||
list.Items = append(list.Items, item)
|
||||
}
|
||||
}
|
||||
return list, nil
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) Watch(opts metav1.ListOptions) (watch.Interface, error) {
|
||||
return c.client.Fake.
|
||||
InvokesWatch(testing.NewWatchAction(c.resource, c.namespace, opts))
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (*unstructured.Unstructured, error) {
|
||||
uncastRet, err := c.client.Fake.
|
||||
Invokes(testing.NewPatchSubresourceAction(c.resource, c.namespace, name, data, subresources...), &metav1.Status{Status: "dynamic patch fail"})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if uncastRet == nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ret := &unstructured.Unstructured{}
|
||||
if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ret, err
|
||||
}
|
@ -32,8 +32,7 @@ import (
|
||||
)
|
||||
|
||||
type DynamicInterface interface {
|
||||
ClusterResource(resource schema.GroupVersionResource) DynamicResourceInterface
|
||||
NamespacedResource(resource schema.GroupVersionResource, namespace string) DynamicResourceInterface
|
||||
Resource(resource schema.GroupVersionResource) NamespaceableDynamicResourceInterface
|
||||
|
||||
// Deprecated, this isn't how we want to do it
|
||||
ClusterSubresource(resource schema.GroupVersionResource, subresource string) DynamicResourceInterface
|
||||
@ -53,6 +52,11 @@ type DynamicResourceInterface interface {
|
||||
Patch(name string, pt types.PatchType, data []byte, subresources ...string) (*unstructured.Unstructured, error)
|
||||
}
|
||||
|
||||
type NamespaceableDynamicResourceInterface interface {
|
||||
Namespace(string) DynamicResourceInterface
|
||||
DynamicResourceInterface
|
||||
}
|
||||
|
||||
type dynamicClient struct {
|
||||
client *rest.RESTClient
|
||||
}
|
||||
@ -86,12 +90,9 @@ type dynamicResourceClient struct {
|
||||
subresource string
|
||||
}
|
||||
|
||||
func (c *dynamicClient) ClusterResource(resource schema.GroupVersionResource) DynamicResourceInterface {
|
||||
func (c *dynamicClient) Resource(resource schema.GroupVersionResource) NamespaceableDynamicResourceInterface {
|
||||
return &dynamicResourceClient{client: c, resource: resource}
|
||||
}
|
||||
func (c *dynamicClient) NamespacedResource(resource schema.GroupVersionResource, namespace string) DynamicResourceInterface {
|
||||
return &dynamicResourceClient{client: c, resource: resource, namespace: namespace}
|
||||
}
|
||||
|
||||
func (c *dynamicClient) ClusterSubresource(resource schema.GroupVersionResource, subresource string) DynamicResourceInterface {
|
||||
return &dynamicResourceClient{client: c, resource: resource, subresource: subresource}
|
||||
@ -100,6 +101,12 @@ func (c *dynamicClient) NamespacedSubresource(resource schema.GroupVersionResour
|
||||
return &dynamicResourceClient{client: c, resource: resource, namespace: namespace, subresource: subresource}
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) Namespace(ns string) DynamicResourceInterface {
|
||||
ret := *c
|
||||
ret.namespace = ns
|
||||
return &ret
|
||||
}
|
||||
|
||||
func (c *dynamicResourceClient) Create(obj *unstructured.Unstructured) (*unstructured.Unstructured, error) {
|
||||
if len(c.subresource) > 0 {
|
||||
return nil, fmt.Errorf("create not supported for subresources")
|
||||
|
Loading…
Reference in New Issue
Block a user