kubernetes/pkg/api
k8s-merge-robot c63ac4e664 Merge pull request #24331 from jsafrane/devel/refactor-binder
Automatic merge from submit-queue

Refactor persistent volume controller

Here is complete persistent controller as designed in https://github.com/pmorie/pv-haxxz/blob/master/controller.go

It's feature complete and compatible with current binder/recycler/provisioner. No new features, it *should* be much more stable and predictable.

Testing
--
The unit test framework is quite complicated, still it was necessary to reach reasonable coverage (78% in `persistentvolume_controller.go`). The untested part are error cases, which are quite hard to test in reasonable way - sure, I can inject a VersionConflictError on any object update and check the error bubbles up to appropriate places, but the real test would be to run `syncClaim`/`syncVolume` again and check it recovers appropriately from the error in the next periodic sync. That's the hard part.

Organization
---
The PR starts with `rm -rf kubernetes/pkg/controller/persistentvolume`. I find it easier to read when I see only the new controller without old pieces scattered around.
[`types.go` from the old controller is reused to speed up matching a bit, the code looks solid and has 95% unit test coverage].

I tried to split the PR into smaller patches, let me know what you think.

~~TODO~~
--

* ~~Missing: provisioning, recycling~~.
* ~~Fix integration tests~~
* ~~Fix e2e tests~~

@kubernetes/sig-storage

<!-- Reviewable:start -->
---
This change is [<img src="http://reviewable.k8s.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](http://reviewable.k8s.io/reviews/kubernetes/kubernetes/24331)
<!-- Reviewable:end -->

Fixes #15632
2016-05-19 03:06:46 -07:00
..
annotations move server client shared annotations to new api/annotations package 2016-05-09 11:10:44 -07:00
endpoints Merge pull request #23090 from tgraf/ipv6 2016-05-13 06:32:00 -07:00
errors Vet fixes, mostly pass lock by value errors. 2016-04-06 11:27:40 -07:00
install Avoid allocations and a reflect.Call in conversion 2016-04-26 16:42:12 -04:00
meta the garbage collector controller 2016-05-15 16:04:19 -07:00
pod Fix the rest of the code 2016-04-29 17:12:10 -04:00
resource Run codegen and codecgen 2016-05-11 17:15:55 -07:00
rest Merge pull request #24800 from thockin/validation_pt8-3 2016-05-19 02:15:27 -07:00
service LB Source Ranges: Move validation into API layer 2016-03-03 10:27:17 -05:00
testapi Finish implementing policy API. 2016-05-13 17:27:58 -07:00
testing Merge pull request #24331 from jsafrane/devel/refactor-binder 2016-05-19 03:06:46 -07:00
unversioned Make name validators return string slices 2016-05-18 00:48:01 -07:00
util "experimental" -> "extensions" 2015-10-09 15:14:03 -07:00
v1 Merge pull request #24331 from jsafrane/devel/refactor-binder 2016-05-19 03:06:46 -07:00
validation Merge pull request #24800 from thockin/validation_pt8-3 2016-05-19 02:15:27 -07:00
context_test.go rewrite go imports 2015-08-05 17:30:03 -07:00
context.go New etcd client modifications part 1 (context support) 2015-10-12 08:45:49 -05:00
conversion_test.go Create a new method UnsafeConvertToVersion for faster convert 2016-05-12 10:10:35 -04:00
conversion.go Small improvements in conversion generator 2016-04-05 02:10:23 +02:00
copy_test.go Refactor diff into sub pkg 2016-03-21 20:21:39 +08:00
deep_copy_generated.go implement taints and tolerations 2016-05-18 15:06:23 +00:00
deep_copy_test.go Switch API objects to not register per version codecs 2016-01-22 01:10:21 -05:00
doc.go Cleanup the content of deprecated V1beta1 2015-11-06 13:42:51 +08:00
field_constants.go Move restclient to its own package 2016-02-29 12:05:13 -08:00
generate_test.go
generate.go rewrite go imports 2015-08-05 17:30:03 -07:00
helpers_test.go Change "speter.net/go/exp/math/dec/inf" dependency 2016-05-11 17:01:28 -07:00
helpers.go implement taints and tolerations 2016-05-18 15:06:23 +00:00
mapper.go changed NewDefaultRESTMapper to check for a partial package path 2016-02-23 04:24:01 -08:00
meta_test.go the garbage collector controller 2016-05-15 16:04:19 -07:00
meta.go the garbage collector controller 2016-05-15 16:04:19 -07:00
node_example.json Updating scripts to use v1 instead of v1beta3 2015-07-01 00:23:16 -07:00
OWNERS Move blunderbuss assignees into tree 2016-03-02 20:46:32 -05:00
pod_example.json Updating scripts to use v1 instead of v1beta3 2015-07-01 00:23:16 -07:00
ref_test.go register internal types with scheme for reference unit test 2016-03-12 19:06:20 -05:00
ref.go Change ObjectKind signature to avoid allocations 2016-05-12 10:10:35 -04:00
register.go Handle streaming serializers more consistently 2016-04-22 11:07:24 -04:00
replication_controller_example.json Merge pull request #10604 from nikhiljindal/v1 2015-07-01 15:54:17 -07:00
requestcontext.go
resource_helpers_test.go Make default format right for nil values 2016-02-15 13:55:33 -05:00
resource_helpers.go Describe and get should show init containers 2016-05-17 00:29:54 -04:00
serialization_proto_test.go API for adding init containers 2016-05-17 00:29:49 -04:00
serialization_test.go Change ConvertToVersion to use GroupVersion 2016-05-12 10:10:35 -04:00
types.generated.go implement taints and tolerations 2016-05-18 15:06:23 +00:00
types.go Merge pull request #24331 from jsafrane/devel/refactor-binder 2016-05-19 03:06:46 -07:00