
Automatic merge from submit-queue (batch tested with PRs 48279, 48566, 48319, 48794, 47952) Helper methods dealing with ControllerRef **What this PR does / why we need it**: Adds helper methods for working with **controllerRef** (controller's `OwnerReference`). It is based on the existing code from Kubernetes plus extracting some common logic: - `NewControllerRef` is based on examples from [daemon controller](https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/daemon/daemoncontroller.go#L1223), [deployment controller](https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/deployment/sync.go#L649), [job controller](https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/job/utils.go#L34) - `GetControllerOf` is copied from [controller_ref_manager.go](https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/controller_ref_manager.go#L36) - `IsControlledBy` is a common logic extracted from resource controllers: [deployment_util.go#L568](https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/deployment/util/deployment_util.go#L568), [history.go#L276](https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/history.go#L276) and many others. It will also be useful for writing custom resource controllers, for example [service-catalog#979](https://github.com/kubernetes-incubator/service-catalog/pull/979)
This directory is the staging area for packages that have been split to their own repository. The content here will be periodically published to respective top-level k8s.io repositories.
Most code in the staging/
directory is authoritative, i.e. the only copy of
the code. You can directly modify such code. However the packages in
staging/src/k8s.io/client-go/pkg
are copied from pkg/
. If you modify the
original code in pkg/
, you need to run hack/godep-restore.sh
from the k8s
root directory, followed by hack/update-staging-client-go.sh
. We are working
towards making all code in staging/
authoritative.
The vendor/k8s.io
directory contains symlinks pointing to this staging area,
so to use a package in the staging area, you can import it as
k8s.io/<package-name>
, as if the package were vendored. Packages will be
vendored from k8s.io/<package-name>
for real after the test matrix is
converted to vendor k8s components.