Skip to content

Commit

Permalink
emit normal events at debug level
Browse files Browse the repository at this point in the history
  • Loading branch information
blampe committed Aug 9, 2024
1 parent f9453ac commit 47c88a4
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 39 deletions.
23 changes: 17 additions & 6 deletions provider/pkg/await/watchers.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,14 +228,11 @@ func NewEventAggregator(
observer := condition.NewObserver(ctx,
source,
corev1.SchemeGroupVersion.WithKind("events"),
func(obj *unstructured.Unstructured) bool {
uid, _, _ := unstructured.NestedString(obj.Object, "involvedObject", "uid")
return uid == string(owner.GetUID())
},
relatedEvents(owner),
)
return NewAggregator(observer, logger,
func(l logMessager, e *corev1.Event) error {
if e == nil || e.Type != corev1.EventTypeWarning {
if e == nil {
return nil
}
msg := fmt.Sprintf(
Expand All @@ -245,7 +242,14 @@ func NewEventAggregator(
e.Reason,
e.Message,
)
logger.LogMessage(checkerlog.WarningMessage(msg))
m := checkerlog.WarningMessage(msg)
switch e.Type {
case corev1.EventTypeWarning:
logger.LogMessage(m)
default:
m.Severity = diag.Debug
logger.LogMessage(m)
}
return nil
},
)
Expand All @@ -254,3 +258,10 @@ func NewEventAggregator(
type logMessager interface {
LogMessage(checkerlog.Message)
}

func relatedEvents(owner *unstructured.Unstructured) func(*unstructured.Unstructured) bool {
return func(obj *unstructured.Unstructured) bool {
uid, _, _ := unstructured.NestedString(obj.Object, "involvedObject", "uid")
return uid == string(owner.GetUID())
}
}
92 changes: 59 additions & 33 deletions provider/pkg/await/watchers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,8 @@ import (
"io"
"strings"
"testing"
"time"

checkerlog "github.com/pulumi/cloud-ready-checks/pkg/checker/logging"
"github.com/pulumi/pulumi-kubernetes/provider/v4/pkg/await/condition"
"github.com/stretchr/testify/assert"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/watch"
Expand All @@ -46,7 +44,7 @@ func TestEventAggregator(t *testing.T) {
want string
}{
{
name: "related warning",
name: "warning",
event: watch.Event{Type: watch.Added, Object: &unstructured.Unstructured{Object: map[string]any{
"apiVersion": "v1",
"kind": "Event",
Expand All @@ -62,7 +60,7 @@ func TestEventAggregator(t *testing.T) {
want: "warning [stack/my-stack-28073241] StackUpdateFailure: Failed to update Stack",
},
{
name: "related info",
name: "normal",
event: watch.Event{Type: watch.Added, Object: &unstructured.Unstructured{Object: map[string]any{
"apiVersion": "v1",
"kind": "Event",
Expand All @@ -75,11 +73,61 @@ func TestEventAggregator(t *testing.T) {
"uid": "9bd08f1a-fa5b-40a5-ba41-bf69899a4416",
},
}}},
want: "",
want: "debug [pod/mypod-7854ff8877-p9ksk] Killing: frog blast the vent core",
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
buf := &strings.Builder{}
obs := NewEventAggregator(context.Background(), nil, log{buf}, owner)

err := obs.Observe(tt.event)

assert.NoError(t, err)
assert.Equal(t, buf.String(), tt.want)
})
}
}

func TestRelatedEvent(t *testing.T) {
owner := &unstructured.Unstructured{Object: map[string]any{
"apiVersion": "pulumi.com/v1",
"kind": "Stack",
"metadata": map[string]any{
"name": "my-stack-28073241",
"namespace": "operator",
"uid": "9bd08f1a-fa5b-40a5-ba41-bf69899a4416",
},
}}

tests := []struct {
name string
owner *unstructured.Unstructured
event *unstructured.Unstructured
want bool
}{
{
name: "unrelated warning",
event: watch.Event{Type: watch.Added, Object: &unstructured.Unstructured{Object: map[string]any{
name: "related",
owner: owner,
event: &unstructured.Unstructured{Object: map[string]any{
"apiVersion": "v1",
"kind": "Event",
"reason": "StackUpdateFailure",
"type": "Warning",
"message": "Failed to update Stack",
"involvedObject": map[string]any{
"kind": "Stack",
"name": "my-stack-28073241",
"uid": "9bd08f1a-fa5b-40a5-ba41-bf69899a4416",
},
}},
want: true,
},
{
name: "unrelated",
owner: owner,
event: &unstructured.Unstructured{Object: map[string]any{
"apiVersion": "v1",
"kind": "Event",
"reason": "Killing",
Expand All @@ -90,38 +138,16 @@ func TestEventAggregator(t *testing.T) {
"name": "some-other-name",
"uid": "some-other-uid",
},
}}},
want: "",
}},
want: false,
},
}

for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()

source := condition.Static(make(chan watch.Event, 1))

buf := &strings.Builder{}

ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()

obs := NewEventAggregator(context.Background(), source, log{buf}, owner)

seen := make(chan struct{})
go obs.Range(func(e watch.Event) bool {
_ = obs.Observe(e)
seen <- struct{}{}
return true
})

source <- tt.event
select {
case <-seen:
case <-ctx.Done():
}
assert.Equal(t, buf.String(), tt.want)
actual := relatedEvents(tt.owner)(tt.event)
assert.Equal(t, tt.want, actual)
})
}
}
Expand Down

0 comments on commit 47c88a4

Please sign in to comment.