implement logger

Signed-off-by: Austin Abro <AustinAbro321@gmail.com>
pull/13604/head
Austin Abro 9 months ago
parent c26b44f651
commit 649475265d
No known key found for this signature in database
GPG Key ID: 92EB5159E403F9D6

@ -75,6 +75,7 @@ func (w *statusWaiter) waitForDelete(ctx context.Context, resourceList ResourceL
} }
eventCh := w.sw.Watch(cancelCtx, resources, watcher.Options{}) eventCh := w.sw.Watch(cancelCtx, resources, watcher.Options{})
statusCollector := collector.NewResourceStatusCollector(resources) statusCollector := collector.NewResourceStatusCollector(resources)
go logResource(ctx, resources, statusCollector, status.NotFoundStatus, w.log)
done := statusCollector.ListenWithObserver(eventCh, statusObserver(cancel, status.NotFoundStatus)) done := statusCollector.ListenWithObserver(eventCh, statusObserver(cancel, status.NotFoundStatus))
<-done <-done
@ -127,6 +128,7 @@ func (w *statusWaiter) wait(ctx context.Context, resourceList ResourceList, wait
} }
eventCh := w.sw.Watch(cancelCtx, resources, watcher.Options{}) eventCh := w.sw.Watch(cancelCtx, resources, watcher.Options{})
statusCollector := collector.NewResourceStatusCollector(resources) statusCollector := collector.NewResourceStatusCollector(resources)
go logResource(cancelCtx, resources, statusCollector, status.CurrentStatus, w.log)
done := statusCollector.ListenWithObserver(eventCh, statusObserver(cancel, status.CurrentStatus)) done := statusCollector.ListenWithObserver(eventCh, statusObserver(cancel, status.CurrentStatus))
<-done <-done
@ -165,3 +167,23 @@ func statusObserver(cancel context.CancelFunc, desired status.Status) collector.
} }
} }
} }
func logResource(ctx context.Context, resources []object.ObjMetadata, sc *collector.ResourceStatusCollector, desiredStatus status.Status, log func(string, ...interface{})) {
ticker := time.NewTicker(1 * time.Second)
defer ticker.Stop()
for {
select {
case <-ctx.Done():
return
case <-ticker.C:
for _, id := range resources {
rs := sc.ResourceStatuses[id]
if rs.Status != desiredStatus {
log("waiting for resource, name: %s, kind: %s, desired status: %s, actual status: %s\n", rs.Identifier.Name, rs.Identifier.GroupKind.Kind, desiredStatus, rs.Status)
// only log one resource to not overwhelm the logs
break
}
}
}
}
}

@ -19,6 +19,7 @@ package kube // import "helm.sh/helm/v3/pkg/kube"
import ( import (
"context" "context"
"errors" "errors"
"fmt"
"testing" "testing"
"time" "time"
@ -114,6 +115,9 @@ func getGVR(t *testing.T, mapper meta.RESTMapper, obj *unstructured.Unstructured
require.NoError(t, err) require.NoError(t, err)
return mapping.Resource return mapping.Resource
} }
func testLogger(message string, args ...interface{}) {
fmt.Printf(message, args...)
}
func TestStatusWaitForDelete(t *testing.T) { func TestStatusWaitForDelete(t *testing.T) {
t.Parallel() t.Parallel()
@ -151,7 +155,7 @@ func TestStatusWaitForDelete(t *testing.T) {
statusWatcher := watcher.NewDefaultStatusWatcher(fakeClient, fakeMapper) statusWatcher := watcher.NewDefaultStatusWatcher(fakeClient, fakeMapper)
statusWaiter := statusWaiter{ statusWaiter := statusWaiter{
sw: statusWatcher, sw: statusWatcher,
log: t.Logf, log: testLogger,
} }
createdObjs := []runtime.Object{} createdObjs := []runtime.Object{}
for _, objYaml := range tt.objToCreate { for _, objYaml := range tt.objToCreate {
@ -248,7 +252,7 @@ func TestStatusWait(t *testing.T) {
statusWatcher := watcher.NewDefaultStatusWatcher(fakeClient, fakeMapper) statusWatcher := watcher.NewDefaultStatusWatcher(fakeClient, fakeMapper)
statusWaiter := statusWaiter{ statusWaiter := statusWaiter{
sw: statusWatcher, sw: statusWatcher,
log: t.Logf, log: testLogger,
} }
objs := []runtime.Object{} objs := []runtime.Object{}

Loading…
Cancel
Save