• 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
..
compat Loading commit data...
conversion.go Loading commit data...
fuzzer.go Loading commit data...
pod_specs.go Loading commit data...