From 6d891be3be3f5af43428528ead65c47db5e6954b Mon Sep 17 00:00:00 2001 From: nikhiljindal Date: Wed, 1 Mar 2017 17:05:58 -0800 Subject: [PATCH 1/2] Fixing federation controllers to support controllers flag --- .../app/controllermanager.go | 85 +++++++++++-------- .../app/options/options.go | 6 +- .../configmap/configmap_controller.go | 6 ++ .../daemonset/daemonset_controller.go | 6 ++ .../deployment/deploymentcontroller.go | 3 + .../ingress/ingress_controller.go | 2 +- .../namespace/namespace_controller.go | 6 ++ .../replicaset/replicasetcontroller.go | 3 + .../secret/secret_controller.go | 6 ++ .../service/servicecontroller.go | 6 ++ 10 files changed, 90 insertions(+), 39 deletions(-) diff --git a/federation/cmd/federation-controller-manager/app/controllermanager.go b/federation/cmd/federation-controller-manager/app/controllermanager.go index 9d6f12c731..7316050b2f 100644 --- a/federation/cmd/federation-controller-manager/app/controllermanager.go +++ b/federation/cmd/federation-controller-manager/app/controllermanager.go @@ -38,7 +38,7 @@ import ( "k8s.io/kubernetes/federation/pkg/dnsprovider" clustercontroller "k8s.io/kubernetes/federation/pkg/federation-controller/cluster" configmapcontroller "k8s.io/kubernetes/federation/pkg/federation-controller/configmap" - daemonset "k8s.io/kubernetes/federation/pkg/federation-controller/daemonset" + daemonsetcontroller "k8s.io/kubernetes/federation/pkg/federation-controller/daemonset" deploymentcontroller "k8s.io/kubernetes/federation/pkg/federation-controller/deployment" ingresscontroller "k8s.io/kubernetes/federation/pkg/federation-controller/ingress" namespacecontroller "k8s.io/kubernetes/federation/pkg/federation-controller/namespace" @@ -154,11 +154,6 @@ func StartControllers(s *options.CMServer, restClientCfg *restclient.Config) err glog.Infof("Loading client config for cluster controller %q", "cluster-controller") ccClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "cluster-controller")) glog.Infof("Running cluster controller") - go clustercontroller.NewclusterController(ccClientset, s.ClusterMonitorPeriod.Duration).Run() - dns, err := dnsprovider.InitDnsProvider(s.DnsProvider, s.DnsConfigFile) - if err != nil { - glog.Fatalf("Cloud provider could not be initialized: %v", err) - } discoveryClient := discovery.NewDiscoveryClientForConfigOrDie(restClientCfg) serverResources, err := discoveryClient.ServerResources() @@ -166,32 +161,60 @@ func StartControllers(s *options.CMServer, restClientCfg *restclient.Config) err glog.Fatalf("Could not find resources from API Server: %v", err) } - glog.Infof("Loading client config for namespace controller %q", "namespace-controller") - nsClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "namespace-controller")) - namespaceController := namespacecontroller.NewNamespaceController(nsClientset, dynamic.NewDynamicClientPool(restclient.AddUserAgent(restClientCfg, "namespace-controller"))) - glog.Infof("Running namespace controller") - namespaceController.Run(wait.NeverStop) + go clustercontroller.NewclusterController(ccClientset, s.ClusterMonitorPeriod.Duration).Run() - secretcontrollerClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "secret-controller")) - secretcontroller := secretcontroller.NewSecretController(secretcontrollerClientset) - secretcontroller.Run(wait.NeverStop) + if controllerEnabled(s.Controllers, serverResources, servicecontroller.ControllerName, servicecontroller.RequiredResources, true) { + dns, err := dnsprovider.InitDnsProvider(s.DnsProvider, s.DnsConfigFile) + if err != nil { + glog.Fatalf("Cloud provider could not be initialized: %v", err) + } + glog.Infof("Loading client config for service controller %q", servicecontroller.UserAgentName) + scClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, servicecontroller.UserAgentName)) + servicecontroller := servicecontroller.New(scClientset, dns, s.FederationName, s.ServiceDnsSuffix, s.ZoneName, s.ZoneID) + glog.Infof("Running service controller") + if err := servicecontroller.Run(s.ConcurrentServiceSyncs, wait.NeverStop); err != nil { + glog.Errorf("Failed to start service controller: %v", err) + } + } - configmapcontrollerClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "configmap-controller")) - configmapcontroller := configmapcontroller.NewConfigMapController(configmapcontrollerClientset) - configmapcontroller.Run(wait.NeverStop) + if controllerEnabled(s.Controllers, serverResources, namespacecontroller.ControllerName, namespacecontroller.RequiredResources, true) { + glog.Infof("Loading client config for namespace controller %q", "namespace-controller") + nsClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "namespace-controller")) + namespaceController := namespacecontroller.NewNamespaceController(nsClientset, dynamic.NewDynamicClientPool(restclient.AddUserAgent(restClientCfg, "namespace-controller"))) + glog.Infof("Running namespace controller") + namespaceController.Run(wait.NeverStop) + } - daemonsetcontrollerClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "daemonset-controller")) - daemonsetcontroller := daemonset.NewDaemonSetController(daemonsetcontrollerClientset) - daemonsetcontroller.Run(wait.NeverStop) + if controllerEnabled(s.Controllers, serverResources, secretcontroller.ControllerName, secretcontroller.RequiredResources, true) { + secretcontrollerClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "secret-controller")) + secretcontroller := secretcontroller.NewSecretController(secretcontrollerClientset) + secretcontroller.Run(wait.NeverStop) + } - replicaSetClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, replicasetcontroller.UserAgentName)) - replicaSetController := replicasetcontroller.NewReplicaSetController(replicaSetClientset) - go replicaSetController.Run(s.ConcurrentReplicaSetSyncs, wait.NeverStop) + if controllerEnabled(s.Controllers, serverResources, configmapcontroller.ControllerName, configmapcontroller.RequiredResources, true) { + configmapcontrollerClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "configmap-controller")) + configmapcontroller := configmapcontroller.NewConfigMapController(configmapcontrollerClientset) + configmapcontroller.Run(wait.NeverStop) + } - deploymentClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, deploymentcontroller.UserAgentName)) - deploymentController := deploymentcontroller.NewDeploymentController(deploymentClientset) - // TODO: rename s.ConcurentReplicaSetSyncs - go deploymentController.Run(s.ConcurrentReplicaSetSyncs, wait.NeverStop) + if controllerEnabled(s.Controllers, serverResources, daemonsetcontroller.ControllerName, daemonsetcontroller.RequiredResources, true) { + daemonsetcontrollerClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "daemonset-controller")) + daemonsetcontroller := daemonsetcontroller.NewDaemonSetController(daemonsetcontrollerClientset) + daemonsetcontroller.Run(wait.NeverStop) + } + + if controllerEnabled(s.Controllers, serverResources, replicasetcontroller.ControllerName, replicasetcontroller.RequiredResources, true) { + replicaSetClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, replicasetcontroller.UserAgentName)) + replicaSetController := replicasetcontroller.NewReplicaSetController(replicaSetClientset) + go replicaSetController.Run(s.ConcurrentReplicaSetSyncs, wait.NeverStop) + } + + if controllerEnabled(s.Controllers, serverResources, deploymentcontroller.ControllerName, deploymentcontroller.RequiredResources, true) { + deploymentClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, deploymentcontroller.UserAgentName)) + deploymentController := deploymentcontroller.NewDeploymentController(deploymentClientset) + // TODO: rename s.ConcurentReplicaSetSyncs + go deploymentController.Run(s.ConcurrentReplicaSetSyncs, wait.NeverStop) + } if controllerEnabled(s.Controllers, serverResources, ingresscontroller.ControllerName, ingresscontroller.RequiredResources, true) { glog.Infof("Loading client config for ingress controller %q", "ingress-controller") @@ -201,14 +224,6 @@ func StartControllers(s *options.CMServer, restClientCfg *restclient.Config) err ingressController.Run(wait.NeverStop) } - glog.Infof("Loading client config for service controller %q", servicecontroller.UserAgentName) - scClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, servicecontroller.UserAgentName)) - servicecontroller := servicecontroller.New(scClientset, dns, s.FederationName, s.ServiceDnsSuffix, s.ZoneName, s.ZoneID) - glog.Infof("Running service controller") - if err := servicecontroller.Run(s.ConcurrentServiceSyncs, wait.NeverStop); err != nil { - glog.Errorf("Failed to start service controller: %v", err) - } - select {} } diff --git a/federation/cmd/federation-controller-manager/app/options/options.go b/federation/cmd/federation-controller-manager/app/options/options.go index ecfd4a5f5b..deb9c58e3c 100644 --- a/federation/cmd/federation-controller-manager/app/options/options.go +++ b/federation/cmd/federation-controller-manager/app/options/options.go @@ -123,8 +123,8 @@ func (s *CMServer) AddFlags(fs *pflag.FlagSet) { fs.StringVar(&s.DnsProvider, "dns-provider", s.DnsProvider, "DNS provider. Valid values are: "+fmt.Sprintf("%q", dnsprovider.RegisteredDnsProviders())) fs.StringVar(&s.DnsConfigFile, "dns-provider-config", s.DnsConfigFile, "Path to config file for configuring DNS provider.") fs.Var(&s.Controllers, "controllers", ""+ - "A set of key=value pairs that describe controller configuration that may be passed "+ - "to controller manager to enable/disable specific controllers. Valid options are: \n"+ - "ingress=true|false (default=true)") + "A set of key=value pairs that describe controller configuration "+ + "to enable/disable specific controllers. Key should be the resource name (like services) and value should be true or false. "+ + "For example: services=false,ingresses=false") leaderelection.BindFlags(&s.LeaderElection, fs) } diff --git a/federation/pkg/federation-controller/configmap/configmap_controller.go b/federation/pkg/federation-controller/configmap/configmap_controller.go index 8328aa58e5..a63be0a56e 100644 --- a/federation/pkg/federation-controller/configmap/configmap_controller.go +++ b/federation/pkg/federation-controller/configmap/configmap_controller.go @@ -23,6 +23,7 @@ import ( "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" pkgruntime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/watch" clientv1 "k8s.io/client-go/pkg/api/v1" @@ -44,6 +45,11 @@ import ( const ( allClustersKey = "ALL_CLUSTERS" + ControllerName = "configmaps" +) + +var ( + RequiredResources = []schema.GroupVersionResource{apiv1.SchemeGroupVersion.WithResource("configmaps")} ) type ConfigMapController struct { diff --git a/federation/pkg/federation-controller/daemonset/daemonset_controller.go b/federation/pkg/federation-controller/daemonset/daemonset_controller.go index c83292f712..5d2bb7e1ba 100644 --- a/federation/pkg/federation-controller/daemonset/daemonset_controller.go +++ b/federation/pkg/federation-controller/daemonset/daemonset_controller.go @@ -24,6 +24,7 @@ import ( "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" pkgruntime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/watch" clientv1 "k8s.io/client-go/pkg/api/v1" @@ -45,6 +46,11 @@ import ( const ( allClustersKey = "ALL_CLUSTERS" + ControllerName = "daemonsets" +) + +var ( + RequiredResources = []schema.GroupVersionResource{extensionsv1.SchemeGroupVersion.WithResource("daemonsets")} ) type DaemonSetController struct { diff --git a/federation/pkg/federation-controller/deployment/deploymentcontroller.go b/federation/pkg/federation-controller/deployment/deploymentcontroller.go index 7a6d23c016..43115d5cf3 100644 --- a/federation/pkg/federation-controller/deployment/deploymentcontroller.go +++ b/federation/pkg/federation-controller/deployment/deploymentcontroller.go @@ -28,6 +28,7 @@ import ( "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/watch" clientv1 "k8s.io/client-go/pkg/api/v1" @@ -54,9 +55,11 @@ const ( FedDeploymentPreferencesAnnotation = "federation.kubernetes.io/deployment-preferences" allClustersKey = "THE_ALL_CLUSTER_KEY" UserAgentName = "Federation-Deployment-Controller" + ControllerName = "deployments" ) var ( + RequiredResources = []schema.GroupVersionResource{extensionsv1.SchemeGroupVersion.WithResource("deployments")} deploymentReviewDelay = 10 * time.Second clusterAvailableDelay = 20 * time.Second clusterUnavailableDelay = 60 * time.Second diff --git a/federation/pkg/federation-controller/ingress/ingress_controller.go b/federation/pkg/federation-controller/ingress/ingress_controller.go index 2dc762a349..b3644cca67 100644 --- a/federation/pkg/federation-controller/ingress/ingress_controller.go +++ b/federation/pkg/federation-controller/ingress/ingress_controller.go @@ -60,7 +60,7 @@ const ( // We wait for ingress to be created in this cluster before creating it any // other cluster. firstClusterAnnotation = "ingress.federation.kubernetes.io/first-cluster" - ControllerName = "ingress" + ControllerName = "ingresses" ) var ( diff --git a/federation/pkg/federation-controller/namespace/namespace_controller.go b/federation/pkg/federation-controller/namespace/namespace_controller.go index db208020a9..300e4779f3 100644 --- a/federation/pkg/federation-controller/namespace/namespace_controller.go +++ b/federation/pkg/federation-controller/namespace/namespace_controller.go @@ -23,6 +23,7 @@ import ( "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/dynamic" clientv1 "k8s.io/client-go/pkg/api/v1" @@ -45,6 +46,11 @@ import ( const ( allClustersKey = "ALL_CLUSTERS" + ControllerName = "namespaces" +) + +var ( + RequiredResources = []schema.GroupVersionResource{apiv1.SchemeGroupVersion.WithResource("namespaces")} ) type NamespaceController struct { diff --git a/federation/pkg/federation-controller/replicaset/replicasetcontroller.go b/federation/pkg/federation-controller/replicaset/replicasetcontroller.go index 070b8eb0c7..e29787fee6 100644 --- a/federation/pkg/federation-controller/replicaset/replicasetcontroller.go +++ b/federation/pkg/federation-controller/replicaset/replicasetcontroller.go @@ -29,6 +29,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/watch" @@ -57,9 +58,11 @@ const ( FedReplicaSetPreferencesAnnotation = "federation.kubernetes.io/replica-set-preferences" allClustersKey = "THE_ALL_CLUSTER_KEY" UserAgentName = "Federation-replicaset-Controller" + ControllerName = "replicasets" ) var ( + RequiredResources = []schema.GroupVersionResource{extensionsv1.SchemeGroupVersion.WithResource("replicasets")} replicaSetReviewDelay = 10 * time.Second clusterAvailableDelay = 20 * time.Second clusterUnavailableDelay = 60 * time.Second diff --git a/federation/pkg/federation-controller/secret/secret_controller.go b/federation/pkg/federation-controller/secret/secret_controller.go index a2419d93a2..a6a80e1dd0 100644 --- a/federation/pkg/federation-controller/secret/secret_controller.go +++ b/federation/pkg/federation-controller/secret/secret_controller.go @@ -23,6 +23,7 @@ import ( "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" pkgruntime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/watch" clientv1 "k8s.io/client-go/pkg/api/v1" @@ -44,6 +45,11 @@ import ( const ( allClustersKey = "ALL_CLUSTERS" + ControllerName = "secrets" +) + +var ( + RequiredResources = []schema.GroupVersionResource{apiv1.SchemeGroupVersion.WithResource("secrets")} ) type SecretController struct { diff --git a/federation/pkg/federation-controller/service/servicecontroller.go b/federation/pkg/federation-controller/service/servicecontroller.go index 610bac20e9..3d0917b9b7 100644 --- a/federation/pkg/federation-controller/service/servicecontroller.go +++ b/federation/pkg/federation-controller/service/servicecontroller.go @@ -28,6 +28,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/conversion" pkgruntime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" @@ -78,6 +79,11 @@ const ( updateTimeout = 30 * time.Second allClustersKey = "ALL_CLUSTERS" clusterAvailableDelay = time.Second * 20 + ControllerName = "services" +) + +var ( + RequiredResources = []schema.GroupVersionResource{v1.SchemeGroupVersion.WithResource("services")} ) type cachedService struct { From 244f8c87eab7362f2d434220f49b64496308c546 Mon Sep 17 00:00:00 2001 From: nikhiljindal Date: Wed, 1 Mar 2017 17:50:38 -0800 Subject: [PATCH 2/2] autogenerated bazel changes --- federation/pkg/federation-controller/configmap/BUILD | 1 + federation/pkg/federation-controller/daemonset/BUILD | 1 + federation/pkg/federation-controller/deployment/BUILD | 1 + federation/pkg/federation-controller/namespace/BUILD | 1 + federation/pkg/federation-controller/replicaset/BUILD | 1 + federation/pkg/federation-controller/secret/BUILD | 1 + federation/pkg/federation-controller/service/BUILD | 1 + 7 files changed, 7 insertions(+) diff --git a/federation/pkg/federation-controller/configmap/BUILD b/federation/pkg/federation-controller/configmap/BUILD index 021d4613db..f59d324b5a 100644 --- a/federation/pkg/federation-controller/configmap/BUILD +++ b/federation/pkg/federation-controller/configmap/BUILD @@ -26,6 +26,7 @@ go_library( "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", + "//vendor:k8s.io/apimachinery/pkg/runtime/schema", "//vendor:k8s.io/apimachinery/pkg/types", "//vendor:k8s.io/apimachinery/pkg/watch", "//vendor:k8s.io/client-go/pkg/api/v1", diff --git a/federation/pkg/federation-controller/daemonset/BUILD b/federation/pkg/federation-controller/daemonset/BUILD index 3fbaf35332..f12ba0d8bf 100644 --- a/federation/pkg/federation-controller/daemonset/BUILD +++ b/federation/pkg/federation-controller/daemonset/BUILD @@ -26,6 +26,7 @@ go_library( "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", + "//vendor:k8s.io/apimachinery/pkg/runtime/schema", "//vendor:k8s.io/apimachinery/pkg/types", "//vendor:k8s.io/apimachinery/pkg/watch", "//vendor:k8s.io/client-go/pkg/api/v1", diff --git a/federation/pkg/federation-controller/deployment/BUILD b/federation/pkg/federation-controller/deployment/BUILD index ef157a249e..75549dbdd1 100644 --- a/federation/pkg/federation-controller/deployment/BUILD +++ b/federation/pkg/federation-controller/deployment/BUILD @@ -30,6 +30,7 @@ go_library( "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", + "//vendor:k8s.io/apimachinery/pkg/runtime/schema", "//vendor:k8s.io/apimachinery/pkg/util/wait", "//vendor:k8s.io/apimachinery/pkg/watch", "//vendor:k8s.io/client-go/pkg/api/v1", diff --git a/federation/pkg/federation-controller/namespace/BUILD b/federation/pkg/federation-controller/namespace/BUILD index 4812cd24ca..945abd41fa 100644 --- a/federation/pkg/federation-controller/namespace/BUILD +++ b/federation/pkg/federation-controller/namespace/BUILD @@ -27,6 +27,7 @@ go_library( "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", + "//vendor:k8s.io/apimachinery/pkg/runtime/schema", "//vendor:k8s.io/apimachinery/pkg/watch", "//vendor:k8s.io/client-go/dynamic", "//vendor:k8s.io/client-go/pkg/api/v1", diff --git a/federation/pkg/federation-controller/replicaset/BUILD b/federation/pkg/federation-controller/replicaset/BUILD index ea16d8c9e7..8a1981f8a6 100644 --- a/federation/pkg/federation-controller/replicaset/BUILD +++ b/federation/pkg/federation-controller/replicaset/BUILD @@ -32,6 +32,7 @@ go_library( "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/labels", "//vendor:k8s.io/apimachinery/pkg/runtime", + "//vendor:k8s.io/apimachinery/pkg/runtime/schema", "//vendor:k8s.io/apimachinery/pkg/util/runtime", "//vendor:k8s.io/apimachinery/pkg/util/wait", "//vendor:k8s.io/apimachinery/pkg/watch", diff --git a/federation/pkg/federation-controller/secret/BUILD b/federation/pkg/federation-controller/secret/BUILD index 82b7bbd86c..363202a3de 100644 --- a/federation/pkg/federation-controller/secret/BUILD +++ b/federation/pkg/federation-controller/secret/BUILD @@ -26,6 +26,7 @@ go_library( "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", + "//vendor:k8s.io/apimachinery/pkg/runtime/schema", "//vendor:k8s.io/apimachinery/pkg/types", "//vendor:k8s.io/apimachinery/pkg/watch", "//vendor:k8s.io/client-go/pkg/api/v1", diff --git a/federation/pkg/federation-controller/service/BUILD b/federation/pkg/federation-controller/service/BUILD index 8bc3d772c4..4e59bbd6c7 100644 --- a/federation/pkg/federation-controller/service/BUILD +++ b/federation/pkg/federation-controller/service/BUILD @@ -37,6 +37,7 @@ go_library( "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/conversion", "//vendor:k8s.io/apimachinery/pkg/runtime", + "//vendor:k8s.io/apimachinery/pkg/runtime/schema", "//vendor:k8s.io/apimachinery/pkg/util/runtime", "//vendor:k8s.io/apimachinery/pkg/util/sets", "//vendor:k8s.io/apimachinery/pkg/util/wait",