mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 09:22:44 +00:00
fix
This commit is contained in:
parent
24d84fa3fb
commit
26ab52a3cb
@ -23,6 +23,13 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
UnknownContainerStatuses = "UnknownContainerStatuses"
|
||||||
|
PodCompleted = "PodCompleted"
|
||||||
|
ContainersNotReady = "ContainersNotReady"
|
||||||
|
ContainersNotInitialized = "ContainersNotInitialized"
|
||||||
|
)
|
||||||
|
|
||||||
// GeneratePodReadyCondition returns ready condition if all containers in a pod are ready, else it
|
// GeneratePodReadyCondition returns ready condition if all containers in a pod are ready, else it
|
||||||
// returns an unready condition.
|
// returns an unready condition.
|
||||||
func GeneratePodReadyCondition(spec *v1.PodSpec, containerStatuses []v1.ContainerStatus, podPhase v1.PodPhase) v1.PodCondition {
|
func GeneratePodReadyCondition(spec *v1.PodSpec, containerStatuses []v1.ContainerStatus, podPhase v1.PodPhase) v1.PodCondition {
|
||||||
@ -31,7 +38,7 @@ func GeneratePodReadyCondition(spec *v1.PodSpec, containerStatuses []v1.Containe
|
|||||||
return v1.PodCondition{
|
return v1.PodCondition{
|
||||||
Type: v1.PodReady,
|
Type: v1.PodReady,
|
||||||
Status: v1.ConditionFalse,
|
Status: v1.ConditionFalse,
|
||||||
Reason: "UnknownContainerStatuses",
|
Reason: UnknownContainerStatuses,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unknownContainers := []string{}
|
unknownContainers := []string{}
|
||||||
@ -51,7 +58,7 @@ func GeneratePodReadyCondition(spec *v1.PodSpec, containerStatuses []v1.Containe
|
|||||||
return v1.PodCondition{
|
return v1.PodCondition{
|
||||||
Type: v1.PodReady,
|
Type: v1.PodReady,
|
||||||
Status: v1.ConditionFalse,
|
Status: v1.ConditionFalse,
|
||||||
Reason: "PodCompleted",
|
Reason: PodCompleted,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +74,7 @@ func GeneratePodReadyCondition(spec *v1.PodSpec, containerStatuses []v1.Containe
|
|||||||
return v1.PodCondition{
|
return v1.PodCondition{
|
||||||
Type: v1.PodReady,
|
Type: v1.PodReady,
|
||||||
Status: v1.ConditionFalse,
|
Status: v1.ConditionFalse,
|
||||||
Reason: "ContainersNotReady",
|
Reason: ContainersNotReady,
|
||||||
Message: unreadyMessage,
|
Message: unreadyMessage,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -86,7 +93,7 @@ func GeneratePodInitializedCondition(spec *v1.PodSpec, containerStatuses []v1.Co
|
|||||||
return v1.PodCondition{
|
return v1.PodCondition{
|
||||||
Type: v1.PodInitialized,
|
Type: v1.PodInitialized,
|
||||||
Status: v1.ConditionFalse,
|
Status: v1.ConditionFalse,
|
||||||
Reason: "UnknownContainerStatuses",
|
Reason: UnknownContainerStatuses,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unknownContainers := []string{}
|
unknownContainers := []string{}
|
||||||
@ -106,7 +113,7 @@ func GeneratePodInitializedCondition(spec *v1.PodSpec, containerStatuses []v1.Co
|
|||||||
return v1.PodCondition{
|
return v1.PodCondition{
|
||||||
Type: v1.PodInitialized,
|
Type: v1.PodInitialized,
|
||||||
Status: v1.ConditionTrue,
|
Status: v1.ConditionTrue,
|
||||||
Reason: "PodCompleted",
|
Reason: PodCompleted,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +129,7 @@ func GeneratePodInitializedCondition(spec *v1.PodSpec, containerStatuses []v1.Co
|
|||||||
return v1.PodCondition{
|
return v1.PodCondition{
|
||||||
Type: v1.PodInitialized,
|
Type: v1.PodInitialized,
|
||||||
Status: v1.ConditionFalse,
|
Status: v1.ConditionFalse,
|
||||||
Reason: "ContainersNotInitialized",
|
Reason: ContainersNotInitialized,
|
||||||
Message: unreadyMessage,
|
Message: unreadyMessage,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||||||
spec: nil,
|
spec: nil,
|
||||||
containerStatuses: nil,
|
containerStatuses: nil,
|
||||||
podPhase: v1.PodRunning,
|
podPhase: v1.PodRunning,
|
||||||
expected: getReadyCondition(false, "UnknownContainerStatuses", ""),
|
expected: getReadyCondition(false, UnknownContainerStatuses, ""),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
spec: &v1.PodSpec{},
|
spec: &v1.PodSpec{},
|
||||||
@ -50,7 +51,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||||||
},
|
},
|
||||||
containerStatuses: []v1.ContainerStatus{},
|
containerStatuses: []v1.ContainerStatus{},
|
||||||
podPhase: v1.PodRunning,
|
podPhase: v1.PodRunning,
|
||||||
expected: getReadyCondition(false, "ContainersNotReady", "containers with unknown status: [1234]"),
|
expected: getReadyCondition(false, ContainersNotReady, "containers with unknown status: [1234]"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
spec: &v1.PodSpec{
|
spec: &v1.PodSpec{
|
||||||
@ -77,7 +78,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||||||
getReadyStatus("1234"),
|
getReadyStatus("1234"),
|
||||||
},
|
},
|
||||||
podPhase: v1.PodRunning,
|
podPhase: v1.PodRunning,
|
||||||
expected: getReadyCondition(false, "ContainersNotReady", "containers with unknown status: [5678]"),
|
expected: getReadyCondition(false, ContainersNotReady, "containers with unknown status: [5678]"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
spec: &v1.PodSpec{
|
spec: &v1.PodSpec{
|
||||||
@ -91,7 +92,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||||||
getNotReadyStatus("5678"),
|
getNotReadyStatus("5678"),
|
||||||
},
|
},
|
||||||
podPhase: v1.PodRunning,
|
podPhase: v1.PodRunning,
|
||||||
expected: getReadyCondition(false, "ContainersNotReady", "containers with unready status: [5678]"),
|
expected: getReadyCondition(false, ContainersNotReady, "containers with unready status: [5678]"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
spec: &v1.PodSpec{
|
spec: &v1.PodSpec{
|
||||||
@ -103,7 +104,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||||||
getNotReadyStatus("1234"),
|
getNotReadyStatus("1234"),
|
||||||
},
|
},
|
||||||
podPhase: v1.PodSucceeded,
|
podPhase: v1.PodSucceeded,
|
||||||
expected: getReadyCondition(false, "PodCompleted", ""),
|
expected: getReadyCondition(false, PodCompleted, ""),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,6 +116,110 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGeneratePodInitializedCondition(t *testing.T) {
|
||||||
|
noInitContainer := &v1.PodSpec{}
|
||||||
|
oneInitContainer := &v1.PodSpec{
|
||||||
|
InitContainers: []v1.Container{
|
||||||
|
{Name: "1234"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
twoInitContainer := &v1.PodSpec{
|
||||||
|
InitContainers: []v1.Container{
|
||||||
|
{Name: "1234"},
|
||||||
|
{Name: "5678"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
spec *v1.PodSpec
|
||||||
|
containerStatuses []v1.ContainerStatus
|
||||||
|
podPhase v1.PodPhase
|
||||||
|
expected v1.PodCondition
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
spec: twoInitContainer,
|
||||||
|
containerStatuses: nil,
|
||||||
|
podPhase: v1.PodRunning,
|
||||||
|
expected: v1.PodCondition{
|
||||||
|
Status: v1.ConditionFalse,
|
||||||
|
Reason: UnknownContainerStatuses,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
spec: noInitContainer,
|
||||||
|
containerStatuses: []v1.ContainerStatus{},
|
||||||
|
podPhase: v1.PodRunning,
|
||||||
|
expected: v1.PodCondition{
|
||||||
|
Status: v1.ConditionTrue,
|
||||||
|
Reason: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
spec: oneInitContainer,
|
||||||
|
containerStatuses: []v1.ContainerStatus{},
|
||||||
|
podPhase: v1.PodRunning,
|
||||||
|
expected: v1.PodCondition{
|
||||||
|
Status: v1.ConditionFalse,
|
||||||
|
Reason: ContainersNotInitialized,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
spec: twoInitContainer,
|
||||||
|
containerStatuses: []v1.ContainerStatus{
|
||||||
|
getReadyStatus("1234"),
|
||||||
|
getReadyStatus("5678"),
|
||||||
|
},
|
||||||
|
podPhase: v1.PodRunning,
|
||||||
|
expected: v1.PodCondition{
|
||||||
|
Status: v1.ConditionTrue,
|
||||||
|
Reason: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
spec: twoInitContainer,
|
||||||
|
containerStatuses: []v1.ContainerStatus{
|
||||||
|
getReadyStatus("1234"),
|
||||||
|
},
|
||||||
|
podPhase: v1.PodRunning,
|
||||||
|
expected: v1.PodCondition{
|
||||||
|
Status: v1.ConditionFalse,
|
||||||
|
Reason: ContainersNotInitialized,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
spec: twoInitContainer,
|
||||||
|
containerStatuses: []v1.ContainerStatus{
|
||||||
|
getReadyStatus("1234"),
|
||||||
|
getNotReadyStatus("5678"),
|
||||||
|
},
|
||||||
|
podPhase: v1.PodRunning,
|
||||||
|
expected: v1.PodCondition{
|
||||||
|
Status: v1.ConditionFalse,
|
||||||
|
Reason: ContainersNotInitialized,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
spec: oneInitContainer,
|
||||||
|
containerStatuses: []v1.ContainerStatus{
|
||||||
|
getReadyStatus("1234"),
|
||||||
|
},
|
||||||
|
podPhase: v1.PodSucceeded,
|
||||||
|
expected: v1.PodCondition{
|
||||||
|
Status: v1.ConditionTrue,
|
||||||
|
Reason: PodCompleted,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
test.expected.Type = v1.PodInitialized
|
||||||
|
condition := GeneratePodInitializedCondition(test.spec, test.containerStatuses, test.podPhase)
|
||||||
|
assert.Equal(t, test.expected.Type, condition.Type)
|
||||||
|
assert.Equal(t, test.expected.Status, condition.Status)
|
||||||
|
assert.Equal(t, test.expected.Reason, condition.Reason)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func getReadyCondition(ready bool, reason, message string) v1.PodCondition {
|
func getReadyCondition(ready bool, reason, message string) v1.PodCondition {
|
||||||
status := v1.ConditionFalse
|
status := v1.ConditionFalse
|
||||||
if ready {
|
if ready {
|
||||||
|
Loading…
Reference in New Issue
Block a user