Commit 843e6d1c authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #40770 from apilloud/clientset_interface

Automatic merge from submit-queue (batch tested with PRs 41103, 41042, 41097, 40946, 40770) Use Clientset interface in KubeletDeps **What this PR does / why we need it**: This replaces the Clientset struct with the equivalent interface for the KubeClient injected via KubeletDeps. This is useful for testing and for accessing the Node and Pod status event stream without an API server. **Special notes for your reviewer**: Follow up to #4907 **Release note**: `NONE`
parents 51b8eb94 3f850502
...@@ -363,7 +363,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.KubeletDeps) (err error) { ...@@ -363,7 +363,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.KubeletDeps) (err error) {
} }
if kubeDeps == nil { if kubeDeps == nil {
var kubeClient *clientset.Clientset var kubeClient clientset.Interface
var eventClient v1core.EventsGetter var eventClient v1core.EventsGetter
var externalKubeClient clientgoclientset.Interface var externalKubeClient clientgoclientset.Interface
var cloud cloudprovider.Interface var cloud cloudprovider.Interface
......
...@@ -29,7 +29,7 @@ import ( ...@@ -29,7 +29,7 @@ import (
) )
// NewSourceApiserver creates a config source that watches and pulls from the apiserver. // NewSourceApiserver creates a config source that watches and pulls from the apiserver.
func NewSourceApiserver(c *clientset.Clientset, nodeName types.NodeName, updates chan<- interface{}) { func NewSourceApiserver(c clientset.Interface, nodeName types.NodeName, updates chan<- interface{}) {
lw := cache.NewListWatchFromClient(c.Core().RESTClient(), "pods", metav1.NamespaceAll, fields.OneTermEqualSelector(api.PodHostField, string(nodeName))) lw := cache.NewListWatchFromClient(c.Core().RESTClient(), "pods", metav1.NamespaceAll, fields.OneTermEqualSelector(api.PodHostField, string(nodeName)))
newSourceApiserverFromLW(lw, updates) newSourceApiserverFromLW(lw, updates)
} }
......
...@@ -220,7 +220,7 @@ type KubeletDeps struct { ...@@ -220,7 +220,7 @@ type KubeletDeps struct {
ContainerManager cm.ContainerManager ContainerManager cm.ContainerManager
DockerClient dockertools.DockerInterface DockerClient dockertools.DockerInterface
EventClient v1core.EventsGetter EventClient v1core.EventsGetter
KubeClient *clientset.Clientset KubeClient clientset.Interface
ExternalKubeClient clientgoclientset.Interface ExternalKubeClient clientgoclientset.Interface
Mounter mount.Interface Mounter mount.Interface
NetworkPlugins []network.NetworkPlugin NetworkPlugins []network.NetworkPlugin
...@@ -318,15 +318,6 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub ...@@ -318,15 +318,6 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
glog.V(2).Infof("cloud provider determined current node name to be %s", nodeName) glog.V(2).Infof("cloud provider determined current node name to be %s", nodeName)
} }
// TODO: KubeletDeps.KubeClient should be a client interface, but client interface misses certain methods
// used by kubelet. Since NewMainKubelet expects a client interface, we need to make sure we are not passing
// a nil pointer to it when what we really want is a nil interface.
var kubeClient clientset.Interface
if kubeDeps.KubeClient != nil {
kubeClient = kubeDeps.KubeClient
// TODO: remove this when we've refactored kubelet to only use clientset.
}
if kubeDeps.PodConfig == nil { if kubeDeps.PodConfig == nil {
var err error var err error
kubeDeps.PodConfig, err = makePodSourceConfig(kubeCfg, kubeDeps, nodeName) kubeDeps.PodConfig, err = makePodSourceConfig(kubeCfg, kubeDeps, nodeName)
...@@ -384,16 +375,16 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub ...@@ -384,16 +375,16 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
} }
serviceStore := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) serviceStore := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
if kubeClient != nil { if kubeDeps.KubeClient != nil {
serviceLW := cache.NewListWatchFromClient(kubeClient.Core().RESTClient(), "services", metav1.NamespaceAll, fields.Everything()) serviceLW := cache.NewListWatchFromClient(kubeDeps.KubeClient.Core().RESTClient(), "services", metav1.NamespaceAll, fields.Everything())
cache.NewReflector(serviceLW, &v1.Service{}, serviceStore, 0).Run() cache.NewReflector(serviceLW, &v1.Service{}, serviceStore, 0).Run()
} }
serviceLister := &listers.StoreToServiceLister{Indexer: serviceStore} serviceLister := &listers.StoreToServiceLister{Indexer: serviceStore}
nodeStore := cache.NewStore(cache.MetaNamespaceKeyFunc) nodeStore := cache.NewStore(cache.MetaNamespaceKeyFunc)
if kubeClient != nil { if kubeDeps.KubeClient != nil {
fieldSelector := fields.Set{api.ObjectNameField: string(nodeName)}.AsSelector() fieldSelector := fields.Set{api.ObjectNameField: string(nodeName)}.AsSelector()
nodeLW := cache.NewListWatchFromClient(kubeClient.Core().RESTClient(), "nodes", metav1.NamespaceAll, fieldSelector) nodeLW := cache.NewListWatchFromClient(kubeDeps.KubeClient.Core().RESTClient(), "nodes", metav1.NamespaceAll, fieldSelector)
cache.NewReflector(nodeLW, &v1.Node{}, nodeStore, 0).Run() cache.NewReflector(nodeLW, &v1.Node{}, nodeStore, 0).Run()
} }
nodeLister := &listers.StoreToNodeLister{Store: nodeStore} nodeLister := &listers.StoreToNodeLister{Store: nodeStore}
...@@ -415,7 +406,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub ...@@ -415,7 +406,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
} }
containerRefManager := kubecontainer.NewRefManager() containerRefManager := kubecontainer.NewRefManager()
secretManager, err := secret.NewCachingSecretManager(kubeClient) secretManager, err := secret.NewCachingSecretManager(kubeDeps.KubeClient)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to initialize secret manager: %v", err) return nil, fmt.Errorf("failed to initialize secret manager: %v", err)
} }
...@@ -426,7 +417,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub ...@@ -426,7 +417,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
hostname: hostname, hostname: hostname,
nodeName: nodeName, nodeName: nodeName,
dockerClient: kubeDeps.DockerClient, dockerClient: kubeDeps.DockerClient,
kubeClient: kubeClient, kubeClient: kubeDeps.KubeClient,
rootDirectory: kubeCfg.RootDirectory, rootDirectory: kubeCfg.RootDirectory,
resyncInterval: kubeCfg.SyncFrequency.Duration, resyncInterval: kubeCfg.SyncFrequency.Duration,
containerRefManager: containerRefManager, containerRefManager: containerRefManager,
...@@ -699,7 +690,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub ...@@ -699,7 +690,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
} }
klet.imageManager = imageManager klet.imageManager = imageManager
klet.statusManager = status.NewManager(kubeClient, klet.podManager) klet.statusManager = status.NewManager(klet.kubeClient, klet.podManager)
klet.probeManager = prober.NewManager( klet.probeManager = prober.NewManager(
klet.statusManager, klet.statusManager,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment