mirror of
https://github.com/kubernetes/sample-controller.git
synced 2025-03-04 00:02:55 +08:00
Merge pull request #62563 from devdattakulkarni/client-go-details
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>. Updated README to include client-go<->controller diagram The sample-controller makes extensive use of various mechanisms available in client-go. For writing custom controllers/operators it will be helpful if there is precise description of how the client-go library works and how/where it interfaces with custom controller code. Recently we published a blog post with these details here: https://medium.com/@cloudark/kubernetes-custom-controllers-b6c7d0668fdf This patch includes the diagram from the post, as was recommended by @sttts on https://github.com/kubernetes/sample-controller/issues/13 **What this PR does / why we need it**: **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # **Special notes for your reviewer**: **Release note**: ```release-note ``` Kubernetes-commit: 773def0194ecc1cd845ea9a01da761d5a0390e6e
This commit is contained in:
commit
9ec2064685
380
Godeps/Godeps.json
generated
380
Godeps/Godeps.json
generated
@ -156,763 +156,763 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/admissionregistration/v1alpha1",
|
"ImportPath": "k8s.io/api/admissionregistration/v1alpha1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/admissionregistration/v1beta1",
|
"ImportPath": "k8s.io/api/admissionregistration/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/apps/v1",
|
"ImportPath": "k8s.io/api/apps/v1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/apps/v1beta1",
|
"ImportPath": "k8s.io/api/apps/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/apps/v1beta2",
|
"ImportPath": "k8s.io/api/apps/v1beta2",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/authentication/v1",
|
"ImportPath": "k8s.io/api/authentication/v1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/authentication/v1beta1",
|
"ImportPath": "k8s.io/api/authentication/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/authorization/v1",
|
"ImportPath": "k8s.io/api/authorization/v1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/authorization/v1beta1",
|
"ImportPath": "k8s.io/api/authorization/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/autoscaling/v1",
|
"ImportPath": "k8s.io/api/autoscaling/v1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/autoscaling/v2beta1",
|
"ImportPath": "k8s.io/api/autoscaling/v2beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/batch/v1",
|
"ImportPath": "k8s.io/api/batch/v1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/batch/v1beta1",
|
"ImportPath": "k8s.io/api/batch/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/batch/v2alpha1",
|
"ImportPath": "k8s.io/api/batch/v2alpha1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/certificates/v1beta1",
|
"ImportPath": "k8s.io/api/certificates/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/core/v1",
|
"ImportPath": "k8s.io/api/core/v1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/events/v1beta1",
|
"ImportPath": "k8s.io/api/events/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/extensions/v1beta1",
|
"ImportPath": "k8s.io/api/extensions/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/networking/v1",
|
"ImportPath": "k8s.io/api/networking/v1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/policy/v1beta1",
|
"ImportPath": "k8s.io/api/policy/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/rbac/v1",
|
"ImportPath": "k8s.io/api/rbac/v1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/rbac/v1alpha1",
|
"ImportPath": "k8s.io/api/rbac/v1alpha1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/rbac/v1beta1",
|
"ImportPath": "k8s.io/api/rbac/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/scheduling/v1alpha1",
|
"ImportPath": "k8s.io/api/scheduling/v1alpha1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/settings/v1alpha1",
|
"ImportPath": "k8s.io/api/settings/v1alpha1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/storage/v1",
|
"ImportPath": "k8s.io/api/storage/v1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/storage/v1alpha1",
|
"ImportPath": "k8s.io/api/storage/v1alpha1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/api/storage/v1beta1",
|
"ImportPath": "k8s.io/api/storage/v1beta1",
|
||||||
"Rev": "8ab7c6a2fbd1724a52514855629cec31a8f86929"
|
"Rev": "53d615ae3f440f957cb9989d989d597f047262d9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
|
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
|
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
|
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
|
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
|
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1",
|
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
|
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
|
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/fields",
|
"ImportPath": "k8s.io/apimachinery/pkg/fields",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/labels",
|
"ImportPath": "k8s.io/apimachinery/pkg/labels",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
|
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
|
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
|
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
|
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
|
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
|
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
|
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/selection",
|
"ImportPath": "k8s.io/apimachinery/pkg/selection",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/types",
|
"ImportPath": "k8s.io/apimachinery/pkg/types",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
|
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/version",
|
"ImportPath": "k8s.io/apimachinery/pkg/version",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/pkg/watch",
|
"ImportPath": "k8s.io/apimachinery/pkg/watch",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
|
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
|
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
|
||||||
"Rev": "5937a4130a6bf81b86b03a6c6e7cd974a5018f59"
|
"Rev": "13b73596e4b63e03203e86f6d9c7bcc1b937c62f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/discovery",
|
"ImportPath": "k8s.io/client-go/discovery",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/discovery/fake",
|
"ImportPath": "k8s.io/client-go/discovery/fake",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers",
|
"ImportPath": "k8s.io/client-go/informers",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/admissionregistration",
|
"ImportPath": "k8s.io/client-go/informers/admissionregistration",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/admissionregistration/v1alpha1",
|
"ImportPath": "k8s.io/client-go/informers/admissionregistration/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/admissionregistration/v1beta1",
|
"ImportPath": "k8s.io/client-go/informers/admissionregistration/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/apps",
|
"ImportPath": "k8s.io/client-go/informers/apps",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/apps/v1",
|
"ImportPath": "k8s.io/client-go/informers/apps/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/apps/v1beta1",
|
"ImportPath": "k8s.io/client-go/informers/apps/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/apps/v1beta2",
|
"ImportPath": "k8s.io/client-go/informers/apps/v1beta2",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/autoscaling",
|
"ImportPath": "k8s.io/client-go/informers/autoscaling",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/autoscaling/v1",
|
"ImportPath": "k8s.io/client-go/informers/autoscaling/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta1",
|
"ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/batch",
|
"ImportPath": "k8s.io/client-go/informers/batch",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/batch/v1",
|
"ImportPath": "k8s.io/client-go/informers/batch/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/batch/v1beta1",
|
"ImportPath": "k8s.io/client-go/informers/batch/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/batch/v2alpha1",
|
"ImportPath": "k8s.io/client-go/informers/batch/v2alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/certificates",
|
"ImportPath": "k8s.io/client-go/informers/certificates",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/certificates/v1beta1",
|
"ImportPath": "k8s.io/client-go/informers/certificates/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/core",
|
"ImportPath": "k8s.io/client-go/informers/core",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/core/v1",
|
"ImportPath": "k8s.io/client-go/informers/core/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/events",
|
"ImportPath": "k8s.io/client-go/informers/events",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/events/v1beta1",
|
"ImportPath": "k8s.io/client-go/informers/events/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/extensions",
|
"ImportPath": "k8s.io/client-go/informers/extensions",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/extensions/v1beta1",
|
"ImportPath": "k8s.io/client-go/informers/extensions/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/internalinterfaces",
|
"ImportPath": "k8s.io/client-go/informers/internalinterfaces",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/networking",
|
"ImportPath": "k8s.io/client-go/informers/networking",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/networking/v1",
|
"ImportPath": "k8s.io/client-go/informers/networking/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/policy",
|
"ImportPath": "k8s.io/client-go/informers/policy",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/policy/v1beta1",
|
"ImportPath": "k8s.io/client-go/informers/policy/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/rbac",
|
"ImportPath": "k8s.io/client-go/informers/rbac",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/rbac/v1",
|
"ImportPath": "k8s.io/client-go/informers/rbac/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/rbac/v1alpha1",
|
"ImportPath": "k8s.io/client-go/informers/rbac/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/rbac/v1beta1",
|
"ImportPath": "k8s.io/client-go/informers/rbac/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/scheduling",
|
"ImportPath": "k8s.io/client-go/informers/scheduling",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/scheduling/v1alpha1",
|
"ImportPath": "k8s.io/client-go/informers/scheduling/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/settings",
|
"ImportPath": "k8s.io/client-go/informers/settings",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/settings/v1alpha1",
|
"ImportPath": "k8s.io/client-go/informers/settings/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/storage",
|
"ImportPath": "k8s.io/client-go/informers/storage",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/storage/v1",
|
"ImportPath": "k8s.io/client-go/informers/storage/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/storage/v1alpha1",
|
"ImportPath": "k8s.io/client-go/informers/storage/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/informers/storage/v1beta1",
|
"ImportPath": "k8s.io/client-go/informers/storage/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes",
|
"ImportPath": "k8s.io/client-go/kubernetes",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/scheme",
|
"ImportPath": "k8s.io/client-go/kubernetes/scheme",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/events/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/events/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1",
|
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/admissionregistration/v1alpha1",
|
"ImportPath": "k8s.io/client-go/listers/admissionregistration/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/admissionregistration/v1beta1",
|
"ImportPath": "k8s.io/client-go/listers/admissionregistration/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/apps/v1",
|
"ImportPath": "k8s.io/client-go/listers/apps/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/apps/v1beta1",
|
"ImportPath": "k8s.io/client-go/listers/apps/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/apps/v1beta2",
|
"ImportPath": "k8s.io/client-go/listers/apps/v1beta2",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/autoscaling/v1",
|
"ImportPath": "k8s.io/client-go/listers/autoscaling/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta1",
|
"ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/batch/v1",
|
"ImportPath": "k8s.io/client-go/listers/batch/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/batch/v1beta1",
|
"ImportPath": "k8s.io/client-go/listers/batch/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/batch/v2alpha1",
|
"ImportPath": "k8s.io/client-go/listers/batch/v2alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/certificates/v1beta1",
|
"ImportPath": "k8s.io/client-go/listers/certificates/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/core/v1",
|
"ImportPath": "k8s.io/client-go/listers/core/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/events/v1beta1",
|
"ImportPath": "k8s.io/client-go/listers/events/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/extensions/v1beta1",
|
"ImportPath": "k8s.io/client-go/listers/extensions/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/networking/v1",
|
"ImportPath": "k8s.io/client-go/listers/networking/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/policy/v1beta1",
|
"ImportPath": "k8s.io/client-go/listers/policy/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/rbac/v1",
|
"ImportPath": "k8s.io/client-go/listers/rbac/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/rbac/v1alpha1",
|
"ImportPath": "k8s.io/client-go/listers/rbac/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/rbac/v1beta1",
|
"ImportPath": "k8s.io/client-go/listers/rbac/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/scheduling/v1alpha1",
|
"ImportPath": "k8s.io/client-go/listers/scheduling/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/settings/v1alpha1",
|
"ImportPath": "k8s.io/client-go/listers/settings/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/storage/v1",
|
"ImportPath": "k8s.io/client-go/listers/storage/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/storage/v1alpha1",
|
"ImportPath": "k8s.io/client-go/listers/storage/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/listers/storage/v1beta1",
|
"ImportPath": "k8s.io/client-go/listers/storage/v1beta1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication",
|
"ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1",
|
"ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/pkg/version",
|
"ImportPath": "k8s.io/client-go/pkg/version",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/plugin/pkg/client/auth/exec",
|
"ImportPath": "k8s.io/client-go/plugin/pkg/client/auth/exec",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/rest",
|
"ImportPath": "k8s.io/client-go/rest",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/rest/watch",
|
"ImportPath": "k8s.io/client-go/rest/watch",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/testing",
|
"ImportPath": "k8s.io/client-go/testing",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/auth",
|
"ImportPath": "k8s.io/client-go/tools/auth",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/cache",
|
"ImportPath": "k8s.io/client-go/tools/cache",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/clientcmd",
|
"ImportPath": "k8s.io/client-go/tools/clientcmd",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/clientcmd/api",
|
"ImportPath": "k8s.io/client-go/tools/clientcmd/api",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/latest",
|
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/latest",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/v1",
|
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/v1",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/metrics",
|
"ImportPath": "k8s.io/client-go/tools/metrics",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/pager",
|
"ImportPath": "k8s.io/client-go/tools/pager",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/record",
|
"ImportPath": "k8s.io/client-go/tools/record",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/tools/reference",
|
"ImportPath": "k8s.io/client-go/tools/reference",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/transport",
|
"ImportPath": "k8s.io/client-go/transport",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/util/buffer",
|
"ImportPath": "k8s.io/client-go/util/buffer",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/util/cert",
|
"ImportPath": "k8s.io/client-go/util/cert",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/util/flowcontrol",
|
"ImportPath": "k8s.io/client-go/util/flowcontrol",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/util/homedir",
|
"ImportPath": "k8s.io/client-go/util/homedir",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/util/integer",
|
"ImportPath": "k8s.io/client-go/util/integer",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/util/retry",
|
"ImportPath": "k8s.io/client-go/util/retry",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go/util/workqueue",
|
"ImportPath": "k8s.io/client-go/util/workqueue",
|
||||||
"Rev": "62c4633c17ed12226e4dad9d21e856df3c737862"
|
"Rev": "421cf66e414f22e74ac90df608a0ac34811c9ea0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
|
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
|
||||||
|
@ -23,6 +23,13 @@ Changes should not be made to these files manually, and when creating your own
|
|||||||
controller based off of this implementation you should not copy these files and
|
controller based off of this implementation you should not copy these files and
|
||||||
instead run the `update-codegen` script to generate your own.
|
instead run the `update-codegen` script to generate your own.
|
||||||
|
|
||||||
|
## Details
|
||||||
|
|
||||||
|
The sample controller uses [client-go library](https://github.com/kubernetes/client-go/tree/master/tools/cache) extensively.
|
||||||
|
The details of interaction points of the sample controller with various mechanisms from this library are
|
||||||
|
explained [here](docs/controller-client-go.md).
|
||||||
|
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
This is an example of how to build a kube-like controller with a single type.
|
This is an example of how to build a kube-like controller with a single type.
|
||||||
|
64
docs/controller-client-go.md
Normal file
64
docs/controller-client-go.md
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
# client-go under the hood
|
||||||
|
|
||||||
|
The [client-go](https://github.com/kubernetes/client-go/) library contains various mechanisms that you can use when
|
||||||
|
developing your custom controllers. These mechanisms are defined in the
|
||||||
|
[tools/cache folder](https://github.com/kubernetes/client-go/tree/master/tools/cache) of the library.
|
||||||
|
|
||||||
|
Here is a pictorial representation showing how the various components in
|
||||||
|
the client-go library work and their interaction points with the custom
|
||||||
|
controller code that you will write.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="images/client-go-controller-interaction.jpeg" height="600" width="700"/>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
## client-go components
|
||||||
|
|
||||||
|
* Reflector: A reflector, which is defined in [type *Reflector* inside package *cache*](https://github.com/kubernetes/client-go/blob/master/tools/cache/reflector.go),
|
||||||
|
watches the Kubernetes API for the specified resource type (kind).
|
||||||
|
The function in which this is done is *ListAndWatch*.
|
||||||
|
The watch could be for an in-built resource or it could be for a custom resource.
|
||||||
|
When the reflector receives notification about existence of new
|
||||||
|
resource instance through the watch API, it gets the newly created object
|
||||||
|
using the corresponding listing API and puts it in the Delta Fifo queue
|
||||||
|
inside the *watchHandler* function.
|
||||||
|
|
||||||
|
|
||||||
|
* Informer: An informer defined in the [base controller inside package *cache*](https://github.com/kubernetes/client-go/blob/master/tools/cache/controller.go) pops objects from the Delta Fifo queue.
|
||||||
|
The function in which this is done is *processLoop*. The job of this base controller
|
||||||
|
is to save the object for later retrieval, and to invoke our controller passing it the object.
|
||||||
|
|
||||||
|
* Indexer: An indexer provides indexing functionality over objects.
|
||||||
|
It is defined in [type *Indexer* inside package *cache*](https://github.com/kubernetes/client-go/blob/master/tools/cache/index.go). A typical indexing use-case is to create an index based on object labels. Indexer can
|
||||||
|
maintain indexes based on several indexing functions.
|
||||||
|
Indexer uses a thread-safe data store to store objects and their keys.
|
||||||
|
There is a default function named *MetaNamespaceKeyFunc* defined in [type Store inside package cache](https://github.com/kubernetes/client-go/blob/master/tools/cache/store.go)
|
||||||
|
that generates an object’s key as `<namespace>/<name>` combination for that object.
|
||||||
|
|
||||||
|
|
||||||
|
## Custom Controller components
|
||||||
|
|
||||||
|
* Informer reference: This is the reference to the Informer instance that knows
|
||||||
|
how to work with your custom resource objects. Your custom controller code needs
|
||||||
|
to create the appropriate Informer.
|
||||||
|
|
||||||
|
* Indexer reference: This is the reference to the Indexer instance that knows
|
||||||
|
how to work with your custom resource objects. Your custom controller code needs
|
||||||
|
to create this. You will be using this reference for retrieving objects for
|
||||||
|
later processing.
|
||||||
|
|
||||||
|
The base controller in client-go provides the *NewIndexerInformer* function to create Informer and Indexer.
|
||||||
|
In your code you can either [directly invoke this function](https://github.com/kubernetes/client-go/blob/master/examples/workqueue/main.go#L174) or [use factory methods for creating an informer.](https://github.com/kubernetes/sample-controller/blob/master/main.go#L61)
|
||||||
|
|
||||||
|
* Resource Event Handlers: These are the callback functions which will be called by
|
||||||
|
the Informer when it wants to deliver an object to your controller. The typical
|
||||||
|
pattern to write these functions is to obtain the dispatched object’s key
|
||||||
|
and enqueue that key in a work queue for further processing.
|
||||||
|
|
||||||
|
* Work queue: This is the queue that you create in your controller code to decouple
|
||||||
|
delivery of an object from its processing. Resource event handler functions are written
|
||||||
|
to extract the delivered object’s key and add that to the work queue.
|
||||||
|
|
||||||
|
* Process Item: This is the function that you create in your code which processes items
|
||||||
|
from the work queue. There can be one or more other functions that do the actual processing.
|
||||||
|
These functions will typically use the [Indexer reference](https://github.com/kubernetes/client-go/blob/master/examples/workqueue/main.go#L73), or a Listing wrapper to retrieve the object corresponding to the key.
|
BIN
docs/images/client-go-controller-interaction.jpeg
Normal file
BIN
docs/images/client-go-controller-interaction.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 109 KiB |
2156
vendor/k8s.io/api/core/v1/generated.pb.go
generated
vendored
2156
vendor/k8s.io/api/core/v1/generated.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
31
vendor/k8s.io/api/core/v1/generated.proto
generated
vendored
31
vendor/k8s.io/api/core/v1/generated.proto
generated
vendored
@ -439,6 +439,34 @@ message ConfigMapList {
|
|||||||
repeated ConfigMap items = 2;
|
repeated ConfigMap items = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.
|
||||||
|
message ConfigMapNodeConfigSource {
|
||||||
|
// Namespace is the metadata.namespace of the referenced ConfigMap.
|
||||||
|
// This field is required in all cases.
|
||||||
|
optional string namespace = 1;
|
||||||
|
|
||||||
|
// Name is the metadata.name of the referenced ConfigMap.
|
||||||
|
// This field is required in all cases.
|
||||||
|
optional string name = 2;
|
||||||
|
|
||||||
|
// UID is the metadata.UID of the referenced ConfigMap.
|
||||||
|
// This field is currently reqired in Node.Spec.
|
||||||
|
// TODO(#61643): This field will be forbidden in Node.Spec when #61643 is resolved.
|
||||||
|
// TODO(#56896): This field will be required in Node.Status when #56896 is resolved.
|
||||||
|
// +optional
|
||||||
|
optional string uid = 3;
|
||||||
|
|
||||||
|
// ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
|
||||||
|
// This field is forbidden in Node.Spec.
|
||||||
|
// TODO(#56896): This field will be required in Node.Status when #56896 is resolved.
|
||||||
|
// +optional
|
||||||
|
optional string resourceVersion = 4;
|
||||||
|
|
||||||
|
// KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
|
||||||
|
// This field is required in all cases.
|
||||||
|
optional string kubeletConfigKey = 5;
|
||||||
|
}
|
||||||
|
|
||||||
// Adapts a ConfigMap into a projected volume.
|
// Adapts a ConfigMap into a projected volume.
|
||||||
//
|
//
|
||||||
// The contents of the target ConfigMap's Data field will be presented in a
|
// The contents of the target ConfigMap's Data field will be presented in a
|
||||||
@ -1815,7 +1843,8 @@ message NodeCondition {
|
|||||||
|
|
||||||
// NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.
|
// NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.
|
||||||
message NodeConfigSource {
|
message NodeConfigSource {
|
||||||
optional ObjectReference configMapRef = 1;
|
// ConfigMap is a reference to a Node's ConfigMap
|
||||||
|
optional ConfigMapNodeConfigSource configMap = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NodeDaemonEndpoints lists ports opened by daemons running on the Node.
|
// NodeDaemonEndpoints lists ports opened by daemons running on the Node.
|
||||||
|
1
vendor/k8s.io/api/core/v1/register.go
generated
vendored
1
vendor/k8s.io/api/core/v1/register.go
generated
vendored
@ -57,7 +57,6 @@ func addKnownTypes(scheme *runtime.Scheme) error {
|
|||||||
&Endpoints{},
|
&Endpoints{},
|
||||||
&EndpointsList{},
|
&EndpointsList{},
|
||||||
&Node{},
|
&Node{},
|
||||||
&NodeConfigSource{},
|
|
||||||
&NodeList{},
|
&NodeList{},
|
||||||
&NodeProxyOptions{},
|
&NodeProxyOptions{},
|
||||||
&Binding{},
|
&Binding{},
|
||||||
|
45
vendor/k8s.io/api/core/v1/types.go
generated
vendored
45
vendor/k8s.io/api/core/v1/types.go
generated
vendored
@ -3640,12 +3640,49 @@ type NodeSpec struct {
|
|||||||
DoNotUse_ExternalID string `json:"externalID,omitempty" protobuf:"bytes,2,opt,name=externalID"`
|
DoNotUse_ExternalID string `json:"externalID,omitempty" protobuf:"bytes,2,opt,name=externalID"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
|
||||||
|
|
||||||
// NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.
|
// NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.
|
||||||
type NodeConfigSource struct {
|
type NodeConfigSource struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
// For historical context, regarding the below kind, apiVersion, and configMapRef deprecation tags:
|
||||||
ConfigMapRef *ObjectReference `json:"configMapRef,omitempty" protobuf:"bytes,1,opt,name=configMapRef"`
|
// 1. kind/apiVersion were used by the kubelet to persist this struct to disk (they had no protobuf tags)
|
||||||
|
// 2. configMapRef and proto tag 1 were used by the API to refer to a configmap,
|
||||||
|
// but used a generic ObjectReference type that didn't really have the fields we needed
|
||||||
|
// All uses/persistence of the NodeConfigSource struct prior to 1.11 were gated by alpha feature flags,
|
||||||
|
// so there was no persisted data for these fields that needed to be migrated/handled.
|
||||||
|
|
||||||
|
// +k8s:deprecated=kind
|
||||||
|
// +k8s:deprecated=apiVersion
|
||||||
|
// +k8s:deprecated=configMapRef,protobuf=1
|
||||||
|
|
||||||
|
// ConfigMap is a reference to a Node's ConfigMap
|
||||||
|
ConfigMap *ConfigMapNodeConfigSource `json:"configMap,omitempty" protobuf:"bytes,2,opt,name=configMap"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.
|
||||||
|
type ConfigMapNodeConfigSource struct {
|
||||||
|
// Namespace is the metadata.namespace of the referenced ConfigMap.
|
||||||
|
// This field is required in all cases.
|
||||||
|
Namespace string `json:"namespace" protobuf:"bytes,1,opt,name=namespace"`
|
||||||
|
|
||||||
|
// Name is the metadata.name of the referenced ConfigMap.
|
||||||
|
// This field is required in all cases.
|
||||||
|
Name string `json:"name" protobuf:"bytes,2,opt,name=name"`
|
||||||
|
|
||||||
|
// UID is the metadata.UID of the referenced ConfigMap.
|
||||||
|
// This field is currently reqired in Node.Spec.
|
||||||
|
// TODO(#61643): This field will be forbidden in Node.Spec when #61643 is resolved.
|
||||||
|
// TODO(#56896): This field will be required in Node.Status when #56896 is resolved.
|
||||||
|
// +optional
|
||||||
|
UID types.UID `json:"uid,omitempty" protobuf:"bytes,3,opt,name=uid"`
|
||||||
|
|
||||||
|
// ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
|
||||||
|
// This field is forbidden in Node.Spec.
|
||||||
|
// TODO(#56896): This field will be required in Node.Status when #56896 is resolved.
|
||||||
|
// +optional
|
||||||
|
ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,4,opt,name=resourceVersion"`
|
||||||
|
|
||||||
|
// KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
|
||||||
|
// This field is required in all cases.
|
||||||
|
KubeletConfigKey string `json:"kubeletConfigKey" protobuf:"bytes,5,opt,name=kubeletConfigKey"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// DaemonEndpoint contains information about a single Daemon endpoint.
|
// DaemonEndpoint contains information about a single Daemon endpoint.
|
||||||
|
16
vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
generated
vendored
16
vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
generated
vendored
@ -262,6 +262,19 @@ func (ConfigMapList) SwaggerDoc() map[string]string {
|
|||||||
return map_ConfigMapList
|
return map_ConfigMapList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var map_ConfigMapNodeConfigSource = map[string]string{
|
||||||
|
"": "ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.",
|
||||||
|
"namespace": "Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.",
|
||||||
|
"name": "Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.",
|
||||||
|
"uid": "UID is the metadata.UID of the referenced ConfigMap. This field is currently reqired in Node.Spec.",
|
||||||
|
"resourceVersion": "ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec.",
|
||||||
|
"kubeletConfigKey": "KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ConfigMapNodeConfigSource) SwaggerDoc() map[string]string {
|
||||||
|
return map_ConfigMapNodeConfigSource
|
||||||
|
}
|
||||||
|
|
||||||
var map_ConfigMapProjection = map[string]string{
|
var map_ConfigMapProjection = map[string]string{
|
||||||
"": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.",
|
"": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.",
|
||||||
"items": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.",
|
"items": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.",
|
||||||
@ -969,7 +982,8 @@ func (NodeCondition) SwaggerDoc() map[string]string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var map_NodeConfigSource = map[string]string{
|
var map_NodeConfigSource = map[string]string{
|
||||||
"": "NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.",
|
"": "NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.",
|
||||||
|
"configMap": "ConfigMap is a reference to a Node's ConfigMap",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (NodeConfigSource) SwaggerDoc() map[string]string {
|
func (NodeConfigSource) SwaggerDoc() map[string]string {
|
||||||
|
31
vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
generated
vendored
31
vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
generated
vendored
@ -631,6 +631,22 @@ func (in *ConfigMapList) DeepCopyObject() runtime.Object {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ConfigMapNodeConfigSource) DeepCopyInto(out *ConfigMapNodeConfigSource) {
|
||||||
|
*out = *in
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapNodeConfigSource.
|
||||||
|
func (in *ConfigMapNodeConfigSource) DeepCopy() *ConfigMapNodeConfigSource {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ConfigMapNodeConfigSource)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *ConfigMapProjection) DeepCopyInto(out *ConfigMapProjection) {
|
func (in *ConfigMapProjection) DeepCopyInto(out *ConfigMapProjection) {
|
||||||
*out = *in
|
*out = *in
|
||||||
@ -2360,13 +2376,12 @@ func (in *NodeCondition) DeepCopy() *NodeCondition {
|
|||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *NodeConfigSource) DeepCopyInto(out *NodeConfigSource) {
|
func (in *NodeConfigSource) DeepCopyInto(out *NodeConfigSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
if in.ConfigMap != nil {
|
||||||
if in.ConfigMapRef != nil {
|
in, out := &in.ConfigMap, &out.ConfigMap
|
||||||
in, out := &in.ConfigMapRef, &out.ConfigMapRef
|
|
||||||
if *in == nil {
|
if *in == nil {
|
||||||
*out = nil
|
*out = nil
|
||||||
} else {
|
} else {
|
||||||
*out = new(ObjectReference)
|
*out = new(ConfigMapNodeConfigSource)
|
||||||
**out = **in
|
**out = **in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2383,14 +2398,6 @@ func (in *NodeConfigSource) DeepCopy() *NodeConfigSource {
|
|||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
|
||||||
func (in *NodeConfigSource) DeepCopyObject() runtime.Object {
|
|
||||||
if c := in.DeepCopy(); c != nil {
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *NodeDaemonEndpoints) DeepCopyInto(out *NodeDaemonEndpoints) {
|
func (in *NodeDaemonEndpoints) DeepCopyInto(out *NodeDaemonEndpoints) {
|
||||||
*out = *in
|
*out = *in
|
||||||
|
63
vendor/k8s.io/apimachinery/pkg/util/clock/clock.go
generated
vendored
63
vendor/k8s.io/apimachinery/pkg/util/clock/clock.go
generated
vendored
@ -26,18 +26,12 @@ import (
|
|||||||
type Clock interface {
|
type Clock interface {
|
||||||
Now() time.Time
|
Now() time.Time
|
||||||
Since(time.Time) time.Duration
|
Since(time.Time) time.Duration
|
||||||
After(d time.Duration) <-chan time.Time
|
After(time.Duration) <-chan time.Time
|
||||||
NewTimer(d time.Duration) Timer
|
NewTimer(time.Duration) Timer
|
||||||
Sleep(d time.Duration)
|
Sleep(time.Duration)
|
||||||
Tick(d time.Duration) <-chan time.Time
|
NewTicker(time.Duration) Ticker
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
|
||||||
_ = Clock(RealClock{})
|
|
||||||
_ = Clock(&FakeClock{})
|
|
||||||
_ = Clock(&IntervalClock{})
|
|
||||||
)
|
|
||||||
|
|
||||||
// RealClock really calls time.Now()
|
// RealClock really calls time.Now()
|
||||||
type RealClock struct{}
|
type RealClock struct{}
|
||||||
|
|
||||||
@ -62,8 +56,10 @@ func (RealClock) NewTimer(d time.Duration) Timer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (RealClock) Tick(d time.Duration) <-chan time.Time {
|
func (RealClock) NewTicker(d time.Duration) Ticker {
|
||||||
return time.Tick(d)
|
return &realTicker{
|
||||||
|
ticker: time.NewTicker(d),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (RealClock) Sleep(d time.Duration) {
|
func (RealClock) Sleep(d time.Duration) {
|
||||||
@ -137,7 +133,7 @@ func (f *FakeClock) NewTimer(d time.Duration) Timer {
|
|||||||
return timer
|
return timer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakeClock) Tick(d time.Duration) <-chan time.Time {
|
func (f *FakeClock) NewTicker(d time.Duration) Ticker {
|
||||||
f.lock.Lock()
|
f.lock.Lock()
|
||||||
defer f.lock.Unlock()
|
defer f.lock.Unlock()
|
||||||
tickTime := f.time.Add(d)
|
tickTime := f.time.Add(d)
|
||||||
@ -149,7 +145,9 @@ func (f *FakeClock) Tick(d time.Duration) <-chan time.Time {
|
|||||||
destChan: ch,
|
destChan: ch,
|
||||||
})
|
})
|
||||||
|
|
||||||
return ch
|
return &fakeTicker{
|
||||||
|
c: ch,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move clock by Duration, notify anyone that's called After, Tick, or NewTimer
|
// Move clock by Duration, notify anyone that's called After, Tick, or NewTimer
|
||||||
@ -242,8 +240,8 @@ func (*IntervalClock) NewTimer(d time.Duration) Timer {
|
|||||||
|
|
||||||
// Unimplemented, will panic.
|
// Unimplemented, will panic.
|
||||||
// TODO: make interval clock use FakeClock so this can be implemented.
|
// TODO: make interval clock use FakeClock so this can be implemented.
|
||||||
func (*IntervalClock) Tick(d time.Duration) <-chan time.Time {
|
func (*IntervalClock) NewTicker(d time.Duration) Ticker {
|
||||||
panic("IntervalClock doesn't implement Tick")
|
panic("IntervalClock doesn't implement NewTicker")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*IntervalClock) Sleep(d time.Duration) {
|
func (*IntervalClock) Sleep(d time.Duration) {
|
||||||
@ -258,11 +256,6 @@ type Timer interface {
|
|||||||
Reset(d time.Duration) bool
|
Reset(d time.Duration) bool
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
|
||||||
_ = Timer(&realTimer{})
|
|
||||||
_ = Timer(&fakeTimer{})
|
|
||||||
)
|
|
||||||
|
|
||||||
// realTimer is backed by an actual time.Timer.
|
// realTimer is backed by an actual time.Timer.
|
||||||
type realTimer struct {
|
type realTimer struct {
|
||||||
timer *time.Timer
|
timer *time.Timer
|
||||||
@ -325,3 +318,31 @@ func (f *fakeTimer) Reset(d time.Duration) bool {
|
|||||||
|
|
||||||
return active
|
return active
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Ticker interface {
|
||||||
|
C() <-chan time.Time
|
||||||
|
Stop()
|
||||||
|
}
|
||||||
|
|
||||||
|
type realTicker struct {
|
||||||
|
ticker *time.Ticker
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *realTicker) C() <-chan time.Time {
|
||||||
|
return t.ticker.C
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *realTicker) Stop() {
|
||||||
|
t.ticker.Stop()
|
||||||
|
}
|
||||||
|
|
||||||
|
type fakeTicker struct {
|
||||||
|
c <-chan time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *fakeTicker) C() <-chan time.Time {
|
||||||
|
return t.c
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *fakeTicker) Stop() {
|
||||||
|
}
|
||||||
|
103
vendor/k8s.io/client-go/discovery/discovery_client.go
generated
vendored
103
vendor/k8s.io/client-go/discovery/discovery_client.go
generated
vendored
@ -22,6 +22,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
@ -32,6 +33,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
"k8s.io/apimachinery/pkg/version"
|
"k8s.io/apimachinery/pkg/version"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
@ -191,33 +193,7 @@ func (d *DiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (r
|
|||||||
|
|
||||||
// serverResources returns the supported resources for all groups and versions.
|
// serverResources returns the supported resources for all groups and versions.
|
||||||
func (d *DiscoveryClient) serverResources() ([]*metav1.APIResourceList, error) {
|
func (d *DiscoveryClient) serverResources() ([]*metav1.APIResourceList, error) {
|
||||||
apiGroups, err := d.ServerGroups()
|
return ServerResources(d)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
result := []*metav1.APIResourceList{}
|
|
||||||
failedGroups := make(map[schema.GroupVersion]error)
|
|
||||||
|
|
||||||
for _, apiGroup := range apiGroups.Groups {
|
|
||||||
for _, version := range apiGroup.Versions {
|
|
||||||
gv := schema.GroupVersion{Group: apiGroup.Name, Version: version.Version}
|
|
||||||
resources, err := d.ServerResourcesForGroupVersion(version.GroupVersion)
|
|
||||||
if err != nil {
|
|
||||||
// TODO: maybe restrict this to NotFound errors
|
|
||||||
failedGroups[gv] = err
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
result = append(result, resources)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(failedGroups) == 0 {
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return result, &ErrGroupDiscoveryFailed{Groups: failedGroups}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerResources returns the supported resources for all groups and versions.
|
// ServerResources returns the supported resources for all groups and versions.
|
||||||
@ -253,6 +229,33 @@ func (d *DiscoveryClient) serverPreferredResources() ([]*metav1.APIResourceList,
|
|||||||
return ServerPreferredResources(d)
|
return ServerPreferredResources(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ServerResources uses the provided discovery interface to look up supported resources for all groups and versions.
|
||||||
|
func ServerResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error) {
|
||||||
|
apiGroups, err := d.ServerGroups()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
groupVersionResources, failedGroups := fetchGroupVersionResources(d, apiGroups)
|
||||||
|
|
||||||
|
// order results by group/version discovery order
|
||||||
|
result := []*metav1.APIResourceList{}
|
||||||
|
for _, apiGroup := range apiGroups.Groups {
|
||||||
|
for _, version := range apiGroup.Versions {
|
||||||
|
gv := schema.GroupVersion{Group: apiGroup.Name, Version: version.Version}
|
||||||
|
if resources, ok := groupVersionResources[gv]; ok {
|
||||||
|
result = append(result, resources)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(failedGroups) == 0 {
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, &ErrGroupDiscoveryFailed{Groups: failedGroups}
|
||||||
|
}
|
||||||
|
|
||||||
// ServerPreferredResources uses the provided discovery interface to look up preferred resources
|
// ServerPreferredResources uses the provided discovery interface to look up preferred resources
|
||||||
func ServerPreferredResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error) {
|
func ServerPreferredResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error) {
|
||||||
serverGroupList, err := d.ServerGroups()
|
serverGroupList, err := d.ServerGroups()
|
||||||
@ -260,9 +263,9 @@ func ServerPreferredResources(d DiscoveryInterface) ([]*metav1.APIResourceList,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
result := []*metav1.APIResourceList{}
|
groupVersionResources, failedGroups := fetchGroupVersionResources(d, serverGroupList)
|
||||||
failedGroups := make(map[schema.GroupVersion]error)
|
|
||||||
|
|
||||||
|
result := []*metav1.APIResourceList{}
|
||||||
grVersions := map[schema.GroupResource]string{} // selected version of a GroupResource
|
grVersions := map[schema.GroupResource]string{} // selected version of a GroupResource
|
||||||
grApiResources := map[schema.GroupResource]*metav1.APIResource{} // selected APIResource for a GroupResource
|
grApiResources := map[schema.GroupResource]*metav1.APIResource{} // selected APIResource for a GroupResource
|
||||||
gvApiResourceLists := map[schema.GroupVersion]*metav1.APIResourceList{} // blueprint for a APIResourceList for later grouping
|
gvApiResourceLists := map[schema.GroupVersion]*metav1.APIResourceList{} // blueprint for a APIResourceList for later grouping
|
||||||
@ -270,10 +273,9 @@ func ServerPreferredResources(d DiscoveryInterface) ([]*metav1.APIResourceList,
|
|||||||
for _, apiGroup := range serverGroupList.Groups {
|
for _, apiGroup := range serverGroupList.Groups {
|
||||||
for _, version := range apiGroup.Versions {
|
for _, version := range apiGroup.Versions {
|
||||||
groupVersion := schema.GroupVersion{Group: apiGroup.Name, Version: version.Version}
|
groupVersion := schema.GroupVersion{Group: apiGroup.Name, Version: version.Version}
|
||||||
apiResourceList, err := d.ServerResourcesForGroupVersion(version.GroupVersion)
|
|
||||||
if err != nil {
|
apiResourceList, ok := groupVersionResources[groupVersion]
|
||||||
// TODO: maybe restrict this to NotFound errors
|
if !ok {
|
||||||
failedGroups[groupVersion] = err
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,6 +317,41 @@ func ServerPreferredResources(d DiscoveryInterface) ([]*metav1.APIResourceList,
|
|||||||
return result, &ErrGroupDiscoveryFailed{Groups: failedGroups}
|
return result, &ErrGroupDiscoveryFailed{Groups: failedGroups}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fetchServerResourcesForGroupVersions uses the discovery client to fetch the resources for the specified groups in parallel
|
||||||
|
func fetchGroupVersionResources(d DiscoveryInterface, apiGroups *metav1.APIGroupList) (map[schema.GroupVersion]*metav1.APIResourceList, map[schema.GroupVersion]error) {
|
||||||
|
groupVersionResources := make(map[schema.GroupVersion]*metav1.APIResourceList)
|
||||||
|
failedGroups := make(map[schema.GroupVersion]error)
|
||||||
|
|
||||||
|
wg := &sync.WaitGroup{}
|
||||||
|
resultLock := &sync.Mutex{}
|
||||||
|
for _, apiGroup := range apiGroups.Groups {
|
||||||
|
for _, version := range apiGroup.Versions {
|
||||||
|
groupVersion := schema.GroupVersion{Group: apiGroup.Name, Version: version.Version}
|
||||||
|
wg.Add(1)
|
||||||
|
go func() {
|
||||||
|
defer wg.Done()
|
||||||
|
defer utilruntime.HandleCrash()
|
||||||
|
|
||||||
|
apiResourceList, err := d.ServerResourcesForGroupVersion(groupVersion.String())
|
||||||
|
|
||||||
|
// lock to record results
|
||||||
|
resultLock.Lock()
|
||||||
|
defer resultLock.Unlock()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
// TODO: maybe restrict this to NotFound errors
|
||||||
|
failedGroups[groupVersion] = err
|
||||||
|
} else {
|
||||||
|
groupVersionResources[groupVersion] = apiResourceList
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
|
||||||
|
return groupVersionResources, failedGroups
|
||||||
|
}
|
||||||
|
|
||||||
// ServerPreferredResources returns the supported resources with the version preferred by the
|
// ServerPreferredResources returns the supported resources with the version preferred by the
|
||||||
// server.
|
// server.
|
||||||
func (d *DiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, error) {
|
func (d *DiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, error) {
|
||||||
|
21
vendor/k8s.io/client-go/testing/actions.go
generated
vendored
21
vendor/k8s.io/client-go/testing/actions.go
generated
vendored
@ -225,6 +225,16 @@ func NewRootDeleteAction(resource schema.GroupVersionResource, name string) Dele
|
|||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewRootDeleteSubresourceAction(resource schema.GroupVersionResource, subresource string, name string) DeleteActionImpl {
|
||||||
|
action := DeleteActionImpl{}
|
||||||
|
action.Verb = "delete"
|
||||||
|
action.Resource = resource
|
||||||
|
action.Subresource = subresource
|
||||||
|
action.Name = name
|
||||||
|
|
||||||
|
return action
|
||||||
|
}
|
||||||
|
|
||||||
func NewDeleteAction(resource schema.GroupVersionResource, namespace, name string) DeleteActionImpl {
|
func NewDeleteAction(resource schema.GroupVersionResource, namespace, name string) DeleteActionImpl {
|
||||||
action := DeleteActionImpl{}
|
action := DeleteActionImpl{}
|
||||||
action.Verb = "delete"
|
action.Verb = "delete"
|
||||||
@ -235,6 +245,17 @@ func NewDeleteAction(resource schema.GroupVersionResource, namespace, name strin
|
|||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewDeleteSubresourceAction(resource schema.GroupVersionResource, subresource, namespace, name string) DeleteActionImpl {
|
||||||
|
action := DeleteActionImpl{}
|
||||||
|
action.Verb = "delete"
|
||||||
|
action.Resource = resource
|
||||||
|
action.Subresource = subresource
|
||||||
|
action.Namespace = namespace
|
||||||
|
action.Name = name
|
||||||
|
|
||||||
|
return action
|
||||||
|
}
|
||||||
|
|
||||||
func NewRootDeleteCollectionAction(resource schema.GroupVersionResource, opts interface{}) DeleteCollectionActionImpl {
|
func NewRootDeleteCollectionAction(resource schema.GroupVersionResource, opts interface{}) DeleteCollectionActionImpl {
|
||||||
action := DeleteCollectionActionImpl{}
|
action := DeleteCollectionActionImpl{}
|
||||||
action.Verb = "delete-collection"
|
action.Verb = "delete-collection"
|
||||||
|
10
vendor/k8s.io/client-go/util/workqueue/delaying_queue.go
generated
vendored
10
vendor/k8s.io/client-go/util/workqueue/delaying_queue.go
generated
vendored
@ -45,7 +45,7 @@ func newDelayingQueue(clock clock.Clock, name string) DelayingInterface {
|
|||||||
ret := &delayingType{
|
ret := &delayingType{
|
||||||
Interface: NewNamed(name),
|
Interface: NewNamed(name),
|
||||||
clock: clock,
|
clock: clock,
|
||||||
heartbeat: clock.Tick(maxWait),
|
heartbeat: clock.NewTicker(maxWait),
|
||||||
stopCh: make(chan struct{}),
|
stopCh: make(chan struct{}),
|
||||||
waitingForAddCh: make(chan *waitFor, 1000),
|
waitingForAddCh: make(chan *waitFor, 1000),
|
||||||
metrics: newRetryMetrics(name),
|
metrics: newRetryMetrics(name),
|
||||||
@ -67,10 +67,7 @@ type delayingType struct {
|
|||||||
stopCh chan struct{}
|
stopCh chan struct{}
|
||||||
|
|
||||||
// heartbeat ensures we wait no more than maxWait before firing
|
// heartbeat ensures we wait no more than maxWait before firing
|
||||||
//
|
heartbeat clock.Ticker
|
||||||
// TODO: replace with Ticker (and add to clock) so this can be cleaned up.
|
|
||||||
// clock.Tick will leak.
|
|
||||||
heartbeat <-chan time.Time
|
|
||||||
|
|
||||||
// waitingForAddCh is a buffered channel that feeds waitingForAdd
|
// waitingForAddCh is a buffered channel that feeds waitingForAdd
|
||||||
waitingForAddCh chan *waitFor
|
waitingForAddCh chan *waitFor
|
||||||
@ -138,6 +135,7 @@ func (pq waitForPriorityQueue) Peek() interface{} {
|
|||||||
func (q *delayingType) ShutDown() {
|
func (q *delayingType) ShutDown() {
|
||||||
q.Interface.ShutDown()
|
q.Interface.ShutDown()
|
||||||
close(q.stopCh)
|
close(q.stopCh)
|
||||||
|
q.heartbeat.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddAfter adds the given item to the work queue after the given delay
|
// AddAfter adds the given item to the work queue after the given delay
|
||||||
@ -209,7 +207,7 @@ func (q *delayingType) waitingLoop() {
|
|||||||
case <-q.stopCh:
|
case <-q.stopCh:
|
||||||
return
|
return
|
||||||
|
|
||||||
case <-q.heartbeat:
|
case <-q.heartbeat.C():
|
||||||
// continue the loop, which will add ready items
|
// continue the loop, which will add ready items
|
||||||
|
|
||||||
case <-nextReadyAt:
|
case <-nextReadyAt:
|
||||||
|
Loading…
Reference in New Issue
Block a user