Automatic merge from submit-queue (batch tested with PRs 38676, 41765, 42103, 41833, 41702) Add synchronous garbage collection Fix https://github.com/kubernetes/kubernetes/issues/29891. Split into five commits: 1. generated: don't need review 2. API: got reviewed in #38678, i addressed @lavalamp's comments there. 3. registry changes: @nikhiljindal could you help take a look? 4. gc changes: reviewed by @deads2k in #38679. It needs another pass. 5. tests: @lavalamp @deads2k could take a look? TODO: - [ ] Update doc. Note that the existing doc has been refactored in https://github.com/kubernetes/kubernetes.github.io/pull/2488. - [ ] add an admission controller to check if a user can set OwnerReference.BlockOwnerDeletion - [ ] https://github.com/kubernetes/kubernetes/pull/38676#discussion_r103277274 - [ ] split the unit tests garbagecollector_test.go according to the components tested. - [ ] try if it's practically safe to use the cached object status in attempToDeleteItem(), after synchronous GC feature is stable. (Also see https://github.com/kubernetes/kubernetes/pull/38676#discussion_r103056971) - [ ] add blockOwnerDeletion for rs adoption https://github.com/kubernetes/kubernetes/pull/38679#discussion_r93817284 - [ ] https://k8s-gubernator.appspot.com/build/kubernetes-jenkins/pr-logs/pull/38676/pull-kubernetes-e2e-gce-etcd3/20101/ (improve the log message) ```release-note Added foreground garbage collection: the owner object will not be deleted until all its dependents are deleted by the garbage collector. Please checkout the [user doc](https://kubernetes.io/docs/concepts/abstractions/controllers/garbage-collection/) for details. deleteOptions.orphanDependents is going to be deprecated in 1.7. Please use deleteOptions.propagationPolicy instead. ```
This staging/src/k8s.io/client-go directory is the staging area of the client repo. It contains a versioned client, tools built around the client like the reflector, and all the client dependencies. The content will be periodically published to k8s.io/client-go repo.
The staged content is copied from the main repo, i.e., k8s.io/kubernetes, with directory rearrangement and necessary rewritings. To sync the content with the latest code in your local k8s.io/kubernetes, you need to run godep restore in k8s root directory, then run staging/copy.sh.
vendor/k8s.io/client-go is a symlink pointing to this staging area, so to use the packages in the staging area, you can import it as "vendor/client-go/", as if the client were vendored. The client will be vendored from k8s.io/client-go for real after the test matrix is converted to vendor k8s components.