...
1
16
17 package conditions
18
19 import (
20 "fmt"
21
22 "k8s.io/api/core/v1"
23 "k8s.io/apimachinery/pkg/api/errors"
24 "k8s.io/apimachinery/pkg/runtime/schema"
25 "k8s.io/apimachinery/pkg/watch"
26 )
27
28
29
30 var ErrPodCompleted = fmt.Errorf("pod ran to completion")
31
32
33
34 func PodRunning(event watch.Event) (bool, error) {
35 switch event.Type {
36 case watch.Deleted:
37 return false, errors.NewNotFound(schema.GroupResource{Resource: "pods"}, "")
38 }
39 switch t := event.Object.(type) {
40 case *v1.Pod:
41 switch t.Status.Phase {
42 case v1.PodRunning:
43 return true, nil
44 case v1.PodFailed, v1.PodSucceeded:
45 return false, ErrPodCompleted
46 }
47 }
48 return false, nil
49 }
50
51
52
53 func PodCompleted(event watch.Event) (bool, error) {
54 switch event.Type {
55 case watch.Deleted:
56 return false, errors.NewNotFound(schema.GroupResource{Resource: "pods"}, "")
57 }
58 switch t := event.Object.(type) {
59 case *v1.Pod:
60 switch t.Status.Phase {
61 case v1.PodFailed, v1.PodSucceeded:
62 return true, nil
63 }
64 }
65 return false, nil
66 }
67
View as plain text