Rename imported package local name kubeletTypes to kubetypes

According to the naming guidelines, package name should not include mixedCaps.
This commit is contained in:
Yu-Ju Hong 2015-10-09 10:24:31 -07:00
parent ac6122c562
commit a3e60cc32e
34 changed files with 300 additions and 300 deletions

View File

@ -51,7 +51,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet/cadvisor" "k8s.io/kubernetes/pkg/kubelet/cadvisor"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/dockertools" "k8s.io/kubernetes/pkg/kubelet/dockertools"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/master" "k8s.io/kubernetes/pkg/master"
"k8s.io/kubernetes/pkg/tools/etcdtest" "k8s.io/kubernetes/pkg/tools/etcdtest"
@ -415,7 +415,7 @@ containers:
// Wait for the mirror pod to be created. // Wait for the mirror pod to be created.
podName := fmt.Sprintf("%s-localhost", desc) podName := fmt.Sprintf("%s-localhost", desc)
namespace := kubeletTypes.NamespaceDefault namespace := kubetypes.NamespaceDefault
if err := wait.Poll(time.Second, longTestTimeout, if err := wait.Poll(time.Second, longTestTimeout,
podRunning(c, namespace, podName)); err != nil { podRunning(c, namespace, podName)); err != nil {
if pods, err := c.Pods(namespace).List(labels.Everything(), fields.Everything()); err == nil { if pods, err := c.Pods(namespace).List(labels.Everything(), fields.Everything()); err == nil {

View File

@ -49,7 +49,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet/dockertools" "k8s.io/kubernetes/pkg/kubelet/dockertools"
"k8s.io/kubernetes/pkg/kubelet/network" "k8s.io/kubernetes/pkg/kubelet/network"
"k8s.io/kubernetes/pkg/kubelet/qos" "k8s.io/kubernetes/pkg/kubelet/qos"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/master/ports" "k8s.io/kubernetes/pkg/master/ports"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/pkg/util/io" "k8s.io/kubernetes/pkg/util/io"
@ -149,8 +149,8 @@ type KubeletBootstrap interface {
StartGarbageCollection() StartGarbageCollection()
ListenAndServe(address net.IP, port uint, tlsOptions *kubelet.TLSOptions, auth kubelet.AuthInterface, enableDebuggingHandlers bool) ListenAndServe(address net.IP, port uint, tlsOptions *kubelet.TLSOptions, auth kubelet.AuthInterface, enableDebuggingHandlers bool)
ListenAndServeReadOnly(address net.IP, port uint) ListenAndServeReadOnly(address net.IP, port uint)
Run(<-chan kubeletTypes.PodUpdate) Run(<-chan kubetypes.PodUpdate)
RunOnce(<-chan kubeletTypes.PodUpdate) ([]kubelet.RunPodResult, error) RunOnce(<-chan kubetypes.PodUpdate) ([]kubelet.RunPodResult, error)
} }
// create and initialize a Kubelet instance // create and initialize a Kubelet instance
@ -174,9 +174,9 @@ func NewKubeletServer() *KubeletServer {
FileCheckFrequency: 20 * time.Second, FileCheckFrequency: 20 * time.Second,
HealthzBindAddress: net.ParseIP("127.0.0.1"), HealthzBindAddress: net.ParseIP("127.0.0.1"),
HealthzPort: 10248, HealthzPort: 10248,
HostNetworkSources: kubeletTypes.AllSource, HostNetworkSources: kubetypes.AllSource,
HostPIDSources: kubeletTypes.AllSource, HostPIDSources: kubetypes.AllSource,
HostIPCSources: kubeletTypes.AllSource, HostIPCSources: kubetypes.AllSource,
HTTPCheckFrequency: 20 * time.Second, HTTPCheckFrequency: 20 * time.Second,
ImageGCHighThresholdPercent: 90, ImageGCHighThresholdPercent: 90,
ImageGCLowThresholdPercent: 80, ImageGCLowThresholdPercent: 80,
@ -284,17 +284,17 @@ func (s *KubeletServer) AddFlags(fs *pflag.FlagSet) {
// UnsecuredKubeletConfig returns a KubeletConfig suitable for being run, or an error if the server setup // UnsecuredKubeletConfig returns a KubeletConfig suitable for being run, or an error if the server setup
// is not valid. It will not start any background processes, and does not include authentication/authorization // is not valid. It will not start any background processes, and does not include authentication/authorization
func (s *KubeletServer) UnsecuredKubeletConfig() (*KubeletConfig, error) { func (s *KubeletServer) UnsecuredKubeletConfig() (*KubeletConfig, error) {
hostNetworkSources, err := kubeletTypes.GetValidatedSources(strings.Split(s.HostNetworkSources, ",")) hostNetworkSources, err := kubetypes.GetValidatedSources(strings.Split(s.HostNetworkSources, ","))
if err != nil { if err != nil {
return nil, err return nil, err
} }
hostPIDSources, err := kubeletTypes.GetValidatedSources(strings.Split(s.HostPIDSources, ",")) hostPIDSources, err := kubetypes.GetValidatedSources(strings.Split(s.HostPIDSources, ","))
if err != nil { if err != nil {
return nil, err return nil, err
} }
hostIPCSources, err := kubeletTypes.GetValidatedSources(strings.Split(s.HostIPCSources, ",")) hostIPCSources, err := kubetypes.GetValidatedSources(strings.Split(s.HostIPCSources, ","))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -765,17 +765,17 @@ func makePodSourceConfig(kc *KubeletConfig) *config.PodConfig {
// define file config source // define file config source
if kc.ConfigFile != "" { if kc.ConfigFile != "" {
glog.Infof("Adding manifest file: %v", kc.ConfigFile) glog.Infof("Adding manifest file: %v", kc.ConfigFile)
config.NewSourceFile(kc.ConfigFile, kc.NodeName, kc.FileCheckFrequency, cfg.Channel(kubeletTypes.FileSource)) config.NewSourceFile(kc.ConfigFile, kc.NodeName, kc.FileCheckFrequency, cfg.Channel(kubetypes.FileSource))
} }
// define url config source // define url config source
if kc.ManifestURL != "" { if kc.ManifestURL != "" {
glog.Infof("Adding manifest url %q with HTTP header %v", kc.ManifestURL, kc.ManifestURLHeader) glog.Infof("Adding manifest url %q with HTTP header %v", kc.ManifestURL, kc.ManifestURLHeader)
config.NewSourceURL(kc.ManifestURL, kc.ManifestURLHeader, kc.NodeName, kc.HTTPCheckFrequency, cfg.Channel(kubeletTypes.HTTPSource)) config.NewSourceURL(kc.ManifestURL, kc.ManifestURLHeader, kc.NodeName, kc.HTTPCheckFrequency, cfg.Channel(kubetypes.HTTPSource))
} }
if kc.KubeClient != nil { if kc.KubeClient != nil {
glog.Infof("Watching apiserver") glog.Infof("Watching apiserver")
config.NewSourceApiserver(kc.KubeClient, kc.NodeName, cfg.Channel(kubeletTypes.ApiserverSource)) config.NewSourceApiserver(kc.KubeClient, kc.NodeName, cfg.Channel(kubetypes.ApiserverSource))
} }
return cfg return cfg
} }

View File

@ -43,7 +43,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet" "k8s.io/kubernetes/pkg/kubelet"
"k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/dockertools" "k8s.io/kubernetes/pkg/kubelet/dockertools"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
) )
@ -265,9 +265,9 @@ func (k *KubernetesExecutor) onInitialRegistration() {
defer close(k.initialRegComplete) defer close(k.initialRegComplete)
// emit an empty update to allow the mesos "source" to be marked as seen // emit an empty update to allow the mesos "source" to be marked as seen
k.updateChan <- kubeletTypes.PodUpdate{ k.updateChan <- kubetypes.PodUpdate{
Pods: []*api.Pod{}, Pods: []*api.Pod{},
Op: kubeletTypes.SET, Op: kubetypes.SET,
Source: k.sourcename, Source: k.sourcename,
} }
} }
@ -393,8 +393,8 @@ func (k *KubernetesExecutor) handleChangedApiserverPod(pod *api.Pod) {
oldPod.DeletionTimestamp = pod.DeletionTimestamp oldPod.DeletionTimestamp = pod.DeletionTimestamp
oldPod.DeletionGracePeriodSeconds = pod.DeletionGracePeriodSeconds oldPod.DeletionGracePeriodSeconds = pod.DeletionGracePeriodSeconds
update := kubeletTypes.PodUpdate{ update := kubetypes.PodUpdate{
Op: kubeletTypes.UPDATE, Op: kubetypes.UPDATE,
Pods: []*api.Pod{oldPod}, Pods: []*api.Pod{oldPod},
} }
k.updateChan <- update k.updateChan <- update
@ -566,8 +566,8 @@ func (k *KubernetesExecutor) launchTask(driver bindings.ExecutorDriver, taskId s
k.pods[podFullName] = pod k.pods[podFullName] = pod
// send the new pod to the kubelet which will spin it up // send the new pod to the kubelet which will spin it up
update := kubeletTypes.PodUpdate{ update := kubetypes.PodUpdate{
Op: kubeletTypes.ADD, Op: kubetypes.ADD,
Pods: []*api.Pod{pod}, Pods: []*api.Pod{pod},
} }
k.updateChan <- update k.updateChan <- update
@ -771,8 +771,8 @@ func (k *KubernetesExecutor) removePodTask(driver bindings.ExecutorDriver, tid,
delete(k.pods, pid) delete(k.pods, pid)
// tell the kubelet to remove the pod // tell the kubelet to remove the pod
update := kubeletTypes.PodUpdate{ update := kubetypes.PodUpdate{
Op: kubeletTypes.REMOVE, Op: kubetypes.REMOVE,
Pods: []*api.Pod{pod}, Pods: []*api.Pod{pod},
} }
k.updateChan <- update k.updateChan <- update

View File

@ -43,7 +43,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet" "k8s.io/kubernetes/pkg/kubelet"
kconfig "k8s.io/kubernetes/pkg/kubelet/config" kconfig "k8s.io/kubernetes/pkg/kubelet/config"
"k8s.io/kubernetes/pkg/kubelet/dockertools" "k8s.io/kubernetes/pkg/kubelet/dockertools"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/watch" "k8s.io/kubernetes/pkg/watch"
@ -67,15 +67,15 @@ func TestExecutorRegister(t *testing.T) {
executor.Init(mockDriver) executor.Init(mockDriver)
executor.Registered(mockDriver, nil, nil, nil) executor.Registered(mockDriver, nil, nil, nil)
initialPodUpdate := kubeletTypes.PodUpdate{ initialPodUpdate := kubetypes.PodUpdate{
Pods: []*api.Pod{}, Pods: []*api.Pod{},
Op: kubeletTypes.SET, Op: kubetypes.SET,
Source: executor.sourcename, Source: executor.sourcename,
} }
receivedInitialPodUpdate := false receivedInitialPodUpdate := false
select { select {
case m := <-updates: case m := <-updates:
update, ok := m.(kubeletTypes.PodUpdate) update, ok := m.(kubetypes.PodUpdate)
if ok { if ok {
if reflect.DeepEqual(initialPodUpdate, update) { if reflect.DeepEqual(initialPodUpdate, update) {
receivedInitialPodUpdate = true receivedInitialPodUpdate = true
@ -213,7 +213,7 @@ func TestExecutorLaunchAndKillTask(t *testing.T) {
gotPodUpdate := false gotPodUpdate := false
select { select {
case m := <-updates: case m := <-updates:
update, ok := m.(kubeletTypes.PodUpdate) update, ok := m.(kubetypes.PodUpdate)
if ok && len(update.Pods) == 1 { if ok && len(update.Pods) == 1 {
gotPodUpdate = true gotPodUpdate = true
} }
@ -361,7 +361,7 @@ func TestExecutorStaticPods(t *testing.T) {
if !ok { if !ok {
return return
} }
podUpdate, ok := update.(kubeletTypes.PodUpdate) podUpdate, ok := update.(kubetypes.PodUpdate)
if !ok { if !ok {
continue continue
} }

View File

@ -46,7 +46,7 @@ import (
kconfig "k8s.io/kubernetes/pkg/kubelet/config" kconfig "k8s.io/kubernetes/pkg/kubelet/config"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/dockertools" "k8s.io/kubernetes/pkg/kubelet/dockertools"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
utilio "k8s.io/kubernetes/pkg/util/io" utilio "k8s.io/kubernetes/pkg/util/io"
"k8s.io/kubernetes/pkg/util/mount" "k8s.io/kubernetes/pkg/util/mount"
@ -56,7 +56,7 @@ import (
const ( const (
// if we don't use this source then the kubelet will do funny, mirror things. // if we don't use this source then the kubelet will do funny, mirror things.
// @see ConfigSourceAnnotationKey // @see ConfigSourceAnnotationKey
MESOS_CFG_SOURCE = kubeletTypes.ApiserverSource MESOS_CFG_SOURCE = kubetypes.ApiserverSource
) )
type KubeletExecutorServer struct { type KubeletExecutorServer struct {
@ -137,17 +137,17 @@ func (s *KubeletExecutorServer) Run(hks hyperkube.Interface, _ []string) error {
//cloud := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile) //cloud := cloudprovider.InitCloudProvider(s.CloudProvider, s.CloudConfigFile)
//log.Infof("Successfully initialized cloud provider: %q from the config file: %q\n", s.CloudProvider, s.CloudConfigFile) //log.Infof("Successfully initialized cloud provider: %q from the config file: %q\n", s.CloudProvider, s.CloudConfigFile)
hostNetworkSources, err := kubeletTypes.GetValidatedSources(strings.Split(s.HostNetworkSources, ",")) hostNetworkSources, err := kubetypes.GetValidatedSources(strings.Split(s.HostNetworkSources, ","))
if err != nil { if err != nil {
return err return err
} }
hostPIDSources, err := kubeletTypes.GetValidatedSources(strings.Split(s.HostPIDSources, ",")) hostPIDSources, err := kubetypes.GetValidatedSources(strings.Split(s.HostPIDSources, ","))
if err != nil { if err != nil {
return err return err
} }
hostIPCSources, err := kubeletTypes.GetValidatedSources(strings.Split(s.HostIPCSources, ",")) hostIPCSources, err := kubetypes.GetValidatedSources(strings.Split(s.HostIPCSources, ","))
if err != nil { if err != nil {
return err return err
} }
@ -384,7 +384,7 @@ func (ks *KubeletExecutorServer) createAndInitKubelet(
go exec.InitializeStaticPodsSource(func() { go exec.InitializeStaticPodsSource(func() {
// Create file source only when we are called back. Otherwise, it is never marked unseen. // Create file source only when we are called back. Otherwise, it is never marked unseen.
fileSourceUpdates := pc.Channel(kubeletTypes.FileSource) fileSourceUpdates := pc.Channel(kubetypes.FileSource)
kconfig.NewSourceFile(staticPodsConfigPath, kc.Hostname, kc.FileCheckFrequency, fileSourceUpdates) kconfig.NewSourceFile(staticPodsConfigPath, kc.Hostname, kc.FileCheckFrequency, fileSourceUpdates)
}) })
@ -450,7 +450,7 @@ func (kl *kubeletExecutor) ListenAndServe(address net.IP, port uint, tlsOptions
// runs the main kubelet loop, closing the kubeletFinished chan when the loop exits. // runs the main kubelet loop, closing the kubeletFinished chan when the loop exits.
// never returns. // never returns.
func (kl *kubeletExecutor) Run(updates <-chan kubeletTypes.PodUpdate) { func (kl *kubeletExecutor) Run(updates <-chan kubetypes.PodUpdate) {
defer func() { defer func() {
close(kl.kubeletFinished) close(kl.kubeletFinished)
util.HandleCrash() util.HandleCrash()
@ -461,7 +461,7 @@ func (kl *kubeletExecutor) Run(updates <-chan kubeletTypes.PodUpdate) {
// push updates through a closable pipe. when the executor indicates shutdown // push updates through a closable pipe. when the executor indicates shutdown
// via Done() we want to stop the Kubelet from processing updates. // via Done() we want to stop the Kubelet from processing updates.
pipe := make(chan kubeletTypes.PodUpdate) pipe := make(chan kubetypes.PodUpdate)
go func() { go func() {
// closing pipe will cause our patched kubelet's syncLoop() to exit // closing pipe will cause our patched kubelet's syncLoop() to exit
defer close(pipe) defer close(pipe)

View File

@ -47,7 +47,7 @@ import (
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/container"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/tools" "k8s.io/kubernetes/pkg/tools"
"k8s.io/kubernetes/pkg/util/sets" "k8s.io/kubernetes/pkg/util/sets"
@ -897,7 +897,7 @@ func (ks *KubernetesScheduler) recoverTasks() error {
ks.slaveHostNames.Register(slaveId, t.Offer.Host()) ks.slaveHostNames.Register(slaveId, t.Offer.Host())
} }
for _, pod := range podList.Items { for _, pod := range podList.Items {
if _, isMirrorPod := pod.Annotations[kubeletTypes.ConfigMirrorAnnotationKey]; isMirrorPod { if _, isMirrorPod := pod.Annotations[kubetypes.ConfigMirrorAnnotationKey]; isMirrorPod {
// mirrored pods are never reconciled because the scheduler isn't responsible for // mirrored pods are never reconciled because the scheduler isn't responsible for
// scheduling them; they're started by the executor/kubelet upon instantiation and // scheduling them; they're started by the executor/kubelet upon instantiation and
// reflected in the apiserver afterward. the scheduler has no knowledge of them. // reflected in the apiserver afterward. the scheduler has no knowledge of them.

View File

@ -22,7 +22,7 @@ import (
"k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/cache"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/fields"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
) )
// NewSourceApiserver creates a config source that watches and pulls from the apiserver. // NewSourceApiserver creates a config source that watches and pulls from the apiserver.
@ -38,7 +38,7 @@ func newSourceApiserverFromLW(lw cache.ListerWatcher, updates chan<- interface{}
for _, o := range objs { for _, o := range objs {
pods = append(pods, o.(*api.Pod)) pods = append(pods, o.(*api.Pod))
} }
updates <- kubeletTypes.PodUpdate{Pods: pods, Op: kubeletTypes.SET, Source: kubeletTypes.ApiserverSource} updates <- kubetypes.PodUpdate{Pods: pods, Op: kubetypes.SET, Source: kubetypes.ApiserverSource}
} }
cache.NewReflector(lw, &api.Pod{}, cache.NewUndeltaStore(send, cache.MetaNamespaceKeyFunc), 0).Run() cache.NewReflector(lw, &api.Pod{}, cache.NewUndeltaStore(send, cache.MetaNamespaceKeyFunc), 0).Run()
} }

View File

@ -21,7 +21,7 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/cache"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/watch" "k8s.io/kubernetes/pkg/watch"
) )
@ -67,8 +67,8 @@ func TestNewSourceApiserver_UpdatesAndMultiplePods(t *testing.T) {
if !ok { if !ok {
t.Errorf("Unable to read from channel when expected") t.Errorf("Unable to read from channel when expected")
} }
update := got.(kubeletTypes.PodUpdate) update := got.(kubetypes.PodUpdate)
expected := CreatePodUpdate(kubeletTypes.SET, kubeletTypes.ApiserverSource, pod1v1) expected := CreatePodUpdate(kubetypes.SET, kubetypes.ApiserverSource, pod1v1)
if !api.Semantic.DeepEqual(expected, update) { if !api.Semantic.DeepEqual(expected, update) {
t.Errorf("Expected %#v; Got %#v", expected, update) t.Errorf("Expected %#v; Got %#v", expected, update)
} }
@ -79,10 +79,10 @@ func TestNewSourceApiserver_UpdatesAndMultiplePods(t *testing.T) {
if !ok { if !ok {
t.Errorf("Unable to read from channel when expected") t.Errorf("Unable to read from channel when expected")
} }
update = got.(kubeletTypes.PodUpdate) update = got.(kubetypes.PodUpdate)
// Could be sorted either of these two ways: // Could be sorted either of these two ways:
expectedA := CreatePodUpdate(kubeletTypes.SET, kubeletTypes.ApiserverSource, pod1v1, pod2) expectedA := CreatePodUpdate(kubetypes.SET, kubetypes.ApiserverSource, pod1v1, pod2)
expectedB := CreatePodUpdate(kubeletTypes.SET, kubeletTypes.ApiserverSource, pod2, pod1v1) expectedB := CreatePodUpdate(kubetypes.SET, kubetypes.ApiserverSource, pod2, pod1v1)
if !api.Semantic.DeepEqual(expectedA, update) && !api.Semantic.DeepEqual(expectedB, update) { if !api.Semantic.DeepEqual(expectedA, update) && !api.Semantic.DeepEqual(expectedB, update) {
t.Errorf("Expected %#v or %#v, Got %#v", expectedA, expectedB, update) t.Errorf("Expected %#v or %#v, Got %#v", expectedA, expectedB, update)
@ -94,9 +94,9 @@ func TestNewSourceApiserver_UpdatesAndMultiplePods(t *testing.T) {
if !ok { if !ok {
t.Errorf("Unable to read from channel when expected") t.Errorf("Unable to read from channel when expected")
} }
update = got.(kubeletTypes.PodUpdate) update = got.(kubetypes.PodUpdate)
expectedA = CreatePodUpdate(kubeletTypes.SET, kubeletTypes.ApiserverSource, pod1v2, pod2) expectedA = CreatePodUpdate(kubetypes.SET, kubetypes.ApiserverSource, pod1v2, pod2)
expectedB = CreatePodUpdate(kubeletTypes.SET, kubeletTypes.ApiserverSource, pod2, pod1v2) expectedB = CreatePodUpdate(kubetypes.SET, kubetypes.ApiserverSource, pod2, pod1v2)
if !api.Semantic.DeepEqual(expectedA, update) && !api.Semantic.DeepEqual(expectedB, update) { if !api.Semantic.DeepEqual(expectedA, update) && !api.Semantic.DeepEqual(expectedB, update) {
t.Errorf("Expected %#v or %#v, Got %#v", expectedA, expectedB, update) t.Errorf("Expected %#v or %#v, Got %#v", expectedA, expectedB, update)
@ -108,8 +108,8 @@ func TestNewSourceApiserver_UpdatesAndMultiplePods(t *testing.T) {
if !ok { if !ok {
t.Errorf("Unable to read from channel when expected") t.Errorf("Unable to read from channel when expected")
} }
update = got.(kubeletTypes.PodUpdate) update = got.(kubetypes.PodUpdate)
expected = CreatePodUpdate(kubeletTypes.SET, kubeletTypes.ApiserverSource, pod2) expected = CreatePodUpdate(kubetypes.SET, kubetypes.ApiserverSource, pod2)
if !api.Semantic.DeepEqual(expected, update) { if !api.Semantic.DeepEqual(expected, update) {
t.Errorf("Expected %#v, Got %#v", expected, update) t.Errorf("Expected %#v, Got %#v", expected, update)
} }
@ -120,8 +120,8 @@ func TestNewSourceApiserver_UpdatesAndMultiplePods(t *testing.T) {
if !ok { if !ok {
t.Errorf("Unable to read from channel when expected") t.Errorf("Unable to read from channel when expected")
} }
update = got.(kubeletTypes.PodUpdate) update = got.(kubetypes.PodUpdate)
expected = CreatePodUpdate(kubeletTypes.SET, kubeletTypes.ApiserverSource) expected = CreatePodUpdate(kubetypes.SET, kubetypes.ApiserverSource)
if !api.Semantic.DeepEqual(expected, update) { if !api.Semantic.DeepEqual(expected, update) {
t.Errorf("Expected %#v, Got %#v", expected, update) t.Errorf("Expected %#v, Got %#v", expected, update)
} }
@ -150,7 +150,7 @@ func TestNewSourceApiserver_TwoNamespacesSameName(t *testing.T) {
if !ok { if !ok {
t.Errorf("Unable to read from channel when expected") t.Errorf("Unable to read from channel when expected")
} }
update := got.(kubeletTypes.PodUpdate) update := got.(kubetypes.PodUpdate)
// Make sure that we get both pods. Catches bug #2294. // Make sure that we get both pods. Catches bug #2294.
if !(len(update.Pods) == 2) { if !(len(update.Pods) == 2) {
t.Errorf("Expected %d, Got %d", 2, len(update.Pods)) t.Errorf("Expected %d, Got %d", 2, len(update.Pods))
@ -162,7 +162,7 @@ func TestNewSourceApiserver_TwoNamespacesSameName(t *testing.T) {
if !ok { if !ok {
t.Errorf("Unable to read from channel when expected") t.Errorf("Unable to read from channel when expected")
} }
update = got.(kubeletTypes.PodUpdate) update = got.(kubetypes.PodUpdate)
if !(len(update.Pods) == 1) { if !(len(update.Pods) == 1) {
t.Errorf("Expected %d, Got %d", 1, len(update.Pods)) t.Errorf("Expected %d, Got %d", 1, len(update.Pods))
} }
@ -184,8 +184,8 @@ func TestNewSourceApiserverInitialEmptySendsEmptyPodUpdate(t *testing.T) {
if !ok { if !ok {
t.Errorf("Unable to read from channel when expected") t.Errorf("Unable to read from channel when expected")
} }
update := got.(kubeletTypes.PodUpdate) update := got.(kubetypes.PodUpdate)
expected := CreatePodUpdate(kubeletTypes.SET, kubeletTypes.ApiserverSource) expected := CreatePodUpdate(kubetypes.SET, kubetypes.ApiserverSource)
if !api.Semantic.DeepEqual(expected, update) { if !api.Semantic.DeepEqual(expected, update) {
t.Errorf("Expected %#v; Got %#v", expected, update) t.Errorf("Expected %#v; Got %#v", expected, update)
} }

View File

@ -25,7 +25,7 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/latest" "k8s.io/kubernetes/pkg/api/latest"
"k8s.io/kubernetes/pkg/api/validation" "k8s.io/kubernetes/pkg/api/validation"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
utilyaml "k8s.io/kubernetes/pkg/util/yaml" utilyaml "k8s.io/kubernetes/pkg/util/yaml"
@ -56,7 +56,7 @@ func applyDefaults(pod *api.Pod, source string, isFile bool, nodeName string) er
glog.V(5).Infof("Generated Name %q for UID %q from URL %s", pod.Name, pod.UID, source) glog.V(5).Infof("Generated Name %q for UID %q from URL %s", pod.Name, pod.UID, source)
if pod.Namespace == "" { if pod.Namespace == "" {
pod.Namespace = kubeletTypes.NamespaceDefault pod.Namespace = kubetypes.NamespaceDefault
} }
glog.V(5).Infof("Using namespace %q for pod %q from %s", pod.Namespace, pod.Name, source) glog.V(5).Infof("Using namespace %q for pod %q from %s", pod.Namespace, pod.Name, source)

View File

@ -26,7 +26,7 @@ import (
"k8s.io/kubernetes/pkg/api/validation" "k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/client/record"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
kubeletUtil "k8s.io/kubernetes/pkg/kubelet/util" kubeletUtil "k8s.io/kubernetes/pkg/kubelet/util"
"k8s.io/kubernetes/pkg/util/config" "k8s.io/kubernetes/pkg/util/config"
utilerrors "k8s.io/kubernetes/pkg/util/errors" utilerrors "k8s.io/kubernetes/pkg/util/errors"
@ -59,7 +59,7 @@ type PodConfig struct {
mux *config.Mux mux *config.Mux
// the channel of denormalized changes passed to listeners // the channel of denormalized changes passed to listeners
updates chan kubeletTypes.PodUpdate updates chan kubetypes.PodUpdate
// contains the list of all configured sources // contains the list of all configured sources
sourcesLock sync.Mutex sourcesLock sync.Mutex
@ -69,7 +69,7 @@ type PodConfig struct {
// NewPodConfig creates an object that can merge many configuration sources into a stream // NewPodConfig creates an object that can merge many configuration sources into a stream
// of normalized updates to a pod configuration. // of normalized updates to a pod configuration.
func NewPodConfig(mode PodConfigNotificationMode, recorder record.EventRecorder) *PodConfig { func NewPodConfig(mode PodConfigNotificationMode, recorder record.EventRecorder) *PodConfig {
updates := make(chan kubeletTypes.PodUpdate, 50) updates := make(chan kubetypes.PodUpdate, 50)
storage := newPodStorage(updates, mode, recorder) storage := newPodStorage(updates, mode, recorder)
podConfig := &PodConfig{ podConfig := &PodConfig{
pods: storage, pods: storage,
@ -100,7 +100,7 @@ func (c *PodConfig) SeenAllSources(seenSources sets.String) bool {
} }
// Updates returns a channel of updates to the configuration, properly denormalized. // Updates returns a channel of updates to the configuration, properly denormalized.
func (c *PodConfig) Updates() <-chan kubeletTypes.PodUpdate { func (c *PodConfig) Updates() <-chan kubetypes.PodUpdate {
return c.updates return c.updates
} }
@ -122,7 +122,7 @@ type podStorage struct {
// ensures that updates are delivered in strict order // ensures that updates are delivered in strict order
// on the updates channel // on the updates channel
updateLock sync.Mutex updateLock sync.Mutex
updates chan<- kubeletTypes.PodUpdate updates chan<- kubetypes.PodUpdate
// contains the set of all sources that have sent at least one SET // contains the set of all sources that have sent at least one SET
sourcesSeenLock sync.Mutex sourcesSeenLock sync.Mutex
@ -135,7 +135,7 @@ type podStorage struct {
// TODO: PodConfigNotificationMode could be handled by a listener to the updates channel // TODO: PodConfigNotificationMode could be handled by a listener to the updates channel
// in the future, especially with multiple listeners. // in the future, especially with multiple listeners.
// TODO: allow initialization of the current state of the store with snapshotted version. // TODO: allow initialization of the current state of the store with snapshotted version.
func newPodStorage(updates chan<- kubeletTypes.PodUpdate, mode PodConfigNotificationMode, recorder record.EventRecorder) *podStorage { func newPodStorage(updates chan<- kubetypes.PodUpdate, mode PodConfigNotificationMode, recorder record.EventRecorder) *podStorage {
return &podStorage{ return &podStorage{
pods: make(map[string]map[string]*api.Pod), pods: make(map[string]map[string]*api.Pod),
mode: mode, mode: mode,
@ -172,12 +172,12 @@ func (s *podStorage) Merge(source string, change interface{}) error {
s.updates <- *updates s.updates <- *updates
} }
if len(deletes.Pods) > 0 || len(adds.Pods) > 0 { if len(deletes.Pods) > 0 || len(adds.Pods) > 0 {
s.updates <- kubeletTypes.PodUpdate{Pods: s.MergedState().([]*api.Pod), Op: kubeletTypes.SET, Source: source} s.updates <- kubetypes.PodUpdate{Pods: s.MergedState().([]*api.Pod), Op: kubetypes.SET, Source: source}
} }
case PodConfigNotificationSnapshot: case PodConfigNotificationSnapshot:
if len(updates.Pods) > 0 || len(deletes.Pods) > 0 || len(adds.Pods) > 0 { if len(updates.Pods) > 0 || len(deletes.Pods) > 0 || len(adds.Pods) > 0 {
s.updates <- kubeletTypes.PodUpdate{Pods: s.MergedState().([]*api.Pod), Op: kubeletTypes.SET, Source: source} s.updates <- kubetypes.PodUpdate{Pods: s.MergedState().([]*api.Pod), Op: kubetypes.SET, Source: source}
} }
case PodConfigNotificationUnknown: case PodConfigNotificationUnknown:
@ -189,23 +189,23 @@ func (s *podStorage) Merge(source string, change interface{}) error {
return nil return nil
} }
func (s *podStorage) merge(source string, change interface{}) (adds, updates, deletes *kubeletTypes.PodUpdate) { func (s *podStorage) merge(source string, change interface{}) (adds, updates, deletes *kubetypes.PodUpdate) {
s.podLock.Lock() s.podLock.Lock()
defer s.podLock.Unlock() defer s.podLock.Unlock()
adds = &kubeletTypes.PodUpdate{Op: kubeletTypes.ADD, Source: source} adds = &kubetypes.PodUpdate{Op: kubetypes.ADD, Source: source}
updates = &kubeletTypes.PodUpdate{Op: kubeletTypes.UPDATE, Source: source} updates = &kubetypes.PodUpdate{Op: kubetypes.UPDATE, Source: source}
deletes = &kubeletTypes.PodUpdate{Op: kubeletTypes.REMOVE, Source: source} deletes = &kubetypes.PodUpdate{Op: kubetypes.REMOVE, Source: source}
pods := s.pods[source] pods := s.pods[source]
if pods == nil { if pods == nil {
pods = make(map[string]*api.Pod) pods = make(map[string]*api.Pod)
} }
update := change.(kubeletTypes.PodUpdate) update := change.(kubetypes.PodUpdate)
switch update.Op { switch update.Op {
case kubeletTypes.ADD, kubeletTypes.UPDATE: case kubetypes.ADD, kubetypes.UPDATE:
if update.Op == kubeletTypes.ADD { if update.Op == kubetypes.ADD {
glog.V(4).Infof("Adding new pods from source %s : %v", source, update.Pods) glog.V(4).Infof("Adding new pods from source %s : %v", source, update.Pods)
} else { } else {
glog.V(4).Infof("Updating pods from source %s : %v", source, update.Pods) glog.V(4).Infof("Updating pods from source %s : %v", source, update.Pods)
@ -218,7 +218,7 @@ func (s *podStorage) merge(source string, change interface{}) (adds, updates, de
if ref.Annotations == nil { if ref.Annotations == nil {
ref.Annotations = make(map[string]string) ref.Annotations = make(map[string]string)
} }
ref.Annotations[kubeletTypes.ConfigSourceAnnotationKey] = source ref.Annotations[kubetypes.ConfigSourceAnnotationKey] = source
if existing, found := pods[name]; found { if existing, found := pods[name]; found {
if checkAndUpdatePod(existing, ref) { if checkAndUpdatePod(existing, ref) {
// this is an update // this is an update
@ -234,7 +234,7 @@ func (s *podStorage) merge(source string, change interface{}) (adds, updates, de
adds.Pods = append(adds.Pods, ref) adds.Pods = append(adds.Pods, ref)
} }
case kubeletTypes.REMOVE: case kubetypes.REMOVE:
glog.V(4).Infof("Removing a pod %v", update) glog.V(4).Infof("Removing a pod %v", update)
for _, value := range update.Pods { for _, value := range update.Pods {
name := kubecontainer.GetPodFullName(value) name := kubecontainer.GetPodFullName(value)
@ -247,7 +247,7 @@ func (s *podStorage) merge(source string, change interface{}) (adds, updates, de
// this is a no-op // this is a no-op
} }
case kubeletTypes.SET: case kubetypes.SET:
glog.V(4).Infof("Setting pods for source %s", source) glog.V(4).Infof("Setting pods for source %s", source)
s.markSourceSet(source) s.markSourceSet(source)
// Clear the old map entries by just creating a new map // Clear the old map entries by just creating a new map
@ -261,7 +261,7 @@ func (s *podStorage) merge(source string, change interface{}) (adds, updates, de
if ref.Annotations == nil { if ref.Annotations == nil {
ref.Annotations = make(map[string]string) ref.Annotations = make(map[string]string)
} }
ref.Annotations[kubeletTypes.ConfigSourceAnnotationKey] = source ref.Annotations[kubetypes.ConfigSourceAnnotationKey] = source
if existing, found := oldPods[name]; found { if existing, found := oldPods[name]; found {
pods[name] = existing pods[name] = existing
if checkAndUpdatePod(existing, ref) { if checkAndUpdatePod(existing, ref) {
@ -335,9 +335,9 @@ func filterInvalidPods(pods []*api.Pod, source string, recorder record.EventReco
// Annotations that the kubelet adds to the pod. // Annotations that the kubelet adds to the pod.
var localAnnotations = []string{ var localAnnotations = []string{
kubeletTypes.ConfigSourceAnnotationKey, kubetypes.ConfigSourceAnnotationKey,
kubeletTypes.ConfigMirrorAnnotationKey, kubetypes.ConfigMirrorAnnotationKey,
kubeletTypes.ConfigFirstSeenAnnotationKey, kubetypes.ConfigFirstSeenAnnotationKey,
} }
func isLocalAnnotationKey(key string) bool { func isLocalAnnotationKey(key string) bool {
@ -379,7 +379,7 @@ func isAnnotationMapEqual(existingMap, candidateMap map[string]string) bool {
// recordFirstSeenTime records the first seen time of this pod. // recordFirstSeenTime records the first seen time of this pod.
func recordFirstSeenTime(pod *api.Pod) { func recordFirstSeenTime(pod *api.Pod) {
glog.V(4).Infof("Receiving a new pod %q", kubeletUtil.FormatPodName(pod)) glog.V(4).Infof("Receiving a new pod %q", kubeletUtil.FormatPodName(pod))
pod.Annotations[kubeletTypes.ConfigFirstSeenAnnotationKey] = kubeletTypes.NewTimestamp().GetString() pod.Annotations[kubetypes.ConfigFirstSeenAnnotationKey] = kubetypes.NewTimestamp().GetString()
} }
// updateAnnotations returns an Annotation map containing the api annotation map plus // updateAnnotations returns an Annotation map containing the api annotation map plus
@ -420,7 +420,7 @@ func checkAndUpdatePod(existing, ref *api.Pod) bool {
// Overwrite the first-seen time with the existing one. This is our own // Overwrite the first-seen time with the existing one. This is our own
// internal annotation, there is no need to update. // internal annotation, there is no need to update.
ref.Annotations[kubeletTypes.ConfigFirstSeenAnnotationKey] = existing.Annotations[kubeletTypes.ConfigFirstSeenAnnotationKey] ref.Annotations[kubetypes.ConfigFirstSeenAnnotationKey] = existing.Annotations[kubetypes.ConfigFirstSeenAnnotationKey]
existing.Spec = ref.Spec existing.Spec = ref.Spec
existing.Labels = ref.Labels existing.Labels = ref.Labels
@ -434,7 +434,7 @@ func checkAndUpdatePod(existing, ref *api.Pod) bool {
func (s *podStorage) Sync() { func (s *podStorage) Sync() {
s.updateLock.Lock() s.updateLock.Lock()
defer s.updateLock.Unlock() defer s.updateLock.Unlock()
s.updates <- kubeletTypes.PodUpdate{Pods: s.MergedState().([]*api.Pod), Op: kubeletTypes.SET, Source: kubeletTypes.AllSource} s.updates <- kubetypes.PodUpdate{Pods: s.MergedState().([]*api.Pod), Op: kubetypes.SET, Source: kubetypes.AllSource}
} }
// Object implements config.Accessor // Object implements config.Accessor

View File

@ -23,7 +23,7 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/client/record"
"k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/conversion"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/securitycontext" "k8s.io/kubernetes/pkg/securitycontext"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
) )
@ -74,11 +74,11 @@ func CreateValidPod(name, namespace string) *api.Pod {
} }
} }
func CreatePodUpdate(op kubeletTypes.PodOperation, source string, pods ...*api.Pod) kubeletTypes.PodUpdate { func CreatePodUpdate(op kubetypes.PodOperation, source string, pods ...*api.Pod) kubetypes.PodUpdate {
return kubeletTypes.PodUpdate{Pods: pods, Op: op, Source: source} return kubetypes.PodUpdate{Pods: pods, Op: op, Source: source}
} }
func createPodConfigTester(mode PodConfigNotificationMode) (chan<- interface{}, <-chan kubeletTypes.PodUpdate, *PodConfig) { func createPodConfigTester(mode PodConfigNotificationMode) (chan<- interface{}, <-chan kubetypes.PodUpdate, *PodConfig) {
eventBroadcaster := record.NewBroadcaster() eventBroadcaster := record.NewBroadcaster()
config := NewPodConfig(mode, eventBroadcaster.NewRecorder(api.EventSource{Component: "kubelet"})) config := NewPodConfig(mode, eventBroadcaster.NewRecorder(api.EventSource{Component: "kubelet"}))
channel := config.Channel(TestSource) channel := config.Channel(TestSource)
@ -86,7 +86,7 @@ func createPodConfigTester(mode PodConfigNotificationMode) (chan<- interface{},
return channel, ch, config return channel, ch, config
} }
func expectPodUpdate(t *testing.T, ch <-chan kubeletTypes.PodUpdate, expected ...kubeletTypes.PodUpdate) { func expectPodUpdate(t *testing.T, ch <-chan kubetypes.PodUpdate, expected ...kubetypes.PodUpdate) {
for i := range expected { for i := range expected {
update := <-ch update := <-ch
sort.Sort(sortedPods(update.Pods)) sort.Sort(sortedPods(update.Pods))
@ -113,7 +113,7 @@ func expectPodUpdate(t *testing.T, ch <-chan kubeletTypes.PodUpdate, expected ..
expectNoPodUpdate(t, ch) expectNoPodUpdate(t, ch)
} }
func expectNoPodUpdate(t *testing.T, ch <-chan kubeletTypes.PodUpdate) { func expectNoPodUpdate(t *testing.T, ch <-chan kubetypes.PodUpdate) {
select { select {
case update := <-ch: case update := <-ch:
t.Errorf("Expected no update in channel, Got %#v", update) t.Errorf("Expected no update in channel, Got %#v", update)
@ -125,63 +125,63 @@ func TestNewPodAdded(t *testing.T) {
channel, ch, config := createPodConfigTester(PodConfigNotificationIncremental) channel, ch, config := createPodConfigTester(PodConfigNotificationIncremental)
// see an update // see an update
podUpdate := CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new")) podUpdate := CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new")))
config.Sync() config.Sync()
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.SET, kubeletTypes.AllSource, CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.SET, kubetypes.AllSource, CreateValidPod("foo", "new")))
} }
func TestNewPodAddedInvalidNamespace(t *testing.T) { func TestNewPodAddedInvalidNamespace(t *testing.T) {
channel, ch, config := createPodConfigTester(PodConfigNotificationIncremental) channel, ch, config := createPodConfigTester(PodConfigNotificationIncremental)
// see an update // see an update
podUpdate := CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "")) podUpdate := CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", ""))
channel <- podUpdate channel <- podUpdate
config.Sync() config.Sync()
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.SET, kubeletTypes.AllSource)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.SET, kubetypes.AllSource))
} }
func TestNewPodAddedDefaultNamespace(t *testing.T) { func TestNewPodAddedDefaultNamespace(t *testing.T) {
channel, ch, config := createPodConfigTester(PodConfigNotificationIncremental) channel, ch, config := createPodConfigTester(PodConfigNotificationIncremental)
// see an update // see an update
podUpdate := CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "default")) podUpdate := CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "default"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "default"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "default")))
config.Sync() config.Sync()
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.SET, kubeletTypes.AllSource, CreateValidPod("foo", "default"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.SET, kubetypes.AllSource, CreateValidPod("foo", "default")))
} }
func TestNewPodAddedDifferentNamespaces(t *testing.T) { func TestNewPodAddedDifferentNamespaces(t *testing.T) {
channel, ch, config := createPodConfigTester(PodConfigNotificationIncremental) channel, ch, config := createPodConfigTester(PodConfigNotificationIncremental)
// see an update // see an update
podUpdate := CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "default")) podUpdate := CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "default"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "default"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "default")))
// see an update in another namespace // see an update in another namespace
podUpdate = CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new")) podUpdate = CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new")))
config.Sync() config.Sync()
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.SET, kubeletTypes.AllSource, CreateValidPod("foo", "default"), CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.SET, kubetypes.AllSource, CreateValidPod("foo", "default"), CreateValidPod("foo", "new")))
} }
func TestInvalidPodFiltered(t *testing.T) { func TestInvalidPodFiltered(t *testing.T) {
channel, ch, _ := createPodConfigTester(PodConfigNotificationIncremental) channel, ch, _ := createPodConfigTester(PodConfigNotificationIncremental)
// see an update // see an update
podUpdate := CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new")) podUpdate := CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new")))
// add an invalid update // add an invalid update
podUpdate = CreatePodUpdate(kubeletTypes.UPDATE, TestSource, &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}) podUpdate = CreatePodUpdate(kubetypes.UPDATE, TestSource, &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}})
channel <- podUpdate channel <- podUpdate
expectNoPodUpdate(t, ch) expectNoPodUpdate(t, ch)
} }
@ -190,81 +190,81 @@ func TestNewPodAddedSnapshotAndUpdates(t *testing.T) {
channel, ch, config := createPodConfigTester(PodConfigNotificationSnapshotAndUpdates) channel, ch, config := createPodConfigTester(PodConfigNotificationSnapshotAndUpdates)
// see an set // see an set
podUpdate := CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new")) podUpdate := CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.SET, TestSource, CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.SET, TestSource, CreateValidPod("foo", "new")))
config.Sync() config.Sync()
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.SET, kubeletTypes.AllSource, CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.SET, kubetypes.AllSource, CreateValidPod("foo", "new")))
// container updates are separated as UPDATE // container updates are separated as UPDATE
pod := *podUpdate.Pods[0] pod := *podUpdate.Pods[0]
pod.Spec.Containers = []api.Container{{Name: "bar", Image: "test", ImagePullPolicy: api.PullIfNotPresent}} pod.Spec.Containers = []api.Container{{Name: "bar", Image: "test", ImagePullPolicy: api.PullIfNotPresent}}
channel <- CreatePodUpdate(kubeletTypes.ADD, TestSource, &pod) channel <- CreatePodUpdate(kubetypes.ADD, TestSource, &pod)
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.UPDATE, TestSource, &pod)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.UPDATE, TestSource, &pod))
} }
func TestNewPodAddedSnapshot(t *testing.T) { func TestNewPodAddedSnapshot(t *testing.T) {
channel, ch, config := createPodConfigTester(PodConfigNotificationSnapshot) channel, ch, config := createPodConfigTester(PodConfigNotificationSnapshot)
// see an set // see an set
podUpdate := CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new")) podUpdate := CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.SET, TestSource, CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.SET, TestSource, CreateValidPod("foo", "new")))
config.Sync() config.Sync()
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.SET, kubeletTypes.AllSource, CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.SET, kubetypes.AllSource, CreateValidPod("foo", "new")))
// container updates are separated as UPDATE // container updates are separated as UPDATE
pod := *podUpdate.Pods[0] pod := *podUpdate.Pods[0]
pod.Spec.Containers = []api.Container{{Name: "bar", Image: "test", ImagePullPolicy: api.PullIfNotPresent}} pod.Spec.Containers = []api.Container{{Name: "bar", Image: "test", ImagePullPolicy: api.PullIfNotPresent}}
channel <- CreatePodUpdate(kubeletTypes.ADD, TestSource, &pod) channel <- CreatePodUpdate(kubetypes.ADD, TestSource, &pod)
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.SET, TestSource, &pod)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.SET, TestSource, &pod))
} }
func TestNewPodAddedUpdatedRemoved(t *testing.T) { func TestNewPodAddedUpdatedRemoved(t *testing.T) {
channel, ch, _ := createPodConfigTester(PodConfigNotificationIncremental) channel, ch, _ := createPodConfigTester(PodConfigNotificationIncremental)
// should register an add // should register an add
podUpdate := CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new")) podUpdate := CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new")))
// should ignore ADDs that are identical // should ignore ADDs that are identical
expectNoPodUpdate(t, ch) expectNoPodUpdate(t, ch)
// an kubeletTypes.ADD should be converted to kubeletTypes.UPDATE // an kubetypes.ADD should be converted to kubetypes.UPDATE
pod := CreateValidPod("foo", "new") pod := CreateValidPod("foo", "new")
pod.Spec.Containers = []api.Container{{Name: "bar", Image: "test", ImagePullPolicy: api.PullIfNotPresent}} pod.Spec.Containers = []api.Container{{Name: "bar", Image: "test", ImagePullPolicy: api.PullIfNotPresent}}
podUpdate = CreatePodUpdate(kubeletTypes.ADD, TestSource, pod) podUpdate = CreatePodUpdate(kubetypes.ADD, TestSource, pod)
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.UPDATE, TestSource, pod)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.UPDATE, TestSource, pod))
podUpdate = CreatePodUpdate(kubeletTypes.REMOVE, TestSource, &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "new"}}) podUpdate = CreatePodUpdate(kubetypes.REMOVE, TestSource, &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "new"}})
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.REMOVE, TestSource, pod)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.REMOVE, TestSource, pod))
} }
func TestNewPodAddedUpdatedSet(t *testing.T) { func TestNewPodAddedUpdatedSet(t *testing.T) {
channel, ch, _ := createPodConfigTester(PodConfigNotificationIncremental) channel, ch, _ := createPodConfigTester(PodConfigNotificationIncremental)
// should register an add // should register an add
podUpdate := CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new"), CreateValidPod("foo2", "new"), CreateValidPod("foo3", "new")) podUpdate := CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new"), CreateValidPod("foo2", "new"), CreateValidPod("foo3", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo", "new"), CreateValidPod("foo2", "new"), CreateValidPod("foo3", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo", "new"), CreateValidPod("foo2", "new"), CreateValidPod("foo3", "new")))
// should ignore ADDs that are identical // should ignore ADDs that are identical
expectNoPodUpdate(t, ch) expectNoPodUpdate(t, ch)
// should be converted to an kubeletTypes.ADD, kubeletTypes.REMOVE, and kubeletTypes.UPDATE // should be converted to an kubetypes.ADD, kubetypes.REMOVE, and kubetypes.UPDATE
pod := CreateValidPod("foo2", "new") pod := CreateValidPod("foo2", "new")
pod.Spec.Containers = []api.Container{{Name: "bar", Image: "test", ImagePullPolicy: api.PullIfNotPresent}} pod.Spec.Containers = []api.Container{{Name: "bar", Image: "test", ImagePullPolicy: api.PullIfNotPresent}}
podUpdate = CreatePodUpdate(kubeletTypes.SET, TestSource, pod, CreateValidPod("foo3", "new"), CreateValidPod("foo4", "new")) podUpdate = CreatePodUpdate(kubetypes.SET, TestSource, pod, CreateValidPod("foo3", "new"), CreateValidPod("foo4", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, expectPodUpdate(t, ch,
CreatePodUpdate(kubeletTypes.REMOVE, TestSource, CreateValidPod("foo", "new")), CreatePodUpdate(kubetypes.REMOVE, TestSource, CreateValidPod("foo", "new")),
CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo4", "new")), CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo4", "new")),
CreatePodUpdate(kubeletTypes.UPDATE, TestSource, pod)) CreatePodUpdate(kubetypes.UPDATE, TestSource, pod))
} }
func TestPodUpdateAnnotations(t *testing.T) { func TestPodUpdateAnnotations(t *testing.T) {
@ -279,24 +279,24 @@ func TestPodUpdateAnnotations(t *testing.T) {
t.Fatalf("%v", err) t.Fatalf("%v", err)
} }
podUpdate := CreatePodUpdate(kubeletTypes.SET, TestSource, CreateValidPod("foo1", "new"), clone.(*api.Pod), CreateValidPod("foo3", "new")) podUpdate := CreatePodUpdate(kubetypes.SET, TestSource, CreateValidPod("foo1", "new"), clone.(*api.Pod), CreateValidPod("foo3", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.ADD, TestSource, CreateValidPod("foo1", "new"), pod, CreateValidPod("foo3", "new"))) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.ADD, TestSource, CreateValidPod("foo1", "new"), pod, CreateValidPod("foo3", "new")))
pod.Annotations["kubenetes.io/blah"] = "superblah" pod.Annotations["kubenetes.io/blah"] = "superblah"
podUpdate = CreatePodUpdate(kubeletTypes.SET, TestSource, CreateValidPod("foo1", "new"), pod, CreateValidPod("foo3", "new")) podUpdate = CreatePodUpdate(kubetypes.SET, TestSource, CreateValidPod("foo1", "new"), pod, CreateValidPod("foo3", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.UPDATE, TestSource, pod)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.UPDATE, TestSource, pod))
pod.Annotations["kubernetes.io/otherblah"] = "doh" pod.Annotations["kubernetes.io/otherblah"] = "doh"
podUpdate = CreatePodUpdate(kubeletTypes.SET, TestSource, CreateValidPod("foo1", "new"), pod, CreateValidPod("foo3", "new")) podUpdate = CreatePodUpdate(kubetypes.SET, TestSource, CreateValidPod("foo1", "new"), pod, CreateValidPod("foo3", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.UPDATE, TestSource, pod)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.UPDATE, TestSource, pod))
delete(pod.Annotations, "kubernetes.io/blah") delete(pod.Annotations, "kubernetes.io/blah")
podUpdate = CreatePodUpdate(kubeletTypes.SET, TestSource, CreateValidPod("foo1", "new"), pod, CreateValidPod("foo3", "new")) podUpdate = CreatePodUpdate(kubetypes.SET, TestSource, CreateValidPod("foo1", "new"), pod, CreateValidPod("foo3", "new"))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.UPDATE, TestSource, pod)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.UPDATE, TestSource, pod))
} }
func TestPodUpdateLables(t *testing.T) { func TestPodUpdateLables(t *testing.T) {
@ -311,13 +311,13 @@ func TestPodUpdateLables(t *testing.T) {
t.Fatalf("%v", err) t.Fatalf("%v", err)
} }
podUpdate := CreatePodUpdate(kubeletTypes.SET, TestSource, clone.(*api.Pod)) podUpdate := CreatePodUpdate(kubetypes.SET, TestSource, clone.(*api.Pod))
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.ADD, TestSource, pod)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.ADD, TestSource, pod))
pod.Labels["key"] = "newValue" pod.Labels["key"] = "newValue"
podUpdate = CreatePodUpdate(kubeletTypes.SET, TestSource, pod) podUpdate = CreatePodUpdate(kubetypes.SET, TestSource, pod)
channel <- podUpdate channel <- podUpdate
expectPodUpdate(t, ch, CreatePodUpdate(kubeletTypes.UPDATE, TestSource, pod)) expectPodUpdate(t, ch, CreatePodUpdate(kubetypes.UPDATE, TestSource, pod))
} }

View File

@ -26,7 +26,7 @@ import (
"time" "time"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
"github.com/golang/glog" "github.com/golang/glog"
@ -66,7 +66,7 @@ func (s *sourceFile) extractFromPath() error {
return err return err
} }
// Emit an update with an empty PodList to allow FileSource to be marked as seen // Emit an update with an empty PodList to allow FileSource to be marked as seen
s.updates <- kubeletTypes.PodUpdate{Pods: []*api.Pod{}, Op: kubeletTypes.SET, Source: kubeletTypes.FileSource} s.updates <- kubetypes.PodUpdate{Pods: []*api.Pod{}, Op: kubetypes.SET, Source: kubetypes.FileSource}
return fmt.Errorf("path does not exist, ignoring") return fmt.Errorf("path does not exist, ignoring")
} }
@ -76,14 +76,14 @@ func (s *sourceFile) extractFromPath() error {
if err != nil { if err != nil {
return err return err
} }
s.updates <- kubeletTypes.PodUpdate{Pods: pods, Op: kubeletTypes.SET, Source: kubeletTypes.FileSource} s.updates <- kubetypes.PodUpdate{Pods: pods, Op: kubetypes.SET, Source: kubetypes.FileSource}
case statInfo.Mode().IsRegular(): case statInfo.Mode().IsRegular():
pod, err := s.extractFromFile(path) pod, err := s.extractFromFile(path)
if err != nil { if err != nil {
return err return err
} }
s.updates <- kubeletTypes.PodUpdate{Pods: []*api.Pod{pod}, Op: kubeletTypes.SET, Source: kubeletTypes.FileSource} s.updates <- kubetypes.PodUpdate{Pods: []*api.Pod{pod}, Op: kubetypes.SET, Source: kubetypes.FileSource}
default: default:
return fmt.Errorf("path is not a directory or file") return fmt.Errorf("path is not a directory or file")

View File

@ -26,7 +26,7 @@ import (
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/validation" "k8s.io/kubernetes/pkg/api/validation"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/securitycontext" "k8s.io/kubernetes/pkg/securitycontext"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
@ -46,8 +46,8 @@ func TestUpdateOnNonExistentFile(t *testing.T) {
NewSourceFile("random_non_existent_path", "localhost", time.Millisecond, ch) NewSourceFile("random_non_existent_path", "localhost", time.Millisecond, ch)
select { select {
case got := <-ch: case got := <-ch:
update := got.(kubeletTypes.PodUpdate) update := got.(kubetypes.PodUpdate)
expected := CreatePodUpdate(kubeletTypes.SET, kubeletTypes.FileSource) expected := CreatePodUpdate(kubetypes.SET, kubetypes.FileSource)
if !api.Semantic.DeepDerivative(expected, update) { if !api.Semantic.DeepDerivative(expected, update) {
t.Fatalf("Expected %#v, Got %#v", expected, update) t.Fatalf("Expected %#v, Got %#v", expected, update)
} }
@ -75,7 +75,7 @@ func TestReadPodsFromFile(t *testing.T) {
var testCases = []struct { var testCases = []struct {
desc string desc string
pod runtime.Object pod runtime.Object
expected kubeletTypes.PodUpdate expected kubetypes.PodUpdate
}{ }{
{ {
desc: "Simple pod", desc: "Simple pod",
@ -94,7 +94,7 @@ func TestReadPodsFromFile(t *testing.T) {
SecurityContext: &api.PodSecurityContext{}, SecurityContext: &api.PodSecurityContext{},
}, },
}, },
expected: CreatePodUpdate(kubeletTypes.SET, kubeletTypes.FileSource, &api.Pod{ expected: CreatePodUpdate(kubetypes.SET, kubetypes.FileSource, &api.Pod{
ObjectMeta: api.ObjectMeta{ ObjectMeta: api.ObjectMeta{
Name: "test-" + hostname, Name: "test-" + hostname,
UID: "12345", UID: "12345",
@ -137,7 +137,7 @@ func TestReadPodsFromFile(t *testing.T) {
NewSourceFile(file.Name(), hostname, time.Millisecond, ch) NewSourceFile(file.Name(), hostname, time.Millisecond, ch)
select { select {
case got := <-ch: case got := <-ch:
update := got.(kubeletTypes.PodUpdate) update := got.(kubetypes.PodUpdate)
for _, pod := range update.Pods { for _, pod := range update.Pods {
if errs := validation.ValidatePod(pod); len(errs) > 0 { if errs := validation.ValidatePod(pod); len(errs) > 0 {
t.Errorf("%s: Invalid pod %#v, %#v", testCase.desc, pod, errs) t.Errorf("%s: Invalid pod %#v, %#v", testCase.desc, pod, errs)
@ -180,8 +180,8 @@ func TestExtractFromEmptyDir(t *testing.T) {
t.Fatalf("Unexpected error: %v", err) t.Fatalf("Unexpected error: %v", err)
} }
update := (<-ch).(kubeletTypes.PodUpdate) update := (<-ch).(kubetypes.PodUpdate)
expected := CreatePodUpdate(kubeletTypes.SET, kubeletTypes.FileSource) expected := CreatePodUpdate(kubetypes.SET, kubetypes.FileSource)
if !api.Semantic.DeepEqual(expected, update) { if !api.Semantic.DeepEqual(expected, update) {
t.Errorf("Expected %#v, Got %#v", expected, update) t.Errorf("Expected %#v, Got %#v", expected, update)
} }

View File

@ -25,7 +25,7 @@ import (
"time" "time"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
"github.com/golang/glog" "github.com/golang/glog"
@ -95,7 +95,7 @@ func (s *sourceURL) extractFromURL() error {
} }
if len(data) == 0 { if len(data) == 0 {
// Emit an update with an empty PodList to allow HTTPSource to be marked as seen // Emit an update with an empty PodList to allow HTTPSource to be marked as seen
s.updates <- kubeletTypes.PodUpdate{Pods: []*api.Pod{}, Op: kubeletTypes.SET, Source: kubeletTypes.HTTPSource} s.updates <- kubetypes.PodUpdate{Pods: []*api.Pod{}, Op: kubetypes.SET, Source: kubetypes.HTTPSource}
return fmt.Errorf("zero-length data received from %v", s.url) return fmt.Errorf("zero-length data received from %v", s.url)
} }
// Short circuit if the data has not changed since the last time it was read. // Short circuit if the data has not changed since the last time it was read.
@ -111,7 +111,7 @@ func (s *sourceURL) extractFromURL() error {
// It parsed but could not be used. // It parsed but could not be used.
return singlePodErr return singlePodErr
} }
s.updates <- kubeletTypes.PodUpdate{Pods: []*api.Pod{pod}, Op: kubeletTypes.SET, Source: kubeletTypes.HTTPSource} s.updates <- kubetypes.PodUpdate{Pods: []*api.Pod{pod}, Op: kubetypes.SET, Source: kubetypes.HTTPSource}
return nil return nil
} }
@ -126,7 +126,7 @@ func (s *sourceURL) extractFromURL() error {
for i := range podList.Items { for i := range podList.Items {
pods = append(pods, &podList.Items[i]) pods = append(pods, &podList.Items[i])
} }
s.updates <- kubeletTypes.PodUpdate{Pods: pods, Op: kubeletTypes.SET, Source: kubeletTypes.HTTPSource} s.updates <- kubetypes.PodUpdate{Pods: pods, Op: kubetypes.SET, Source: kubetypes.HTTPSource}
return nil return nil
} }

View File

@ -27,7 +27,7 @@ import (
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/validation" "k8s.io/kubernetes/pkg/api/validation"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/pkg/util/errors" "k8s.io/kubernetes/pkg/util/errors"
@ -128,7 +128,7 @@ func TestExtractPodsFromHTTP(t *testing.T) {
var testCases = []struct { var testCases = []struct {
desc string desc string
pods runtime.Object pods runtime.Object
expected kubeletTypes.PodUpdate expected kubetypes.PodUpdate
}{ }{
{ {
desc: "Single pod", desc: "Single pod",
@ -148,8 +148,8 @@ func TestExtractPodsFromHTTP(t *testing.T) {
SecurityContext: &api.PodSecurityContext{}, SecurityContext: &api.PodSecurityContext{},
}, },
}, },
expected: CreatePodUpdate(kubeletTypes.SET, expected: CreatePodUpdate(kubetypes.SET,
kubeletTypes.HTTPSource, kubetypes.HTTPSource,
&api.Pod{ &api.Pod{
ObjectMeta: api.ObjectMeta{ ObjectMeta: api.ObjectMeta{
UID: "111", UID: "111",
@ -206,15 +206,15 @@ func TestExtractPodsFromHTTP(t *testing.T) {
}, },
}, },
}, },
expected: CreatePodUpdate(kubeletTypes.SET, expected: CreatePodUpdate(kubetypes.SET,
kubeletTypes.HTTPSource, kubetypes.HTTPSource,
&api.Pod{ &api.Pod{
ObjectMeta: api.ObjectMeta{ ObjectMeta: api.ObjectMeta{
UID: "111", UID: "111",
Name: "foo" + "-" + hostname, Name: "foo" + "-" + hostname,
Namespace: "default", Namespace: "default",
SelfLink: getSelfLink("foo-"+hostname, kubeletTypes.NamespaceDefault), SelfLink: getSelfLink("foo-"+hostname, kubetypes.NamespaceDefault),
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
NodeName: hostname, NodeName: hostname,
@ -237,7 +237,7 @@ func TestExtractPodsFromHTTP(t *testing.T) {
Name: "bar" + "-" + hostname, Name: "bar" + "-" + hostname,
Namespace: "default", Namespace: "default",
SelfLink: getSelfLink("bar-"+hostname, kubeletTypes.NamespaceDefault), SelfLink: getSelfLink("bar-"+hostname, kubetypes.NamespaceDefault),
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
NodeName: hostname, NodeName: hostname,
@ -279,7 +279,7 @@ func TestExtractPodsFromHTTP(t *testing.T) {
t.Errorf("%s: Unexpected error: %v", testCase.desc, err) t.Errorf("%s: Unexpected error: %v", testCase.desc, err)
continue continue
} }
update := (<-ch).(kubeletTypes.PodUpdate) update := (<-ch).(kubetypes.PodUpdate)
if !api.Semantic.DeepEqual(testCase.expected, update) { if !api.Semantic.DeepEqual(testCase.expected, update) {
t.Errorf("%s: Expected: %#v, Got: %#v", testCase.desc, testCase.expected, update) t.Errorf("%s: Expected: %#v, Got: %#v", testCase.desc, testCase.expected, update)
@ -325,7 +325,7 @@ func TestURLWithHeader(t *testing.T) {
if err := c.extractFromURL(); err != nil { if err := c.extractFromURL(); err != nil {
t.Fatalf("Unexpected error extracting from URL: %v", err) t.Fatalf("Unexpected error extracting from URL: %v", err)
} }
update := (<-ch).(kubeletTypes.PodUpdate) update := (<-ch).(kubetypes.PodUpdate)
headerVal := fakeHandler.RequestReceived.Header["Metadata-Flavor"] headerVal := fakeHandler.RequestReceived.Header["Metadata-Flavor"]
if len(headerVal) != 1 || headerVal[0] != "Google" { if len(headerVal) != 1 || headerVal[0] != "Google" {

View File

@ -21,7 +21,7 @@ import (
docker "github.com/fsouza/go-dockerclient" docker "github.com/fsouza/go-dockerclient"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
) )
// This file contains helper functions to convert docker API types to runtime // This file contains helper functions to convert docker API types to runtime
@ -38,7 +38,7 @@ func toRuntimeContainer(c *docker.APIContainers) (*kubecontainer.Container, erro
return nil, err return nil, err
} }
return &kubecontainer.Container{ return &kubecontainer.Container{
ID: kubeletTypes.DockerID(c.ID).ContainerID(), ID: kubetypes.DockerID(c.ID).ContainerID(),
Name: dockerName.ContainerName, Name: dockerName.ContainerName,
Image: c.Image, Image: c.Image,
Hash: hash, Hash: hash,

View File

@ -32,7 +32,7 @@ import (
"k8s.io/kubernetes/pkg/credentialprovider" "k8s.io/kubernetes/pkg/credentialprovider"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/leaky" "k8s.io/kubernetes/pkg/kubelet/leaky"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
utilerrors "k8s.io/kubernetes/pkg/util/errors" utilerrors "k8s.io/kubernetes/pkg/util/errors"
@ -212,7 +212,7 @@ func (p throttledDockerPuller) IsImagePresent(name string) (bool, error) {
} }
// DockerContainers is a map of containers // DockerContainers is a map of containers
type DockerContainers map[kubeletTypes.DockerID]*docker.APIContainers type DockerContainers map[kubetypes.DockerID]*docker.APIContainers
func (c DockerContainers) FindPodContainer(podFullName string, uid types.UID, containerName string) (*docker.APIContainers, bool, uint64) { func (c DockerContainers) FindPodContainer(podFullName string, uid types.UID, containerName string) (*docker.APIContainers, bool, uint64) {
for _, dockerContainer := range c { for _, dockerContainer := range c {
@ -368,7 +368,7 @@ func GetKubeletDockerContainers(client DockerInterface, allContainers bool) (Doc
glog.V(3).Infof("Docker Container: %s is not managed by kubelet.", container.Names[0]) glog.V(3).Infof("Docker Container: %s is not managed by kubelet.", container.Names[0])
continue continue
} }
result[kubeletTypes.DockerID(container.ID)] = container result[kubetypes.DockerID(container.ID)] = container
} }
return result, nil return result, nil
} }

View File

@ -34,7 +34,7 @@ import (
"k8s.io/kubernetes/pkg/credentialprovider" "k8s.io/kubernetes/pkg/credentialprovider"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/network" "k8s.io/kubernetes/pkg/kubelet/network"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
) )
@ -172,7 +172,7 @@ func TestExecSupportNotExists(t *testing.T) {
func TestDockerContainerCommand(t *testing.T) { func TestDockerContainerCommand(t *testing.T) {
runner := &DockerManager{} runner := &DockerManager{}
containerID := kubeletTypes.DockerID("1234").ContainerID() containerID := kubetypes.DockerID("1234").ContainerID()
command := []string{"ls"} command := []string{"ls"}
cmd, _ := runner.getRunInContainerCommand(containerID, command) cmd, _ := runner.getRunInContainerCommand(containerID, command)
if cmd.Dir != "/var/lib/docker/execdriver/native/"+containerID.ID { if cmd.Dir != "/var/lib/docker/execdriver/native/"+containerID.ID {
@ -561,12 +561,12 @@ func TestFindContainersByPod(t *testing.T) {
Namespace: "ns", Namespace: "ns",
Containers: []*kubecontainer.Container{ Containers: []*kubecontainer.Container{
{ {
ID: kubeletTypes.DockerID("foobar").ContainerID(), ID: kubetypes.DockerID("foobar").ContainerID(),
Name: "foobar", Name: "foobar",
Hash: 0x1234, Hash: 0x1234,
}, },
{ {
ID: kubeletTypes.DockerID("baz").ContainerID(), ID: kubetypes.DockerID("baz").ContainerID(),
Name: "baz", Name: "baz",
Hash: 0x1234, Hash: 0x1234,
}, },
@ -578,7 +578,7 @@ func TestFindContainersByPod(t *testing.T) {
Namespace: "ns", Namespace: "ns",
Containers: []*kubecontainer.Container{ Containers: []*kubecontainer.Container{
{ {
ID: kubeletTypes.DockerID("barbar").ContainerID(), ID: kubetypes.DockerID("barbar").ContainerID(),
Name: "barbar", Name: "barbar",
Hash: 0x1234, Hash: 0x1234,
}, },
@ -619,17 +619,17 @@ func TestFindContainersByPod(t *testing.T) {
Namespace: "ns", Namespace: "ns",
Containers: []*kubecontainer.Container{ Containers: []*kubecontainer.Container{
{ {
ID: kubeletTypes.DockerID("foobar").ContainerID(), ID: kubetypes.DockerID("foobar").ContainerID(),
Name: "foobar", Name: "foobar",
Hash: 0x1234, Hash: 0x1234,
}, },
{ {
ID: kubeletTypes.DockerID("barfoo").ContainerID(), ID: kubetypes.DockerID("barfoo").ContainerID(),
Name: "barfoo", Name: "barfoo",
Hash: 0x1234, Hash: 0x1234,
}, },
{ {
ID: kubeletTypes.DockerID("baz").ContainerID(), ID: kubetypes.DockerID("baz").ContainerID(),
Name: "baz", Name: "baz",
Hash: 0x1234, Hash: 0x1234,
}, },
@ -641,7 +641,7 @@ func TestFindContainersByPod(t *testing.T) {
Namespace: "ns", Namespace: "ns",
Containers: []*kubecontainer.Container{ Containers: []*kubecontainer.Container{
{ {
ID: kubeletTypes.DockerID("barbar").ContainerID(), ID: kubetypes.DockerID("barbar").ContainerID(),
Name: "barbar", Name: "barbar",
Hash: 0x1234, Hash: 0x1234,
}, },
@ -653,7 +653,7 @@ func TestFindContainersByPod(t *testing.T) {
Namespace: "ns", Namespace: "ns",
Containers: []*kubecontainer.Container{ Containers: []*kubecontainer.Container{
{ {
ID: kubeletTypes.DockerID("bazbaz").ContainerID(), ID: kubetypes.DockerID("bazbaz").ContainerID(),
Name: "bazbaz", Name: "bazbaz",
Hash: 0x1234, Hash: 0x1234,
}, },

View File

@ -22,7 +22,7 @@ import (
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/network" "k8s.io/kubernetes/pkg/kubelet/network"
"k8s.io/kubernetes/pkg/kubelet/prober" "k8s.io/kubernetes/pkg/kubelet/prober"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/pkg/util/oom" "k8s.io/kubernetes/pkg/util/oom"
"k8s.io/kubernetes/pkg/util/procfs" "k8s.io/kubernetes/pkg/util/procfs"
@ -41,7 +41,7 @@ func NewFakeDockerManager(
osInterface kubecontainer.OSInterface, osInterface kubecontainer.OSInterface,
networkPlugin network.NetworkPlugin, networkPlugin network.NetworkPlugin,
generator kubecontainer.RunContainerOptionsGenerator, generator kubecontainer.RunContainerOptionsGenerator,
httpClient kubeletTypes.HttpGetter, imageBackOff *util.Backoff) *DockerManager { httpClient kubetypes.HttpGetter, imageBackOff *util.Backoff) *DockerManager {
fakeOOMAdjuster := oom.NewFakeOOMAdjuster() fakeOOMAdjuster := oom.NewFakeOOMAdjuster()
fakeProcFs := procfs.NewFakeProcFs() fakeProcFs := procfs.NewFakeProcFs()

View File

@ -46,7 +46,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet/network/hairpin" "k8s.io/kubernetes/pkg/kubelet/network/hairpin"
"k8s.io/kubernetes/pkg/kubelet/prober" "k8s.io/kubernetes/pkg/kubelet/prober"
"k8s.io/kubernetes/pkg/kubelet/qos" "k8s.io/kubernetes/pkg/kubelet/qos"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/probe" "k8s.io/kubernetes/pkg/probe"
"k8s.io/kubernetes/pkg/securitycontext" "k8s.io/kubernetes/pkg/securitycontext"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
@ -157,7 +157,7 @@ func NewDockerManager(
osInterface kubecontainer.OSInterface, osInterface kubecontainer.OSInterface,
networkPlugin network.NetworkPlugin, networkPlugin network.NetworkPlugin,
generator kubecontainer.RunContainerOptionsGenerator, generator kubecontainer.RunContainerOptionsGenerator,
httpClient kubeletTypes.HttpGetter, httpClient kubetypes.HttpGetter,
execHandler ExecHandler, execHandler ExecHandler,
oomAdjuster *oom.OOMAdjuster, oomAdjuster *oom.OOMAdjuster,
procFs procfs.ProcFsInterface, procFs procfs.ProcFsInterface,
@ -343,7 +343,7 @@ func (dm *DockerManager) inspectContainer(dockerID, containerName, tPath string,
} }
// override the above if a network plugin exists // override the above if a network plugin exists
if dm.networkPlugin.Name() != network.DefaultPluginName { if dm.networkPlugin.Name() != network.DefaultPluginName {
netStatus, err := dm.networkPlugin.Status(pod.Namespace, pod.Name, kubeletTypes.DockerID(dockerID)) netStatus, err := dm.networkPlugin.Status(pod.Namespace, pod.Name, kubetypes.DockerID(dockerID))
if err != nil { if err != nil {
glog.Errorf("NetworkPlugin %s failed on the status hook for pod '%s' - %v", dm.networkPlugin.Name(), pod.Name, err) glog.Errorf("NetworkPlugin %s failed on the status hook for pod '%s' - %v", dm.networkPlugin.Name(), pod.Name, err)
} else if netStatus != nil { } else if netStatus != nil {
@ -573,7 +573,7 @@ func (dm *DockerManager) GetPodStatus(pod *api.Pod) (*api.PodStatus, error) {
// Sort the container statuses since clients of this interface expect the list // Sort the container statuses since clients of this interface expect the list
// of containers in a pod to behave like the output of `docker list`, which has a // of containers in a pod to behave like the output of `docker list`, which has a
// deterministic order. // deterministic order.
sort.Sort(kubeletTypes.SortedContainerStatuses(podStatus.ContainerStatuses)) sort.Sort(kubetypes.SortedContainerStatuses(podStatus.ContainerStatuses))
return &podStatus, nil return &podStatus, nil
} }
@ -808,7 +808,7 @@ func (dm *DockerManager) runContainer(
if ref != nil { if ref != nil {
dm.recorder.Eventf(ref, "Started", "Started with docker id %v", util.ShortenString(dockerContainer.ID, 12)) dm.recorder.Eventf(ref, "Started", "Started with docker id %v", util.ShortenString(dockerContainer.ID, 12))
} }
return kubeletTypes.DockerID(dockerContainer.ID).ContainerID(), nil return kubetypes.DockerID(dockerContainer.ID).ContainerID(), nil
} }
func setEntrypointAndCommand(container *api.Container, opts *kubecontainer.RunContainerOptions, dockerOpts *docker.CreateContainerOptions) { func setEntrypointAndCommand(container *api.Container, opts *kubecontainer.RunContainerOptions, dockerOpts *docker.CreateContainerOptions) {
@ -1296,7 +1296,7 @@ func (dm *DockerManager) KillPod(pod *api.Pod, runningPod kubecontainer.Pod) err
} }
wg.Wait() wg.Wait()
if networkContainer != nil { if networkContainer != nil {
if err := dm.networkPlugin.TearDownPod(runningPod.Namespace, runningPod.Name, kubeletTypes.DockerID(networkContainer.ID.ID)); err != nil { if err := dm.networkPlugin.TearDownPod(runningPod.Namespace, runningPod.Name, kubetypes.DockerID(networkContainer.ID.ID)); err != nil {
glog.Errorf("Failed tearing down the infra container: %v", err) glog.Errorf("Failed tearing down the infra container: %v", err)
errs <- err errs <- err
} }
@ -1585,7 +1585,7 @@ func appendToFile(filePath, stringToAppend string) error {
} }
// createPodInfraContainer starts the pod infra container for a pod. Returns the docker container ID of the newly created container. // createPodInfraContainer starts the pod infra container for a pod. Returns the docker container ID of the newly created container.
func (dm *DockerManager) createPodInfraContainer(pod *api.Pod) (kubeletTypes.DockerID, error) { func (dm *DockerManager) createPodInfraContainer(pod *api.Pod) (kubetypes.DockerID, error) {
start := time.Now() start := time.Now()
defer func() { defer func() {
metrics.ContainerManagerLatency.WithLabelValues("createPodInfraContainer").Observe(metrics.SinceInMicroseconds(start)) metrics.ContainerManagerLatency.WithLabelValues("createPodInfraContainer").Observe(metrics.SinceInMicroseconds(start))
@ -1626,7 +1626,7 @@ func (dm *DockerManager) createPodInfraContainer(pod *api.Pod) (kubeletTypes.Doc
return "", err return "", err
} }
return kubeletTypes.DockerID(id.ID), nil return kubetypes.DockerID(id.ID), nil
} }
// TODO(vmarmol): This will soon be made non-public when its only use is internal. // TODO(vmarmol): This will soon be made non-public when its only use is internal.
@ -1643,9 +1643,9 @@ func (dm *DockerManager) createPodInfraContainer(pod *api.Pod) (kubeletTypes.Doc
type empty struct{} type empty struct{}
type PodContainerChangesSpec struct { type PodContainerChangesSpec struct {
StartInfraContainer bool StartInfraContainer bool
InfraContainerId kubeletTypes.DockerID InfraContainerId kubetypes.DockerID
ContainersToStart map[int]empty ContainersToStart map[int]empty
ContainersToKeep map[kubeletTypes.DockerID]int ContainersToKeep map[kubetypes.DockerID]int
} }
func (dm *DockerManager) computePodContainerChanges(pod *api.Pod, runningPod kubecontainer.Pod, podStatus api.PodStatus) (PodContainerChangesSpec, error) { func (dm *DockerManager) computePodContainerChanges(pod *api.Pod, runningPod kubecontainer.Pod, podStatus api.PodStatus) (PodContainerChangesSpec, error) {
@ -1659,10 +1659,10 @@ func (dm *DockerManager) computePodContainerChanges(pod *api.Pod, runningPod kub
glog.V(4).Infof("Syncing Pod %+v, podFullName: %q, uid: %q", pod, podFullName, uid) glog.V(4).Infof("Syncing Pod %+v, podFullName: %q, uid: %q", pod, podFullName, uid)
containersToStart := make(map[int]empty) containersToStart := make(map[int]empty)
containersToKeep := make(map[kubeletTypes.DockerID]int) containersToKeep := make(map[kubetypes.DockerID]int)
var err error var err error
var podInfraContainerID kubeletTypes.DockerID var podInfraContainerID kubetypes.DockerID
var changed bool var changed bool
podInfraContainer := runningPod.FindContainerByName(PodInfraContainerName) podInfraContainer := runningPod.FindContainerByName(PodInfraContainerName)
if podInfraContainer != nil { if podInfraContainer != nil {
@ -1681,7 +1681,7 @@ func (dm *DockerManager) computePodContainerChanges(pod *api.Pod, runningPod kub
} else { } else {
glog.V(4).Infof("Pod infra container looks good, keep it %q", podFullName) glog.V(4).Infof("Pod infra container looks good, keep it %q", podFullName)
createPodInfraContainer = false createPodInfraContainer = false
podInfraContainerID = kubeletTypes.DockerID(podInfraContainer.ID.ID) podInfraContainerID = kubetypes.DockerID(podInfraContainer.ID.ID)
containersToKeep[podInfraContainerID] = -1 containersToKeep[podInfraContainerID] = -1
} }
@ -1700,7 +1700,7 @@ func (dm *DockerManager) computePodContainerChanges(pod *api.Pod, runningPod kub
continue continue
} }
containerID := kubeletTypes.DockerID(c.ID.ID) containerID := kubetypes.DockerID(c.ID.ID)
hash := c.Hash hash := c.Hash
glog.V(3).Infof("pod %q container %q exists as %v", podFullName, container.Name, containerID) glog.V(3).Infof("pod %q container %q exists as %v", podFullName, container.Name, containerID)
@ -1750,7 +1750,7 @@ func (dm *DockerManager) computePodContainerChanges(pod *api.Pod, runningPod kub
// If Infra container is the last running one, we don't want to keep it. // If Infra container is the last running one, we don't want to keep it.
if !createPodInfraContainer && len(containersToStart) == 0 && len(containersToKeep) == 1 { if !createPodInfraContainer && len(containersToStart) == 0 && len(containersToKeep) == 1 {
containersToKeep = make(map[kubeletTypes.DockerID]int) containersToKeep = make(map[kubetypes.DockerID]int)
} }
return PodContainerChangesSpec{ return PodContainerChangesSpec{
@ -1804,7 +1804,7 @@ func (dm *DockerManager) SyncPod(pod *api.Pod, runningPod kubecontainer.Pod, pod
} else { } else {
// Otherwise kill any containers in this pod which are not specified as ones to keep. // Otherwise kill any containers in this pod which are not specified as ones to keep.
for _, container := range runningPod.Containers { for _, container := range runningPod.Containers {
_, keep := containerChanges.ContainersToKeep[kubeletTypes.DockerID(container.ID.ID)] _, keep := containerChanges.ContainersToKeep[kubetypes.DockerID(container.ID.ID)]
if !keep { if !keep {
glog.V(3).Infof("Killing unwanted container %+v", container) glog.V(3).Infof("Killing unwanted container %+v", container)
// attempt to find the appropriate container policy // attempt to find the appropriate container policy

View File

@ -19,7 +19,7 @@ package kubelet
import ( import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
) )
@ -31,12 +31,12 @@ type fakePodWorkers struct {
t TestingInterface t TestingInterface
} }
func (f *fakePodWorkers) UpdatePod(pod *api.Pod, mirrorPod *api.Pod, updateType kubeletTypes.SyncPodType, updateComplete func()) { func (f *fakePodWorkers) UpdatePod(pod *api.Pod, mirrorPod *api.Pod, updateType kubetypes.SyncPodType, updateComplete func()) {
pods, err := f.runtimeCache.GetPods() pods, err := f.runtimeCache.GetPods()
if err != nil { if err != nil {
f.t.Errorf("Unexpected error: %v", err) f.t.Errorf("Unexpected error: %v", err)
} }
if err := f.syncPodFn(pod, mirrorPod, kubecontainer.Pods(pods).FindPodByID(pod.UID), kubeletTypes.SyncPodUpdate); err != nil { if err := f.syncPodFn(pod, mirrorPod, kubecontainer.Pods(pods).FindPodByID(pod.UID), kubetypes.SyncPodUpdate); err != nil {
f.t.Errorf("Unexpected error: %v", err) f.t.Errorf("Unexpected error: %v", err)
} }
} }

View File

@ -55,7 +55,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet/prober" "k8s.io/kubernetes/pkg/kubelet/prober"
"k8s.io/kubernetes/pkg/kubelet/rkt" "k8s.io/kubernetes/pkg/kubelet/rkt"
"k8s.io/kubernetes/pkg/kubelet/status" "k8s.io/kubernetes/pkg/kubelet/status"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
kubeletUtil "k8s.io/kubernetes/pkg/kubelet/util" kubeletUtil "k8s.io/kubernetes/pkg/kubelet/util"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/probe" "k8s.io/kubernetes/pkg/probe"
@ -462,7 +462,7 @@ type Kubelet struct {
// Optional, defaults to simple Docker implementation // Optional, defaults to simple Docker implementation
runner kubecontainer.ContainerCommandRunner runner kubecontainer.ContainerCommandRunner
// Optional, client for http requests, defaults to empty client // Optional, client for http requests, defaults to empty client
httpClient kubeletTypes.HttpGetter httpClient kubetypes.HttpGetter
// cAdvisor used for container information. // cAdvisor used for container information.
cadvisor cadvisor.Interface cadvisor cadvisor.Interface
@ -777,7 +777,7 @@ func (kl *Kubelet) StartGarbageCollection() {
} }
// Run starts the kubelet reacting to config updates // Run starts the kubelet reacting to config updates
func (kl *Kubelet) Run(updates <-chan kubeletTypes.PodUpdate) { func (kl *Kubelet) Run(updates <-chan kubetypes.PodUpdate) {
if kl.logServer == nil { if kl.logServer == nil {
kl.logServer = http.StripPrefix("/logs/", http.FileServer(http.Dir("/var/log/"))) kl.logServer = http.StripPrefix("/logs/", http.FileServer(http.Dir("/var/log/")))
} }
@ -1248,15 +1248,15 @@ func (kl *Kubelet) makePodDataDirs(pod *api.Pod) error {
return nil return nil
} }
func (kl *Kubelet) syncPod(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecontainer.Pod, updateType kubeletTypes.SyncPodType) error { func (kl *Kubelet) syncPod(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecontainer.Pod, updateType kubetypes.SyncPodType) error {
podFullName := kubecontainer.GetPodFullName(pod) podFullName := kubecontainer.GetPodFullName(pod)
uid := pod.UID uid := pod.UID
start := time.Now() start := time.Now()
var firstSeenTime time.Time var firstSeenTime time.Time
if firstSeenTimeStr, ok := pod.Annotations[kubeletTypes.ConfigFirstSeenAnnotationKey]; !ok { if firstSeenTimeStr, ok := pod.Annotations[kubetypes.ConfigFirstSeenAnnotationKey]; !ok {
glog.V(3).Infof("First seen time not recorded for pod %q", pod.UID) glog.V(3).Infof("First seen time not recorded for pod %q", pod.UID)
} else { } else {
firstSeenTime = kubeletTypes.ConvertToTimestamp(firstSeenTimeStr).Get() firstSeenTime = kubetypes.ConvertToTimestamp(firstSeenTimeStr).Get()
} }
// Before returning, regenerate status and store it in the cache. // Before returning, regenerate status and store it in the cache.
@ -1332,7 +1332,7 @@ func (kl *Kubelet) syncPod(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecont
// it's OK to pretend like the kubelet started them after it restarted. // it's OK to pretend like the kubelet started them after it restarted.
var podStatus api.PodStatus var podStatus api.PodStatus
if updateType == kubeletTypes.SyncPodCreate { if updateType == kubetypes.SyncPodCreate {
// This is the first time we are syncing the pod. Record the latency // This is the first time we are syncing the pod. Record the latency
// since kubelet first saw the pod if firstSeenTime is set. // since kubelet first saw the pod if firstSeenTime is set.
if !firstSeenTime.IsZero() { if !firstSeenTime.IsZero() {
@ -1902,7 +1902,7 @@ func (kl *Kubelet) canAdmitPod(pods []*api.Pod, pod *api.Pod) (bool, string, str
// any new change seen, will run a sync against desired state and running state. If // any new change seen, will run a sync against desired state and running state. If
// no changes are seen to the configuration, will synchronize the last known desired // no changes are seen to the configuration, will synchronize the last known desired
// state every sync-frequency seconds. Never returns. // state every sync-frequency seconds. Never returns.
func (kl *Kubelet) syncLoop(updates <-chan kubeletTypes.PodUpdate, handler SyncHandler) { func (kl *Kubelet) syncLoop(updates <-chan kubetypes.PodUpdate, handler SyncHandler) {
glog.Info("Starting kubelet main sync loop.") glog.Info("Starting kubelet main sync loop.")
var housekeepingTimestamp time.Time var housekeepingTimestamp time.Time
for { for {
@ -1944,7 +1944,7 @@ func (kl *Kubelet) syncLoop(updates <-chan kubeletTypes.PodUpdate, handler SyncH
} }
} }
func (kl *Kubelet) syncLoopIteration(updates <-chan kubeletTypes.PodUpdate, handler SyncHandler) bool { func (kl *Kubelet) syncLoopIteration(updates <-chan kubetypes.PodUpdate, handler SyncHandler) bool {
kl.syncLoopMonitor.Store(time.Now()) kl.syncLoopMonitor.Store(time.Now())
select { select {
case u, open := <-updates: case u, open := <-updates:
@ -1954,16 +1954,16 @@ func (kl *Kubelet) syncLoopIteration(updates <-chan kubeletTypes.PodUpdate, hand
} }
kl.addSource(u.Source) kl.addSource(u.Source)
switch u.Op { switch u.Op {
case kubeletTypes.ADD: case kubetypes.ADD:
glog.V(2).Infof("SyncLoop (ADD): %q", kubeletUtil.FormatPodNames(u.Pods)) glog.V(2).Infof("SyncLoop (ADD): %q", kubeletUtil.FormatPodNames(u.Pods))
handler.HandlePodAdditions(u.Pods) handler.HandlePodAdditions(u.Pods)
case kubeletTypes.UPDATE: case kubetypes.UPDATE:
glog.V(2).Infof("SyncLoop (UPDATE): %q", kubeletUtil.FormatPodNames(u.Pods)) glog.V(2).Infof("SyncLoop (UPDATE): %q", kubeletUtil.FormatPodNames(u.Pods))
handler.HandlePodUpdates(u.Pods) handler.HandlePodUpdates(u.Pods)
case kubeletTypes.REMOVE: case kubetypes.REMOVE:
glog.V(2).Infof("SyncLoop (REMOVE): %q", kubeletUtil.FormatPodNames(u.Pods)) glog.V(2).Infof("SyncLoop (REMOVE): %q", kubeletUtil.FormatPodNames(u.Pods))
handler.HandlePodDeletions(u.Pods) handler.HandlePodDeletions(u.Pods)
case kubeletTypes.SET: case kubetypes.SET:
// TODO: Do we want to support this? // TODO: Do we want to support this?
glog.Errorf("Kubelet does not support snapshot update") glog.Errorf("Kubelet does not support snapshot update")
} }
@ -1976,7 +1976,7 @@ func (kl *Kubelet) syncLoopIteration(updates <-chan kubeletTypes.PodUpdate, hand
return true return true
} }
func (kl *Kubelet) dispatchWork(pod *api.Pod, syncType kubeletTypes.SyncPodType, mirrorPod *api.Pod, start time.Time) { func (kl *Kubelet) dispatchWork(pod *api.Pod, syncType kubetypes.SyncPodType, mirrorPod *api.Pod, start time.Time) {
if kl.podIsTerminated(pod) { if kl.podIsTerminated(pod) {
return return
} }
@ -1985,7 +1985,7 @@ func (kl *Kubelet) dispatchWork(pod *api.Pod, syncType kubeletTypes.SyncPodType,
metrics.PodWorkerLatency.WithLabelValues(syncType.String()).Observe(metrics.SinceInMicroseconds(start)) metrics.PodWorkerLatency.WithLabelValues(syncType.String()).Observe(metrics.SinceInMicroseconds(start))
}) })
// Note the number of containers for new pods. // Note the number of containers for new pods.
if syncType == kubeletTypes.SyncPodCreate { if syncType == kubetypes.SyncPodCreate {
metrics.ContainersPerPodCount.Observe(float64(len(pod.Spec.Containers))) metrics.ContainersPerPodCount.Observe(float64(len(pod.Spec.Containers)))
} }
} }
@ -1996,7 +1996,7 @@ func (kl *Kubelet) handleMirrorPod(mirrorPod *api.Pod, start time.Time) {
// corresponding static pod. Send update to the pod worker if the static // corresponding static pod. Send update to the pod worker if the static
// pod exists. // pod exists.
if pod, ok := kl.podManager.GetPodByMirrorPod(mirrorPod); ok { if pod, ok := kl.podManager.GetPodByMirrorPod(mirrorPod); ok {
kl.dispatchWork(pod, kubeletTypes.SyncPodUpdate, mirrorPod, start) kl.dispatchWork(pod, kubetypes.SyncPodUpdate, mirrorPod, start)
} }
} }
@ -2021,7 +2021,7 @@ func (kl *Kubelet) HandlePodAdditions(pods []*api.Pod) {
continue continue
} }
mirrorPod, _ := kl.podManager.GetMirrorPodByPod(pod) mirrorPod, _ := kl.podManager.GetMirrorPodByPod(pod)
kl.dispatchWork(pod, kubeletTypes.SyncPodCreate, mirrorPod, start) kl.dispatchWork(pod, kubetypes.SyncPodCreate, mirrorPod, start)
kl.probeManager.AddPod(pod) kl.probeManager.AddPod(pod)
} }
} }
@ -2037,7 +2037,7 @@ func (kl *Kubelet) HandlePodUpdates(pods []*api.Pod) {
// TODO: Evaluate if we need to validate and reject updates. // TODO: Evaluate if we need to validate and reject updates.
mirrorPod, _ := kl.podManager.GetMirrorPodByPod(pod) mirrorPod, _ := kl.podManager.GetMirrorPodByPod(pod)
kl.dispatchWork(pod, kubeletTypes.SyncPodUpdate, mirrorPod, start) kl.dispatchWork(pod, kubetypes.SyncPodUpdate, mirrorPod, start)
} }
} }
@ -2062,7 +2062,7 @@ func (kl *Kubelet) HandlePodSyncs(pods []*api.Pod) {
start := time.Now() start := time.Now()
for _, pod := range pods { for _, pod := range pods {
mirrorPod, _ := kl.podManager.GetMirrorPodByPod(pod) mirrorPod, _ := kl.podManager.GetMirrorPodByPod(pod)
kl.dispatchWork(pod, kubeletTypes.SyncPodSync, mirrorPod, start) kl.dispatchWork(pod, kubetypes.SyncPodSync, mirrorPod, start)
} }
} }

View File

@ -47,7 +47,7 @@ import (
"k8s.io/kubernetes/pkg/kubelet/network" "k8s.io/kubernetes/pkg/kubelet/network"
"k8s.io/kubernetes/pkg/kubelet/prober" "k8s.io/kubernetes/pkg/kubelet/prober"
"k8s.io/kubernetes/pkg/kubelet/status" "k8s.io/kubernetes/pkg/kubelet/status"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
@ -313,7 +313,7 @@ func TestKubeletDirsCompat(t *testing.T) {
} }
} }
var emptyPodUIDs map[types.UID]kubeletTypes.SyncPodType var emptyPodUIDs map[types.UID]kubetypes.SyncPodType
func TestSyncLoopTimeUpdate(t *testing.T) { func TestSyncLoopTimeUpdate(t *testing.T) {
testKubelet := newTestKubelet(t) testKubelet := newTestKubelet(t)
@ -325,12 +325,12 @@ func TestSyncLoopTimeUpdate(t *testing.T) {
t.Errorf("Unexpected sync loop time: %s, expected 0", loopTime1) t.Errorf("Unexpected sync loop time: %s, expected 0", loopTime1)
} }
kubelet.syncLoopIteration(make(chan kubeletTypes.PodUpdate), kubelet) kubelet.syncLoopIteration(make(chan kubetypes.PodUpdate), kubelet)
loopTime2 := kubelet.LatestLoopEntryTime() loopTime2 := kubelet.LatestLoopEntryTime()
if loopTime2.IsZero() { if loopTime2.IsZero() {
t.Errorf("Unexpected sync loop time: 0, expected non-zero value.") t.Errorf("Unexpected sync loop time: 0, expected non-zero value.")
} }
kubelet.syncLoopIteration(make(chan kubeletTypes.PodUpdate), kubelet) kubelet.syncLoopIteration(make(chan kubetypes.PodUpdate), kubelet)
loopTime3 := kubelet.LatestLoopEntryTime() loopTime3 := kubelet.LatestLoopEntryTime()
if !loopTime3.After(loopTime1) { if !loopTime3.After(loopTime1) {
t.Errorf("Sync Loop Time was not updated correctly. Second update timestamp should be greater than first update timestamp") t.Errorf("Sync Loop Time was not updated correctly. Second update timestamp should be greater than first update timestamp")
@ -347,7 +347,7 @@ func TestSyncLoopAbort(t *testing.T) {
// the channel close // the channel close
kubelet.resyncInterval = time.Second * 30 kubelet.resyncInterval = time.Second * 30
ch := make(chan kubeletTypes.PodUpdate) ch := make(chan kubetypes.PodUpdate)
close(ch) close(ch)
// sanity check (also prevent this test from hanging in the next step) // sanity check (also prevent this test from hanging in the next step)
@ -2659,7 +2659,7 @@ func TestUpdateNodeStatusError(t *testing.T) {
} }
func TestCreateMirrorPod(t *testing.T) { func TestCreateMirrorPod(t *testing.T) {
for _, updateType := range []kubeletTypes.SyncPodType{kubeletTypes.SyncPodCreate, kubeletTypes.SyncPodUpdate} { for _, updateType := range []kubetypes.SyncPodType{kubetypes.SyncPodCreate, kubetypes.SyncPodUpdate} {
testKubelet := newTestKubelet(t) testKubelet := newTestKubelet(t)
kl := testKubelet.kubelet kl := testKubelet.kubelet
manager := testKubelet.fakeMirrorClient manager := testKubelet.fakeMirrorClient
@ -2669,7 +2669,7 @@ func TestCreateMirrorPod(t *testing.T) {
Name: "bar", Name: "bar",
Namespace: "foo", Namespace: "foo",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: "file", kubetypes.ConfigSourceAnnotationKey: "file",
}, },
}, },
} }
@ -2702,7 +2702,7 @@ func TestDeleteOutdatedMirrorPod(t *testing.T) {
Name: "foo", Name: "foo",
Namespace: "ns", Namespace: "ns",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: "file", kubetypes.ConfigSourceAnnotationKey: "file",
}, },
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2718,8 +2718,8 @@ func TestDeleteOutdatedMirrorPod(t *testing.T) {
Name: "foo", Name: "foo",
Namespace: "ns", Namespace: "ns",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: "api", kubetypes.ConfigSourceAnnotationKey: "api",
kubeletTypes.ConfigMirrorAnnotationKey: "mirror", kubetypes.ConfigMirrorAnnotationKey: "mirror",
}, },
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2731,7 +2731,7 @@ func TestDeleteOutdatedMirrorPod(t *testing.T) {
pods := []*api.Pod{pod, mirrorPod} pods := []*api.Pod{pod, mirrorPod}
kl.podManager.SetPods(pods) kl.podManager.SetPods(pods)
err := kl.syncPod(pod, mirrorPod, container.Pod{}, kubeletTypes.SyncPodUpdate) err := kl.syncPod(pod, mirrorPod, container.Pod{}, kubetypes.SyncPodUpdate)
if err != nil { if err != nil {
t.Errorf("unexpected error: %v", err) t.Errorf("unexpected error: %v", err)
} }
@ -2756,8 +2756,8 @@ func TestDeleteOrphanedMirrorPods(t *testing.T) {
Name: "pod1", Name: "pod1",
Namespace: "ns", Namespace: "ns",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: "api", kubetypes.ConfigSourceAnnotationKey: "api",
kubeletTypes.ConfigMirrorAnnotationKey: "mirror", kubetypes.ConfigMirrorAnnotationKey: "mirror",
}, },
}, },
}, },
@ -2767,8 +2767,8 @@ func TestDeleteOrphanedMirrorPods(t *testing.T) {
Name: "pod2", Name: "pod2",
Namespace: "ns", Namespace: "ns",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: "api", kubetypes.ConfigSourceAnnotationKey: "api",
kubeletTypes.ConfigMirrorAnnotationKey: "mirror", kubetypes.ConfigMirrorAnnotationKey: "mirror",
}, },
}, },
}, },
@ -2799,7 +2799,7 @@ func TestGetContainerInfoForMirrorPods(t *testing.T) {
Name: "qux", Name: "qux",
Namespace: "ns", Namespace: "ns",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: "file", kubetypes.ConfigSourceAnnotationKey: "file",
}, },
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2814,8 +2814,8 @@ func TestGetContainerInfoForMirrorPods(t *testing.T) {
Name: "qux", Name: "qux",
Namespace: "ns", Namespace: "ns",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: "api", kubetypes.ConfigSourceAnnotationKey: "api",
kubeletTypes.ConfigMirrorAnnotationKey: "mirror", kubetypes.ConfigMirrorAnnotationKey: "mirror",
}, },
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2881,7 +2881,7 @@ func TestDoNotCacheStatusForStaticPods(t *testing.T) {
Name: "staticFoo", Name: "staticFoo",
Namespace: "new", Namespace: "new",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: "file", kubetypes.ConfigSourceAnnotationKey: "file",
}, },
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2906,7 +2906,7 @@ func TestHostNetworkAllowed(t *testing.T) {
capabilities.SetForTests(capabilities.Capabilities{ capabilities.SetForTests(capabilities.Capabilities{
PrivilegedSources: capabilities.PrivilegedSources{ PrivilegedSources: capabilities.PrivilegedSources{
HostNetworkSources: []string{kubeletTypes.ApiserverSource, kubeletTypes.FileSource}, HostNetworkSources: []string{kubetypes.ApiserverSource, kubetypes.FileSource},
}, },
}) })
pod := &api.Pod{ pod := &api.Pod{
@ -2915,7 +2915,7 @@ func TestHostNetworkAllowed(t *testing.T) {
Name: "foo", Name: "foo",
Namespace: "new", Namespace: "new",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: kubeletTypes.FileSource, kubetypes.ConfigSourceAnnotationKey: kubetypes.FileSource,
}, },
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2928,7 +2928,7 @@ func TestHostNetworkAllowed(t *testing.T) {
}, },
} }
kubelet.podManager.SetPods([]*api.Pod{pod}) kubelet.podManager.SetPods([]*api.Pod{pod})
err := kubelet.syncPod(pod, nil, container.Pod{}, kubeletTypes.SyncPodUpdate) err := kubelet.syncPod(pod, nil, container.Pod{}, kubetypes.SyncPodUpdate)
if err != nil { if err != nil {
t.Errorf("expected pod infra creation to succeed: %v", err) t.Errorf("expected pod infra creation to succeed: %v", err)
} }
@ -2949,7 +2949,7 @@ func TestHostNetworkDisallowed(t *testing.T) {
Name: "foo", Name: "foo",
Namespace: "new", Namespace: "new",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: kubeletTypes.FileSource, kubetypes.ConfigSourceAnnotationKey: kubetypes.FileSource,
}, },
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
@ -2961,7 +2961,7 @@ func TestHostNetworkDisallowed(t *testing.T) {
}, },
}, },
} }
err := kubelet.syncPod(pod, nil, container.Pod{}, kubeletTypes.SyncPodUpdate) err := kubelet.syncPod(pod, nil, container.Pod{}, kubetypes.SyncPodUpdate)
if err == nil { if err == nil {
t.Errorf("expected pod infra creation to fail") t.Errorf("expected pod infra creation to fail")
} }
@ -2988,7 +2988,7 @@ func TestPrivilegeContainerAllowed(t *testing.T) {
}, },
} }
kubelet.podManager.SetPods([]*api.Pod{pod}) kubelet.podManager.SetPods([]*api.Pod{pod})
err := kubelet.syncPod(pod, nil, container.Pod{}, kubeletTypes.SyncPodUpdate) err := kubelet.syncPod(pod, nil, container.Pod{}, kubetypes.SyncPodUpdate)
if err != nil { if err != nil {
t.Errorf("expected pod infra creation to succeed: %v", err) t.Errorf("expected pod infra creation to succeed: %v", err)
} }
@ -3014,7 +3014,7 @@ func TestPrivilegeContainerDisallowed(t *testing.T) {
}, },
}, },
} }
err := kubelet.syncPod(pod, nil, container.Pod{}, kubeletTypes.SyncPodUpdate) err := kubelet.syncPod(pod, nil, container.Pod{}, kubetypes.SyncPodUpdate)
if err == nil { if err == nil {
t.Errorf("expected pod infra creation to fail") t.Errorf("expected pod infra creation to fail")
} }

View File

@ -24,12 +24,12 @@ import (
"github.com/golang/glog" "github.com/golang/glog"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
) )
type HandlerRunner struct { type HandlerRunner struct {
httpGetter kubeletTypes.HttpGetter httpGetter kubetypes.HttpGetter
commandRunner kubecontainer.ContainerCommandRunner commandRunner kubecontainer.ContainerCommandRunner
containerManager podStatusProvider containerManager podStatusProvider
} }
@ -38,7 +38,7 @@ type podStatusProvider interface {
GetPodStatus(pod *api.Pod) (*api.PodStatus, error) GetPodStatus(pod *api.Pod) (*api.PodStatus, error)
} }
func NewHandlerRunner(httpGetter kubeletTypes.HttpGetter, commandRunner kubecontainer.ContainerCommandRunner, containerManager podStatusProvider) kubecontainer.HandlerRunner { func NewHandlerRunner(httpGetter kubetypes.HttpGetter, commandRunner kubecontainer.ContainerCommandRunner, containerManager podStatusProvider) kubecontainer.HandlerRunner {
return &HandlerRunner{ return &HandlerRunner{
httpGetter: httpGetter, httpGetter: httpGetter,
commandRunner: commandRunner, commandRunner: commandRunner,

View File

@ -23,7 +23,7 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
) )
// Mirror client is used to create/delete a mirror pod. // Mirror client is used to create/delete a mirror pod.
@ -55,7 +55,7 @@ func (mc *basicMirrorClient) CreateMirrorPod(pod *api.Pod) error {
for k, v := range pod.Annotations { for k, v := range pod.Annotations {
copyPod.Annotations[k] = v copyPod.Annotations[k] = v
} }
copyPod.Annotations[kubeletTypes.ConfigMirrorAnnotationKey] = kubeletTypes.MirrorType copyPod.Annotations[kubetypes.ConfigMirrorAnnotationKey] = kubetypes.MirrorType
_, err := mc.apiserverClient.Pods(copyPod.Namespace).Create(&copyPod) _, err := mc.apiserverClient.Pods(copyPod.Namespace).Create(&copyPod)
return err return err
@ -81,7 +81,7 @@ func (mc *basicMirrorClient) DeleteMirrorPod(podFullName string) error {
// Helper functions. // Helper functions.
func getPodSource(pod *api.Pod) (string, error) { func getPodSource(pod *api.Pod) (string, error) {
if pod.Annotations != nil { if pod.Annotations != nil {
if source, ok := pod.Annotations[kubeletTypes.ConfigSourceAnnotationKey]; ok { if source, ok := pod.Annotations[kubetypes.ConfigSourceAnnotationKey]; ok {
return source, nil return source, nil
} }
} }
@ -90,13 +90,13 @@ func getPodSource(pod *api.Pod) (string, error) {
func isStaticPod(pod *api.Pod) bool { func isStaticPod(pod *api.Pod) bool {
source, err := getPodSource(pod) source, err := getPodSource(pod)
return err == nil && source != kubeletTypes.ApiserverSource return err == nil && source != kubetypes.ApiserverSource
} }
func isMirrorPod(pod *api.Pod) bool { func isMirrorPod(pod *api.Pod) bool {
if value, ok := pod.Annotations[kubeletTypes.ConfigMirrorAnnotationKey]; !ok { if value, ok := pod.Annotations[kubetypes.ConfigMirrorAnnotationKey]; !ok {
return false return false
} else { } else {
return value == kubeletTypes.MirrorType return value == kubetypes.MirrorType
} }
} }

View File

@ -28,7 +28,7 @@ import (
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/dockertools" "k8s.io/kubernetes/pkg/kubelet/dockertools"
"k8s.io/kubernetes/pkg/kubelet/network" "k8s.io/kubernetes/pkg/kubelet/network"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
) )
const ( const (
@ -102,7 +102,7 @@ func (plugin *cniNetworkPlugin) Name() string {
return CNIPluginName return CNIPluginName
} }
func (plugin *cniNetworkPlugin) SetUpPod(namespace string, name string, id kubeletTypes.DockerID) error { func (plugin *cniNetworkPlugin) SetUpPod(namespace string, name string, id kubetypes.DockerID) error {
runtime, ok := plugin.host.GetRuntime().(*dockertools.DockerManager) runtime, ok := plugin.host.GetRuntime().(*dockertools.DockerManager)
if !ok { if !ok {
return fmt.Errorf("CNI execution called on non-docker runtime") return fmt.Errorf("CNI execution called on non-docker runtime")
@ -121,7 +121,7 @@ func (plugin *cniNetworkPlugin) SetUpPod(namespace string, name string, id kubel
return err return err
} }
func (plugin *cniNetworkPlugin) TearDownPod(namespace string, name string, id kubeletTypes.DockerID) error { func (plugin *cniNetworkPlugin) TearDownPod(namespace string, name string, id kubetypes.DockerID) error {
runtime, ok := plugin.host.GetRuntime().(*dockertools.DockerManager) runtime, ok := plugin.host.GetRuntime().(*dockertools.DockerManager)
if !ok { if !ok {
return fmt.Errorf("CNI execution called on non-docker runtime") return fmt.Errorf("CNI execution called on non-docker runtime")
@ -136,7 +136,7 @@ func (plugin *cniNetworkPlugin) TearDownPod(namespace string, name string, id ku
// TODO: Use the addToNetwork function to obtain the IP of the Pod. That will assume idempotent ADD call to the plugin. // TODO: Use the addToNetwork function to obtain the IP of the Pod. That will assume idempotent ADD call to the plugin.
// Also fix the runtime's call to Status function to be done only in the case that the IP is lost, no need to do periodic calls // Also fix the runtime's call to Status function to be done only in the case that the IP is lost, no need to do periodic calls
func (plugin *cniNetworkPlugin) Status(namespace string, name string, id kubeletTypes.DockerID) (*network.PodNetworkStatus, error) { func (plugin *cniNetworkPlugin) Status(namespace string, name string, id kubetypes.DockerID) (*network.PodNetworkStatus, error) {
runtime, ok := plugin.host.GetRuntime().(*dockertools.DockerManager) runtime, ok := plugin.host.GetRuntime().(*dockertools.DockerManager)
if !ok { if !ok {
return nil, fmt.Errorf("CNI execution called on non-docker runtime") return nil, fmt.Errorf("CNI execution called on non-docker runtime")

View File

@ -67,7 +67,7 @@ import (
"github.com/golang/glog" "github.com/golang/glog"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/kubelet/network" "k8s.io/kubernetes/pkg/kubelet/network"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
utilexec "k8s.io/kubernetes/pkg/util/exec" utilexec "k8s.io/kubernetes/pkg/util/exec"
) )
@ -132,19 +132,19 @@ func (plugin *execNetworkPlugin) validate() error {
return nil return nil
} }
func (plugin *execNetworkPlugin) SetUpPod(namespace string, name string, id kubeletTypes.DockerID) error { func (plugin *execNetworkPlugin) SetUpPod(namespace string, name string, id kubetypes.DockerID) error {
out, err := utilexec.New().Command(plugin.getExecutable(), setUpCmd, namespace, name, string(id)).CombinedOutput() out, err := utilexec.New().Command(plugin.getExecutable(), setUpCmd, namespace, name, string(id)).CombinedOutput()
glog.V(5).Infof("SetUpPod 'exec' network plugin output: %s, %v", string(out), err) glog.V(5).Infof("SetUpPod 'exec' network plugin output: %s, %v", string(out), err)
return err return err
} }
func (plugin *execNetworkPlugin) TearDownPod(namespace string, name string, id kubeletTypes.DockerID) error { func (plugin *execNetworkPlugin) TearDownPod(namespace string, name string, id kubetypes.DockerID) error {
out, err := utilexec.New().Command(plugin.getExecutable(), tearDownCmd, namespace, name, string(id)).CombinedOutput() out, err := utilexec.New().Command(plugin.getExecutable(), tearDownCmd, namespace, name, string(id)).CombinedOutput()
glog.V(5).Infof("TearDownPod 'exec' network plugin output: %s, %v", string(out), err) glog.V(5).Infof("TearDownPod 'exec' network plugin output: %s, %v", string(out), err)
return err return err
} }
func (plugin *execNetworkPlugin) Status(namespace string, name string, id kubeletTypes.DockerID) (*network.PodNetworkStatus, error) { func (plugin *execNetworkPlugin) Status(namespace string, name string, id kubetypes.DockerID) (*network.PodNetworkStatus, error) {
out, err := utilexec.New().Command(plugin.getExecutable(), statusCmd, namespace, name, string(id)).CombinedOutput() out, err := utilexec.New().Command(plugin.getExecutable(), statusCmd, namespace, name, string(id)).CombinedOutput()
glog.V(5).Infof("Status 'exec' network plugin output: %s, %v", string(out), err) glog.V(5).Infof("Status 'exec' network plugin output: %s, %v", string(out), err)
if err != nil { if err != nil {

View File

@ -26,7 +26,7 @@ import (
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/util/errors" "k8s.io/kubernetes/pkg/util/errors"
"k8s.io/kubernetes/pkg/util/validation" "k8s.io/kubernetes/pkg/util/validation"
) )
@ -46,13 +46,13 @@ type NetworkPlugin interface {
// SetUpPod is the method called after the infra container of // SetUpPod is the method called after the infra container of
// the pod has been created but before the other containers of the // the pod has been created but before the other containers of the
// pod are launched. // pod are launched.
SetUpPod(namespace string, name string, podInfraContainerID kubeletTypes.DockerID) error SetUpPod(namespace string, name string, podInfraContainerID kubetypes.DockerID) error
// TearDownPod is the method called before a pod's infra container will be deleted // TearDownPod is the method called before a pod's infra container will be deleted
TearDownPod(namespace string, name string, podInfraContainerID kubeletTypes.DockerID) error TearDownPod(namespace string, name string, podInfraContainerID kubetypes.DockerID) error
// Status is the method called to obtain the ipv4 or ipv6 addresses of the container // Status is the method called to obtain the ipv4 or ipv6 addresses of the container
Status(namespace string, name string, podInfraContainerID kubeletTypes.DockerID) (*PodNetworkStatus, error) Status(namespace string, name string, podInfraContainerID kubetypes.DockerID) (*PodNetworkStatus, error)
} }
// PodNetworkStatus stores the network status of a pod (currently just the primary IP address) // PodNetworkStatus stores the network status of a pod (currently just the primary IP address)
@ -134,14 +134,14 @@ func (plugin *noopNetworkPlugin) Name() string {
return DefaultPluginName return DefaultPluginName
} }
func (plugin *noopNetworkPlugin) SetUpPod(namespace string, name string, id kubeletTypes.DockerID) error { func (plugin *noopNetworkPlugin) SetUpPod(namespace string, name string, id kubetypes.DockerID) error {
return nil return nil
} }
func (plugin *noopNetworkPlugin) TearDownPod(namespace string, name string, id kubeletTypes.DockerID) error { func (plugin *noopNetworkPlugin) TearDownPod(namespace string, name string, id kubetypes.DockerID) error {
return nil return nil
} }
func (plugin *noopNetworkPlugin) Status(namespace string, name string, id kubeletTypes.DockerID) (*PodNetworkStatus, error) { func (plugin *noopNetworkPlugin) Status(namespace string, name string, id kubetypes.DockerID) (*PodNetworkStatus, error) {
return nil, nil return nil, nil
} }

View File

@ -21,7 +21,7 @@ import (
"testing" "testing"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
) )
// Stub out mirror client for testing purpose. // Stub out mirror client for testing purpose.
@ -41,8 +41,8 @@ func TestGetSetPods(t *testing.T) {
Name: "bar", Name: "bar",
Namespace: "default", Namespace: "default",
Annotations: map[string]string{ Annotations: map[string]string{
kubeletTypes.ConfigSourceAnnotationKey: "api", kubetypes.ConfigSourceAnnotationKey: "api",
kubeletTypes.ConfigMirrorAnnotationKey: "mirror", kubetypes.ConfigMirrorAnnotationKey: "mirror",
}, },
}, },
} }
@ -51,7 +51,7 @@ func TestGetSetPods(t *testing.T) {
UID: "123456789", UID: "123456789",
Name: "bar", Name: "bar",
Namespace: "default", Namespace: "default",
Annotations: map[string]string{kubeletTypes.ConfigSourceAnnotationKey: "file"}, Annotations: map[string]string{kubetypes.ConfigSourceAnnotationKey: "file"},
}, },
} }
@ -61,7 +61,7 @@ func TestGetSetPods(t *testing.T) {
UID: "999999999", UID: "999999999",
Name: "taco", Name: "taco",
Namespace: "default", Namespace: "default",
Annotations: map[string]string{kubeletTypes.ConfigSourceAnnotationKey: "api"}, Annotations: map[string]string{kubetypes.ConfigSourceAnnotationKey: "api"},
}, },
}, },
staticPod, staticPod,

View File

@ -24,19 +24,19 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/client/record"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
) )
// PodWorkers is an abstract interface for testability. // PodWorkers is an abstract interface for testability.
type PodWorkers interface { type PodWorkers interface {
UpdatePod(pod *api.Pod, mirrorPod *api.Pod, updateType kubeletTypes.SyncPodType, updateComplete func()) UpdatePod(pod *api.Pod, mirrorPod *api.Pod, updateType kubetypes.SyncPodType, updateComplete func())
ForgetNonExistingPodWorkers(desiredPods map[types.UID]empty) ForgetNonExistingPodWorkers(desiredPods map[types.UID]empty)
ForgetWorker(uid types.UID) ForgetWorker(uid types.UID)
} }
type syncPodFnType func(*api.Pod, *api.Pod, kubecontainer.Pod, kubeletTypes.SyncPodType) error type syncPodFnType func(*api.Pod, *api.Pod, kubecontainer.Pod, kubetypes.SyncPodType) error
type podWorkers struct { type podWorkers struct {
// Protects all per worker fields. // Protects all per worker fields.
@ -75,7 +75,7 @@ type workUpdate struct {
updateCompleteFn func() updateCompleteFn func()
// A string describing the type of this update, eg: create // A string describing the type of this update, eg: create
updateType kubeletTypes.SyncPodType updateType kubetypes.SyncPodType
} }
func newPodWorkers(runtimeCache kubecontainer.RuntimeCache, syncPodFn syncPodFnType, func newPodWorkers(runtimeCache kubecontainer.RuntimeCache, syncPodFn syncPodFnType,
@ -122,7 +122,7 @@ func (p *podWorkers) managePodLoop(podUpdates <-chan workUpdate) {
} }
// Apply the new setting to the specified pod. updateComplete is called when the update is completed. // Apply the new setting to the specified pod. updateComplete is called when the update is completed.
func (p *podWorkers) UpdatePod(pod *api.Pod, mirrorPod *api.Pod, updateType kubeletTypes.SyncPodType, updateComplete func()) { func (p *podWorkers) UpdatePod(pod *api.Pod, mirrorPod *api.Pod, updateType kubetypes.SyncPodType, updateComplete func()) {
uid := pod.UID uid := pod.UID
var podUpdates chan workUpdate var podUpdates chan workUpdate
var exists bool var exists bool

View File

@ -30,7 +30,7 @@ import (
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/dockertools" "k8s.io/kubernetes/pkg/kubelet/dockertools"
"k8s.io/kubernetes/pkg/kubelet/network" "k8s.io/kubernetes/pkg/kubelet/network"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
) )
@ -57,7 +57,7 @@ func createPodWorkers() (*podWorkers, map[types.UID][]string) {
fakeRuntimeCache := createFakeRuntimeCache(fakeRecorder) fakeRuntimeCache := createFakeRuntimeCache(fakeRecorder)
podWorkers := newPodWorkers( podWorkers := newPodWorkers(
fakeRuntimeCache, fakeRuntimeCache,
func(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecontainer.Pod, updateType kubeletTypes.SyncPodType) error { func(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecontainer.Pod, updateType kubetypes.SyncPodType) error {
func() { func() {
lock.Lock() lock.Lock()
defer lock.Unlock() defer lock.Unlock()
@ -94,7 +94,7 @@ func TestUpdatePod(t *testing.T) {
numPods := 20 numPods := 20
for i := 0; i < numPods; i++ { for i := 0; i < numPods; i++ {
for j := i; j < numPods; j++ { for j := i; j < numPods; j++ {
podWorkers.UpdatePod(newPod(string(j), string(i)), nil, kubeletTypes.SyncPodCreate, func() {}) podWorkers.UpdatePod(newPod(string(j), string(i)), nil, kubetypes.SyncPodCreate, func() {})
} }
} }
drainWorkers(podWorkers, numPods) drainWorkers(podWorkers, numPods)
@ -127,7 +127,7 @@ func TestForgetNonExistingPodWorkers(t *testing.T) {
numPods := 20 numPods := 20
for i := 0; i < numPods; i++ { for i := 0; i < numPods; i++ {
podWorkers.UpdatePod(newPod(string(i), "name"), nil, kubeletTypes.SyncPodUpdate, func() {}) podWorkers.UpdatePod(newPod(string(i), "name"), nil, kubetypes.SyncPodUpdate, func() {})
} }
drainWorkers(podWorkers, numPods) drainWorkers(podWorkers, numPods)
@ -163,12 +163,12 @@ type simpleFakeKubelet struct {
wg sync.WaitGroup wg sync.WaitGroup
} }
func (kl *simpleFakeKubelet) syncPod(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecontainer.Pod, updateType kubeletTypes.SyncPodType) error { func (kl *simpleFakeKubelet) syncPod(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecontainer.Pod, updateType kubetypes.SyncPodType) error {
kl.pod, kl.mirrorPod, kl.runningPod = pod, mirrorPod, runningPod kl.pod, kl.mirrorPod, kl.runningPod = pod, mirrorPod, runningPod
return nil return nil
} }
func (kl *simpleFakeKubelet) syncPodWithWaitGroup(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecontainer.Pod, updateType kubeletTypes.SyncPodType) error { func (kl *simpleFakeKubelet) syncPodWithWaitGroup(pod *api.Pod, mirrorPod *api.Pod, runningPod kubecontainer.Pod, updateType kubetypes.SyncPodType) error {
kl.pod, kl.mirrorPod, kl.runningPod = pod, mirrorPod, runningPod kl.pod, kl.mirrorPod, kl.runningPod = pod, mirrorPod, runningPod
kl.wg.Done() kl.wg.Done()
return nil return nil
@ -354,8 +354,8 @@ func TestFakePodWorkers(t *testing.T) {
kubeletForRealWorkers.wg.Add(1) kubeletForRealWorkers.wg.Add(1)
fakeDocker.ContainerList = tt.containerList fakeDocker.ContainerList = tt.containerList
realPodWorkers.UpdatePod(tt.pod, tt.mirrorPod, kubeletTypes.SyncPodUpdate, func() {}) realPodWorkers.UpdatePod(tt.pod, tt.mirrorPod, kubetypes.SyncPodUpdate, func() {})
fakePodWorkers.UpdatePod(tt.pod, tt.mirrorPod, kubeletTypes.SyncPodUpdate, func() {}) fakePodWorkers.UpdatePod(tt.pod, tt.mirrorPod, kubetypes.SyncPodUpdate, func() {})
kubeletForRealWorkers.wg.Wait() kubeletForRealWorkers.wg.Wait()

View File

@ -24,7 +24,7 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/container"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
) )
const ( const (
@ -40,7 +40,7 @@ type RunPodResult struct {
} }
// RunOnce polls from one configuration update and run the associated pods. // RunOnce polls from one configuration update and run the associated pods.
func (kl *Kubelet) RunOnce(updates <-chan kubeletTypes.PodUpdate) ([]RunPodResult, error) { func (kl *Kubelet) RunOnce(updates <-chan kubetypes.PodUpdate) ([]RunPodResult, error) {
select { select {
case u := <-updates: case u := <-updates:
glog.Infof("processing manifest with %d pods", len(u.Pods)) glog.Infof("processing manifest with %d pods", len(u.Pods))
@ -110,7 +110,7 @@ func (kl *Kubelet) runPod(pod *api.Pod, retryDelay time.Duration) error {
glog.Infof("pod %q containers not running: syncing", pod.Name) glog.Infof("pod %q containers not running: syncing", pod.Name)
// We don't create mirror pods in this mode; pass a dummy boolean value // We don't create mirror pods in this mode; pass a dummy boolean value
// to sycnPod. // to sycnPod.
if err = kl.syncPod(pod, nil, p, kubeletTypes.SyncPodUpdate); err != nil { if err = kl.syncPod(pod, nil, p, kubetypes.SyncPodUpdate); err != nil {
return fmt.Errorf("error syncing pod: %v", err) return fmt.Errorf("error syncing pod: %v", err)
} }
if retry >= RunOnceMaxRetries { if retry >= RunOnceMaxRetries {

View File

@ -40,7 +40,7 @@ import (
"k8s.io/kubernetes/pkg/auth/user" "k8s.io/kubernetes/pkg/auth/user"
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
"k8s.io/kubernetes/pkg/kubelet/dockertools" "k8s.io/kubernetes/pkg/kubelet/dockertools"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/util/httpstream" "k8s.io/kubernetes/pkg/util/httpstream"
"k8s.io/kubernetes/pkg/util/httpstream/spdy" "k8s.io/kubernetes/pkg/util/httpstream/spdy"
@ -211,7 +211,7 @@ func readResp(resp *http.Response) (string, error) {
// A helper function to return the correct pod name. // A helper function to return the correct pod name.
func getPodName(name, namespace string) string { func getPodName(name, namespace string) string {
if namespace == "" { if namespace == "" {
namespace = kubeletTypes.NamespaceDefault namespace = kubetypes.NamespaceDefault
} }
return name + "_" + namespace return name + "_" + namespace
} }

View File

@ -27,7 +27,7 @@ import (
"k8s.io/kubernetes/pkg/api/errors" "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
client "k8s.io/kubernetes/pkg/client/unversioned" client "k8s.io/kubernetes/pkg/client/unversioned"
kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
kubeletUtil "k8s.io/kubernetes/pkg/kubelet/util" kubeletUtil "k8s.io/kubernetes/pkg/kubelet/util"
"k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
@ -85,8 +85,8 @@ func NewManager(kubeClient client.Interface) Manager {
// isStatusEqual returns true if the given pod statuses are equal, false otherwise. // isStatusEqual returns true if the given pod statuses are equal, false otherwise.
// This method sorts container statuses so order does not affect equality. // This method sorts container statuses so order does not affect equality.
func isStatusEqual(oldStatus, status *api.PodStatus) bool { func isStatusEqual(oldStatus, status *api.PodStatus) bool {
sort.Sort(kubeletTypes.SortedContainerStatuses(status.ContainerStatuses)) sort.Sort(kubetypes.SortedContainerStatuses(status.ContainerStatuses))
sort.Sort(kubeletTypes.SortedContainerStatuses(oldStatus.ContainerStatuses)) sort.Sort(kubetypes.SortedContainerStatuses(oldStatus.ContainerStatuses))
// TODO: More sophisticated equality checking. // TODO: More sophisticated equality checking.
return reflect.DeepEqual(status, oldStatus) return reflect.DeepEqual(status, oldStatus)