Skip to content

Commit 94b0a93

Browse files
nervghalexey-igrychev
authored andcommitted
feat(tracker): pass DynamicReadinessTrackerOptions.IgnoreLogs option down to pod tracker
Signed-off-by: Alexandr Zaytsev <[email protected]>
1 parent 88394a2 commit 94b0a93

File tree

9 files changed

+31
-3
lines changed

9 files changed

+31
-3
lines changed

pkg/tracker/daemonset/tracker.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ type Tracker struct {
5555
PodLogChunk chan *replicaset.ReplicaSetPodLogChunk
5656
PodError chan PodErrorReport
5757

58+
ignoreLogs bool
5859
ignoreReadinessProbeFailsByContainerName map[string]time.Duration
5960

6061
lastObject *appsv1.DaemonSet
@@ -87,6 +88,7 @@ func NewTracker(name, namespace string, kube kubernetes.Interface, opts tracker.
8788
podStatuses: make(map[string]pod.PodStatus),
8889
podGenerations: make(map[string]string),
8990

91+
ignoreLogs: opts.IgnoreLogs,
9092
ignoreReadinessProbeFailsByContainerName: opts.IgnoreReadinessProbeFailsByContainerName,
9193

9294
Added: make(chan DaemonSetStatus, 1),
@@ -335,6 +337,7 @@ func (d *Tracker) runPodTracker(ctx context.Context, podName string) error {
335337

336338
newCtx, cancelPodCtx := context.WithCancelCause(ctx)
337339
podTracker := pod.NewTracker(podName, d.Namespace, d.Kube, pod.Options{
340+
IgnoreLogs: d.ignoreLogs,
338341
IgnoreReadinessProbeFailsByContainerName: d.ignoreReadinessProbeFailsByContainerName,
339342
})
340343
if !d.LogsFromTime.IsZero() {

pkg/tracker/deployment/tracker.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ type Tracker struct {
5252
podStatuses map[string]pod.PodStatus
5353
rsNameByPod map[string]string
5454

55+
ignoreLogs bool
5556
ignoreReadinessProbeFailsByContainerName map[string]time.Duration
5657

5758
TrackedPodsNames []string
@@ -108,6 +109,7 @@ func NewTracker(name, namespace string, kube kubernetes.Interface, opts tracker.
108109
podStatuses: make(map[string]pod.PodStatus),
109110
rsNameByPod: make(map[string]string),
110111

112+
ignoreLogs: opts.IgnoreLogs,
111113
ignoreReadinessProbeFailsByContainerName: opts.IgnoreReadinessProbeFailsByContainerName,
112114

113115
errors: make(chan error, 1),
@@ -468,6 +470,7 @@ func (d *Tracker) runPodTracker(_ctx context.Context, podName, rsName string) er
468470

469471
newCtx, cancelPodCtx := context.WithCancelCause(_ctx)
470472
podTracker := pod.NewTracker(podName, d.Namespace, d.Kube, pod.Options{
473+
IgnoreLogs: d.ignoreLogs,
471474
IgnoreReadinessProbeFailsByContainerName: d.ignoreReadinessProbeFailsByContainerName,
472475
})
473476
if !d.LogsFromTime.IsZero() {

pkg/tracker/job/tracker.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ type Tracker struct {
5959
failedReason string
6060
podStatuses map[string]pod.PodStatus
6161

62+
ignoreLogs bool
6263
ignoreReadinessProbeFailsByContainerName map[string]time.Duration
6364

6465
objectAdded chan *batchv1.Job
@@ -97,6 +98,7 @@ func NewTracker(name, namespace string, kube kubernetes.Interface, opts tracker.
9798

9899
podStatuses: make(map[string]pod.PodStatus),
99100

101+
ignoreLogs: opts.IgnoreLogs,
100102
ignoreReadinessProbeFailsByContainerName: opts.IgnoreReadinessProbeFailsByContainerName,
101103

102104
State: tracker.Initial,
@@ -355,6 +357,7 @@ func (job *Tracker) runPodTracker(_ctx context.Context, podName string) error {
355357

356358
newCtx, cancelPodCtx := context.WithCancelCause(_ctx)
357359
podTracker := pod.NewTracker(podName, job.Namespace, job.Kube, pod.Options{
360+
IgnoreLogs: job.ignoreLogs,
358361
IgnoreReadinessProbeFailsByContainerName: job.ignoreReadinessProbeFailsByContainerName,
359362
})
360363
if !job.LogsFromTime.IsZero() {

pkg/tracker/pod/feed.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ func (f *feed) Track(name, namespace string, kube kubernetes.Interface, opts tra
8989
defer cancel()
9090

9191
pod := NewTracker(name, namespace, kube, Options{
92-
opts.IgnoreReadinessProbeFailsByContainerName,
92+
IgnoreLogs: opts.IgnoreLogs,
93+
IgnoreReadinessProbeFailsByContainerName: opts.IgnoreReadinessProbeFailsByContainerName,
9394
})
9495

9596
go func() {

pkg/tracker/pod/tracker.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"strings"
99
"time"
1010

11+
"github.com/samber/lo"
1112
corev1 "k8s.io/api/core/v1"
1213
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1314
"k8s.io/apimachinery/pkg/fields"
@@ -78,6 +79,8 @@ type Tracker struct {
7879
TrackedContainers []string
7980
LogsFromTime time.Time
8081

82+
ignoreLogs bool
83+
8184
readinessProbes map[string]*ReadinessProbe
8285
ignoreReadinessProbeFailsByContainerName map[string]time.Duration
8386

@@ -95,6 +98,7 @@ type Tracker struct {
9598

9699
type Options struct {
97100
IgnoreReadinessProbeFailsByContainerName map[string]time.Duration
101+
IgnoreLogs bool
98102
}
99103

100104
func NewTracker(name, namespace string, kube kubernetes.Interface, opts Options) *Tracker {
@@ -122,6 +126,8 @@ func NewTracker(name, namespace string, kube kubernetes.Interface, opts Options)
122126
ContainerTrackerStateChanges: make(map[string]chan tracker.TrackerState),
123127
LogsFromTime: time.Time{},
124128

129+
ignoreLogs: opts.IgnoreLogs,
130+
125131
readinessProbes: make(map[string]*ReadinessProbe),
126132
ignoreReadinessProbeFailsByContainerName: opts.IgnoreReadinessProbeFailsByContainerName,
127133

@@ -392,7 +398,7 @@ func (pod *Tracker) handleContainersState(object *corev1.Pod) error {
392398
for _, cs := range allContainerStatuses {
393399
if cs.State.Running != nil || cs.State.Terminated != nil {
394400
oldState := pod.ContainerTrackerStates[cs.Name]
395-
newState := tracker.FollowingContainerLogs
401+
newState := lo.Ternary(pod.ignoreLogs, tracker.ContainerTrackerDone, tracker.FollowingContainerLogs)
396402

397403
if oldState != newState {
398404
pod.ContainerTrackerStates[cs.Name] = newState
@@ -409,6 +415,10 @@ func (pod *Tracker) handleContainersState(object *corev1.Pod) error {
409415
}
410416

411417
func (pod *Tracker) followContainerLogs(ctx context.Context, containerName string) error {
418+
if pod.ignoreLogs {
419+
return nil
420+
}
421+
412422
logOpts := &corev1.PodLogOptions{
413423
Container: containerName,
414424
Timestamps: true,

pkg/tracker/statefulset/tracker.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ type Tracker struct {
4646
podStatuses map[string]pod.PodStatus
4747
podRevisions map[string]string
4848

49+
ignoreLogs bool
4950
ignoreReadinessProbeFailsByContainerName map[string]time.Duration
5051

5152
TrackedPodsNames []string
@@ -93,6 +94,7 @@ func NewTracker(name, namespace string, kube kubernetes.Interface, opts tracker.
9394
PodLogChunk: make(chan *replicaset.ReplicaSetPodLogChunk, 1000),
9495
PodError: make(chan PodErrorReport),
9596

97+
ignoreLogs: opts.IgnoreLogs,
9698
ignoreReadinessProbeFailsByContainerName: opts.IgnoreReadinessProbeFailsByContainerName,
9799

98100
podStatuses: make(map[string]pod.PodStatus),
@@ -341,6 +343,7 @@ func (d *Tracker) runPodTracker(_ctx context.Context, podName string) error {
341343

342344
newCtx, cancelPodCtx := context.WithCancelCause(_ctx)
343345
podTracker := pod.NewTracker(podName, d.Namespace, d.Kube, pod.Options{
346+
IgnoreLogs: d.ignoreLogs,
344347
IgnoreReadinessProbeFailsByContainerName: d.ignoreReadinessProbeFailsByContainerName,
345348
})
346349
if !d.LogsFromTime.IsZero() {

pkg/tracker/tracker.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ type Options struct {
4040
ParentContext context.Context
4141
Timeout time.Duration
4242
LogsFromTime time.Time
43+
IgnoreLogs bool
4344
IgnoreReadinessProbeFailsByContainerName map[string]time.Duration
4445
}
4546

pkg/trackers/dyntracker/dynamic_readiness_tracker.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,15 @@ func NewDynamicReadinessTracker(
108108
ParentContext: ctx,
109109
Timeout: timeout,
110110
LogsFromTime: captureLogsFromTime,
111+
IgnoreLogs: opts.IgnoreLogs,
111112
IgnoreReadinessProbeFailsByContainerName: ignoreReadinessProbeFailsByContainerName,
112113
})
113114
case schema.GroupKind{Group: "apps", Kind: "DaemonSet"}, schema.GroupKind{Group: "extensions", Kind: "DaemonSet"}:
114115
tracker = daemonset.NewTracker(resourceName, resourceNamespace, staticClient, commontracker.Options{
115116
ParentContext: ctx,
116117
Timeout: timeout,
117118
LogsFromTime: captureLogsFromTime,
119+
IgnoreLogs: opts.IgnoreLogs,
118120
IgnoreReadinessProbeFailsByContainerName: ignoreReadinessProbeFailsByContainerName,
119121
})
120122
case schema.GroupKind{Group: "flagger.app", Kind: "Canary"}:
@@ -129,13 +131,15 @@ func NewDynamicReadinessTracker(
129131
ParentContext: ctx,
130132
Timeout: timeout,
131133
LogsFromTime: captureLogsFromTime,
134+
IgnoreLogs: opts.IgnoreLogs,
132135
IgnoreReadinessProbeFailsByContainerName: ignoreReadinessProbeFailsByContainerName,
133136
})
134137
case schema.GroupKind{Group: "batch", Kind: "Job"}:
135138
tracker = job.NewTracker(resourceName, resourceNamespace, staticClient, commontracker.Options{
136139
ParentContext: ctx,
137140
Timeout: timeout,
138141
LogsFromTime: captureLogsFromTime,
142+
IgnoreLogs: opts.IgnoreLogs,
139143
IgnoreReadinessProbeFailsByContainerName: ignoreReadinessProbeFailsByContainerName,
140144
})
141145
default:

playground/table/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import (
44
"context"
55

66
"github.com/gookit/color"
7-
"github.com/werf/logboek"
87

98
"github.com/werf/kubedog/pkg/utils"
9+
"github.com/werf/logboek"
1010
)
1111

1212
func main() {

0 commit comments

Comments
 (0)