kubernetes/pkg
Kubernetes Submit Queue 2ea4e1f066 Merge pull request #33352 from smarterclayton/unified_defaulters
Automatic merge from submit-queue

Split conversion and defaulting

Separate conversion and defaulting.   Defaulting occurs mixed with conversion today - change the server so that the `VersioningCodec` performs defaulting on the external type during decoding.  

* Add a new method to `Scheme` - `func (*runtime.Scheme) Default(runtime.Object)` - that takes an object and performs defaulting.  
* Call `Default` during decoding and at static initialization time
* Use the new `defaulter-gen` to generate top level object defaulters (`v1.Pod`) at build time for any type that needs to perform defaulting.  
* Add tests and alter the existing code to adapt as necessary
* Fix a few bugs in conversions that depended on defaulting behavior

---

Step 1 of decoupling conversion and defaulting. The generator will assist in creating top level defaulters that in a single method invoke all nested defaulters, preventing the need to recurse via reflection or conversion. These top level defaulters will be registered in the scheme and invoked instead of the nested recursion path. This will set the stage for a future generator, capable of creating defaulters from embedded struct tags on external types. However, we must gradually switch these over.

The immediate goal here is to split defaulting and conversion so that the unsafe convertor can be used to maximum potential (we would be able to use direct memory conversion for any identical nested struct, even those that must be defaulted).

The generator uses `k8s:defaulter-gen=TypeMeta` on most public packages to flag any top level type that has defaulters to get a `SetObjectDefaults_NAME` function created (types that don't have defaulters won't have functions).  This also creates a `RegisterDefaults` method that applies a default to an interface{} and returns true if the object was handled.  Existing defaults are left as is.

Add a test to verify old and new path generate the same outcomes.  Defaulter will move to gengo before this is merged, and subsequent PRs will remove defaulting during conversion and have the VersioningCodec apply defaults.
2016-10-18 20:34:13 -07:00
..
admission inject authorizer when admission controller requests it 2016-10-12 13:05:34 -04:00
api Merge pull request #33352 from smarterclayton/unified_defaulters 2016-10-18 20:34:13 -07:00
apimachinery remove dead mapper 2016-09-19 09:57:19 -04:00
apis Invoke init container defaulting in conversion 2016-10-18 21:07:35 -04:00
apiserver Add +optional tag to all fields with omitempty json tag 2016-10-17 08:52:13 -07:00
auth Remove unnecessary authorization headers after authorization is successful 2016-10-06 12:38:00 -07:00
capabilities Use Go canonical import paths 2016-07-16 13:48:21 -04:00
client Make defaulting part of versioning codec 2016-10-18 21:07:35 -04:00
cloudprovider Merge pull request #34997 from vmware/fix-kube-vsphere.kerneltime 2016-10-18 09:26:18 -07:00
controller Merge pull request #35047 from deads2k/controller-11-rs-flakes 2016-10-18 19:52:48 -07:00
conversion Add a new Default() method on Scheme 2016-10-18 21:07:32 -04:00
credentialprovider Add +optional tag to all fields with omitempty json tag 2016-10-17 08:52:13 -07:00
dns move informer and controller to pkg/client/cache 2016-09-15 12:50:08 -07:00
fieldpath Fix default resource limits (node capacities) for downward api volumes 2016-08-16 14:41:17 -04:00
fields make labels, fields expose selectable requirements 2016-08-20 10:10:51 -07:00
generated Generated part for NumberReady 2016-10-12 15:36:01 +02:00
genericapiserver Merge pull request #34967 from deads2k/api-27-fix-version 2016-10-18 05:07:02 -07:00
healthz fixes the wrong doc in package healthz 2016-07-18 22:46:09 +08:00
httplog Log useful information on 500's 2016-08-31 13:46:40 -07:00
hyperkube Use Go canonical import paths 2016-07-16 13:48:21 -04:00
kubectl Merge pull request #34537 from AdoHe/get_info 2016-10-18 19:10:27 -07:00
kubelet Merge pull request #34474 from liggitt/connection-info-refactor 2016-10-18 13:20:25 -07:00
kubemark Run defaulting on the scheduler startup 2016-10-18 21:07:35 -04:00
labels Added new unit tests. 2016-10-13 13:15:19 -04:00
master Merge pull request #34474 from liggitt/connection-info-refactor 2016-10-18 13:20:25 -07:00
metrics
probe Merge pull request #27562 from 7ing/ipt 2016-08-02 08:02:32 -07:00
proxy Proxier unittests 2016-09-29 17:35:43 -07:00
quota Fix quota constraints func for pvc 2016-08-22 14:18:15 -04:00
registry Merge pull request #34474 from liggitt/connection-info-refactor 2016-10-18 13:20:25 -07:00
routes Make genericapiserver handler chain customizable 2016-10-05 10:32:36 -04:00
runtime Make defaulting part of versioning codec 2016-10-18 21:07:35 -04:00
security Merge pull request #28300 from pweil-/psp-seccomp 2016-10-18 09:26:09 -07:00
securitycontext Remove pod mutation for PVs with supplemental GIDs 2016-07-22 17:41:44 -04:00
selection make labels, fields expose selectable requirements 2016-08-20 10:10:51 -07:00
serviceaccount Enable service account signing key rotation 2016-10-04 14:16:38 -04:00
ssh Use same SSH tunnel as kubelet 2016-10-12 11:54:47 -07:00
storage Add +optional tag to all fields with omitempty json tag 2016-10-17 08:52:13 -07:00
types Use strongly-typed types.NodeName for a node name 2016-09-27 10:47:31 -04:00
util Merge pull request #35038 from sjenning/nfs-nonblock-reader2 2016-10-18 12:37:31 -07:00
version Add +k8s:openapi-gen tag to API types 2016-09-12 18:47:03 -07:00
volume Pass whole PVC to provisioner plugin 2016-10-12 12:22:01 +02:00
watch Merge pull request #28742 from jessfraz/test-go1.7rc1 2016-10-18 05:59:04 -07:00
OWNERS