diff --git a/cmd/kube-controller-manager/app/BUILD b/cmd/kube-controller-manager/app/BUILD index 01073992fbe..55bc8e9a31b 100644 --- a/cmd/kube-controller-manager/app/BUILD +++ b/cmd/kube-controller-manager/app/BUILD @@ -146,6 +146,7 @@ go_library( "//staging/src/k8s.io/component-base/version/verflag:go_default_library", "//staging/src/k8s.io/controller-manager/app:go_default_library", "//staging/src/k8s.io/controller-manager/pkg/clientbuilder:go_default_library", + "//staging/src/k8s.io/controller-manager/pkg/informerfactory:go_default_library", "//staging/src/k8s.io/csi-translation-lib:go_default_library", "//staging/src/k8s.io/csi-translation-lib/plugins:go_default_library", "//staging/src/k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1beta1:go_default_library", diff --git a/cmd/kube-controller-manager/app/controllermanager.go b/cmd/kube-controller-manager/app/controllermanager.go index ec25b0d604d..a9da8e4c4ac 100644 --- a/cmd/kube-controller-manager/app/controllermanager.go +++ b/cmd/kube-controller-manager/app/controllermanager.go @@ -60,6 +60,7 @@ import ( "k8s.io/component-base/version/verflag" genericcontrollermanager "k8s.io/controller-manager/app" "k8s.io/controller-manager/pkg/clientbuilder" + "k8s.io/controller-manager/pkg/informerfactory" "k8s.io/klog/v2" "k8s.io/kubernetes/cmd/kube-controller-manager/app/config" "k8s.io/kubernetes/cmd/kube-controller-manager/app/options" @@ -311,7 +312,7 @@ type ControllerContext struct { // and dynamic resources by their metadata. All generic controllers currently use // object metadata - if a future controller needs access to the full object this // would become GenericInformerFactory and take a dynamic client. - ObjectOrMetadataInformerFactory controller.InformerFactory + ObjectOrMetadataInformerFactory informerfactory.InformerFactory // ComponentConfig provides access to init options for a given controller ComponentConfig kubectrlmgrconfig.KubeControllerManagerConfiguration @@ -496,7 +497,7 @@ func CreateControllerContext(s *config.CompletedConfig, rootClientBuilder, clien ctx := ControllerContext{ ClientBuilder: clientBuilder, InformerFactory: sharedInformers, - ObjectOrMetadataInformerFactory: controller.NewInformerFactory(sharedInformers, metadataInformers), + ObjectOrMetadataInformerFactory: informerfactory.NewInformerFactory(sharedInformers, metadataInformers), ComponentConfig: s.ComponentConfig, RESTMapper: restMapper, AvailableResources: availableResources, diff --git a/pkg/controller/BUILD b/pkg/controller/BUILD index f7f4992af37..38882d00443 100644 --- a/pkg/controller/BUILD +++ b/pkg/controller/BUILD @@ -7,7 +7,6 @@ go_library( "controller_ref_manager.go", "controller_utils.go", "doc.go", - "informer_factory.go", "lookup_cache.go", ], importpath = "k8s.io/kubernetes/pkg/controller", @@ -35,10 +34,8 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library", - "//staging/src/k8s.io/client-go/informers:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//staging/src/k8s.io/client-go/metadata/metadatainformer:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/client-go/tools/record:go_default_library", diff --git a/pkg/controller/garbagecollector/BUILD b/pkg/controller/garbagecollector/BUILD index 61263377648..138143ed97b 100644 --- a/pkg/controller/garbagecollector/BUILD +++ b/pkg/controller/garbagecollector/BUILD @@ -20,7 +20,6 @@ go_library( ], importpath = "k8s.io/kubernetes/pkg/controller/garbagecollector", deps = [ - "//pkg/controller:go_default_library", "//pkg/controller/garbagecollector/metaonly:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", @@ -38,6 +37,7 @@ go_library( "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/client-go/util/retry:go_default_library", "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", + "//staging/src/k8s.io/controller-manager/pkg/informerfactory:go_default_library", "//vendor/github.com/golang/groupcache/lru:go_default_library", "//vendor/gonum.org/v1/gonum/graph:go_default_library", "//vendor/gonum.org/v1/gonum/graph/encoding:go_default_library", @@ -57,7 +57,6 @@ go_test( deps = [ "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/core/install:go_default_library", - "//pkg/controller:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/meta/testrestmapper:go_default_library", @@ -75,6 +74,7 @@ go_test( "//staging/src/k8s.io/client-go/metadata/metadatainformer:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", + "//staging/src/k8s.io/controller-manager/pkg/informerfactory:go_default_library", "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/gonum.org/v1/gonum/graph:go_default_library", diff --git a/pkg/controller/garbagecollector/garbagecollector.go b/pkg/controller/garbagecollector/garbagecollector.go index a337e0f15e0..ef1e9bc8b5b 100644 --- a/pkg/controller/garbagecollector/garbagecollector.go +++ b/pkg/controller/garbagecollector/garbagecollector.go @@ -38,7 +38,7 @@ import ( "k8s.io/client-go/metadata" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" - "k8s.io/kubernetes/pkg/controller" + "k8s.io/controller-manager/pkg/informerfactory" // import known versions _ "k8s.io/client-go/kubernetes" @@ -77,7 +77,7 @@ func NewGarbageCollector( metadataClient metadata.Interface, mapper resettableRESTMapper, ignoredResources map[schema.GroupResource]struct{}, - sharedInformers controller.InformerFactory, + sharedInformers informerfactory.InformerFactory, informersStarted <-chan struct{}, ) (*GarbageCollector, error) { attemptToDelete := workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "garbage_collector_attempt_to_delete") diff --git a/pkg/controller/garbagecollector/garbagecollector_test.go b/pkg/controller/garbagecollector/garbagecollector_test.go index d707c990707..0752ec6b2a5 100644 --- a/pkg/controller/garbagecollector/garbagecollector_test.go +++ b/pkg/controller/garbagecollector/garbagecollector_test.go @@ -47,8 +47,8 @@ import ( "k8s.io/client-go/metadata/metadatainformer" restclient "k8s.io/client-go/rest" "k8s.io/client-go/util/workqueue" + "k8s.io/controller-manager/pkg/informerfactory" "k8s.io/kubernetes/pkg/api/legacyscheme" - "k8s.io/kubernetes/pkg/controller" ) type testRESTMapper struct { @@ -82,7 +82,7 @@ func TestGarbageCollectorConstruction(t *testing.T) { alwaysStarted := make(chan struct{}) close(alwaysStarted) gc, err := NewGarbageCollector(metadataClient, rm, map[schema.GroupResource]struct{}{}, - controller.NewInformerFactory(sharedInformers, metadataInformers), alwaysStarted) + informerfactory.NewInformerFactory(sharedInformers, metadataInformers), alwaysStarted) if err != nil { t.Fatal(err) } diff --git a/pkg/controller/garbagecollector/graph_builder.go b/pkg/controller/garbagecollector/graph_builder.go index 7135f032bbe..e392eb52f58 100644 --- a/pkg/controller/garbagecollector/graph_builder.go +++ b/pkg/controller/garbagecollector/graph_builder.go @@ -34,7 +34,7 @@ import ( "k8s.io/client-go/metadata" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" - "k8s.io/kubernetes/pkg/controller" + "k8s.io/controller-manager/pkg/informerfactory" "k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly" ) @@ -102,7 +102,7 @@ type GraphBuilder struct { // GraphBuilder and GC share the absentOwnerCache. Objects that are known to // be non-existent are added to the cached. absentOwnerCache *UIDCache - sharedInformers controller.InformerFactory + sharedInformers informerfactory.InformerFactory ignoredResources map[schema.GroupResource]struct{} } diff --git a/pkg/controller/resourcequota/BUILD b/pkg/controller/resourcequota/BUILD index b2e74ad6888..be0c5aed7ac 100644 --- a/pkg/controller/resourcequota/BUILD +++ b/pkg/controller/resourcequota/BUILD @@ -37,6 +37,7 @@ go_library( "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", + "//staging/src/k8s.io/controller-manager/pkg/informerfactory:go_default_library", "//vendor/k8s.io/klog/v2:go_default_library", ], ) diff --git a/pkg/controller/resourcequota/resource_quota_controller.go b/pkg/controller/resourcequota/resource_quota_controller.go index 03de2b19823..9b0d4f71cd0 100644 --- a/pkg/controller/resourcequota/resource_quota_controller.go +++ b/pkg/controller/resourcequota/resource_quota_controller.go @@ -42,6 +42,7 @@ import ( corelisters "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" + "k8s.io/controller-manager/pkg/informerfactory" "k8s.io/kubernetes/pkg/controller" ) @@ -69,7 +70,7 @@ type ControllerOptions struct { // InformersStarted knows if informers were started. InformersStarted <-chan struct{} // InformerFactory interfaces with informers. - InformerFactory controller.InformerFactory + InformerFactory informerfactory.InformerFactory // Controls full resync of objects monitored for replenishment. ReplenishmentResyncPeriod controller.ResyncPeriodFunc } diff --git a/pkg/controller/resourcequota/resource_quota_monitor.go b/pkg/controller/resourcequota/resource_quota_monitor.go index 778e4b464e9..a4af65a9a58 100644 --- a/pkg/controller/resourcequota/resource_quota_monitor.go +++ b/pkg/controller/resourcequota/resource_quota_monitor.go @@ -34,6 +34,7 @@ import ( "k8s.io/apiserver/pkg/quota/v1/generic" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" + "k8s.io/controller-manager/pkg/informerfactory" "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/quota/v1/evaluator/core" ) @@ -87,7 +88,7 @@ type QuotaMonitor struct { resourceChanges workqueue.RateLimitingInterface // interfaces with informers - informerFactory controller.InformerFactory + informerFactory informerfactory.InformerFactory // list of resources to ignore ignoredResources map[schema.GroupResource]struct{} @@ -103,7 +104,7 @@ type QuotaMonitor struct { } // NewMonitor creates a new instance of a QuotaMonitor -func NewMonitor(informersStarted <-chan struct{}, informerFactory controller.InformerFactory, ignoredResources map[schema.GroupResource]struct{}, resyncPeriod controller.ResyncPeriodFunc, replenishmentFunc ReplenishmentFunc, registry quota.Registry) *QuotaMonitor { +func NewMonitor(informersStarted <-chan struct{}, informerFactory informerfactory.InformerFactory, ignoredResources map[schema.GroupResource]struct{}, resyncPeriod controller.ResyncPeriodFunc, replenishmentFunc ReplenishmentFunc, registry quota.Registry) *QuotaMonitor { return &QuotaMonitor{ informersStarted: informersStarted, informerFactory: informerFactory, diff --git a/staging/src/k8s.io/controller-manager/BUILD b/staging/src/k8s.io/controller-manager/BUILD index 18496298452..efb9b6a45a4 100644 --- a/staging/src/k8s.io/controller-manager/BUILD +++ b/staging/src/k8s.io/controller-manager/BUILD @@ -28,6 +28,7 @@ filegroup( "//staging/src/k8s.io/controller-manager/options:all-srcs", "//staging/src/k8s.io/controller-manager/pkg/clientbuilder:all-srcs", "//staging/src/k8s.io/controller-manager/pkg/features:all-srcs", + "//staging/src/k8s.io/controller-manager/pkg/informerfactory:all-srcs", ], tags = ["automanaged"], visibility = ["//visibility:public"], diff --git a/staging/src/k8s.io/controller-manager/pkg/informerfactory/BUILD b/staging/src/k8s.io/controller-manager/pkg/informerfactory/BUILD new file mode 100644 index 00000000000..d741d2d51f6 --- /dev/null +++ b/staging/src/k8s.io/controller-manager/pkg/informerfactory/BUILD @@ -0,0 +1,28 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["informer_factory.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/controller-manager/pkg/informerfactory", + importpath = "k8s.io/controller-manager/pkg/informerfactory", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/client-go/informers:go_default_library", + "//staging/src/k8s.io/client-go/metadata/metadatainformer:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/pkg/controller/informer_factory.go b/staging/src/k8s.io/controller-manager/pkg/informerfactory/informer_factory.go similarity index 98% rename from pkg/controller/informer_factory.go rename to staging/src/k8s.io/controller-manager/pkg/informerfactory/informer_factory.go index 11f3272e707..65f928a028c 100644 --- a/pkg/controller/informer_factory.go +++ b/staging/src/k8s.io/controller-manager/pkg/informerfactory/informer_factory.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package controller +package informerfactory import ( "k8s.io/apimachinery/pkg/runtime/schema" diff --git a/test/integration/garbagecollector/BUILD b/test/integration/garbagecollector/BUILD index 9e1b132c6d4..9f9fb6065ca 100644 --- a/test/integration/garbagecollector/BUILD +++ b/test/integration/garbagecollector/BUILD @@ -12,7 +12,6 @@ go_test( tags = ["integration"], deps = [ "//cmd/kube-apiserver/app/testing:go_default_library", - "//pkg/controller:go_default_library", "//pkg/controller/garbagecollector:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", @@ -35,6 +34,7 @@ go_test( "//staging/src/k8s.io/client-go/metadata/metadatainformer:go_default_library", "//staging/src/k8s.io/client-go/restmapper:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", + "//staging/src/k8s.io/controller-manager/pkg/informerfactory:go_default_library", "//test/integration:go_default_library", "//test/integration/framework:go_default_library", ], diff --git a/test/integration/garbagecollector/garbage_collector_test.go b/test/integration/garbagecollector/garbage_collector_test.go index a06c3fd1e2f..69ffeb33f9b 100644 --- a/test/integration/garbagecollector/garbage_collector_test.go +++ b/test/integration/garbagecollector/garbage_collector_test.go @@ -45,8 +45,8 @@ import ( "k8s.io/client-go/metadata/metadatainformer" "k8s.io/client-go/restmapper" "k8s.io/client-go/tools/cache" + "k8s.io/controller-manager/pkg/informerfactory" kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" - "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller/garbagecollector" "k8s.io/kubernetes/test/integration" "k8s.io/kubernetes/test/integration/framework" @@ -249,7 +249,7 @@ func setupWithServer(t *testing.T, result *kubeapiservertesting.TestServer, work metadataClient, restMapper, garbagecollector.DefaultIgnoredResources(), - controller.NewInformerFactory(sharedInformers, metadataInformers), + informerfactory.NewInformerFactory(sharedInformers, metadataInformers), alwaysStarted, ) if err != nil { diff --git a/vendor/modules.txt b/vendor/modules.txt index e6c26af34e7..ae4508bce5e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -2203,6 +2203,7 @@ k8s.io/controller-manager/options k8s.io/controller-manager/pkg/clientbuilder k8s.io/controller-manager/pkg/features k8s.io/controller-manager/pkg/features/register +k8s.io/controller-manager/pkg/informerfactory # k8s.io/cri-api v0.0.0 => ./staging/src/k8s.io/cri-api ## explicit # k8s.io/cri-api => ./staging/src/k8s.io/cri-api