mirror of https://github.com/k3s-io/k3s
fix
parent
24d84fa3fb
commit
26ab52a3cb
|
@ -23,6 +23,13 @@ import (
|
|||
"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
|
||||
// returns an unready condition.
|
||||
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{
|
||||
Type: v1.PodReady,
|
||||
Status: v1.ConditionFalse,
|
||||
Reason: "UnknownContainerStatuses",
|
||||
Reason: UnknownContainerStatuses,
|
||||
}
|
||||
}
|
||||
unknownContainers := []string{}
|
||||
|
@ -51,7 +58,7 @@ func GeneratePodReadyCondition(spec *v1.PodSpec, containerStatuses []v1.Containe
|
|||
return v1.PodCondition{
|
||||
Type: v1.PodReady,
|
||||
Status: v1.ConditionFalse,
|
||||
Reason: "PodCompleted",
|
||||
Reason: PodCompleted,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,7 +74,7 @@ func GeneratePodReadyCondition(spec *v1.PodSpec, containerStatuses []v1.Containe
|
|||
return v1.PodCondition{
|
||||
Type: v1.PodReady,
|
||||
Status: v1.ConditionFalse,
|
||||
Reason: "ContainersNotReady",
|
||||
Reason: ContainersNotReady,
|
||||
Message: unreadyMessage,
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +93,7 @@ func GeneratePodInitializedCondition(spec *v1.PodSpec, containerStatuses []v1.Co
|
|||
return v1.PodCondition{
|
||||
Type: v1.PodInitialized,
|
||||
Status: v1.ConditionFalse,
|
||||
Reason: "UnknownContainerStatuses",
|
||||
Reason: UnknownContainerStatuses,
|
||||
}
|
||||
}
|
||||
unknownContainers := []string{}
|
||||
|
@ -106,7 +113,7 @@ func GeneratePodInitializedCondition(spec *v1.PodSpec, containerStatuses []v1.Co
|
|||
return v1.PodCondition{
|
||||
Type: v1.PodInitialized,
|
||||
Status: v1.ConditionTrue,
|
||||
Reason: "PodCompleted",
|
||||
Reason: PodCompleted,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -122,7 +129,7 @@ func GeneratePodInitializedCondition(spec *v1.PodSpec, containerStatuses []v1.Co
|
|||
return v1.PodCondition{
|
||||
Type: v1.PodInitialized,
|
||||
Status: v1.ConditionFalse,
|
||||
Reason: "ContainersNotInitialized",
|
||||
Reason: ContainersNotInitialized,
|
||||
Message: unreadyMessage,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import (
|
|||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
)
|
||||
|
||||
|
@ -34,7 +35,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||
spec: nil,
|
||||
containerStatuses: nil,
|
||||
podPhase: v1.PodRunning,
|
||||
expected: getReadyCondition(false, "UnknownContainerStatuses", ""),
|
||||
expected: getReadyCondition(false, UnknownContainerStatuses, ""),
|
||||
},
|
||||
{
|
||||
spec: &v1.PodSpec{},
|
||||
|
@ -50,7 +51,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||
},
|
||||
containerStatuses: []v1.ContainerStatus{},
|
||||
podPhase: v1.PodRunning,
|
||||
expected: getReadyCondition(false, "ContainersNotReady", "containers with unknown status: [1234]"),
|
||||
expected: getReadyCondition(false, ContainersNotReady, "containers with unknown status: [1234]"),
|
||||
},
|
||||
{
|
||||
spec: &v1.PodSpec{
|
||||
|
@ -77,7 +78,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||
getReadyStatus("1234"),
|
||||
},
|
||||
podPhase: v1.PodRunning,
|
||||
expected: getReadyCondition(false, "ContainersNotReady", "containers with unknown status: [5678]"),
|
||||
expected: getReadyCondition(false, ContainersNotReady, "containers with unknown status: [5678]"),
|
||||
},
|
||||
{
|
||||
spec: &v1.PodSpec{
|
||||
|
@ -91,7 +92,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||
getNotReadyStatus("5678"),
|
||||
},
|
||||
podPhase: v1.PodRunning,
|
||||
expected: getReadyCondition(false, "ContainersNotReady", "containers with unready status: [5678]"),
|
||||
expected: getReadyCondition(false, ContainersNotReady, "containers with unready status: [5678]"),
|
||||
},
|
||||
{
|
||||
spec: &v1.PodSpec{
|
||||
|
@ -103,7 +104,7 @@ func TestGeneratePodReadyCondition(t *testing.T) {
|
|||
getNotReadyStatus("1234"),
|
||||
},
|
||||
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 {
|
||||
status := v1.ConditionFalse
|
||||
if ready {
|
||||
|
|
Loading…
Reference in New Issue