mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Move ConvertPodStatusToRunningPod back to the kubelet/container package
This avoids unnecessary imports between of kuberuntime from dockertools/rkt, which implements the same kubecontainer.Runtime interface.
This commit is contained in:
		@@ -20,16 +20,17 @@ import (
 | 
				
			|||||||
	"hash/adler32"
 | 
						"hash/adler32"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/golang/glog"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
 | 
						runtimeApi "k8s.io/kubernetes/pkg/kubelet/api/v1alpha1/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/util/format"
 | 
						"k8s.io/kubernetes/pkg/kubelet/util/format"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/types"
 | 
						"k8s.io/kubernetes/pkg/types"
 | 
				
			||||||
	hashutil "k8s.io/kubernetes/pkg/util/hash"
 | 
						hashutil "k8s.io/kubernetes/pkg/util/hash"
 | 
				
			||||||
	"k8s.io/kubernetes/third_party/forked/golang/expansion"
 | 
						"k8s.io/kubernetes/third_party/forked/golang/expansion"
 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/golang/glog"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HandlerRunner runs a lifecycle handler for a container.
 | 
					// HandlerRunner runs a lifecycle handler for a container.
 | 
				
			||||||
@@ -166,3 +167,50 @@ func (irecorder *innerEventRecorder) PastEventf(object runtime.Object, timestamp
 | 
				
			|||||||
func IsHostNetworkPod(pod *api.Pod) bool {
 | 
					func IsHostNetworkPod(pod *api.Pod) bool {
 | 
				
			||||||
	return pod.Spec.SecurityContext != nil && pod.Spec.SecurityContext.HostNetwork
 | 
						return pod.Spec.SecurityContext != nil && pod.Spec.SecurityContext.HostNetwork
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO(random-liu): Convert PodStatus to running Pod, should be deprecated soon
 | 
				
			||||||
 | 
					func ConvertPodStatusToRunningPod(runtimeName string, podStatus *PodStatus) Pod {
 | 
				
			||||||
 | 
						runningPod := Pod{
 | 
				
			||||||
 | 
							ID:        podStatus.ID,
 | 
				
			||||||
 | 
							Name:      podStatus.Name,
 | 
				
			||||||
 | 
							Namespace: podStatus.Namespace,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for _, containerStatus := range podStatus.ContainerStatuses {
 | 
				
			||||||
 | 
							if containerStatus.State != ContainerStateRunning {
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							container := &Container{
 | 
				
			||||||
 | 
								ID:      containerStatus.ID,
 | 
				
			||||||
 | 
								Name:    containerStatus.Name,
 | 
				
			||||||
 | 
								Image:   containerStatus.Image,
 | 
				
			||||||
 | 
								ImageID: containerStatus.ImageID,
 | 
				
			||||||
 | 
								Hash:    containerStatus.Hash,
 | 
				
			||||||
 | 
								State:   containerStatus.State,
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							runningPod.Containers = append(runningPod.Containers, container)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Populate sandboxes in kubecontainer.Pod
 | 
				
			||||||
 | 
						for _, sandbox := range podStatus.SandboxStatuses {
 | 
				
			||||||
 | 
							runningPod.Sandboxes = append(runningPod.Sandboxes, &Container{
 | 
				
			||||||
 | 
								ID:    ContainerID{Type: runtimeName, ID: *sandbox.Id},
 | 
				
			||||||
 | 
								State: SandboxToContainerState(*sandbox.State),
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return runningPod
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// sandboxToContainerState converts runtimeApi.PodSandboxState to
 | 
				
			||||||
 | 
					// kubecontainer.ContainerState.
 | 
				
			||||||
 | 
					// This is only needed because we need to return sandboxes as if they were
 | 
				
			||||||
 | 
					// kubecontainer.Containers to avoid substantial changes to PLEG.
 | 
				
			||||||
 | 
					// TODO: Remove this once it becomes obsolete.
 | 
				
			||||||
 | 
					func SandboxToContainerState(state runtimeApi.PodSandBoxState) ContainerState {
 | 
				
			||||||
 | 
						switch state {
 | 
				
			||||||
 | 
						case runtimeApi.PodSandBoxState_READY:
 | 
				
			||||||
 | 
							return ContainerStateRunning
 | 
				
			||||||
 | 
						case runtimeApi.PodSandBoxState_NOTREADY:
 | 
				
			||||||
 | 
							return ContainerStateExited
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ContainerStateUnknown
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,6 @@ import (
 | 
				
			|||||||
	kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
 | 
						kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/events"
 | 
						"k8s.io/kubernetes/pkg/kubelet/events"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/images"
 | 
						"k8s.io/kubernetes/pkg/kubelet/images"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/kuberuntime"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/lifecycle"
 | 
						"k8s.io/kubernetes/pkg/kubelet/lifecycle"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/metrics"
 | 
						"k8s.io/kubernetes/pkg/kubelet/metrics"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/network"
 | 
						"k8s.io/kubernetes/pkg/kubelet/network"
 | 
				
			||||||
@@ -2052,7 +2051,7 @@ func (dm *DockerManager) SyncPod(pod *api.Pod, _ api.PodStatus, podStatus *kubec
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		// Killing phase: if we want to start new infra container, or nothing is running kill everything (including infra container)
 | 
							// Killing phase: if we want to start new infra container, or nothing is running kill everything (including infra container)
 | 
				
			||||||
		// TODO(random-liu): We'll use pod status directly in the future
 | 
							// TODO(random-liu): We'll use pod status directly in the future
 | 
				
			||||||
		killResult := dm.killPodWithSyncResult(pod, kuberuntime.ConvertPodStatusToRunningPod(dm.Type(), podStatus), nil)
 | 
							killResult := dm.killPodWithSyncResult(pod, kubecontainer.ConvertPodStatusToRunningPod(dm.Type(), podStatus), nil)
 | 
				
			||||||
		result.AddPodSyncResult(killResult)
 | 
							result.AddPodSyncResult(killResult)
 | 
				
			||||||
		if killResult.Error() != nil {
 | 
							if killResult.Error() != nil {
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1709,7 +1709,7 @@ func (kl *Kubelet) killPod(pod *api.Pod, runningPod *kubecontainer.Pod, status *
 | 
				
			|||||||
	if runningPod != nil {
 | 
						if runningPod != nil {
 | 
				
			||||||
		p = *runningPod
 | 
							p = *runningPod
 | 
				
			||||||
	} else if status != nil {
 | 
						} else if status != nil {
 | 
				
			||||||
		p = kuberuntime.ConvertPodStatusToRunningPod(kl.GetRuntime().Type(), status)
 | 
							p = kubecontainer.ConvertPodStatusToRunningPod(kl.GetRuntime().Type(), status)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return kl.containerRuntime.KillPod(pod, p, gracePeriodOverride)
 | 
						return kl.containerRuntime.KillPod(pod, p, gracePeriodOverride)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,54 +77,6 @@ func toKubeContainerState(state runtimeApi.ContainerState) kubecontainer.Contain
 | 
				
			|||||||
	return kubecontainer.ContainerStateUnknown
 | 
						return kubecontainer.ContainerStateUnknown
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// sandboxToKubeContainerState converts runtimeApi.PodSandboxState to
 | 
					 | 
				
			||||||
// kubecontainer.ContainerState.
 | 
					 | 
				
			||||||
// This is only needed because we need to return sandboxes as if they were
 | 
					 | 
				
			||||||
// kubecontainer.Containers to avoid substantial changes to PLEG.
 | 
					 | 
				
			||||||
// TODO: Remove this once it becomes obsolete.
 | 
					 | 
				
			||||||
func sandboxToKubeContainerState(state runtimeApi.PodSandBoxState) kubecontainer.ContainerState {
 | 
					 | 
				
			||||||
	switch state {
 | 
					 | 
				
			||||||
	case runtimeApi.PodSandBoxState_READY:
 | 
					 | 
				
			||||||
		return kubecontainer.ContainerStateRunning
 | 
					 | 
				
			||||||
	case runtimeApi.PodSandBoxState_NOTREADY:
 | 
					 | 
				
			||||||
		return kubecontainer.ContainerStateExited
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return kubecontainer.ContainerStateUnknown
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// TODO(random-liu): Convert PodStatus to running Pod, should be deprecated soon
 | 
					 | 
				
			||||||
func ConvertPodStatusToRunningPod(runtimeName string, podStatus *kubecontainer.PodStatus) kubecontainer.Pod {
 | 
					 | 
				
			||||||
	runningPod := kubecontainer.Pod{
 | 
					 | 
				
			||||||
		ID:        podStatus.ID,
 | 
					 | 
				
			||||||
		Name:      podStatus.Name,
 | 
					 | 
				
			||||||
		Namespace: podStatus.Namespace,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	for _, containerStatus := range podStatus.ContainerStatuses {
 | 
					 | 
				
			||||||
		if containerStatus.State != kubecontainer.ContainerStateRunning {
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		container := &kubecontainer.Container{
 | 
					 | 
				
			||||||
			ID:      containerStatus.ID,
 | 
					 | 
				
			||||||
			Name:    containerStatus.Name,
 | 
					 | 
				
			||||||
			Image:   containerStatus.Image,
 | 
					 | 
				
			||||||
			ImageID: containerStatus.ImageID,
 | 
					 | 
				
			||||||
			Hash:    containerStatus.Hash,
 | 
					 | 
				
			||||||
			State:   containerStatus.State,
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		runningPod.Containers = append(runningPod.Containers, container)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Need to place a sandbox in the Pod as well.
 | 
					 | 
				
			||||||
	for _, sandbox := range podStatus.SandboxStatuses {
 | 
					 | 
				
			||||||
		runningPod.Sandboxes = append(runningPod.Sandboxes, &kubecontainer.Container{
 | 
					 | 
				
			||||||
			ID:    kubecontainer.ContainerID{Type: runtimeName, ID: *sandbox.Id},
 | 
					 | 
				
			||||||
			State: sandboxToKubeContainerState(*sandbox.State),
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return runningPod
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// toRuntimeProtocol converts api.Protocol to runtimeApi.Protocol.
 | 
					// toRuntimeProtocol converts api.Protocol to runtimeApi.Protocol.
 | 
				
			||||||
func toRuntimeProtocol(protocol api.Protocol) runtimeApi.Protocol {
 | 
					func toRuntimeProtocol(protocol api.Protocol) runtimeApi.Protocol {
 | 
				
			||||||
	switch protocol {
 | 
						switch protocol {
 | 
				
			||||||
@@ -166,7 +118,7 @@ func (m *kubeGenericRuntimeManager) sandboxToKubeContainer(s *runtimeApi.PodSand
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return &kubecontainer.Container{
 | 
						return &kubecontainer.Container{
 | 
				
			||||||
		ID:    kubecontainer.ContainerID{Type: m.runtimeName, ID: s.GetId()},
 | 
							ID:    kubecontainer.ContainerID{Type: m.runtimeName, ID: s.GetId()},
 | 
				
			||||||
		State: sandboxToKubeContainerState(s.GetState()),
 | 
							State: kubecontainer.SandboxToContainerState(s.GetState()),
 | 
				
			||||||
	}, nil
 | 
						}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -487,7 +487,7 @@ func (m *kubeGenericRuntimeManager) SyncPod(pod *api.Pod, _ api.PodStatus, podSt
 | 
				
			|||||||
			glog.V(4).Infof("Stopping PodSandbox for %q, will start new one", format.Pod(pod))
 | 
								glog.V(4).Infof("Stopping PodSandbox for %q, will start new one", format.Pod(pod))
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		killResult := m.killPodWithSyncResult(pod, ConvertPodStatusToRunningPod(m.runtimeName, podStatus), nil)
 | 
							killResult := m.killPodWithSyncResult(pod, kubecontainer.ConvertPodStatusToRunningPod(m.runtimeName, podStatus), nil)
 | 
				
			||||||
		result.AddPodSyncResult(killResult)
 | 
							result.AddPodSyncResult(killResult)
 | 
				
			||||||
		if killResult.Error() != nil {
 | 
							if killResult.Error() != nil {
 | 
				
			||||||
			glog.Errorf("killPodWithSyncResult failed: %v", killResult.Error())
 | 
								glog.Errorf("killPodWithSyncResult failed: %v", killResult.Error())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,7 +47,6 @@ import (
 | 
				
			|||||||
	kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
 | 
						kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/events"
 | 
						"k8s.io/kubernetes/pkg/kubelet/events"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/images"
 | 
						"k8s.io/kubernetes/pkg/kubelet/images"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/kuberuntime"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/leaky"
 | 
						"k8s.io/kubernetes/pkg/kubelet/leaky"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/lifecycle"
 | 
						"k8s.io/kubernetes/pkg/kubelet/lifecycle"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/network"
 | 
						"k8s.io/kubernetes/pkg/kubelet/network"
 | 
				
			||||||
@@ -1713,7 +1712,7 @@ func (r *Runtime) SyncPod(pod *api.Pod, podStatus api.PodStatus, internalPodStat
 | 
				
			|||||||
	// TODO: (random-liu) Stop using running pod in SyncPod()
 | 
						// TODO: (random-liu) Stop using running pod in SyncPod()
 | 
				
			||||||
	// TODO: (random-liu) Rename podStatus to apiPodStatus, rename internalPodStatus to podStatus, and use new pod status as much as possible,
 | 
						// TODO: (random-liu) Rename podStatus to apiPodStatus, rename internalPodStatus to podStatus, and use new pod status as much as possible,
 | 
				
			||||||
	// we may stop using apiPodStatus someday.
 | 
						// we may stop using apiPodStatus someday.
 | 
				
			||||||
	runningPod := kuberuntime.ConvertPodStatusToRunningPod(r.Type(), internalPodStatus)
 | 
						runningPod := kubecontainer.ConvertPodStatusToRunningPod(r.Type(), internalPodStatus)
 | 
				
			||||||
	// Add references to all containers.
 | 
						// Add references to all containers.
 | 
				
			||||||
	unidentifiedContainers := make(map[kubecontainer.ContainerID]*kubecontainer.Container)
 | 
						unidentifiedContainers := make(map[kubecontainer.ContainerID]*kubecontainer.Container)
 | 
				
			||||||
	for _, c := range runningPod.Containers {
 | 
						for _, c := range runningPod.Containers {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user