• k8s-merge-robot's avatar
    Merge pull request #24331 from jsafrane/devel/refactor-binder · c63ac4e6
    k8s-merge-robot authored
    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
    c63ac4e6
Name
Last commit
Last update
..
daemon Loading commit data...
deployment Loading commit data...
endpoint Loading commit data...
framework Loading commit data...
garbagecollector Loading commit data...
gc Loading commit data...
job Loading commit data...
namespace Loading commit data...
node Loading commit data...
persistentvolume Loading commit data...
petset Loading commit data...
podautoscaler Loading commit data...
replicaset Loading commit data...
replication Loading commit data...
resourcequota Loading commit data...
route Loading commit data...
service Loading commit data...
serviceaccount Loading commit data...
volume Loading commit data...
OWNERS Loading commit data...
controller_utils.go Loading commit data...
controller_utils_test.go Loading commit data...
doc.go Loading commit data...
lookup_cache.go Loading commit data...