From 238b3c6f4ea72e98856cab0ecf07b7f9461139e4 Mon Sep 17 00:00:00 2001 From: Victor Marmol Date: Wed, 29 Apr 2015 18:04:58 -0700 Subject: [PATCH] Move lifecycle handlers to its own sub package. This will allow injecting it into the runtimes. --- pkg/kubelet/kubelet.go | 3 ++- pkg/kubelet/kubelet_test.go | 11 ++++++----- pkg/kubelet/lifecycle/doc.go | 18 ++++++++++++++++++ pkg/kubelet/{ => lifecycle}/handlers.go | 12 ++++++------ pkg/kubelet/{ => lifecycle}/handlers_test.go | 2 +- 5 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 pkg/kubelet/lifecycle/doc.go rename pkg/kubelet/{ => lifecycle}/handlers.go (93%) rename pkg/kubelet/{ => lifecycle}/handlers_test.go (99%) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 54508fec227..5f9787f24cf 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -41,6 +41,7 @@ import ( kubecontainer "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/container" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/dockertools" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/envvars" + "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/lifecycle" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/metrics" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/network" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/prober" @@ -260,7 +261,7 @@ func NewMainKubelet( klet.podManager = newBasicPodManager(klet.kubeClient) klet.prober = prober.New(klet.runner, klet.readinessManager, klet.containerRefManager, klet.recorder) - klet.handlerRunner = newHandlerRunner(klet.httpClient, klet.runner, klet.containerManager) + klet.handlerRunner = lifecycle.NewHandlerRunner(klet.httpClient, klet.runner, klet.containerManager) // TODO(vmarmol): Remove when the circular dependency is removed :( containerManager.Prober = klet.prober diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 804bc25ad14..a7240eedf05 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -43,6 +43,7 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/container" kubecontainer "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/container" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/dockertools" + "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/lifecycle" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/metrics" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/network" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/prober" @@ -121,7 +122,7 @@ func newTestKubelet(t *testing.T) *TestKubelet { kubelet.containerManager.Puller = &dockertools.FakeDockerPuller{} kubelet.prober = prober.New(nil, kubelet.readinessManager, kubelet.containerRefManager, kubelet.recorder) kubelet.containerManager.Prober = kubelet.prober - kubelet.handlerRunner = newHandlerRunner(&fakeHTTP{}, &fakeContainerCommandRunner{}, kubelet.containerManager) + kubelet.handlerRunner = lifecycle.NewHandlerRunner(&fakeHTTP{}, &fakeContainerCommandRunner{}, kubelet.containerManager) kubelet.volumeManager = newVolumeManager() kubelet.runtimeHooks = newKubeletRuntimeHooks(kubelet.recorder) return &TestKubelet{kubelet, fakeDocker, mockCadvisor, fakeKubeClient, waitGroup, fakeMirrorClient} @@ -787,7 +788,7 @@ func TestSyncPodsWithPodInfraCreatesContainerCallsHandler(t *testing.T) { waitGroup := testKubelet.waitGroup fakeHttp := fakeHTTP{} kubelet.httpClient = &fakeHttp - kubelet.handlerRunner = newHandlerRunner(kubelet.httpClient, &fakeContainerCommandRunner{}, kubelet.containerManager) + kubelet.handlerRunner = lifecycle.NewHandlerRunner(kubelet.httpClient, &fakeContainerCommandRunner{}, kubelet.containerManager) pods := []*api.Pod{ { ObjectMeta: api.ObjectMeta{ @@ -1744,7 +1745,7 @@ func TestRunHandlerExec(t *testing.T) { kubelet := testKubelet.kubelet fakeDocker := testKubelet.fakeDocker kubelet.runner = &fakeCommandRunner - kubelet.handlerRunner = newHandlerRunner(&fakeHTTP{}, kubelet.runner, kubelet.containerManager) + kubelet.handlerRunner = lifecycle.NewHandlerRunner(&fakeHTTP{}, kubelet.runner, kubelet.containerManager) containerID := "abc1234" podName := "podFoo" @@ -1799,7 +1800,7 @@ func TestRunHandlerHttp(t *testing.T) { testKubelet := newTestKubelet(t) kubelet := testKubelet.kubelet kubelet.httpClient = &fakeHttp - kubelet.handlerRunner = newHandlerRunner(kubelet.httpClient, &fakeContainerCommandRunner{}, kubelet.containerManager) + kubelet.handlerRunner = lifecycle.NewHandlerRunner(kubelet.httpClient, &fakeContainerCommandRunner{}, kubelet.containerManager) containerID := "abc1234" podName := "podFoo" @@ -1867,7 +1868,7 @@ func TestSyncPodEventHandlerFails(t *testing.T) { kubelet.httpClient = &fakeHTTP{ err: fmt.Errorf("test error"), } - kubelet.handlerRunner = newHandlerRunner(kubelet.httpClient, &fakeContainerCommandRunner{}, kubelet.containerManager) + kubelet.handlerRunner = lifecycle.NewHandlerRunner(kubelet.httpClient, &fakeContainerCommandRunner{}, kubelet.containerManager) pods := []*api.Pod{ { diff --git a/pkg/kubelet/lifecycle/doc.go b/pkg/kubelet/lifecycle/doc.go new file mode 100644 index 00000000000..ac6f4661f22 --- /dev/null +++ b/pkg/kubelet/lifecycle/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2015 Google Inc. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Handlers for pod lifecycle events. +package lifecycle diff --git a/pkg/kubelet/handlers.go b/pkg/kubelet/lifecycle/handlers.go similarity index 93% rename from pkg/kubelet/handlers.go rename to pkg/kubelet/lifecycle/handlers.go index 04abdb6c378..123bca0aa50 100644 --- a/pkg/kubelet/handlers.go +++ b/pkg/kubelet/lifecycle/handlers.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kubelet +package lifecycle import ( "fmt" @@ -30,15 +30,15 @@ import ( "github.com/golang/glog" ) -type handlerRunner struct { +type HandlerRunner struct { httpGetter kubeletTypes.HttpGetter commandRunner prober.ContainerCommandRunner containerManager *dockertools.DockerManager } // TODO(yifan): Merge commandRunner and containerManager once containerManager implements the ContainerCommandRunner interface. -func newHandlerRunner(httpGetter kubeletTypes.HttpGetter, commandRunner prober.ContainerCommandRunner, containerManager *dockertools.DockerManager) kubecontainer.HandlerRunner { - return &handlerRunner{ +func NewHandlerRunner(httpGetter kubeletTypes.HttpGetter, commandRunner prober.ContainerCommandRunner, containerManager *dockertools.DockerManager) kubecontainer.HandlerRunner { + return &HandlerRunner{ httpGetter: httpGetter, commandRunner: commandRunner, containerManager: containerManager, @@ -46,7 +46,7 @@ func newHandlerRunner(httpGetter kubeletTypes.HttpGetter, commandRunner prober.C } // TODO(yifan): Use a strong type for containerID. -func (hr *handlerRunner) Run(containerID string, pod *api.Pod, container *api.Container, handler *api.Handler) error { +func (hr *HandlerRunner) Run(containerID string, pod *api.Pod, container *api.Container, handler *api.Handler) error { switch { case handler.Exec != nil: _, err := hr.commandRunner.RunInContainer(containerID, handler.Exec.Command) @@ -85,7 +85,7 @@ func resolvePort(portReference util.IntOrString, container *api.Container) (int, return -1, fmt.Errorf("couldn't find port: %v in %v", portReference, container) } -func (hr *handlerRunner) runHTTPHandler(pod *api.Pod, container *api.Container, handler *api.Handler) error { +func (hr *HandlerRunner) runHTTPHandler(pod *api.Pod, container *api.Container, handler *api.Handler) error { host := handler.HTTPGet.Host if len(host) == 0 { status, err := hr.containerManager.GetPodStatus(pod) diff --git a/pkg/kubelet/handlers_test.go b/pkg/kubelet/lifecycle/handlers_test.go similarity index 99% rename from pkg/kubelet/handlers_test.go rename to pkg/kubelet/lifecycle/handlers_test.go index 87d3e551a12..068928753ac 100644 --- a/pkg/kubelet/handlers_test.go +++ b/pkg/kubelet/lifecycle/handlers_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kubelet +package lifecycle import ( "testing"